diff --git "a/0923sql(\350\277\233\347\276\244\350\216\267\345\217\226).zip" "b/0923sql(\350\277\233\347\276\244\350\216\267\345\217\226).zip" new file mode 100644 index 0000000000000000000000000000000000000000..94a86c404a40a46b8498dd8d97e9f1353afc0a0a Binary files /dev/null and "b/0923sql(\350\277\233\347\276\244\350\216\267\345\217\226).zip" differ diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java index b3726ee2e3f29c78f54deb58efc98770b598b87e..330049200562ddf7e4bf14f1e1b71c1103055338 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java @@ -199,8 +199,8 @@ public class NetworkServiceImpl implements INetworkService { String type = bo.getType(); String productKey = bo.getProductKey(); String unionId = bo.getUnionId(); - if (NetworkType.TCP_CLIENT.getId().equals(type) || NetworkType.TCP_SERVER.getId() - .equals(type)) { + if (NetworkType.TCP_CLIENT.getId().equals(type) + || NetworkType.TCP_SERVER.getId().equals(type)) { if (tcpClusterService != null && tcpServerManager != null) { Object serverInstance = tcpServerManager.getServerInstance(productKey); if (serverInstance != null && tcpServerManager.isAlive(serverInstance)) { @@ -216,14 +216,14 @@ public class NetworkServiceImpl implements INetworkService { } // 查出哪些TCP-Server绑定了产品 if (NetworkType.TCP_SERVER.getId().equals(type)) { - IoTProductBO ioTProductBO = ioTProductMapper.selectTcpProductsUseNetwork( - bo.getProductKey()); + IoTProductBO ioTProductBO = + ioTProductMapper.selectTcpProductsUseNetwork(bo.getProductKey()); bo.setBindTcpServerProductCount(ioTProductBO == null ? 0 : 1); bo.setBindTcpServerProducts(ioTProductBO); } - } else if (NetworkType.MQTT_CLIENT.getId().equals(type) || NetworkType.MQTT_SERVER.getId() - .equals(type)) { + } else if (NetworkType.MQTT_CLIENT.getId().equals(type) + || NetworkType.MQTT_SERVER.getId().equals(type)) { List ioTProductBOS = ioTProductMapper.selectMqttProductsUseNetwork(unionId); bo.setBindMqttServerProductCount(CollUtil.size(ioTProductBOS)); bo.setBindMqttServerProducts(ioTProductBOS); @@ -294,8 +294,8 @@ public class NetworkServiceImpl implements INetworkService { String type = network.getType(); String productKey = network.getProductKey(); String unionId = network.getUnionId(); - if (NetworkType.TCP_CLIENT.getId().equals(type) || NetworkType.TCP_SERVER.getId() - .equals(type)) { + if (NetworkType.TCP_CLIENT.getId().equals(type) + || NetworkType.TCP_SERVER.getId().equals(type)) { if (tcpClusterService != null && tcpServerManager != null) { Object serverInstance = tcpServerManager.getServerInstance(productKey); if (serverInstance != null && tcpServerManager.isAlive(serverInstance)) { @@ -310,8 +310,8 @@ public class NetworkServiceImpl implements INetworkService { vo.setRunning(Boolean.FALSE); } - } else if (NetworkType.MQTT_CLIENT.getId().equals(type) || NetworkType.MQTT_SERVER.getId() - .equals(type)) { + } else if (NetworkType.MQTT_CLIENT.getId().equals(type) + || NetworkType.MQTT_SERVER.getId().equals(type)) { if (mqttServerManager != null && mqttServerManager.isConnected(unionId)) { vo.setStateName("已启动"); vo.setRunning(Boolean.TRUE); @@ -348,8 +348,9 @@ public class NetworkServiceImpl implements INetworkService { } // 常用端口 Set commonPorts = new HashSet<>(); - int[] arr = {80, 443, 3306, 6379, 8080, 22, 21, 25, 53, 123, 1521, 5432, 8888, 9000, 5000, 7001, - 27017}; + int[] arr = { + 80, 443, 3306, 6379, 8080, 22, 21, 25, 53, 123, 1521, 5432, 8888, 9000, 5000, 7001, 27017 + }; for (int p : arr) { commonPorts.add(p); } @@ -389,8 +390,9 @@ public class NetworkServiceImpl implements INetworkService { network.setState(false); // 新增TCP_SERVER/UDP时,必须指定productKey,并且不能重复绑定 - if (NetworkType.TCP_SERVER.getId().equals(network.getType()) || NetworkType.TCP_CLIENT.getId() - .equals(network.getType()) || NetworkType.UDP.getId().equals(network.getType())) { + if (NetworkType.TCP_SERVER.getId().equals(network.getType()) + || NetworkType.TCP_CLIENT.getId().equals(network.getType()) + || NetworkType.UDP.getId().equals(network.getType())) { if (StrUtil.isBlank(network.getProductKey())) { throw new RuntimeException("TCP/UDP服务组件必须选择产品"); } @@ -405,8 +407,8 @@ public class NetworkServiceImpl implements INetworkService { int result = networkMapper.insertNetwork(network); // 新增成功后,若为TCP_SERVER,更新iot_product表 if (result > 0 && NetworkType.TCP_SERVER.getId().equals(network.getType())) { - ioTProductMapper.updateNetworkUnionIdByProductKey(network.getProductKey(), - network.getProductKey()); + ioTProductMapper.updateNetworkUnionIdByProductKey( + network.getProductKey(), network.getProductKey()); } return result; } @@ -432,7 +434,8 @@ public class NetworkServiceImpl implements INetworkService { } String type = existNetwork.getType(); - if ((NetworkType.TCP_SERVER.getId().equals(type) || NetworkType.TCP_CLIENT.getId().equals(type) + if ((NetworkType.TCP_SERVER.getId().equals(type) + || NetworkType.TCP_CLIENT.getId().equals(type) || NetworkType.UDP.getId().equals(type))) { // 只有当unionId发生变化时,才做"已被产品关联且产品下有设备时禁止修改"的校验 String oldProductKey = existNetwork.getProductKey(); @@ -450,8 +453,8 @@ public class NetworkServiceImpl implements INetworkService { checkPortAvailable(network, true); int count = networkMapper.updateNetwork(network); if (count > 0 && NetworkType.TCP_SERVER.getId().equals(network.getType())) { - ioTProductMapper.updateNetworkUnionIdByProductKey(network.getProductKey(), - network.getProductKey()); + ioTProductMapper.updateNetworkUnionIdByProductKey( + network.getProductKey(), network.getProductKey()); } return count; } @@ -465,7 +468,8 @@ public class NetworkServiceImpl implements INetworkService { } String type = network.getType(); // 只对TCP_SERVER、TCP_CLIENT和UDP做判断 - if (NetworkType.TCP_SERVER.getId().equals(type) || NetworkType.TCP_CLIENT.getId().equals(type) + if (NetworkType.TCP_SERVER.getId().equals(type) + || NetworkType.TCP_CLIENT.getId().equals(type) || NetworkType.UDP.getId().equals(type)) { // 查找是否有关联产品 String productKey = ioTProductMapper.findProductKeyByNetworkUnionId(network.getUnionId()); @@ -495,14 +499,14 @@ public class NetworkServiceImpl implements INetworkService { } String type = network.getType(); JSONObject config = JSONUtil.parseObj(network.getConfiguration()); - if (NetworkType.TCP_CLIENT.getId().equals(type) || NetworkType.TCP_SERVER.getId() - .equals(type)) { + if (NetworkType.TCP_CLIENT.getId().equals(type) + || NetworkType.TCP_SERVER.getId().equals(type)) { Integer port = config.getInt("port"); if (port == null) { throw new RuntimeException("TCP网络组件启动/重启时端口不能为空"); } - } else if (NetworkType.MQTT_CLIENT.getId().equals(type) || NetworkType.MQTT_SERVER.getId() - .equals(type)) { + } else if (NetworkType.MQTT_CLIENT.getId().equals(type) + || NetworkType.MQTT_SERVER.getId().equals(type)) { String host = config.getStr("host"); if (StrUtil.isBlank(host)) { throw new RuntimeException("MQTT网络组件启动/重启时host不能为空"); @@ -521,7 +525,7 @@ public class NetworkServiceImpl implements INetworkService { log.info("启动网络组件成功: {}", network.getName()); return 1; } else { - throw new RuntimeException("启动失败: " + network.getName()); + throw new IoTException("系统协议类型模块不存在,请检查"); } } catch (Exception e) { log.error("启动网络组件失败: {}", network.getName(), e); @@ -561,14 +565,14 @@ public class NetworkServiceImpl implements INetworkService { } String type = network.getType(); JSONObject config = JSONUtil.parseObj(network.getConfiguration()); - if (NetworkType.TCP_CLIENT.getId().equals(type) || NetworkType.TCP_SERVER.getId() - .equals(type)) { + if (NetworkType.TCP_CLIENT.getId().equals(type) + || NetworkType.TCP_SERVER.getId().equals(type)) { Integer port = config.getInt("port"); if (port == null) { throw new RuntimeException("TCP网络组件启动/重启时端口不能为空"); } - } else if (NetworkType.MQTT_CLIENT.getId().equals(type) || NetworkType.MQTT_SERVER.getId() - .equals(type)) { + } else if (NetworkType.MQTT_CLIENT.getId().equals(type) + || NetworkType.MQTT_SERVER.getId().equals(type)) { String host = config.getStr("host"); if (StrUtil.isBlank(host)) { throw new RuntimeException("MQTT网络组件启动/重启时host不能为空"); @@ -598,8 +602,12 @@ public class NetworkServiceImpl implements INetworkService { @Override public List getNetworkTypes() { - return Arrays.asList(NetworkType.TCP_CLIENT.getId(), NetworkType.TCP_SERVER.getId(), - NetworkType.MQTT_CLIENT.getId(), NetworkType.MQTT_SERVER.getId(), NetworkType.UDP.getId()); + return Arrays.asList( + NetworkType.TCP_CLIENT.getId(), + NetworkType.TCP_SERVER.getId(), + NetworkType.MQTT_CLIENT.getId(), + NetworkType.MQTT_SERVER.getId(), + NetworkType.UDP.getId()); } /** @@ -660,7 +668,8 @@ public class NetworkServiceImpl implements INetworkService { JSONObject config = JSONUtil.parseObj(network.getConfiguration()); String type = network.getType(); // TCP/UDP类型检查端口唯一性 - if (NetworkType.TCP_CLIENT.getId().equals(type) || NetworkType.TCP_SERVER.getId().equals(type) + if (NetworkType.TCP_CLIENT.getId().equals(type) + || NetworkType.TCP_SERVER.getId().equals(type) || NetworkType.UDP.getId().equals(type)) { Integer port = config.getInt("port"); if (port != null) { @@ -674,18 +683,24 @@ public class NetworkServiceImpl implements INetworkService { } // MQTT类型检查主机和用户名组合唯一性 - if (NetworkType.MQTT_CLIENT.getId().equals(type) || NetworkType.MQTT_SERVER.getId() - .equals(type)) { + if (NetworkType.MQTT_CLIENT.getId().equals(type) + || NetworkType.MQTT_SERVER.getId().equals(type)) { String host = config.getStr("host"); String username = config.getStr("username"); if (StrUtil.isNotBlank(host) && StrUtil.isNotBlank(username)) { - List existingNetworks = networkMapper.selectMqttNetworkByHostAndUsername(host, - username, excludeId); + List existingNetworks = + networkMapper.selectMqttNetworkByHostAndUsername(host, username, excludeId); if (!existingNetworks.isEmpty()) { Network existingNetwork = existingNetworks.get(0); - throw new RuntimeException("主机 " + host + " 和用户名 " + username + " 的组合已被 " - + existingNetwork.getName() + " 网络组件使用"); + throw new RuntimeException( + "主机 " + + host + + " 和用户名 " + + username + + " 的组合已被 " + + existingNetwork.getName() + + " 网络组件使用"); } } } @@ -705,24 +720,18 @@ public class NetworkServiceImpl implements INetworkService { */ private boolean startNetworkByType(Network network) { String type = network.getType(); - - try { - switch (type) { - case NetworkTypeConstants.TCP_CLIENT: - case NetworkTypeConstants.TCP_SERVER: - return startTcpNetwork(network); - case NetworkTypeConstants.MQTT_CLIENT: - case NetworkTypeConstants.MQTT_SERVER: - return startMqttNetwork(network); - case NetworkTypeConstants.UDP: - return startUdpNetwork(network); - default: - log.warn("不支持的网络类型: {}", type); - return false; - } - } catch (Exception e) { - log.error("启动网络组件失败: type={}, name={}", type, network.getName(), e); - return false; + switch (type) { + case NetworkTypeConstants.TCP_CLIENT: + case NetworkTypeConstants.TCP_SERVER: + return startTcpNetwork(network); + case NetworkTypeConstants.MQTT_CLIENT: + case NetworkTypeConstants.MQTT_SERVER: + return startMqttNetwork(network); + case NetworkTypeConstants.UDP: + return startUdpNetwork(network); + default: + log.warn("不支持的网络类型: {}", type); + return false; } } @@ -792,7 +801,7 @@ public class NetworkServiceImpl implements INetworkService { private boolean startTcpNetwork(Network network) { if (tcpClusterService == null) { log.error("TCP服务管理器未注入,无法启动TCP网络组件: {}", network.getName()); - return false; + throw new IoTException("TCP模块未注入,无法启动TCP网络组件"); } String productKey = network.getProductKey(); @@ -824,8 +833,8 @@ public class NetworkServiceImpl implements INetworkService { */ private boolean stopTcpNetwork(Network network) { if (tcpClusterService == null) { - log.error("TCP服务管理器未注入,无法停止TCP网络组件: {}", network.getName()); - return false; + log.error("TCP服务管理器未注入,无法启动TCP网络组件: {}", network.getName()); + throw new IoTException("TCP模块未注入,无法启动TCP网络组件"); } String productKey = network.getProductKey(); @@ -856,8 +865,8 @@ public class NetworkServiceImpl implements INetworkService { */ private boolean restartTcpNetwork(Network network) { if (tcpClusterService == null) { - log.error("TCP服务管理器未注入,无法重启TCP网络组件: {}", network.getName()); - return false; + log.error("TCP服务管理器未注入,无法启动TCP网络组件: {}", network.getName()); + throw new IoTException("TCP模块未注入,无法启动TCP网络组件"); } String productKey = network.getProductKey(); @@ -888,8 +897,7 @@ public class NetworkServiceImpl implements INetworkService { */ private boolean startMqttNetwork(Network network) { if (mqttServerManager == null) { - log.error("MQTT服务管理器未注入,无法启动MQTT网络组件: {}", network.getName()); - return false; + throw new IoTException("MQTT模块未注入,无法启动TCP网络组件"); } String unionId = network.getUnionId(); @@ -920,10 +928,8 @@ public class NetworkServiceImpl implements INetworkService { */ private boolean stopMqttNetwork(Network network) { if (mqttServerManager == null) { - log.error("MQTT服务管理器未注入,无法停止MQTT网络组件: {}", network.getName()); - return false; + throw new IoTException("MQTT模块未注入,无法启动TCP网络组件"); } - String unionId = network.getUnionId(); if (StrUtil.isBlank(unionId)) { log.error("MQTT网络组件缺少unionId: {}", network.getName()); @@ -952,8 +958,7 @@ public class NetworkServiceImpl implements INetworkService { */ private boolean restartMqttNetwork(Network network) { if (mqttServerManager == null) { - log.error("MQTT服务管理器未注入,无法重启MQTT网络组件: {}", network.getName()); - return false; + throw new IoTException("MQTT模块未注入,无法启动TCP网络组件"); } String unionId = network.getUnionId(); @@ -988,6 +993,10 @@ public class NetworkServiceImpl implements INetworkService { * @return 是否成功 */ private boolean startUdpNetwork(Network network) { + if (udpClusterService == null) { + log.error("UDP服务管理器未注入,无法启动TCP网络组件: {}", network.getName()); + throw new IoTException("UDP模块未注入,无法启动UDP网络组件"); + } String productKey = network.getProductKey(); if (StrUtil.isBlank(productKey)) { log.error("UDP网络组件缺少productKey: {}", network.getName()); @@ -1018,6 +1027,10 @@ public class NetworkServiceImpl implements INetworkService { * @return 是否成功 */ private boolean stopUdpNetwork(Network network) { + if (udpClusterService == null) { + log.error("UDP服务管理器未注入,无法启动TCP网络组件: {}", network.getName()); + throw new IoTException("UDP模块未注入,无法启动UDP网络组件"); + } String productKey = network.getProductKey(); if (StrUtil.isBlank(productKey)) { log.error("UDP网络组件缺少productKey: {}", network.getName()); @@ -1048,6 +1061,10 @@ public class NetworkServiceImpl implements INetworkService { * @return 是否成功 */ private boolean restartUdpNetwork(Network network) { + if (udpClusterService == null) { + log.error("UDP服务管理器未注入,无法启动TCP网络组件: {}", network.getName()); + throw new IoTException("UDP模块未注入,无法启动UDP网络组件"); + } String productKey = network.getProductKey(); if (StrUtil.isBlank(productKey)) { log.error("UDP网络组件缺少productKey: {}", network.getName()); diff --git a/cn-universal-web-ui/.browserslistrc b/cn-universal-web-ui/.browserslistrc new file mode 100644 index 0000000000000000000000000000000000000000..8f9604394079082c389314dd5a933f71ef214074 --- /dev/null +++ b/cn-universal-web-ui/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not ie <= 10 diff --git a/cn-universal-web-ui/.dockerignore b/cn-universal-web-ui/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..a010c458ba7c5a0f24e6aabdf96730b60b04ab96 --- /dev/null +++ b/cn-universal-web-ui/.dockerignore @@ -0,0 +1,34 @@ +# 排除源代码和开发文件 +src/ +node_modules/ +package*.json +webpack.config.js +vite.config.js +tsconfig.json +.eslintrc.js +.prettierrc + +# 排除 IDE 文件 +.idea/ +.vscode/ +*.iml + +# 排除版本控制文件 +.git/ +.gitignore + +# 排除构建产物 (只保留 dist 目录) +!dist/ + +# 排除日志文件 +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# 排除环境文件 +.env +.env.local +.env.development +.env.test +.env.production diff --git a/cn-universal-web-ui/.editorconfig b/cn-universal-web-ui/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..869f938a708e3ea907b5e2baff70a8cb7863ce39 --- /dev/null +++ b/cn-universal-web-ui/.editorconfig @@ -0,0 +1,39 @@ +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = false +indent_style = space +indent_size = 2 + +[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}] +indent_style = space +indent_size = 2 + +[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}] +indent_style = space +indent_size = 2 + +[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}] +indent_style = space +indent_size = 2 + +[*.svg] +indent_style = space +indent_size = 2 + +[*.js.map] +indent_style = space +indent_size = 2 + +[*.less] +indent_style = space +indent_size = 2 + +[*.vue] +indent_style = space +indent_size = 2 + +[{.analysis_options,*.yml,*.yaml}] +indent_style = space +indent_size = 2 + diff --git a/cn-universal-web-ui/.env b/cn-universal-web-ui/.env new file mode 100644 index 0000000000000000000000000000000000000000..6cb95956d6f0adb9cfdf35d56f21fe836b3da2ea --- /dev/null +++ b/cn-universal-web-ui/.env @@ -0,0 +1,3 @@ +NODE_ENV=production +VUE_APP_PREVIEW=false +VUE_APP_BASE_API=/api \ No newline at end of file diff --git a/cn-universal-web-ui/.env.development b/cn-universal-web-ui/.env.development new file mode 100644 index 0000000000000000000000000000000000000000..9847afa95994e1b4fc51f76a268f77bad82790d3 --- /dev/null +++ b/cn-universal-web-ui/.env.development @@ -0,0 +1,7 @@ +NODE_ENV=development +VUE_APP_PREVIEW=true +VUE_APP_BASE_API=/api +# VUE_APP_API_PATH = http://192.168.31.194:9092 +# VUE_APP_API_PATH = http://127.0.0.1:9091 +VUE_APP_API_PATH = http://127.0.0.1:9092 + diff --git a/cn-universal-web-ui/.env.preview b/cn-universal-web-ui/.env.preview new file mode 100644 index 0000000000000000000000000000000000000000..6cb95956d6f0adb9cfdf35d56f21fe836b3da2ea --- /dev/null +++ b/cn-universal-web-ui/.env.preview @@ -0,0 +1,3 @@ +NODE_ENV=production +VUE_APP_PREVIEW=false +VUE_APP_BASE_API=/api \ No newline at end of file diff --git a/cn-universal-web-ui/.eslintignore b/cn-universal-web-ui/.eslintignore new file mode 100644 index 0000000000000000000000000000000000000000..85b27598524b24f64020c0e427774fdee0cc6490 --- /dev/null +++ b/cn-universal-web-ui/.eslintignore @@ -0,0 +1,7 @@ +docs/ +node_modules +dist/ +tests/ +build/ +vue.config.js +public/ \ No newline at end of file diff --git a/cn-universal-web-ui/.eslintrc.js b/cn-universal-web-ui/.eslintrc.js new file mode 100644 index 0000000000000000000000000000000000000000..d025b5fa10bd46525517ab8b6b71480405850bb9 --- /dev/null +++ b/cn-universal-web-ui/.eslintrc.js @@ -0,0 +1,67 @@ +module.exports = { + root: true, + env: { + node: true, + }, + extends: ['plugin:vue/strongly-recommended', '@vue/standard'], + globals: { + AMap: true, + AMapUI: true, + }, + rules: { + 'no-console': 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'generator-star-spacing': 'off', + 'no-mixed-operators': 0, + 'no-trailing-spaces': 'off', + 'no-multiple-empty-lines': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/attribute-hyphenation': 0, + 'vue/html-self-closing': 0, + 'vue/component-name-in-template-casing': 0, + 'vue/html-closing-bracket-spacing': 0, + 'vue/singleline-html-element-content-newline': 0, + 'vue/no-unused-components': 0, + 'vue/multiline-html-element-content-newline': 0, + 'vue/no-use-v-if-with-v-for': 0, + 'vue/html-closing-bracket-newline': 0, + 'vue/no-parsing-error': 0, + 'no-tabs': 0, + quotes: [ + 2, + 'single', + { + avoidEscape: true, + allowTemplateLiterals: true, + }, + ], + semi: [ + 2, + 'never', + { + beforeStatementContinuationChars: 'never', + }, + ], + 'no-delete-var': 2, + 'prefer-const': [ + 2, + { + ignoreReadBeforeAssign: false, + }, + ], + 'template-curly-spacing': 'off', + indent: 'off', + }, + parserOptions: { + parser: '@babel/eslint-parser', + }, + overrides: [ + { + files: ['**/__tests__/*.{j,t}s?(x)', + '**/tests/unit/**/*.spec.{j,t}s?(x)'], + env: { + jest: true, + }, + }, + ], +} diff --git a/cn-universal-web-ui/.gitattributes b/cn-universal-web-ui/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..e50731925a031f28ba3a4b3013aac4b0643afd0b --- /dev/null +++ b/cn-universal-web-ui/.gitattributes @@ -0,0 +1 @@ +public/* linguist-vendored \ No newline at end of file diff --git a/cn-universal-web-ui/.gitignore b/cn-universal-web-ui/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..98988d4f44140d251d94aad971ae46dcbb21c8db --- /dev/null +++ b/cn-universal-web-ui/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +.eslintcache + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* +package-lock.json +yarn.lock \ No newline at end of file diff --git a/cn-universal-web-ui/.husky/.gitignore b/cn-universal-web-ui/.husky/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..31354ec1389994b5f6708c7d915fdcc6bb76ba6e --- /dev/null +++ b/cn-universal-web-ui/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/cn-universal-web-ui/.husky/pre-commit b/cn-universal-web-ui/.husky/pre-commit new file mode 100644 index 0000000000000000000000000000000000000000..36af219892fda8ea669cd4b6725cd7b892231967 --- /dev/null +++ b/cn-universal-web-ui/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged diff --git a/cn-universal-web-ui/.prettierrc b/cn-universal-web-ui/.prettierrc new file mode 100644 index 0000000000000000000000000000000000000000..b0e80f7b087ef629466c1eb14a15dd3bf6cb7c13 --- /dev/null +++ b/cn-universal-web-ui/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 120, + "semi": false, + "singleQuote": true, + "prettier.spaceBeforeFunctionParen": true +} diff --git a/cn-universal-web-ui/.specstory/.what-is-this.md b/cn-universal-web-ui/.specstory/.what-is-this.md new file mode 100644 index 0000000000000000000000000000000000000000..1d0dccad60a3858dcc1eefe2c72a78525c5c1b1d --- /dev/null +++ b/cn-universal-web-ui/.specstory/.what-is-this.md @@ -0,0 +1,86 @@ +# SpecStory Artifacts Directory + +This directory is automatically created and maintained by the SpecStory extension to preserve your +AI chat history. + +## What's Here? + +- `.specstory/history`: Contains auto-saved markdown files of your AI coding sessions + - Each file represents a separate AI chat session + - If you enable auto-save, files are automatically updated as you work + - You can enable/disable the auto-save feature in the SpecStory settings, it is disabled by + default +- `.specstory/.project.json`: Contains the persistent project identity for the current workspace + - This file is only present if you enable AI rules derivation + - This is used to provide consistent project identity of your project, even as the workspace is + moved or renamed +- `.specstory/ai_rules_backups`: Contains backups of the `.cursor/rules/derived-cursor-rules.mdc` or + the `.github/copilot-instructions.md` file + - Backups are automatically created each time the `.cursor/rules/derived-cursor-rules.mdc` or the + `.github/copilot-instructions.md` file is updated + - You can enable/disable the AI Rules derivation feature in the SpecStory settings, it is disabled + by default +- `.specstory/.gitignore`: Contains directives to exclude non-essential contents of the `.specstory` + directory from version control + - Add `/history` to exclude the auto-saved chat history from version control + +## Valuable Uses + +- Capture: Keep your context window up-to-date when starting new Chat/Composer sessions via @ + references +- Search: For previous prompts and code snippets +- Learn: Meta-analyze your patterns and learn from your past experiences +- Derive: Keep the AI on course with your past decisions by automatically deriving rules from your + AI interactions + +## Version Control + +We recommend keeping this directory under version control to maintain a history of your AI +interactions. However, if you prefer not to version these files, you can exclude them by adding this +to your `.gitignore`: + +``` +.specstory/** +``` + +We recommend __not__ keeping the `.specstory/ai_rules_backups` directory under version control if +you are already using git to version your AI rules, and committing regularly. You can exclude it by +adding this to your `.gitignore`: + +``` +.specstory/ai_rules_backups +``` + +## Searching Your Codebase + +When searching your codebase, search results may include your previous AI coding interactions. To +focus solely on your actual code files, you can exclude the AI interaction history from search +results. + +To exclude AI interaction history: + +1. Open the "Find in Files" search in Cursor or VSCode (Cmd/Ctrl + Shift + F) +2. Navigate to the "files to exclude" section +3. Add the following pattern: + +``` +.specstory/* +``` + +This will ensure your searches only return results from your working codebase files. + +## Notes + +- Auto-save only works when Cursor or VSCode flushes sqlite database data to disk. This results in a + small delay after the AI response is complete before SpecStory can save the history. + +## Settings + +You can control auto-saving behavior in Cursor or VSCode: + +1. Open Cursor/Code → Settings → VS Code Settings (Cmd/Ctrl + ,) +2. Search for "SpecStory" +3. Find "Auto Save" setting to enable/disable + +Auto-save occurs when changes are detected in the sqlite database, or every 2 minutes as a safety +net. \ No newline at end of file diff --git a/cn-universal-web-ui/.travis.yml b/cn-universal-web-ui/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..a08bfcb2aac328cfa5bd5892e1b9a39d0583ed0e --- /dev/null +++ b/cn-universal-web-ui/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - 10.15.0 +cache: yarn +script: + - yarn + - yarn run lint --no-fix && yarn run build diff --git a/cn-universal-web-ui/Dockerfile b/cn-universal-web-ui/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..7a7fcd630167892b097d69105af2191d4c92e8cf --- /dev/null +++ b/cn-universal-web-ui/Dockerfile @@ -0,0 +1,18 @@ +# 使用 nginx 作为基础镜像 +FROM nginx:alpine + +# 复制前端构建文件 +COPY dist/ /usr/share/nginx/html/ + +# 复制 nginx 配置 +COPY nginx.conf /etc/nginx/nginx.conf + +# 暴露端口 +EXPOSE 80 + +# 健康检查 +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget --no-verbose --tries=1 --spider http://localhost:80/ || exit 1 + +# 启动 nginx +CMD ["nginx", "-g", "daemon off;"] diff --git a/cn-universal-web-ui/Dockerfile.centos b/cn-universal-web-ui/Dockerfile.centos new file mode 100644 index 0000000000000000000000000000000000000000..af09e0dccac5dcec9981a10b2177974c45dd2d38 --- /dev/null +++ b/cn-universal-web-ui/Dockerfile.centos @@ -0,0 +1,31 @@ +# 使用 CentOS 作为基础镜像 +FROM centos:8 + +# 安装 nginx 和必要工具 +RUN yum update -y && yum install -y \ + nginx \ + curl \ + wget \ + && yum clean all + +# 复制前端构建文件 +COPY dist/ /usr/share/nginx/html/ + +# 复制 nginx 配置 +COPY nginx.conf /etc/nginx/nginx.conf + +# 创建必要的目录 +RUN mkdir -p /var/log/nginx /var/cache/nginx + +# 设置权限 +RUN chown -R nginx:nginx /usr/share/nginx/html /var/log/nginx /var/cache/nginx + +# 暴露端口 +EXPOSE 80 + +# 健康检查 +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD curl -f http://localhost:80/health || exit 1 + +# 启动 nginx +CMD ["nginx", "-g", "daemon off;"] diff --git a/cn-universal-web-ui/Dockerfile.local b/cn-universal-web-ui/Dockerfile.local new file mode 100644 index 0000000000000000000000000000000000000000..2323c4b1b679875a27a959c835b543de54b3e6b8 --- /dev/null +++ b/cn-universal-web-ui/Dockerfile.local @@ -0,0 +1,31 @@ +# 使用已经下载的 openjdk:21 镜像作为基础,安装 nginx +FROM openjdk:21 + +# 安装 nginx 和必要工具 +RUN microdnf update -y && microdnf install -y \ + nginx \ + curl \ + wget \ + && microdnf clean all + +# 复制前端构建文件 +COPY dist/ /usr/share/nginx/html/ + +# 复制 nginx 配置 +COPY nginx.conf /etc/nginx/nginx.conf + +# 创建必要的目录 +RUN mkdir -p /var/log/nginx /var/cache/nginx + +# 设置权限 +RUN chown -R nginx:nginx /usr/share/nginx/html /var/log/nginx /var/cache/nginx + +# 暴露端口 +EXPOSE 80 + +# 健康检查 +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD curl -f http://localhost:80/health || exit 1 + +# 启动 nginx +CMD ["nginx", "-g", "daemon off;"] diff --git a/cn-universal-web-ui/Dockerfile.simple b/cn-universal-web-ui/Dockerfile.simple new file mode 100644 index 0000000000000000000000000000000000000000..17c81176a6d71f10711e3b7c33ae3b48505135f7 --- /dev/null +++ b/cn-universal-web-ui/Dockerfile.simple @@ -0,0 +1,18 @@ +# 使用 Python 内置 HTTP 服务器作为最简单的静态文件服务 +FROM python:3.11-slim + +# 设置工作目录 +WORKDIR /app + +# 复制前端构建文件 +COPY dist/ ./ + +# 暴露端口 +EXPOSE 80 + +# 健康检查 +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD curl -f http://localhost:80/health || exit 1 + +# 启动 Python HTTP 服务器 +CMD ["python", "-m", "http.server", "80"] diff --git a/cn-universal-web-ui/Dockerfile.ubuntu b/cn-universal-web-ui/Dockerfile.ubuntu new file mode 100644 index 0000000000000000000000000000000000000000..0f02772c805873a5f4e9137869ce6f377b35ab8a --- /dev/null +++ b/cn-universal-web-ui/Dockerfile.ubuntu @@ -0,0 +1,31 @@ +# 使用 Ubuntu 作为基础镜像 +FROM ubuntu:22.04 + +# 安装 nginx 和必要工具 +RUN apt-get update && apt-get install -y \ + nginx \ + curl \ + wget \ + && rm -rf /var/lib/apt/lists/* + +# 复制前端构建文件 +COPY dist/ /var/www/html/ + +# 复制 nginx 配置 +COPY nginx.conf /etc/nginx/nginx.conf + +# 创建必要的目录 +RUN mkdir -p /var/log/nginx /var/cache/nginx + +# 设置权限 +RUN chown -R www-data:www-data /var/www/html /var/log/nginx /var/cache/nginx + +# 暴露端口 +EXPOSE 80 + +# 健康检查 +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD curl -f http://localhost:80/health || exit 1 + +# 启动 nginx +CMD ["nginx", "-g", "daemon off;"] diff --git a/cn-universal-web-ui/LICENSE b/cn-universal-web-ui/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..413013ae19f1667f60851a7bed86d0bcc13e080d --- /dev/null +++ b/cn-universal-web-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 扶醉 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/cn-universal-web-ui/README.md b/cn-universal-web-ui/README.md new file mode 100644 index 0000000000000000000000000000000000000000..aa8316aa0d33f6d8b1ed98ad95851cc9e011ce95 --- /dev/null +++ b/cn-universal-web-ui/README.md @@ -0,0 +1,129 @@ +

RuoYi-Antdv

+ +> RuoYi-Antdv 是RuoYi-Vue和Ant Design Vue Pro的结合。 + +

+ Build Status  + Build Status  + Build Status  + Build Status +

+ + +------------------------------ + +## 简介 + +**RuoYi-Antdv**,使用[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)作为后端,改其原有Element +Ui为Ant Design Vue。将会持续完全适配RuoYi-Vue。 + +> RuoYi-Vue是基于SpringBoot,Spring Security,JWT,Vue 的前后端分离权限管理系统。 +> +> 拥有用户管理、部门管理、岗位管理、菜单管理、角色管理、字典管理、参数管理、通知公告、操作日志、登录日志、在线用户、定时任务、代码生成、系统接口、服务监控、在线构建器、连接池监视等功能。 + +*当前暂不支持RuoYi中的在线构建器功能。* + +* 预览:[https://ruoyi.setworld.net/](https://ruoyi.setworld.net/) + +* 文档:[https://docs.geekera.cn/RuoYi-Antdv/](https://docs.geekera.cn/RuoYi-Antdv/) + +* RuoYi-Vue文档:[https://doc.ruoyi.vip/ruoyi-vue/](https://doc.ruoyi.vip/ruoyi-vue/) + +* Ant Design + Vue文档:[https://www.antdv.com/docs/vue/introduce-cn/](https://www.antdv.com/docs/vue/introduce-cn/) + +## 开始使用 + +1. 环境准备 + +* 运行启动RuoYi-Vue,参考[RuoYi文档](https://doc.ruoyi.vip/ruoyi-vue/) +* 安装[node](http://nodejs.org/)和[git](https://git-scm.com/) + +2. 安装 + + ```shell + git clone git@gitee.com:fuzui/RuoYi-Antdv.git + ``` + + 或 + + ```shell + git clone git@github.com:fuzui/RuoYi-Antdv.git + ``` + +3. 本地开发 + + 进入项目根目录 + + ```shell + npm install + ``` + + > 若耗时太长可使用`npm install --registry=https://registry.npm.taobao.org` + + ```shell + npm run serve + ``` + + > 打开浏览器访问 [http://localhost:8000](http://localhost:8080/) + +4. 部署 + + [RuoYi-Antdv部署](https://docs.geekera.cn/RuoYi-Antdv/use.html) + +## 注意事项 + +* 若需使用代码生成,请按照文档描述修改: + [代码生成前端适配](./docs/gen/) + +## 致谢 + +* [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 基于SpringBoot,Spring Security,JWT,Vue + 的前后端分离权限管理系统 +* [Ant Design Vue](https://github.com/vueComponent/ant-design-vue/) An enterprise-class UI + components based on Ant Design and Vue +* [Ant Design Vue Pro](https://github.com/vueComponent/ant-design-vue-pro) Use Ant Design Vue like a + Pro +* [wangEditor](https://github.com/wangeditor-team/wangEditor) 轻量级web富文本框 + +## 推荐 + +* [RuoYi-Cloud-Ant-Design](https://gitee.com/xuezipeng/ruoyi-cloud-ant-design) RuoYi-Cloud的Ant + Design(Antdv)版前端 + +* [RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud) 基于Spring Boot、Spring Cloud & + Alibaba的分布式微服务架构权限管理系统 + +## 联系 + +如果您发现了什么bug,或者有什么界面建议或意见, + +欢迎 [issue](https://github.com/fuzui/RuoYi-Antdv/issues) + +`RuoYi-Antdv(SpringBoot/SpringCloud)`群: + +[![加入QQ群](https://img.shields.io/badge/Q群-1038609759-blue.svg)](https://jq.qq.com/?_wv=1027&k=Cq8fZnrj) + +如果讨论后端,推荐添加若依前后端分离交流群(官方): + +[![加入QQ群](https://img.shields.io/badge/Q群-101539465-blue.svg)](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) + +## 演示图 + + + + + + + + + + + + + + +
+ + + diff --git a/cn-universal-web-ui/babel.config.js b/cn-universal-web-ui/babel.config.js new file mode 100644 index 0000000000000000000000000000000000000000..e80ad97b3088b2b2d346858b8f07d06f480a13ab --- /dev/null +++ b/cn-universal-web-ui/babel.config.js @@ -0,0 +1,28 @@ +const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV) + +const plugins = [] +if (IS_PROD) { + plugins.push('transform-remove-console') +} + +// lazy load ant-design-vue +// if your use import on Demand, Use this code +plugins.push(['import', { + 'libraryName': 'ant-design-vue', + 'libraryDirectory': 'es', + 'style': true // `style: true` 会加载 less 文件 +}]) + +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset', + [ + '@babel/preset-env', + { + 'useBuiltIns': 'entry', + 'corejs': 3 + } + ] + ], + plugins +} diff --git a/cn-universal-web-ui/config/plugin.config.js b/cn-universal-web-ui/config/plugin.config.js new file mode 100644 index 0000000000000000000000000000000000000000..16abdf51a8d2c8e1769f2d062bf6fd0d86653f5f --- /dev/null +++ b/cn-universal-web-ui/config/plugin.config.js @@ -0,0 +1,52 @@ +const ThemeColorReplacer = require('webpack-theme-color-replacer') +const generate = require('@ant-design/colors').generate + +const getAntdSerials = (color) => { + // 淡化(即less的tint) + const lightens = new Array(9).fill().map((t, i) => { + return ThemeColorReplacer.varyColor.lighten(color, i / 10) + }) + const colorPalettes = generate(color) + const rgb = ThemeColorReplacer.varyColor.toNum3(color.replace('#', '')).join( + ',') + return lightens.concat(colorPalettes).concat(rgb) +} + +const themePluginOption = { + fileName: 'css/theme-colors-[contenthash:8].css', + matchColors: getAntdSerials('#1890ff'), // 主色系列 + // 改变样式选择器,解决样式覆盖问题 + changeSelector(selector) { + switch (selector) { + case '.ant-calendar-today .ant-calendar-date': + return ':not(.ant-calendar-selected-date):not(.ant-calendar-selected-day)' + + selector + case '.ant-btn:focus,.ant-btn:hover': + return '.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger)' + case '.ant-btn.active,.ant-btn:active': + return '.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger)' + case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon': + case '.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon': + return ':not(.ant-steps-item-process)' + selector + // fixed https://github.com/vueComponent/ant-design-vue-pro/issues/876 + case '.ant-steps-item-process .ant-steps-item-icon': + return ':not(.ant-steps-item-custom)' + selector + case '.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover': + case '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal > .ant-menu-submenu-selected,.ant-menu-horizontal > .ant-menu-submenu:hover': + return '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover' + case '.ant-menu-horizontal > .ant-menu-item-selected > a': + case '.ant-menu-horizontal>.ant-menu-item-selected>a': + return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a' + case '.ant-menu-horizontal > .ant-menu-item > a:hover': + case '.ant-menu-horizontal>.ant-menu-item>a:hover': + return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover' + default : + return selector + } + } +} + +const createThemeColorReplacerPlugin = () => new ThemeColorReplacer( + themePluginOption) + +module.exports = createThemeColorReplacerPlugin diff --git a/cn-universal-web-ui/config/themePluginConfig.js b/cn-universal-web-ui/config/themePluginConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..d35ef8bb3f6a036c70b6f5769c858887582da89e --- /dev/null +++ b/cn-universal-web-ui/config/themePluginConfig.js @@ -0,0 +1,115 @@ +export default { + theme: [ + { + key: 'dark', + fileName: 'dark.css', + theme: 'dark' + }, + { + key: '#F5222D', + fileName: '#F5222D.css', + modifyVars: { + '@primary-color': '#F5222D' + } + }, + { + key: '#FA541C', + fileName: '#FA541C.css', + modifyVars: { + '@primary-color': '#FA541C' + } + }, + { + key: '#FAAD14', + fileName: '#FAAD14.css', + modifyVars: { + '@primary-color': '#FAAD14' + } + }, + { + key: '#13C2C2', + fileName: '#13C2C2.css', + modifyVars: { + '@primary-color': '#13C2C2' + } + }, + { + key: '#52C41A', + fileName: '#52C41A.css', + modifyVars: { + '@primary-color': '#52C41A' + } + }, + { + key: '#2F54EB', + fileName: '#2F54EB.css', + modifyVars: { + '@primary-color': '#2F54EB' + } + }, + { + key: '#722ED1', + fileName: '#722ED1.css', + modifyVars: { + '@primary-color': '#722ED1' + } + }, + + { + key: '#F5222D', + theme: 'dark', + fileName: 'dark-#F5222D.css', + modifyVars: { + '@primary-color': '#F5222D' + } + }, + { + key: '#FA541C', + theme: 'dark', + fileName: 'dark-#FA541C.css', + modifyVars: { + '@primary-color': '#FA541C' + } + }, + { + key: '#FAAD14', + theme: 'dark', + fileName: 'dark-#FAAD14.css', + modifyVars: { + '@primary-color': '#FAAD14' + } + }, + { + key: '#13C2C2', + theme: 'dark', + fileName: 'dark-#13C2C2.css', + modifyVars: { + '@primary-color': '#13C2C2' + } + }, + { + key: '#52C41A', + theme: 'dark', + fileName: 'dark-#52C41A.css', + modifyVars: { + '@primary-color': '#52C41A' + } + }, + { + key: '#2F54EB', + theme: 'dark', + fileName: 'dark-#2F54EB.css', + modifyVars: { + '@primary-color': '#2F54EB' + } + }, + { + key: '#722ED1', + theme: 'dark', + fileName: 'dark-#722ED1.css', + modifyVars: { + '@primary-color': '#722ED1' + } + } + ] +} diff --git a/cn-universal-web-ui/docs/add-page-loading-animate.md b/cn-universal-web-ui/docs/add-page-loading-animate.md new file mode 100644 index 0000000000000000000000000000000000000000..c1f3015b78dec3f1759e60f07f0bffe29b9106bc --- /dev/null +++ b/cn-universal-web-ui/docs/add-page-loading-animate.md @@ -0,0 +1,29 @@ +为首屏增加 加载动画 +==== + +## 需求 + +> 为了缓解用户第一次访问时,加载 JS 过大所导致用户等待白屏时间过长导致的用户体验不好,进行的一个优化动效。 + +## 实现方案 + +1. 将 动画加载 dom 元素放在 #app 内,Vue 生命周期开始时,会自动清掉 #app 下的所有元素。 +2. 将 动画加载 dom 元素放在 body 下,Vue 生命周期开始时 App.vue (created, mounted) 调用 + `@/utils/utll` 下的 removeLoadingAnimate(#id, timeout) 则会移除加载动画 + +最后一步: +​ 将样式插入到 `public/index.html` 文件的 `` 最好写成内联 `` + + + +---- + +目前提供有两个样式,均在 `public/loading` 文件夹内。且 pro 已经默认使用了一套 loading 动画方案,可以直接参考 +`public/index.html` + +## 写在最后 + +目前 pro 有页面 overflow 显示出浏览器滚动条时,页面会抖动一下的问题。 + +欢迎各位提供能解决的方案和实现 demo。如果在条件允许的情况下,建议请直接使用 pro 进行改造,也欢迎直接 PR +到 pro 的仓库 diff --git a/cn-universal-web-ui/docs/gen/README.md b/cn-universal-web-ui/docs/gen/README.md new file mode 100644 index 0000000000000000000000000000000000000000..aa7759307ef7bd58e12108ae774a85327791690e --- /dev/null +++ b/cn-universal-web-ui/docs/gen/README.md @@ -0,0 +1,19 @@ +代码生成 +==== + +## 需求 + +> 因代码生成由后端实现,所以若需要使用代码生成功能来生成前端代码的话,需要以下修改。 + +## 实现方案 + +1. 将本目录下`antdv`文件夹放入`RuoYi-Vue`中代码生成模块(ruoyi-generator)中`resource`的`vm`文件夹下; + +2. 将本目录中`VelocityUtils.java`文件替换掉代码生成模块中`com.ruoyi.generator.util`的 + `VelocityUtils.java`文件; + +3. 重启后台项目,代码生成即由`element-ui`成功改为`ant design vue`。 + +![需替换及新增的位置](https://oss.fuzui.net/img/20210202004013.png) + + diff --git a/cn-universal-web-ui/docs/gen/VelocityUtils.java b/cn-universal-web-ui/docs/gen/VelocityUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..27c410284d41ff98aa50c30900b68f9d7926c3bf --- /dev/null +++ b/cn-universal-web-ui/docs/gen/VelocityUtils.java @@ -0,0 +1,348 @@ +package com.ruoyi.generator.util; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.constant.GenConstants; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.generator.domain.GenTable; +import com.ruoyi.generator.domain.GenTableColumn; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import org.apache.velocity.VelocityContext; + +/** + * 模板处理工具类 + * + * @author ruoyi + */ +public class VelocityUtils { + /** 项目空间路径 */ + private static final String PROJECT_PATH = "main/java"; + + /** mybatis空间路径 */ + private static final String MYBATIS_PATH = "main/resources/mapper"; + + /** 默认上级菜单,系统工具 */ + private static final String DEFAULT_PARENT_MENU_ID = "3"; + + /** + * 设置模板变量信息 + * + * @return 模板列表 + */ + public static VelocityContext prepareContext(GenTable genTable) { + String moduleName = genTable.getModuleName(); + String businessName = genTable.getBusinessName(); + String packageName = genTable.getPackageName(); + String tplCategory = genTable.getTplCategory(); + String functionName = genTable.getFunctionName(); + + VelocityContext velocityContext = new VelocityContext(); + velocityContext.put("tplCategory", genTable.getTplCategory()); + velocityContext.put("tableName", genTable.getTableName()); + velocityContext.put( + "functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); + velocityContext.put("ClassName", genTable.getClassName()); + velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); + velocityContext.put("moduleName", genTable.getModuleName()); + velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); + velocityContext.put("businessName", genTable.getBusinessName()); + velocityContext.put("basePackage", getPackagePrefix(packageName)); + velocityContext.put("packageName", packageName); + velocityContext.put("author", genTable.getFunctionAuthor()); + velocityContext.put("datetime", DateUtils.getDate()); + velocityContext.put("pkColumn", genTable.getPkColumn()); + velocityContext.put("importList", getImportList(genTable)); + velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); + velocityContext.put("columns", genTable.getColumns()); + velocityContext.put("table", genTable); + velocityContext.put("dicts", getDicts(genTable)); + setMenuVelocityContext(velocityContext, genTable); + if (GenConstants.TPL_TREE.equals(tplCategory)) { + setTreeVelocityContext(velocityContext, genTable); + } + if (GenConstants.TPL_SUB.equals(tplCategory)) { + setSubVelocityContext(velocityContext, genTable); + } + return velocityContext; + } + + public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSONObject.parseObject(options); + String parentMenuId = getParentMenuId(paramsObj); + context.put("parentMenuId", parentMenuId); + } + + public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSONObject.parseObject(options); + String treeCode = getTreecode(paramsObj); + String treeParentCode = getTreeParentCode(paramsObj); + String treeName = getTreeName(paramsObj); + + context.put("treeCode", treeCode); + context.put("treeParentCode", treeParentCode); + context.put("treeName", treeName); + context.put("expandColumn", getExpandColumn(genTable)); + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + if (paramsObj.containsKey(GenConstants.TREE_NAME)) { + context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); + } + } + + public static void setSubVelocityContext(VelocityContext context, GenTable genTable) { + GenTable subTable = genTable.getSubTable(); + String subTableName = genTable.getSubTableName(); + String subTableFkName = genTable.getSubTableFkName(); + String subClassName = genTable.getSubTable().getClassName(); + String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName); + + context.put("subTable", subTable); + context.put("subTableName", subTableName); + context.put("subTableFkName", subTableFkName); + context.put("subTableFkClassName", subTableFkClassName); + context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName)); + context.put("subClassName", subClassName); + context.put("subclassName", StringUtils.uncapitalize(subClassName)); + context.put("subImportList", getImportList(genTable.getSubTable())); + } + + /** + * 获取模板信息 + * + * @return 模板列表 + */ + public static List getTemplateList(String tplCategory) { + List templates = new ArrayList(); + templates.add("vm/java/domain.java.vm"); + templates.add("vm/java/mapper.java.vm"); + templates.add("vm/java/service.java.vm"); + templates.add("vm/java/serviceImpl.java.vm"); + templates.add("vm/java/controller.java.vm"); + templates.add("vm/xml/mapper.xml.vm"); + templates.add("vm/sql/sql.vm"); + templates.add("vm/antdv/js/api.js.vm"); + if (GenConstants.TPL_CRUD.equals(tplCategory) || GenConstants.TPL_TREE.equals(tplCategory)) { + templates.add("vm/antdv/index.vue.vm"); + templates.add("vm/antdv/modules/CreateForm.vue.vm"); + } else if (GenConstants.TPL_SUB.equals(tplCategory)) { + templates.add("vm/antdv/index.vue.vm"); + templates.add("vm/antdv/modules/CreateForm.vue.vm"); + templates.add("vm/antdv/modules/SubTable.vue.vm"); + templates.add("vm/antdv/modules/CreateSubForm.vue.vm"); + templates.add("vm/java/sub-domain.java.vm"); + } + return templates; + } + + /** 获取文件名 */ + public static String getFileName(String template, GenTable genTable) { + // 文件名称 + String fileName = ""; + // 包路径 + String packageName = genTable.getPackageName(); + // 模块名 + String moduleName = genTable.getModuleName(); + // 大写类名 + String className = genTable.getClassName(); + // 业务名称 + String businessName = genTable.getBusinessName(); + + String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); + String mybatisPath = MYBATIS_PATH + "/" + moduleName; + String vuePath = "vue"; + + if (template.contains("domain.java.vm")) { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); + } + if (template.contains("sub-domain.java.vm") + && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) { + fileName = + StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); + } else if (template.contains("mapper.java.vm")) { + fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); + } else if (template.contains("service.java.vm")) { + fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); + } else if (template.contains("serviceImpl.java.vm")) { + fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); + } else if (template.contains("controller.java.vm")) { + fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); + } else if (template.contains("mapper.xml.vm")) { + fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); + } else if (template.contains("sql.vm")) { + fileName = businessName + "Menu.sql"; + } else if (template.contains("api.js.vm")) { + fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); + } else if (template.contains("index.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } else if (template.contains("CreateForm.vue.vm")) { + fileName = + StringUtils.format( + "{}/views/{}/{}/modules/CreateForm.vue", vuePath, moduleName, businessName); + } else if (template.contains("index-tree.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } else if (template.contains("SubTable.vue.vm")) { + fileName = + StringUtils.format( + "{}/views/{}/{}/modules/SubTable.vue", vuePath, moduleName, businessName); + } else if (template.contains("CreateSubForm.vue.vm")) { + fileName = + StringUtils.format( + "{}/views/{}/{}/modules/CreateSubForm.vue", vuePath, moduleName, businessName); + } + System.out.println(fileName); + return fileName; + } + + /** + * 获取包前缀 + * + * @param packageName 包名称 + * @return 包前缀名称 + */ + public static String getPackagePrefix(String packageName) { + int lastIndex = packageName.lastIndexOf("."); + String basePackage = StringUtils.substring(packageName, 0, lastIndex); + return basePackage; + } + + /** + * 根据列类型获取导入包 + * + * @param genTable 业务表对象 + * @return 返回需要导入的包列表 + */ + public static HashSet getImportList(GenTable genTable) { + List columns = genTable.getColumns(); + GenTable subGenTable = genTable.getSubTable(); + HashSet importList = new HashSet(); + if (StringUtils.isNotNull(subGenTable)) { + importList.add("java.util.List"); + } + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) { + importList.add("java.util.Date"); + importList.add("com.fasterxml.jackson.annotation.JsonFormat"); + } else if (!column.isSuperColumn() + && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) { + importList.add("java.math.BigDecimal"); + } + } + return importList; + } + + /** + * 根据列类型获取字典组 + * + * @param genTable 业务表对象 + * @return 返回字典组 + */ + public static String getDicts(GenTable genTable) { + List columns = genTable.getColumns(); + List dicts = new ArrayList(); + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() + && StringUtils.isNotEmpty(column.getDictType()) + && StringUtils.equalsAny( + column.getHtmlType(), + new String[] { + GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX + })) { + dicts.add("'" + column.getDictType() + "'"); + } + } + return StringUtils.join(dicts, ", "); + } + + /** + * 获取权限前缀 + * + * @param moduleName 模块名称 + * @param businessName 业务名称 + * @return 返回权限前缀 + */ + public static String getPermissionPrefix(String moduleName, String businessName) { + return StringUtils.format("{}:{}", moduleName, businessName); + } + + /** + * 获取上级菜单ID字段 + * + * @param paramsObj 生成其他选项 + * @return 上级菜单ID字段 + */ + public static String getParentMenuId(JSONObject paramsObj) { + if (StringUtils.isNotEmpty(paramsObj) + && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) + && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID))) { + return paramsObj.getString(GenConstants.PARENT_MENU_ID); + } + return DEFAULT_PARENT_MENU_ID; + } + + /** + * 获取树编码 + * + * @param paramsObj 生成其他选项 + * @return 树编码 + */ + public static String getTreecode(JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_CODE)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树父编码 + * + * @param paramsObj 生成其他选项 + * @return 树父编码 + */ + public static String getTreeParentCode(JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 获取树名称 + * + * @param paramsObj 生成其他选项 + * @return 树名称 + */ + public static String getTreeName(JSONObject paramsObj) { + if (paramsObj.containsKey(GenConstants.TREE_NAME)) { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); + } + return StringUtils.EMPTY; + } + + /** + * 获取需要在哪一列上面显示展开按钮 + * + * @param genTable 业务表对象 + * @return 展开按钮列序号 + */ + public static int getExpandColumn(GenTable genTable) { + String options = genTable.getOptions(); + JSONObject paramsObj = JSONObject.parseObject(options); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + int num = 0; + for (GenTableColumn column : genTable.getColumns()) { + if (column.isList()) { + num++; + String columnName = column.getColumnName(); + if (columnName.equals(treeName)) { + break; + } + } + } + return num; + } +} diff --git a/cn-universal-web-ui/docs/gen/antdv/index.vue.vm b/cn-universal-web-ui/docs/gen/antdv/index.vue.vm new file mode 100644 index 0000000000000000000000000000000000000000..523dc9c8223a62a05e5ac9fd8f6b001517f11054 --- /dev/null +++ b/cn-universal-web-ui/docs/gen/antdv/index.vue.vm @@ -0,0 +1,498 @@ + + + diff --git a/cn-universal-web-ui/docs/gen/antdv/js/api.js.vm b/cn-universal-web-ui/docs/gen/antdv/js/api.js.vm new file mode 100644 index 0000000000000000000000000000000000000000..f178b7ded692b7b94a7f74ed571b22f20daa1dbd --- /dev/null +++ b/cn-universal-web-ui/docs/gen/antdv/js/api.js.vm @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询${functionName}列表 +export function list${BusinessName} (query) { + return request({ + url: '/${moduleName}/${businessName}/list', + method: 'get', + params: query + }) +} + +// 查询${functionName}详细 +export function get${BusinessName} (${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'get' + }) +} + +// 新增${functionName} +export function add${BusinessName} (data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'post', + data: data + }) +} + +// 修改${functionName} +export function update${BusinessName} (data) { + return request({ + url: '/${moduleName}/${businessName}', + method: 'put', + data: data + }) +} + +// 删除${functionName} +export function del${BusinessName} (${pkColumn.javaField}) { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/docs/gen/antdv/modules/CreateForm.vue.vm b/cn-universal-web-ui/docs/gen/antdv/modules/CreateForm.vue.vm new file mode 100644 index 0000000000000000000000000000000000000000..1e4db00c15bda2fadc21b9cd0a107be1591a2e3d --- /dev/null +++ b/cn-universal-web-ui/docs/gen/antdv/modules/CreateForm.vue.vm @@ -0,0 +1,424 @@ +#set($isInsert=0) +#set($isEdit=0) +#set($hasRichText=0) +#foreach($column in $columns) + #if($column.insert) + #set($isInsert=1) + #end + #if($column.edit) + #set($isEdit=1) + #end + #if($isInsert == 1 && $isEdit == 1) + #break + #end +#end +#if($isInsert == 0 && $isEdit == 0) + + +#stop +#end + + + diff --git a/cn-universal-web-ui/docs/gen/antdv/modules/CreateSubForm.vue.vm b/cn-universal-web-ui/docs/gen/antdv/modules/CreateSubForm.vue.vm new file mode 100644 index 0000000000000000000000000000000000000000..b6e27a0919828cce6d1f632605aee8610d1df46d --- /dev/null +++ b/cn-universal-web-ui/docs/gen/antdv/modules/CreateSubForm.vue.vm @@ -0,0 +1,101 @@ + + + diff --git a/cn-universal-web-ui/docs/gen/antdv/modules/SubTable.vue.vm b/cn-universal-web-ui/docs/gen/antdv/modules/SubTable.vue.vm new file mode 100644 index 0000000000000000000000000000000000000000..29ebc336a1711bcd277964502a1c3a5b0e512930 --- /dev/null +++ b/cn-universal-web-ui/docs/gen/antdv/modules/SubTable.vue.vm @@ -0,0 +1,152 @@ + + + diff --git a/cn-universal-web-ui/docs/webpack-bundle-analyzer.md b/cn-universal-web-ui/docs/webpack-bundle-analyzer.md new file mode 100644 index 0000000000000000000000000000000000000000..bd3534c7473bcc4963fb1d946cc3c7a97d14fc09 --- /dev/null +++ b/cn-universal-web-ui/docs/webpack-bundle-analyzer.md @@ -0,0 +1,39 @@ +先增加依赖 + +```bash +// npm +$ npm install --save-dev webpack-bundle-analyzer + +// or yarn +$ yarn add webpack-bundle-analyzer -D +``` + +配置文件 `vue.config.js` 增加 `configureWebpack.plugins` 参数 + +``` +const path = require('path') +const webpack = require('webpack') +const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + +function resolve (dir) { + return path.join(__dirname, dir) +} + +// vue.config.js +module.exports = { + configureWebpack: { + plugins: [ + // Ignore all locale files of moment.js + new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + // 依赖大小分析工具 + new BundleAnalyzerPlugin(), + ] + }, + + + ... +} +``` + +启动 `cli` 的 `build` 命令进行项目编译,编译完成时,会自动运行一个 http://localhost:8888 +的地址,完整显示了支持库依赖 \ No newline at end of file diff --git a/cn-universal-web-ui/jest.config.js b/cn-universal-web-ui/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..29fee32be8a01f71ed444bd3038992dba60295db --- /dev/null +++ b/cn-universal-web-ui/jest.config.js @@ -0,0 +1,23 @@ +module.exports = { + moduleFileExtensions: [ + 'js', + 'jsx', + 'json', + 'vue' + ], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: [ + 'jest-serializer-vue' + ], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + ], + testURL: 'http://localhost/' +} diff --git a/cn-universal-web-ui/jsconfig.json b/cn-universal-web-ui/jsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..65650b55ed9e7fef384119b62b4a0947a4026137 --- /dev/null +++ b/cn-universal-web-ui/jsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "es6", + "baseUrl": ".", + "paths": { + "@/*": [ + "src/*" + ] + } + }, + "exclude": [ + "node_modules", + "dist" + ], + "include": [ + "src/**/*" + ] +} diff --git a/cn-universal-web-ui/nginx.conf b/cn-universal-web-ui/nginx.conf new file mode 100644 index 0000000000000000000000000000000000000000..80cd0a1c0a1935a71b97a892e4316dff6781516a --- /dev/null +++ b/cn-universal-web-ui/nginx.conf @@ -0,0 +1,83 @@ +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # 日志格式 + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + error_log /var/log/nginx/error.log warn; + + # 基本设置 + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + # Gzip 压缩 + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_proxied any; + gzip_comp_level 6; + gzip_types + text/plain + text/css + text/xml + text/javascript + application/json + application/javascript + application/xml+rss + application/atom+xml + image/svg+xml; + + server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + # 静态资源缓存 + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + # API 代理到后端服务 + location /api/ { + proxy_pass http://backend:9092/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_connect_timeout 30s; + proxy_send_timeout 30s; + proxy_read_timeout 30s; + } + + # 健康检查 + location /health { + access_log off; + return 200 "healthy\n"; + add_header Content-Type text/plain; + } + + # 前端路由支持 + location / { + try_files $uri $uri/ /index.html; + } + + # 错误页面 + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + } +} diff --git a/cn-universal-web-ui/package.json b/cn-universal-web-ui/package.json new file mode 100644 index 0000000000000000000000000000000000000000..a2837a2adb67b0b001cc8f082ea01f2754ce538b --- /dev/null +++ b/cn-universal-web-ui/package.json @@ -0,0 +1,87 @@ +{ + "name": "universal", + "version": "1.0.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "test:unit": "vue-cli-service test:unit", + "lint": "vue-cli-service lint", + "dev": "vue-cli-service serve", + "start": "vue-cli-service serve" + }, + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "ant-design-vue": "^1.7.8", + "axios": "^1.10.0", + "codemirror": "^5.65.19", + "concurrently": "^7.0.0", + "core-js": "^3.19.2", + "echarts": "^5.2.2", + "ezuikit-flv": "^1.0.3-alpha.1", + "file-saver": "^2.0.5", + "highlight.js": "^11.3.1", + "jsencrypt": "^3.3.2", + "lodash": "^4.17.21", + "lodash.clonedeep": "^4.5.0", + "lodash.get": "^4.4.2", + "lodash.pick": "^4.4.0", + "md5": "^2.3.0", + "mockjs2": "^1.0.8", + "moment": "^2.29.1", + "nprogress": "^0.2.0", + "qs": "^6.10.1", + "screenfull": "5.0.2", + "sql-formatter": "^4.0.2", + "store": "^2.0.12", + "vue": "^2.6.11", + "vue-clipboard2": "^0.3.3", + "vue-codemirror": "^4.0.6", + "vue-container-query": "^0.1.0", + "vue-copy-to-clipboard": "^1.0.3", + "vue-count-to": "^1.0.13", + "vue-cropper": "0.5.8", + "vue-i18n": "^8.24.2", + "vue-json-viewer": "^2.2.21", + "vue-resizable": "2.1.3", + "vue-router": "^3.2.0", + "vue-svg-component-runtime": "^1.0.1", + "vuex": "^3.4.0", + "wangeditor": "^4.7.10" + }, + "devDependencies": { + "@ant-design/colors": "^6.0.0", + "@babel/eslint-parser": "^7.27.5", + "@vue/cli-plugin-babel": "^4.0.4", + "@vue/cli-plugin-router": "^4.0.4", + "@vue/cli-plugin-unit-jest": "^4.0.4", + "@vue/cli-plugin-vuex": "^4.0.4", + "@vue/cli-service": "^4.0.4", + "@vue/eslint-config-standard": "^4.0.0", + "@vue/test-utils": "^1.3.0", + "babel-plugin-import": "^1.12.2", + "babel-plugin-transform-remove-console": "^6.9.4", + "eslint": "^8.57.1", + "eslint-plugin-html": "^5.0.0", + "eslint-plugin-vue": "^8.7.1", + "git-revision-webpack-plugin": "^3.0.6", + "husky": "^7.0.4", + "less": "^3.13.1", + "less-loader": "^7.3.0", + "lint-staged": "^12.1.3", + "opencollective": "^1.0.3", + "opencollective-postinstall": "^2.0.2", + "vue-svg-icon-loader": "^2.1.1", + "vue-template-compiler": "^2.7.16", + "webpack": "^4.46.0", + "webpack-theme-color-replacer": "^1.3.12" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.{js,vue,md,jsx,css}": "eslint --cache --fix" + } +} diff --git a/cn-universal-web-ui/postcss.config.js b/cn-universal-web-ui/postcss.config.js new file mode 100644 index 0000000000000000000000000000000000000000..961986e2b11eeebe1d4ddabdf2e6c85e2a2562e0 --- /dev/null +++ b/cn-universal-web-ui/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/cn-universal-web-ui/public/css/iconfont.css b/cn-universal-web-ui/public/css/iconfont.css new file mode 100644 index 0000000000000000000000000000000000000000..ab434679c18587f722c23686fb80d709d84124ab --- /dev/null +++ b/cn-universal-web-ui/public/css/iconfont.css @@ -0,0 +1,1995 @@ +@font-face { + font-family: "iconfont"; /* Project id 1291092 */ + src: url('iconfont.woff2?t=1673251105600') format('woff2'), + url('iconfont.woff?t=1673251105600') format('woff'), + url('iconfont.ttf?t=1673251105600') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-slider:before { + content: "\e7e0"; +} + +.icon-slider-right:before { + content: "\ea19"; +} + +.icon-list:before { + content: "\e7de"; +} + +.icon-tree:before { + content: "\e7df"; +} + +.icon-shipin:before { + content: "\e7db"; +} + +.icon-shipin1:before { + content: "\e7dc"; +} + +.icon-shipin2:before { + content: "\e7dd"; +} + +.icon-LC_icon_gps_fill:before { + content: "\e7da"; +} + +.icon-jiedianleizhukongzhongxin1:before { + content: "\e9d0"; +} + +.icon-jiedianleizhukongzhongxin2:before { + content: "\e9d1"; +} + +.icon-jiedianleilianjipingtai:before { + content: "\e9d3"; +} + +.icon-jiedianleiquyu:before { + content: "\e9d4"; +} + +.icon-shebeileigis:before { + content: "\e9ec"; +} + +.icon-shebeileibanqiu:before { + content: "\e9f5"; +} + +.icon-shebeileibanqiugis:before { + content: "\e9f6"; +} + +.icon-shebeileijiankongdian:before { + content: "\ea07"; +} + +.icon-shebeileiqiangjitongdao:before { + content: "\ea15"; +} + +.icon-shebeileiqiuji:before { + content: "\ea17"; +} + +.icon-shebeileiqiujigis:before { + content: "\ea18"; +} + +.icon-xitongxinxi:before { + content: "\e7d6"; +} + +.icon-gbaojings:before { + content: "\e7d7"; +} + +.icon-gjichus:before { + content: "\e7d8"; +} + +.icon-gxunjians:before { + content: "\e7d9"; +} + +.icon-ziyuan:before { + content: "\e7d5"; +} + +.icon-shexiangtou1:before { + content: "\e7d4"; +} + +.icon-wxbzhuye:before { + content: "\e7d1"; +} + +.icon-mulu:before { + content: "\e7d2"; +} + +.icon-zhibo:before { + content: "\e8c1"; +} + +.icon-shexiangtou:before { + content: "\e7d3"; +} + +.icon-suoxiao:before { + content: "\e79a"; +} + +.icon-shanchu3:before { + content: "\e79b"; +} + +.icon-chehui:before { + content: "\e79c"; +} + +.icon-wenben:before { + content: "\e79d"; +} + +.icon-zhongzuo:before { + content: "\e79e"; +} + +.icon-jianqie:before { + content: "\e79f"; +} + +.icon-fangda:before { + content: "\e7a0"; +} + +.icon-fangdazhanshi:before { + content: "\e7a1"; +} + +.icon-qianjin:before { + content: "\e7a2"; +} + +.icon-houtui:before { + content: "\e7a3"; +} + +.icon-diyigeshipin:before { + content: "\e7a4"; +} + +.icon-kuaijin:before { + content: "\e7a5"; +} + +.icon-kaishi:before { + content: "\e7a7"; +} + +.icon-zuihouyigeshipin:before { + content: "\e7a8"; +} + +.icon-zanting:before { + content: "\e7a9"; +} + +.icon-zhankai:before { + content: "\e7aa"; +} + +.icon-bendisucai:before { + content: "\e7ab"; +} + +.icon-luzhi:before { + content: "\e7ac"; +} + +.icon-ossziyuan:before { + content: "\e7ad"; +} + +.icon-chuangjianzhinengfenxirenwu:before { + content: "\e7ae"; +} + +.icon-sousuo3:before { + content: "\e7af"; +} + +.icon-gengduo:before { + content: "\e7b0"; +} + +.icon-tianjia:before { + content: "\e7b1"; +} + +.icon-xiazai:before { + content: "\e7b2"; +} + +.icon-biaojibeifen:before { + content: "\e7b3"; +} + +.icon-bendisucaibeifen:before { + content: "\e7b4"; +} + +.icon-luzhibeifen:before { + content: "\e7b5"; +} + +.icon-ossziyuanbeifen:before { + content: "\e7b6"; +} + +.icon-bianji3:before { + content: "\e7b7"; +} + +.icon-cuti:before { + content: "\e7b8"; +} + +.icon-xieti:before { + content: "\e7b9"; +} + +.icon-xiahuaxian:before { + content: "\e7ba"; +} + +.icon-wuxiaoguo:before { + content: "\e7bb"; +} + +.icon-sousuo4:before { + content: "\e7bc"; +} + +.icon-gouwuche:before { + content: "\e7bd"; +} + +.icon-shuaxin2:before { + content: "\e7be"; +} + +.icon-xiaoxi:before { + content: "\e7bf"; +} + +.icon-wushouquan:before { + content: "\e7c0"; +} + +.icon-tishi2:before { + content: "\e7c1"; +} + +.icon-tishi1:before { + content: "\e7c2"; +} + +.icon-shouquanchenggong:before { + content: "\e7c3"; +} + +.icon-sousuo5:before { + content: "\e7c4"; +} + +.icon-shuaxin3:before { + content: "\e7c5"; +} + +.icon-xiazai1:before { + content: "\e7c6"; +} + +.icon-shangchuan:before { + content: "\e7c7"; +} + +.icon-guanbi:before { + content: "\e7c8"; +} + +.icon-wangye-loading:before { + content: "\e7c9"; +} + +.icon-bianzubeifen3:before { + content: "\e7ca"; +} + +.icon-xingzhuangbeifen:before { + content: "\e7cb"; +} + +.icon-bianzubeifen:before { + content: "\e7cc"; +} + +.icon-zhuanchang:before { + content: "\e7cd"; +} + +.icon-meizi:before { + content: "\e7ce"; +} + +.icon-daimabeifen:before { + content: "\e7cf"; +} + +.icon-suoxiao1:before { + content: "\e7d0"; +} + +.icon-ai19:before { + content: "\e799"; +} + +.icon-online:before { + content: "\e600"; +} + +.icon-xiangqing2:before { + content: "\e798"; +} + +.icon-record:before { + content: "\e7a6"; +} + +.icon-audio-mute:before { + content: "\e792"; +} + +.icon-audio-high:before { + content: "\e793"; +} + +.icon-record1:before { + content: "\e7f8"; +} + +.icon-audio-line:before { + content: "\e794"; +} + +.icon-record2:before { + content: "\e795"; +} + +.icon-audio-fill:before { + content: "\e796"; +} + +.icon-PTZ:before { + content: "\e797"; +} + +.icon-camera1196054easyiconnet:before { + content: "\e791"; +} + +.icon-weibiaoti10:before { + content: "\e78f"; +} + +.icon-weibiaoti11:before { + content: "\e790"; +} + +.icon-page-next1:before { + content: "\e69c"; +} + +.icon-page-last1:before { + content: "\e69d"; +} + +.icon-ptz-down1:before { + content: "\e69e"; +} + +.icon-file-search1:before { + content: "\e69f"; +} + +.icon-page-first1:before { + content: "\e6a0"; +} + +.icon-fork1:before { + content: "\e6a1"; +} + +.icon-ptz-middle1:before { + content: "\e6a2"; +} + +.icon-ptz-upright1:before { + content: "\e6a3"; +} + +.icon-ptz-downleft1:before { + content: "\e6a4"; +} + +.icon-window-restore1:before { + content: "\e6a5"; +} + +.icon-plus1:before { + content: "\e6a6"; +} + +.icon-ptz-right1:before { + content: "\e6a7"; +} + +.icon-stop:before { + content: "\e6a8"; +} + +.icon-refresh1:before { + content: "\e6a9"; +} + +.icon-tool-polyline1:before { + content: "\e6aa"; +} + +.icon-tool-point1:before { + content: "\e6ab"; +} + +.icon-minus1:before { + content: "\e6ac"; +} + +.icon-ptz-wiper1:before { + content: "\e6ad"; +} + +.icon-tool-select1:before { + content: "\e6ae"; +} + +.icon-tool-polygon1:before { + content: "\e6af"; +} + +.icon-settings1:before { + content: "\e6b0"; +} + +.icon-search1:before { + content: "\e6b1"; +} + +.icon-ir-vis1:before { + content: "\e6b2"; +} + +.icon-ptz-light1:before { + content: "\e6b3"; +} + +.icon-ptz-up1:before { + content: "\e6b4"; +} + +.icon-ptz-upleft1:before { + content: "\e6b5"; +} + +.icon-temp-stream1:before { + content: "\e6b6"; +} + +.icon-tool-mouse1:before { + content: "\e6b7"; +} + +.icon-zhongyingwenyingwen-01:before { + content: "\e6b8"; +} + +.icon-zhongyingwenyingwen02-01:before { + content: "\e6b9"; +} + +.icon-crop2:before { + content: "\e6ba"; +} + +.icon-expander-down2:before { + content: "\e6bb"; +} + +.icon-window-restore2:before { + content: "\e6bc"; +} + +.icon-file-jpg2:before { + content: "\e6bd"; +} + +.icon-asterisk3:before { + content: "\e6be"; +} + +.icon-ffc2:before { + content: "\e6bf"; +} + +.icon-file-record2:before { + content: "\e6c0"; +} + +.icon-file-stream2:before { + content: "\e6c1"; +} + +.icon-fork2:before { + content: "\e6c2"; +} + +.icon-file-mp42:before { + content: "\e6c3"; +} + +.icon-ir-vis2:before { + content: "\e6c4"; +} + +.icon-file-search2:before { + content: "\e6c5"; +} + +.icon-pause:before { + content: "\e6c6"; +} + +.icon-play1:before { + content: "\e6c7"; +} + +.icon-page-previous2:before { + content: "\e6c8"; +} + +.icon-page-next2:before { + content: "\e6c9"; +} + +.icon-minus2:before { + content: "\e6ca"; +} + +.icon-page-last2:before { + content: "\e6cb"; +} + +.icon-page-first2:before { + content: "\e6cc"; +} + +.icon-ptz-downleft2:before { + content: "\e6cd"; +} + +.icon-ptz-downright2:before { + content: "\e6ce"; +} + +.icon-ptz-middle2:before { + content: "\e6cf"; +} + +.icon-ptz-down2:before { + content: "\e6d0"; +} + +.icon-plus2:before { + content: "\e6d1"; +} + +.icon-ptz-left2:before { + content: "\e6d2"; +} + +.icon-ptz-up2:before { + content: "\e6d3"; +} + +.icon-ptz-right2:before { + content: "\e6d4"; +} + +.icon-ptz-light2:before { + content: "\e6d5"; +} + +.icon-ptz-wiper2:before { + content: "\e6d6"; +} + +.icon-ptz-upright2:before { + content: "\e6d7"; +} + +.icon-search2:before { + content: "\e6d8"; +} + +.icon-refresh2:before { + content: "\e6d9"; +} + +.icon-ptz-upleft2:before { + content: "\e6da"; +} + +.icon-stop1:before { + content: "\e6db"; +} + +.icon-tool-mouse2:before { + content: "\e6dc"; +} + +.icon-settings2:before { + content: "\e6dd"; +} + +.icon-tool-polygon2:before { + content: "\e6de"; +} + +.icon-tool-point2:before { + content: "\e6df"; +} + +.icon-temp-stream2:before { + content: "\e6e0"; +} + +.icon-tool-polyline2:before { + content: "\e6e1"; +} + +.icon-window-maximize2:before { + content: "\e6e2"; +} + +.icon-window-minimize2:before { + content: "\e6e3"; +} + +.icon-tool-select2:before { + content: "\e6e4"; +} + +.icon-video-stream2:before { + content: "\e6e5"; +} + +.icon-bianji1:before { + content: "\e6e6"; +} + +.icon-caidanzhankai1:before { + content: "\e6e7"; +} + +.icon-cha11:before { + content: "\e6e8"; +} + +.icon-caidanshouqi1:before { + content: "\e6e9"; +} + +.icon-zhongyingwen2zhongwen1:before { + content: "\e6ea"; +} + +.icon-bofang011:before { + content: "\e6eb"; +} + +.icon-zuo:before { + content: "\e6ec"; +} + +.icon-baojing1:before { + content: "\e6ed"; +} + +.icon-fuxuankuang-true1:before { + content: "\e6ee"; +} + +.icon-bofang2:before { + content: "\e6ef"; +} + +.icon-baojingshezhi1:before { + content: "\e6f0"; +} + +.icon-jiahao2:before { + content: "\e6f1"; +} + +.icon-huifangxuanzhong1:before { + content: "\e6f2"; +} + +.icon-cewen1:before { + content: "\e6f3"; +} + +.icon-baojingjilu2:before { + content: "\e6f4"; +} + +.icon-danxuan1:before { + content: "\e6f5"; +} + +.icon-pingmufenge1:before { + content: "\e6f6"; +} + +.icon-luxiangguanli1:before { + content: "\e6f7"; +} + +.icon-goukuang:before { + content: "\e6f8"; +} + +.icon-shanchu11:before { + content: "\e6f9"; +} + +.icon-cha02:before { + content: "\e6fa"; +} + +.icon-huifang1:before { + content: "\e6fb"; +} + +.icon-rili1:before { + content: "\e6fc"; +} + +.icon-quanping1:before { + content: "\e6fd"; +} + +.icon-jianhao1:before { + content: "\e6fe"; +} + +.icon-shijian1:before { + content: "\e6ff"; +} + +.icon-shishiyulanxuanzhong1:before { + content: "\e700"; +} + +.icon-shouji1:before { + content: "\e701"; +} + +.icon-shouyexuanzhong1:before { + content: "\e702"; +} + +.icon-luxiang01:before { + content: "\e703"; +} + +.icon-shishiyulan:before { + content: "\e704"; +} + +.icon-quxiao:before { + content: "\e601"; +} + +.icon-sousuo1:before { + content: "\e705"; +} + +.icon-file-record:before { + content: "\e602"; +} + +.icon-shebeiguanli1:before { + content: "\e706"; +} + +.icon-play:before { + content: "\e603"; +} + +.icon-suo1:before { + content: "\e707"; +} + +.icon-file-stream:before { + content: "\e604"; +} + +.icon-tuichudenglu1:before { + content: "\e708"; +} + +.icon-ptz-middle:before { + content: "\e606"; +} + +.icon-wenhao1:before { + content: "\e709"; +} + +.icon-minus:before { + content: "\e607"; +} + +.icon-shezhixuanzhong:before { + content: "\e70a"; +} + +.icon-fork:before { + content: "\e608"; +} + +.icon-shezhiweixuanzhong1:before { + content: "\e70b"; +} + +.icon-ptz-up:before { + content: "\e609"; +} + +.icon-shuju2:before { + content: "\e70c"; +} + +.icon-file-jpg:before { + content: "\e60a"; +} + +.icon-xiazai011:before { + content: "\e70d"; +} + +.icon-ptz-left:before { + content: "\e60b"; +} + +.icon-xiala11:before { + content: "\e70e"; +} + +.icon-ptz-down:before { + content: "\e60c"; +} + +.icon-shuaxin:before { + content: "\e70f"; +} + +.icon-file-search:before { + content: "\e60d"; +} + +.icon-pingmufenge01:before { + content: "\e710"; +} + +.icon-crop:before { + content: "\e60e"; +} + +.icon-yonghu1:before { + content: "\e711"; +} + +.icon-asterisk:before { + content: "\e60f"; +} + +.icon-wenhao01:before { + content: "\e712"; +} + +.icon-expander-down:before { + content: "\e610"; +} + +.icon-you:before { + content: "\e713"; +} + +.icon-ptz-right:before { + content: "\e611"; +} + +.icon-shujuxuanzhong1:before { + content: "\e714"; +} + +.icon-ptz-wiper:before { + content: "\e612"; +} + +.icon-kuangxuan1:before { + content: "\e715"; +} + +.icon-ir-vis:before { + content: "\e613"; +} + +.icon-yonghuguanli1:before { + content: "\e716"; +} + +.icon-ptz-upleft:before { + content: "\e614"; +} + +.icon-zhongyingwenyingwen:before { + content: "\e717"; +} + +.icon-ptz-downright:before { + content: "\e615"; +} + +.icon-xiala2:before { + content: "\e718"; +} + +.icon-search:before { + content: "\e616"; +} + +.icon-luxiang:before { + content: "\e719"; +} + +.icon-ptz-upright:before { + content: "\e617"; +} + +.icon-zanting2:before { + content: "\e71a"; +} + +.icon-ptz-downleft:before { + content: "\e618"; +} + +.icon-kefu:before { + content: "\e71b"; +} + +.icon-tool-point:before { + content: "\e619"; +} + +.icon-jiqiren:before { + content: "\e71c"; +} + +.icon-ptz-light:before { + content: "\e61a"; +} + +.icon-huanliuzhan:before { + content: "\e71d"; +} + +.icon-tool-polyline:before { + content: "\e61b"; +} + +.icon-shouji2:before { + content: "\e71e"; +} + +.icon-file-mp4:before { + content: "\e61c"; +} + +.icon-cangku:before { + content: "\e71f"; +} + +.icon-window-maximize:before { + content: "\e61d"; +} + +.icon-shuaxin11:before { + content: "\e720"; +} + +.icon-page-next:before { + content: "\e61e"; +} + +.icon-weixiu:before { + content: "\e721"; +} + +.icon-ffc:before { + content: "\e61f"; +} + +.icon-biandianzhan:before { + content: "\e722"; +} + +.icon-tool-mouse:before { + content: "\e620"; +} + +.icon-youxiang:before { + content: "\e723"; +} + +.icon-settings:before { + content: "\e621"; +} + +.icon-qq:before { + content: "\e724"; +} + +.icon-page-last:before { + content: "\e622"; +} + +.icon-dianhua01:before { + content: "\e725"; +} + +.icon-window-restore:before { + content: "\e624"; +} + +.icon-fasongyoujian:before { + content: "\e726"; +} + +.icon-tool-select:before { + content: "\e625"; +} + +.icon-gaotieyunhangcopy:before { + content: "\e727"; +} + +.icon-video-stream:before { + content: "\e627"; +} + +.icon-dizhi:before { + content: "\e728"; +} + +.icon-page-first:before { + content: "\e628"; +} + +.icon-anfangbaojingmian:before { + content: "\e729"; +} + +.icon-page-previous:before { + content: "\e629"; +} + +.icon-piliangcaozuo1:before { + content: "\e72a"; +} + +.icon-refresh:before { + content: "\e62a"; +} + +.icon-qiyeguanli1:before { + content: "\e72b"; +} + +.icon-temp-stream:before { + content: "\e62b"; +} + +.icon-luxiangguanli2:before { + content: "\e72c"; +} + +.icon-tool-polygon:before { + content: "\e62c"; +} + +.icon-quanxianguanli1:before { + content: "\e72d"; +} + +.icon-window-minimize:before { + content: "\e62d"; +} + +.icon-shezhi1:before { + content: "\e72e"; +} + +.icon-plus:before { + content: "\e62e"; +} + +.icon-shishi1:before { + content: "\e72f"; +} + +.icon-qiyeguanli:before { + content: "\e62f"; +} + +.icon-shujuquanxian1:before { + content: "\e730"; +} + +.icon-quanxianguanli:before { + content: "\e630"; +} + +.icon-shishiyulanxuanzhong2:before { + content: "\e731"; +} + +.icon-shujuquanxian:before { + content: "\e631"; +} + +.icon-renzheng:before { + content: "\e732"; +} + +.icon--_baojinglianxiren:before { + content: "\e632"; +} + +.icon-shuju3:before { + content: "\e733"; +} + +.icon-yuechi:before { + content: "\e633"; +} + +.icon-shouye1:before { + content: "\e734"; +} + +.icon-xitongguanli:before { + content: "\e634"; +} + +.icon-zuzhi1:before { + content: "\e735"; +} + +.icon-zuzhi:before { + content: "\e635"; +} + +.icon-zuzhiguanli1:before { + content: "\e736"; +} + +.icon-renzheng6:before { + content: "\e636"; +} + +.icon-xitongguanli1:before { + content: "\e737"; +} + +.icon-yonghuguanli01:before { + content: "\e637"; +} + +.icon-yuechi1:before { + content: "\e738"; +} + +.icon-baojingmoban:before { + content: "\e638"; +} + +.icon-baojinglianxiren:before { + content: "\e739"; +} + +.icon-zuzhiguanli:before { + content: "\e639"; +} + +.icon-baojingjilu3:before { + content: "\e73a"; +} + +.icon-yonghuguanli:before { + content: "\e63a"; +} + +.icon-huifangxuanzhong2:before { + content: "\e73b"; +} + +.icon-bumenguanli:before { + content: "\e63b"; +} + +.icon-caiwu1:before { + content: "\e73c"; +} + +.icon-shishi:before { + content: "\e63c"; +} + +.icon-baojingguize1:before { + content: "\e73d"; +} + +.icon-baojing:before { + content: "\e63d"; +} + +.icon-bumenguanli1:before { + content: "\e73e"; +} + +.icon-shezhi:before { + content: "\e63e"; +} + +.icon-baojing2:before { + content: "\e73f"; +} + +.icon-huifangxuanzhong:before { + content: "\e63f"; +} + +.icon-yonghuguanli2:before { + content: "\e740"; +} + +.icon-luxiangguanli:before { + content: "\e640"; +} + +.icon-huifang2:before { + content: "\e741"; +} + +.icon-huifang:before { + content: "\e642"; +} + +.icon-baojingmoban1:before { + content: "\e742"; +} + +.icon-shouye:before { + content: "\e643"; +} + +.icon-dingdanxiangqing1:before { + content: "\e743"; +} + +.icon-shishiyulanxuanzhong:before { + content: "\e644"; +} + +.icon-fapiaoguanli1:before { + content: "\e744"; +} + +.icon-caiwu:before { + content: "\e645"; +} + +.icon-shiyonggaikuang1:before { + content: "\e745"; +} + +.icon-baojingjilu:before { + content: "\e646"; +} + +.icon-zengzhifuwu1:before { + content: "\e746"; +} + +.icon-baojingguize:before { + content: "\e647"; +} + +.icon-yiguanzhu:before { + content: "\e747"; +} + +.icon-shuju:before { + content: "\e648"; +} + +.icon-baojingtuisongshezhi1:before { + content: "\e748"; +} + +.icon-piliangcaozuo:before { + content: "\e649"; +} + +.icon-quxiao1:before { + content: "\e749"; +} + +.icon-suo:before { + content: "\e64a"; +} + +.icon-xiangqing1:before { + content: "\e74a"; +} + +.icon-yonghu:before { + content: "\e64b"; +} + +.icon-xufei1:before { + content: "\e74b"; +} + +.icon-shouji:before { + content: "\e64c"; +} + +.icon-zhifu1:before { + content: "\e74c"; +} + +.icon-tianjiadian:before { + content: "\e64d"; +} + +.icon-kuang:before { + content: "\e74d"; +} + +.icon-tianjiaxian:before { + content: "\e64e"; +} + +.icon-shouzhimingxi:before { + content: "\e74e"; +} + +.icon-tianjiaxuanqu:before { + content: "\e64f"; +} + +.icon-shouzhimingxi1:before { + content: "\e74f"; +} + +.icon-xuanzeduixiang:before { + content: "\e650"; +} + +.icon-daochu:before { + content: "\e750"; +} + +.icon-baojing01:before { + content: "\e651"; +} + +.icon-daochu1:before { + content: "\e751"; +} + +.icon-baojingjilu1:before { + content: "\e652"; +} + +.icon-daping:before { + content: "\e752"; +} + +.icon-baojingshezhi:before { + content: "\e653"; +} + +.icon-shaixuan:before { + content: "\e753"; +} + +.icon-cewen:before { + content: "\e654"; +} + +.icon-zhifu2:before { + content: "\e754"; +} + +.icon-tuichudenglu:before { + content: "\e655"; +} + +.icon-shaixuan1:before { + content: "\e755"; +} + +.icon-shezhiweixuanzhong:before { + content: "\e656"; +} + +.icon-zhifu3:before { + content: "\e756"; +} + +.icon-shezhixuanzhong1:before { + content: "\e657"; +} + +.icon-xia:before { + content: "\e757"; +} + +.icon-shouyexuanzhong:before { + content: "\e658"; +} + +.icon-xia1:before { + content: "\e758"; +} + +.icon-shujuxuanzhong:before { + content: "\e659"; +} + +.icon-yanzhengma:before { + content: "\e759"; +} + +.icon-shuju1:before { + content: "\e65a"; +} + +.icon-tongxunlu:before { + content: "\e75a"; +} + +.icon-bianji:before { + content: "\e65b"; +} + +.icon-yanzhengma1:before { + content: "\e75b"; +} + +.icon-rili:before { + content: "\e65c"; +} + +.icon-tongxunlu1:before { + content: "\e75c"; +} + +.icon-shanchu:before { + content: "\e65d"; +} + +.icon-yingyongbangding:before { + content: "\e75d"; +} + +.icon-jiahao:before { + content: "\e65e"; +} + +.icon-yingyongbangding1:before { + content: "\e75e"; +} + +.icon-wenhao:before { + content: "\e65f"; +} + +.icon-yingyongbangding2:before { + content: "\e75f"; +} + +.icon-zhongyingwen:before { + content: "\e660"; +} + +.icon-dapingzhanshi:before { + content: "\e760"; +} + +.icon-kuangxuan:before { + content: "\e661"; +} + +.icon-jiankong:before { + content: "\e761"; +} + +.icon-cha1:before { + content: "\e662"; +} + +.icon-touxiang:before { + content: "\e762"; +} + +.icon-bofang01:before { + content: "\e663"; +} + +.icon-lou:before { + content: "\e763"; +} + +.icon-caidanzhankai:before { + content: "\e664"; +} + +.icon-jiankong1:before { + content: "\e764"; +} + +.icon-caidanshouqi:before { + content: "\e665"; +} + +.icon-lou1:before { + content: "\e765"; +} + +.icon-danxuan:before { + content: "\e666"; +} + +.icon-dapingzhanshi1:before { + content: "\e766"; +} + +.icon-fuxuankuangxuanzhong:before { + content: "\e667"; +} + +.icon-touxiang1:before { + content: "\e767"; +} + +.icon-fuxuankuang-true:before { + content: "\e668"; +} + +.icon-shebei:before { + content: "\e768"; +} + +.icon-jianhao:before { + content: "\e669"; +} + +.icon-shebeii:before { + content: "\e769"; +} + +.icon-shanchu1:before { + content: "\e66a"; +} + +.icon-bianji11:before { + content: "\e76a"; +} + +.icon-shijian:before { + content: "\e66b"; +} + +.icon-jilu:before { + content: "\e76b"; +} + +.icon-jiahao1:before { + content: "\e66c"; +} + +.icon-yun:before { + content: "\e76c"; +} + +.icon-sousuo:before { + content: "\e66d"; +} + +.icon-baojing3:before { + content: "\e76d"; +} + +.icon-zhongyingwen2zhongwen:before { + content: "\e66e"; +} + +.icon-zhinengyangan:before { + content: "\e76e"; +} + +.icon-xiala:before { + content: "\e66f"; +} + +.icon-yongdiananquan:before { + content: "\e76f"; +} + +.icon-xiala1:before { + content: "\e670"; +} + +.icon-zhinengmensuo:before { + content: "\e770"; +} + +.icon-xiazai01:before { + content: "\e671"; +} + +.icon-xiaokongyujing:before { + content: "\e771"; +} + +.icon-pingmufenge02:before { + content: "\e672"; +} + +.icon-zhinengdianbiao:before { + content: "\e772"; +} + +.icon-shezhi01:before { + content: "\e673"; +} + +.icon-zhinengshuibiao:before { + content: "\e773"; +} + +.icon-zuixiaohuaxi:before { + content: "\e674"; +} + +.icon-shuiyajiance01:before { + content: "\e774"; +} + +.icon-zuidahuaxi:before { + content: "\e675"; +} + +.icon-zhinengzhaoming:before { + content: "\e775"; +} + +.icon-huifuxi:before { + content: "\e676"; +} + +.icon-zhinengmenjin:before { + content: "\e776"; +} + +.icon-guanbixi:before { + content: "\e677"; +} + +.icon-tingchechang:before { + content: "\e777"; +} + +.icon-baocunJPG:before { + content: "\e678"; +} + +.icon-xiala3:before { + content: "\e778"; +} + +.icon-quxian:before { + content: "\e679"; +} + +.icon-zhinengkongtiao:before { + content: "\e779"; +} + +.icon-tingzhiyulan:before { + content: "\e67a"; +} + +.icon-sousuo2:before { + content: "\e77a"; +} + +.icon-wenduliuluzhi:before { + content: "\e67b"; +} + +.icon-shang1:before { + content: "\e77b"; +} + +.icon-shuaxin1:before { + content: "\e67c"; +} + +.icon-1_jingdianchuwuweixuanzhong:before { + content: "\e77c"; +} + +.icon-shangjiantou:before { + content: "\e67d"; +} + +.icon-dianti:before { + content: "\e77d"; +} + +.icon-shang:before { + content: "\e67e"; +} + +.icon-zhuangtai:before { + content: "\e77e"; +} + +.icon-zixun:before { + content: "\e67f"; +} + +.icon-keshi:before { + content: "\e77f"; +} + +.icon-youxiang01:before { + content: "\e680"; +} + +.icon-chongzhijilu:before { + content: "\e780"; +} + +.icon-QQ:before { + content: "\e681"; +} + +.icon-jingshi:before { + content: "\e781"; +} + +.icon-dianhua:before { + content: "\e682"; +} + +.icon-bianji2:before { + content: "\e782"; +} + +.icon-pingmufenge:before { + content: "\e683"; +} + +.icon-fuzhi:before { + content: "\e783"; +} + +.icon-gou:before { + content: "\e684"; +} + +.icon-guanyu:before { + content: "\e784"; +} + +.icon-dingdanxiangqing:before { + content: "\e685"; +} + +.icon-shishiyulan-01:before { + content: "\e785"; +} + +.icon-shiyonggaikuang:before { + content: "\e686"; +} + +.icon-shujuchakan:before { + content: "\e786"; +} + +.icon-fapiaoguanli:before { + content: "\e687"; +} + +.icon-shanchu2:before { + content: "\e787"; +} + +.icon-xiangqing:before { + content: "\e688"; +} + +.icon-xitongpeizhi:before { + content: "\e788"; +} + +.icon-baojingtuisongshezhi:before { + content: "\e689"; +} + +.icon-tezhengwendu:before { + content: "\e789"; +} + +.icon-zhifu:before { + content: "\e68a"; +} + +.icon-quanzhenwendu:before { + content: "\e78a"; +} + +.icon-zengzhifuwu:before { + content: "\e68b"; +} + +.icon-fenxiang:before { + content: "\e78b"; +} + +.icon-xufei:before { + content: "\e68c"; +} + +.icon-fenxiang01:before { + content: "\e78c"; +} + +.icon-asterisk1:before { + content: "\e68d"; +} + +.icon-wenhao2:before { + content: "\e78d"; +} + +.icon-window-maximize1:before { + content: "\e68e"; +} + +.icon-dian:before { + content: "\e78e"; +} + +.icon-crop1:before { + content: "\e68f"; +} + +.icon-asterisk2:before { + content: "\e690"; +} + +.icon-file-record1:before { + content: "\e691"; +} + +.icon-ffc1:before { + content: "\e692"; +} + +.icon-file-mp41:before { + content: "\e693"; +} + +.icon-window-minimize1:before { + content: "\e694"; +} + +.icon-ptz-downright1:before { + content: "\e695"; +} + +.icon-video-stream1:before { + content: "\e696"; +} + +.icon-file-jpg1:before { + content: "\e697"; +} + +.icon-file-stream1:before { + content: "\e698"; +} + +.icon-page-previous1:before { + content: "\e699"; +} + +.icon-expander-down1:before { + content: "\e69a"; +} + +.icon-ptz-left1:before { + content: "\e69b"; +} + +.icon-yinpinwenjian1:before { + content: "\e623"; +} + +.icon-yinpinwenjian2:before { + content: "\e626"; +} + +.icon-xiazaiyinpinwenjian:before { + content: "\e605"; +} + +.icon-yinpinwenjian:before { + content: "\e641"; +} + diff --git a/cn-universal-web-ui/public/css/iconfont.woff2 b/cn-universal-web-ui/public/css/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f1cb24cf3b0f87e68b9dbc06ae40b41df719cad7 Binary files /dev/null and b/cn-universal-web-ui/public/css/iconfont.woff2 differ diff --git a/cn-universal-web-ui/public/css/login.css b/cn-universal-web-ui/public/css/login.css new file mode 100644 index 0000000000000000000000000000000000000000..334450966c796b6b75b5c19f4618df98e81e9af8 --- /dev/null +++ b/cn-universal-web-ui/public/css/login.css @@ -0,0 +1,439 @@ +/*////////////////////////////////////////////////////////////////// +[ FONT ]*/ + +@font-face { + font-family: Poppins-Regular; + src: url('../fonts/poppins/Poppins-Regular.ttf'); +} + +@font-face { + font-family: Poppins-Medium; + src: url('../fonts/poppins/Poppins-Medium.ttf'); +} + +@font-face { + font-family: Poppins-Bold; + src: url('../fonts/poppins/Poppins-Bold.ttf'); +} + +@font-face { + font-family: Poppins-SemiBold; + src: url('../fonts/poppins/Poppins-SemiBold.ttf'); +} + +.limiter { + width: 100%; + margin: 0 auto; + font-family: Poppins-Regular, sans-serif; +} + +.container-login100 { + width: 100%; + /* min-height: 100vh; */ + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + background: #f2f2f2; +} + +.wrap-login100 { + background: #fff; + border-radius: 10px; + overflow: hidden; + padding: 77px 55px 33px 55px; + + box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -o-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -ms-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); +} + + +/*------------------------------------------------------------------ +[ Form ]*/ + +.login100-form { + width: 100%; +} + +.login100-form-title { + display: block; + font-family: Poppins-Bold; + font-size: 30px; + color: #333333; + line-height: 1.2; + text-align: center; + +} + +.login100-form-title i { + font-size: 60px; +} + +/*------------------------------------------------------------------ +[ Input ]*/ + +.wrap-input100 { + width: 100%; + position: relative; + border-bottom: 2px solid #adadad; + margin-bottom: 37px; +} + +.input100 { + font-family: Poppins-Regular; + font-size: 15px; + color: #555555; + line-height: 1.2; + + display: block; + width: 100%; + height: 45px; + background: transparent; + padding: 0 5px; + outline: none; + border: none; +} + +.input100::-webkit-input-placeholder { + color: #adadad; +} + +.input100:-moz-placeholder { + color: #adadad; +} + +.input100::-moz-placeholder { + color: #adadad; +} + +.input100:-ms-input-placeholder { + color: #adadad; +} + +/*---------------------------------------------*/ +.focus-input100 { + position: absolute; + display: block; + width: 100%; + height: 100%; + top: 0; + left: 0; + pointer-events: none; + color: transparent; +} + +.focus-input100::before { + content: ""; + display: block; + position: absolute; + bottom: -2px; + left: 0; + width: 0; + height: 2px; + + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; + + background: #6a7dfe; + background: -webkit-linear-gradient(left, #21d4fd, #b721ff); + background: -o-linear-gradient(left, #21d4fd, #b721ff); + background: -moz-linear-gradient(left, #21d4fd, #b721ff); + background: linear-gradient(left, #21d4fd, #b721ff); +} + +.focus-input100::after { + font-family: Poppins-Regular; + font-size: 15px; + color: #999999; + line-height: 1.2; + + content: attr(data-placeholder); + display: block; + width: 100%; + position: absolute; + top: 16px; + left: 0px; + padding-left: 5px; + + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; +} + +.input100:focus + .focus-input100::after { + top: -15px; +} + +.input100:focus + .focus-input100::before { + width: 100%; +} + +.has-val.input100 + .focus-input100::after { + top: -15px; +} + +.has-val.input100 + .focus-input100::before { + width: 100%; +} + +/*---------------------------------------------*/ +.btn-show-pass { + font-size: 15px; + color: #999999; + + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + align-items: center; + position: absolute; + height: 100%; + top: 0; + right: 0; + padding-right: 5px; + cursor: pointer; + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; +} + +.btn-show-pass:hover { + color: #6a7dfe; + color: -webkit-linear-gradient(left, #21d4fd, #b721ff); + color: -o-linear-gradient(left, #21d4fd, #b721ff); + color: -moz-linear-gradient(left, #21d4fd, #b721ff); + color: linear-gradient(left, #21d4fd, #b721ff); +} + +.btn-show-pass.active { + color: #6a7dfe; + color: -webkit-linear-gradient(left, #21d4fd, #b721ff); + color: -o-linear-gradient(left, #21d4fd, #b721ff); + color: -moz-linear-gradient(left, #21d4fd, #b721ff); + color: linear-gradient(left, #21d4fd, #b721ff); +} + + +/*------------------------------------------------------------------ +[ Button ]*/ +.container-login100-form-btn { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + flex-wrap: wrap; + justify-content: center; + padding-top: 13px; +} + +.wrap-login100-form-btn { + width: 100%; + display: block; + position: relative; + z-index: 1; + border-radius: 25px; + overflow: hidden; + margin: 0 auto; +} + +.login100-form-bgbtn { + position: absolute; + z-index: -1; + width: 300%; + height: 100%; + background: #a64bf4; + background: -webkit-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + background: -o-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + background: -moz-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + background: linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + top: 0; + left: -100%; + + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; +} + +.login100-form-btn { + font-family: Poppins-Medium; + font-size: 15px; + color: #fff; + line-height: 1.2; + text-transform: uppercase; + + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + justify-content: center; + align-items: center; + padding: 0 20px; + width: 100%; + height: 50px; + outline: none !important; + border: none; + background: transparent; +} + +.login100-form-btn:hover { + cursor: pointer; +} + +.wrap-login100-form-btn:hover .login100-form-bgbtn { + left: 0; +} + + +/*------------------------------------------------------------------ +[ Responsive ]*/ + +@media (max-width: 576px) { + .wrap-login100 { + padding: 77px 15px 33px 15px; + } +} + + +/*------------------------------------------------------------------ +[ Alert validate ]*/ + +.validate-input { + position: relative; +} + +.alert-validate::before { + content: attr(data-validate); + position: absolute; + max-width: 70%; + background-color: #fff; + border: 1px solid #c80000; + border-radius: 2px; + padding: 4px 25px 4px 10px; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + right: 0px; + pointer-events: none; + + font-family: Poppins-Regular; + color: #c80000; + font-size: 13px; + line-height: 1.4; + text-align: left; + + visibility: hidden; + opacity: 0; + + -webkit-transition: opacity 0.4s; + -o-transition: opacity 0.4s; + -moz-transition: opacity 0.4s; + transition: opacity 0.4s; +} + +.alert-validate::after { + content: "\f06a"; + font-family: FontAwesome; + font-size: 16px; + color: #c80000; + + display: block; + position: absolute; + background-color: #fff; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + right: 5px; +} + +.alert-validate:hover:before { + visibility: visible; + opacity: 1; +} + +@media (max-width: 992px) { + .alert-validate::before { + visibility: visible; + opacity: 1; + } +} + +/** util **/ +.p-b-26 { + padding-bottom: 26px; +} + +.p-b-48 { + padding-bottom: 48px; +} + +.p-t-115 { + padding-top: 115px; +} + +@keyframes login { + from { + width: 100% + } + to { + width: 50px + } +} + +.login-loading { + width: 50px; + animation-name: login; + animation-duration: 0.5s; +} + +.login-loading > .login100-form-btn { + visibility: hidden !important; +} + +.login-loading-class { + stroke: rgb(255, 255, 255) !important; + background-color: transparent !important; +} + +.login-loading-class > .el-loading-spinner .path { + stroke: rgb(255, 255, 255) !important; +} + + +/**font**/ +/* .zmdi { + display: inline-block; + font: normal normal normal 14px/1 'Material-Design-Iconic-Font'; + font-size: 14px; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.zmdi-font::before { + content: '\f16a'; +} +.login100-form-title i { + font-size: 60px; +} */ + diff --git a/cn-universal-web-ui/public/ezviz/README.md b/cn-universal-web-ui/public/ezviz/README.md new file mode 100644 index 0000000000000000000000000000000000000000..775278d1e1715e6512514cd0f00385561e5ffbdd --- /dev/null +++ b/cn-universal-web-ui/public/ezviz/README.md @@ -0,0 +1,8 @@ +Place EZVIZ decoder assets here if you use custom decoder path. + +- Example: decoder.js and related wasm files +- Then set decoder to "/ezviz/decoder.js" in EzuikitFlv options + +Docs: +- https://open.ys7.com/help/1812 +- https://ezviz-openbiz.github.io/EZUIKit-flv/global.html#FlvOptions diff --git a/cn-universal-web-ui/public/favicon.ico b/cn-universal-web-ui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4244bb6289cd97f07be05c693162e99ae27a0d6d Binary files /dev/null and b/cn-universal-web-ui/public/favicon.ico differ diff --git a/cn-universal-web-ui/public/iconfont.js b/cn-universal-web-ui/public/iconfont.js new file mode 100644 index 0000000000000000000000000000000000000000..0b9d36f04d1e0d5f0198b6c8306b9f91f8099f65 --- /dev/null +++ b/cn-universal-web-ui/public/iconfont.js @@ -0,0 +1 @@ +!function(a){var t,o,h,e,l,i='',c=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss"),n=function(a,t){t.parentNode.insertBefore(a,t)};if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function d(){l||(l=!0,h())}function v(){try{e.documentElement.doScroll("left")}catch(a){return void setTimeout(v,50)}d()}t=function(){var a,t=document.createElement("div");t.innerHTML=i,i=null,(t=t.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",t=t,(a=document.body).firstChild?n(t,a.firstChild):a.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),t()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(h=t,e=a.document,l=!1,v(),e.onreadystatechange=function(){"complete"==e.readyState&&(e.onreadystatechange=null,d())})}(window); \ No newline at end of file diff --git a/cn-universal-web-ui/public/imou/WasmLib/AudioProcessor.js b/cn-universal-web-ui/public/imou/WasmLib/AudioProcessor.js new file mode 100644 index 0000000000000000000000000000000000000000..7cbd23aa2dc017e85ab0e511a05a0572b7ba803b --- /dev/null +++ b/cn-universal-web-ui/public/imou/WasmLib/AudioProcessor.js @@ -0,0 +1 @@ +class AudioProcessor extends AudioWorkletProcessor{constructor(){super(),this.accumulatedData=new Float32Array(0)}process(t,a,s){const e=t[0]?.[0];if(e){const t=new Float32Array(this.accumulatedData.length+e.length);t.set(this.accumulatedData),t.set(e,this.accumulatedData.length),this.accumulatedData=t,this.accumulatedData.length>=4096&&(this.port.postMessage(this.accumulatedData.slice(0,4096)),this.accumulatedData=this.accumulatedData.slice(4096))}return!0}}registerProcessor("audio-processor",AudioProcessor); \ No newline at end of file diff --git a/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.js b/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.js new file mode 100644 index 0000000000000000000000000000000000000000..f2e7ddc9580c1339ddf635ca104041d7b7d85f8a --- /dev/null +++ b/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.js @@ -0,0 +1 @@ +function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I16(){return wasmMemory.buffer!=buffer&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP16}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var key,Module="undefined"!==typeof Module?Module:{},moduleOverrides={};for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(e,t){throw t},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB="object"===typeof window,ENVIRONMENT_IS_WORKER="function"===typeof importScripts,ENVIRONMENT_IS_NODE="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer=Module.buffer);var _scriptDir="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;ENVIRONMENT_IS_WORKER&&(_scriptDir=self.location.href);var read_,readAsync,readBinary,setWindowTitle,scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:"undefined"!==typeof document&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=0!==scriptDirectory.indexOf("blob:")?scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):"",read_=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),readAsync=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)},setWindowTitle=function(e){document.title=e});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var STACK_ALIGN=16;function alignMemory(e,t){return t||(t=STACK_ALIGN),Math.ceil(e/t)*t}function warnOnce(e){warnOnce.shown||(warnOnce.shown={}),warnOnce.shown[e]||(warnOnce.shown[e]=1,err(e))}function convertJsFunctionToWasm(e,t){if("function"===typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},n={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},o=1;o=n);){var a=e[t++];if(!a)return o;if(128&a){var i=63&e[t++];if(192!=(224&a)){var _=63&e[t++];if((a=224==(240&a)?(15&a)<<12|i<<6|_:(7&a)<<18|i<<12|_<<6|63&e[t++])<65536)o+=String.fromCharCode(a);else{var s=a-65536;o+=String.fromCharCode(55296|s>>10,56320|1023&s)}}else o+=String.fromCharCode((31&a)<<6|i)}else o+=String.fromCharCode(a)}return o}function UTF8ToString(e,t){return e?UTF8ArrayToString(GROWABLE_HEAP_U8(),e,t):""}function stringToUTF8Array(e,t,r,n){if(!(n>0))return 0;for(var o=r,a=r+n-1,i=0;i=55296&&_<=57343)_=65536+((1023&_)<<10)|1023&e.charCodeAt(++i);if(_<=127){if(r>=a)break;t[r++]=_}else if(_<=2047){if(r+1>=a)break;t[r++]=192|_>>6,t[r++]=128|63&_}else if(_<=65535){if(r+2>=a)break;t[r++]=224|_>>12,t[r++]=128|_>>6&63,t[r++]=128|63&_}else{if(r+3>=a)break;t[r++]=240|_>>18,t[r++]=128|_>>12&63,t[r++]=128|_>>6&63,t[r++]=128|63&_}}return t[r]=0,r-o}function stringToUTF8(e,t,r){return stringToUTF8Array(e,GROWABLE_HEAP_U8(),t,r)}function lengthBytesUTF8(e){for(var t=0,r=0;r=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function allocateUTF8(e){var t=lengthBytesUTF8(e)+1,r=_malloc(t);return r&&stringToUTF8Array(e,GROWABLE_HEAP_I8(),r,t),r}function writeArrayToMemory(e,t){GROWABLE_HEAP_I8().set(e,t)}function writeAsciiToMemory(e,t,r){for(var n=0;n0&&(e+=t-e%t),e}function updateGlobalBufferAndViews(e){buffer=e,Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e)}var wasmTable,INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(!((wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:!0})).buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer=wasmMemory.buffer),INITIAL_MEMORY=buffer.byteLength,updateGlobalBufferAndViews(buffer);var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}}function initRuntime(){runtimeInitialized=!0,ENVIRONMENT_IS_PTHREAD||(Module.noFSInit||FS.init.initialized||FS.init(),TTY.init(),callRuntimeCallbacks(__ATINIT__))}function preMain(){ENVIRONMENT_IS_PTHREAD||(FS.ignorePermissions=!1,callRuntimeCallbacks(__ATMAIN__))}function exitRuntime(){ENVIRONMENT_IS_PTHREAD||(runtimeExited=!0)}function postRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){assert(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}function abort(e){throw Module.onAbort&&Module.onAbort(e),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+(new Error).stack),err(e+=""),ABORT=!0,EXITSTATUS=1,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}function hasPrefix(e,t){return String.prototype.startsWith?e.startsWith(t):0===e.indexOf(t)}Module.preloadedImages={},Module.preloadedAudios={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(e){return hasPrefix(e,dataURIPrefix)}var tempDouble,tempI64,wasmBinaryFile="liblcplay.wasm";function getBinary(e){try{if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}catch(e){abort(e)}}function getBinaryPromise(){return wasmBinary||!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER||"function"!==typeof fetch?Promise.resolve().then((function(){return getBinary(wasmBinaryFile)})):fetch(wasmBinaryFile,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return e.arrayBuffer()})).catch((function(){return getBinary(wasmBinaryFile)}))}function createWasm(){var e={a:asmLibraryArg};function t(e,t){var r=e.exports;if(Module.asm=r,wasmTable=Module.asm.Lb,wasmModule=t,!ENVIRONMENT_IS_PTHREAD){var n=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach((function(e){PThread.loadWasmModuleToWorker(e,(function(){--n||removeRunDependency("wasm-instantiate")}))}))}}function r(e){t(e.instance,e.module)}function n(t){return getBinaryPromise().then((function(t){return WebAssembly.instantiate(t,e)})).then(t,(function(e){err("failed to asynchronously prepare wasm: "+e),abort(e)}))}if(ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(e,t)}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||isDataURI(wasmBinaryFile)||"function"!==typeof fetch?n(r):fetch(wasmBinaryFile,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(r,(function(e){return err("wasm streaming compile failed: "+e),err("falling back to ArrayBuffer instantiation"),n(r)}))})),{}}isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));var ASM_CONSTS={835840:function(){throw"Canceled!"},835858:function(e,t){setTimeout((function(){__emscripten_do_dispatch_to_thread(e,t)}),0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"===typeof r?void 0===t.arg?wasmTable.get(r)():wasmTable.get(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(Module)}}function demangle(e){return e}function demangleAll(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t=demangle(e);return e===t?e:t+" ["+e+"]"}))}Module.callRuntimeCallbacks=callRuntimeCallbacks,Module.demangle=demangle,Module.demangleAll=demangleAll;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};function _emscripten_futex_wake(e,t){if(e<=0||e>GROWABLE_HEAP_I8().length||!0&e||t<0)return-28;if(0==t)return 0;t>=2147483647&&(t=1/0);var r=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2),n=0;if(r==e&&(Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,r,0)==r&&(n=1,--t<=0)))return 1;var o=Atomics.notify(GROWABLE_HEAP_I32(),e>>2,t);if(o>=0)return o+n;throw"Atomics.notify returned an unexpected value "+o}function killThread(e){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!e)throw"Internal Error! Null pthread_ptr in killThread!";GROWABLE_HEAP_I32()[e+12>>2]=0;var t=PThread.pthreads[e];t.worker.terminate(),PThread.freeThreadData(t),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(t.worker),1),t.worker.pthread=void 0}function cancelThread(e){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!e)throw"Internal Error! Null pthread_ptr in cancelThread!";PThread.pthreads[e].worker.postMessage({cmd:"cancel"})}function cleanupThread(e){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!e)throw"Internal Error! Null pthread_ptr in cleanupThread!";var t=PThread.pthreads[e];if(t){GROWABLE_HEAP_I32()[e+12>>2]=0;var r=t.worker;PThread.returnWorkerToPool(r)}}Module.ERRNO_CODES=ERRNO_CODES,Module._emscripten_futex_wake=_emscripten_futex_wake,Module.killThread=killThread,Module.cancelThread=cancelThread,Module.cleanupThread=cleanupThread;var _emscripten_get_now,PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var e=0;e<4;++e)PThread.allocateUnusedWorker()},initRuntime:function(){for(var e=_malloc(228),t=0;t<57;++t)GROWABLE_HEAP_U32()[e/4+t]=0;GROWABLE_HEAP_I32()[e+12>>2]=e;var r=e+152;GROWABLE_HEAP_I32()[r>>2]=r;var n=_malloc(512);for(t=0;t<128;++t)GROWABLE_HEAP_U32()[n/4+t]=0;Atomics.store(GROWABLE_HEAP_U32(),e+100>>2,n),Atomics.store(GROWABLE_HEAP_U32(),e+40>>2,e),__emscripten_thread_init(e,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(e)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;PThread.threadExitHandlers.length>0;)PThread.threadExitHandlers.pop()();ENVIRONMENT_IS_PTHREAD&&_pthread_self()&&___pthread_tsd_run_dtors()},runExitHandlersAndDeinitThread:function(e,t){Atomics.store(GROWABLE_HEAP_U32(),e+56>>2,1),Atomics.store(GROWABLE_HEAP_U32(),e+60>>2,0),PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),e+4>>2,t),Atomics.store(GROWABLE_HEAP_U32(),e+0>>2,1),_emscripten_futex_wake(e+0,2147483647),__emscripten_thread_init(0,0,0)},threadExit:function(e){var t=_pthread_self();t&&(PThread.runExitHandlersAndDeinitThread(t,e),ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlersAndDeinitThread(_pthread_self(),-1),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var e in PThread.pthreads){(n=PThread.pthreads[e])&&n.worker&&PThread.returnWorkerToPool(n.worker)}PThread.pthreads={};for(var t=0;t>2];GROWABLE_HEAP_I32()[e.threadInfoStruct+100>>2]=0,_free(t),_free(e.threadInfoStruct)}e.threadInfoStruct=0,e.allocatedOwnStack&&e.stackBase&&_free(e.stackBase),e.stackBase=0,e.worker&&(e.worker.pthread=null)}},returnWorkerToPool:function(e){PThread.runWithoutMainThreadQueuedCalls((function(){delete PThread.pthreads[e.pthread.threadInfoStruct],PThread.unusedWorkers.push(e),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(e),1),PThread.freeThreadData(e.pthread),e.pthread=void 0}))},runWithoutMainThreadQueuedCalls:function(e){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{e()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(e){},loadWasmModuleToWorker:function(e,t){e.onmessage=function(r){var n=r.data,o=n.cmd;if(e.pthread&&(PThread.currentProxiedOperationCallerThread=e.pthread.threadInfoStruct),n.targetThread&&n.targetThread!=_pthread_self()){var a=PThread.pthreads[n.targetThread];return a?a.worker.postMessage(r.data,n.transferList):console.error('Internal error! Worker sent a message "'+o+'" to target pthread '+n.targetThread+", but that thread no longer exists!"),void(PThread.currentProxiedOperationCallerThread=void 0)}if("processQueuedMainThreadWork"===o)_emscripten_main_thread_process_queued_calls();else if("spawnThread"===o)spawnThread(r.data);else if("cleanupThread"===o)cleanupThread(n.thread);else if("killThread"===o)killThread(n.thread);else if("cancelThread"===o)cancelThread(n.thread);else if("loaded"===o)e.loaded=!0,t&&t(e),e.runPthread&&(e.runPthread(),delete e.runPthread);else if("print"===o)out("Thread "+n.threadId+": "+n.text);else if("printErr"===o)err("Thread "+n.threadId+": "+n.text);else if("alert"===o)alert("Thread "+n.threadId+": "+n.text);else if("exit"===o){e.pthread&&Atomics.load(GROWABLE_HEAP_U32(),e.pthread.threadInfoStruct+64>>2)&&PThread.returnWorkerToPool(e)}else if("exitProcess"===o)try{exit(n.returnCode)}catch(r){if(r instanceof ExitStatus)return;throw r}else"cancelDone"===o?PThread.returnWorkerToPool(e):"objectTransfer"===o?PThread.receiveObjectTransfer(r.data):"setimmediate"===r.data.target?e.postMessage(r.data):err("worker sent an unknown command "+o);PThread.currentProxiedOperationCallerThread=void 0},e.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},e.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory:wasmMemory,wasmModule:wasmModule})},allocateUnusedWorker:function(){var e=locateFile("liblcplay.worker.js");PThread.unusedWorkers.push(new Worker(e))},getNewWorker:function(){return 0==PThread.unusedWorkers.length&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(e){for(var t=performance.now()+e;performance.now()>2]=e,e}function _clock_gettime(e,t){var r;if(0===e)r=Date.now();else{if(1!==e&&4!==e||!_emscripten_get_now_is_monotonic)return setErrNo(28),-1;r=_emscripten_get_now()}return GROWABLE_HEAP_I32()[t>>2]=r/1e3|0,GROWABLE_HEAP_I32()[t+4>>2]=r%1e3*1e3*1e3|0,0}function ___clock_gettime(e,t){return _clock_gettime(e,t)}Module._emscripten_get_now_is_monotonic=_emscripten_get_now_is_monotonic,Module.setErrNo=setErrNo,Module._clock_gettime=_clock_gettime,Module.___clock_gettime=___clock_gettime;var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(e){return _malloc(e+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function _atexit(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,e,t)}function ___cxa_atexit(e,t){return _atexit(e,t)}function ExceptionInfo(e){this.excPtr=e,this.ptr=e-ExceptionInfoAttrs.SIZE,this.set_type=function(e){GROWABLE_HEAP_I32()[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=e},this.get_type=function(){return GROWABLE_HEAP_I32()[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]},this.set_destructor=function(e){GROWABLE_HEAP_I32()[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=e},this.get_destructor=function(){return GROWABLE_HEAP_I32()[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]},this.set_refcount=function(e){GROWABLE_HEAP_I32()[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=e},this.set_caught=function(e){e=e?1:0,GROWABLE_HEAP_I8()[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET|0]=e},this.get_caught=function(){return 0!=GROWABLE_HEAP_I8()[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET|0]},this.set_rethrown=function(e){e=e?1:0,GROWABLE_HEAP_I8()[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET|0]=e},this.get_rethrown=function(){return 0!=GROWABLE_HEAP_I8()[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET|0]},this.init=function(e,t){this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){Atomics.add(GROWABLE_HEAP_I32(),this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2,1)},this.release_ref=function(){return 1===Atomics.sub(GROWABLE_HEAP_I32(),this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2,1)}}Module.ExceptionInfoAttrs=ExceptionInfoAttrs,Module.___cxa_allocate_exception=___cxa_allocate_exception,Module._atexit=_atexit,Module.___cxa_atexit=___cxa_atexit,Module.ExceptionInfo=ExceptionInfo;var exceptionLast=0;Module.exceptionLast=exceptionLast;var uncaughtExceptionCount=0;function ___cxa_throw(e,t,r){throw new ExceptionInfo(e).init(t,r),exceptionLast=e,uncaughtExceptionCount++,e}function _gmtime_r(e,t){var r=new Date(1e3*GROWABLE_HEAP_I32()[e>>2]);GROWABLE_HEAP_I32()[t>>2]=r.getUTCSeconds(),GROWABLE_HEAP_I32()[t+4>>2]=r.getUTCMinutes(),GROWABLE_HEAP_I32()[t+8>>2]=r.getUTCHours(),GROWABLE_HEAP_I32()[t+12>>2]=r.getUTCDate(),GROWABLE_HEAP_I32()[t+16>>2]=r.getUTCMonth(),GROWABLE_HEAP_I32()[t+20>>2]=r.getUTCFullYear()-1900,GROWABLE_HEAP_I32()[t+24>>2]=r.getUTCDay(),GROWABLE_HEAP_I32()[t+36>>2]=0,GROWABLE_HEAP_I32()[t+32>>2]=0;var n=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),o=(r.getTime()-n)/864e5|0;return GROWABLE_HEAP_I32()[t+28>>2]=o,_gmtime_r.GMTString||(_gmtime_r.GMTString=allocateUTF8("GMT")),GROWABLE_HEAP_I32()[t+40>>2]=_gmtime_r.GMTString,t}function ___gmtime_r(e,t){return _gmtime_r(e,t)}function _tzset(){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1);if(!_tzset.called){_tzset.called=!0;var e=(new Date).getFullYear(),t=new Date(e,0,1),r=new Date(e,6,1),n=t.getTimezoneOffset(),o=r.getTimezoneOffset(),a=Math.max(n,o);GROWABLE_HEAP_I32()[__get_timezone()>>2]=60*a,GROWABLE_HEAP_I32()[__get_daylight()>>2]=Number(n!=o);var i=u(t),_=u(r),s=allocateUTF8(i),l=allocateUTF8(_);o>2]=s,GROWABLE_HEAP_I32()[__get_tzname()+4>>2]=l):(GROWABLE_HEAP_I32()[__get_tzname()>>2]=l,GROWABLE_HEAP_I32()[__get_tzname()+4>>2]=s)}function u(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}}function _localtime_r(e,t){_tzset();var r=new Date(1e3*GROWABLE_HEAP_I32()[e>>2]);GROWABLE_HEAP_I32()[t>>2]=r.getSeconds(),GROWABLE_HEAP_I32()[t+4>>2]=r.getMinutes(),GROWABLE_HEAP_I32()[t+8>>2]=r.getHours(),GROWABLE_HEAP_I32()[t+12>>2]=r.getDate(),GROWABLE_HEAP_I32()[t+16>>2]=r.getMonth(),GROWABLE_HEAP_I32()[t+20>>2]=r.getFullYear()-1900,GROWABLE_HEAP_I32()[t+24>>2]=r.getDay();var n=new Date(r.getFullYear(),0,1),o=(r.getTime()-n.getTime())/864e5|0;GROWABLE_HEAP_I32()[t+28>>2]=o,GROWABLE_HEAP_I32()[t+36>>2]=-60*r.getTimezoneOffset();var a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=n.getTimezoneOffset(),_=0|(a!=i&&r.getTimezoneOffset()==Math.min(i,a));GROWABLE_HEAP_I32()[t+32>>2]=_;var s=GROWABLE_HEAP_I32()[__get_tzname()+(_?4:0)>>2];return GROWABLE_HEAP_I32()[t+40>>2]=s,t}function ___localtime_r(e,t){return _localtime_r(e,t)}Module.uncaughtExceptionCount=uncaughtExceptionCount,Module.___cxa_throw=___cxa_throw,Module._gmtime_r=_gmtime_r,Module.___gmtime_r=___gmtime_r,Module._tzset=_tzset,Module._localtime_r=_localtime_r,Module.___localtime_r=___localtime_r;var PATH={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=PATH.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=PATH.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=PATH.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},extname:function(e){return PATH.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return PATH.normalize(e.join("/"))},join2:function(e,t){return PATH.normalize(e+"/"+t)}};function getRandomDevice(){if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}return function(){abort("randomDevice")}}Module.PATH=PATH,Module.getRandomDevice=getRandomDevice;var PATH_FS={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:FS.cwd();if("string"!==typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t="/"===n.charAt(0)}return(t?"/":"")+(e=PATH.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=PATH_FS.resolve(e).substr(1),t=PATH_FS.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),a=Math.min(n.length,o.length),i=a,_=0;_0&&(out(UTF8ArrayToString(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(err(UTF8ArrayToString(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(err(UTF8ArrayToString(e.output,0)),e.output=[])}}};function mmapAlloc(e){for(var t=alignMemory(e,16384),r=_malloc(t);e=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=FS.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,FS.isDir(e.mode)?t.size=4096:FS.isFile(e.mode)?t.size=e.usedBytes:FS.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&MEMFS.resizeFileStorage(e,t.size)},lookup:function(e,t){throw FS.genericErrors[44]},mknod:function(e,t,r,n){return MEMFS.createNode(e,t,r,n)},rename:function(e,t,r){if(FS.isDir(e.mode)){var n;try{n=FS.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new FS.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=FS.lookupNode(e,t);for(var n in r.contents)throw new FS.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var n=MEMFS.createNode(e,t,41471,0);return n.link=r,n},readlink:function(e){if(!FS.isLink(e.mode))throw new FS.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)t.set(a.subarray(o,o+i),r);else for(var _=0;_0||n+r8)throw new FS.ErrnoError(32);for(var o=PATH.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),a=FS.root,i="/",_=0;_40)throw new FS.ErrnoError(32)}}return{path:i,node:a}},getPath:function(e){for(var t;;){if(FS.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,n=0;n>>0)%FS.nameTable.length},hashAddNode:function(e){var t=FS.hashName(e.parent.id,e.name);e.name_next=FS.nameTable[t],FS.nameTable[t]=e},hashRemoveNode:function(e){var t=FS.hashName(e.parent.id,e.name);if(FS.nameTable[t]===e)FS.nameTable[t]=e.name_next;else for(var r=FS.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=FS.mayLookup(e);if(r)throw new FS.ErrnoError(r,e);for(var n=FS.hashName(e.id,t),o=FS.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===t)return o}return FS.lookup(e,t)},createNode:function(e,t,r,n){var o=new FS.FSNode(e,t,r,n);return FS.hashAddNode(o),o},destroyNode:function(e){FS.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768===(61440&e)},isDir:function(e){return 16384===(61440&e)},isLink:function(e){return 40960===(61440&e)},isChrdev:function(e){return 8192===(61440&e)},isBlkdev:function(e){return 24576===(61440&e)},isFIFO:function(e){return 4096===(61440&e)},isSocket:function(e){return 49152===(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=FS.flagModes[e];if("undefined"===typeof t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return FS.ignorePermissions||(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){var t=FS.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{FS.lookupNode(e,t);return 20}catch(e){}return FS.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var n;try{n=FS.lookupNode(e,t)}catch(e){return e.errno}var o=FS.nodePermissions(e,"wx");if(o)return o;if(r){if(!FS.isDir(n.mode))return 54;if(FS.isRoot(n)||FS.getPath(n)===FS.cwd())return 10}else if(FS.isDir(n.mode))return 31;return 0},mayOpen:function(e,t){return e?FS.isLink(e.mode)?32:FS.isDir(e.mode)&&("r"!==FS.flagsToPermissionString(t)||512&t)?31:FS.nodePermissions(e,FS.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(e,t){e=e||0,t=t||FS.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!FS.streams[r])return r;throw new FS.ErrnoError(33)},getStream:function(e){return FS.streams[e]},createStream:function(e,t,r){FS.FSStream||(FS.FSStream=function(){},FS.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!==(2097155&this.flags)}},isWrite:{get:function(){return 0!==(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new FS.FSStream;for(var o in e)n[o]=e[o];e=n;var a=FS.nextfd(t,r);return e.fd=a,FS.streams[a]=e,e},closeStream:function(e){FS.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=FS.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new FS.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){FS.devices[e]={stream_ops:t}},getDevice:function(e){return FS.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:function(e,t){"function"===typeof e&&(t=e,e=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=FS.getMounts(FS.root.mount),n=0;function o(e){return FS.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((function(t){if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:function(e,t,r){var n,o="/"===r,a=!r;if(o&&FS.root)throw new FS.ErrnoError(10);if(!o&&!a){var i=FS.lookupPath(r,{follow_mount:!1});if(r=i.path,n=i.node,FS.isMountpoint(n))throw new FS.ErrnoError(10);if(!FS.isDir(n.mode))throw new FS.ErrnoError(54)}var _={type:e,opts:t,mountpoint:r,mounts:[]},s=e.mount(_);return s.mount=_,_.root=s,o?FS.root=s:n&&(n.mounted=_,n.mount&&n.mount.mounts.push(_)),s},unmount:function(e){var t=FS.lookupPath(e,{follow_mount:!1});if(!FS.isMountpoint(t.node))throw new FS.ErrnoError(28);var r=t.node,n=r.mounted,o=FS.getMounts(n);Object.keys(FS.nameTable).forEach((function(e){for(var t=FS.nameTable[e];t;){var r=t.name_next;-1!==o.indexOf(t.mount)&&FS.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(n);r.mount.mounts.splice(a,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var n=FS.lookupPath(e,{parent:!0}).node,o=PATH.basename(e);if(!o||"."===o||".."===o)throw new FS.ErrnoError(28);var a=FS.mayCreate(n,o);if(a)throw new FS.ErrnoError(a);if(!n.node_ops.mknod)throw new FS.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,FS.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,FS.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),n="",o=0;othis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,i=1048576;o||(i=n);var _=this;_.setDataGetter((function(e){var t=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),"undefined"===typeof _.chunks[e]&&(_.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):intArrayFromString(o.responseText||"",!0)}(t,o)),"undefined"===typeof _.chunks[e])throw new Error("doXHR failed!");return _.chunks[e]})),!a&&n||(i=n=1,n=this.getter(0).length,i=n,out("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!==typeof XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var _={isDevice:!1,contents:i}}else _={isDevice:!1,url:r};var s=FS.createFile(e,t,_,n,o);_.contents?s.contents=_.contents:_.url&&(s.contents=null,s.url=_.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var l={};return Object.keys(s.stream_ops).forEach((function(e){var t=s.stream_ops[e];l[e]=function(){return FS.forceLoadFile(s),t.apply(null,arguments)}})),l.read=function(e,t,r,n,o){FS.forceLoadFile(s);var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var _=0;_>2]=n.dev,GROWABLE_HEAP_I32()[r+4>>2]=0,GROWABLE_HEAP_I32()[r+8>>2]=n.ino,GROWABLE_HEAP_I32()[r+12>>2]=n.mode,GROWABLE_HEAP_I32()[r+16>>2]=n.nlink,GROWABLE_HEAP_I32()[r+20>>2]=n.uid,GROWABLE_HEAP_I32()[r+24>>2]=n.gid,GROWABLE_HEAP_I32()[r+28>>2]=n.rdev,GROWABLE_HEAP_I32()[r+32>>2]=0,tempI64=[n.size>>>0,(tempDouble=n.size,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[r+40>>2]=tempI64[0],GROWABLE_HEAP_I32()[r+44>>2]=tempI64[1],GROWABLE_HEAP_I32()[r+48>>2]=4096,GROWABLE_HEAP_I32()[r+52>>2]=n.blocks,GROWABLE_HEAP_I32()[r+56>>2]=n.atime.getTime()/1e3|0,GROWABLE_HEAP_I32()[r+60>>2]=0,GROWABLE_HEAP_I32()[r+64>>2]=n.mtime.getTime()/1e3|0,GROWABLE_HEAP_I32()[r+68>>2]=0,GROWABLE_HEAP_I32()[r+72>>2]=n.ctime.getTime()/1e3|0,GROWABLE_HEAP_I32()[r+76>>2]=0,tempI64=[n.ino>>>0,(tempDouble=n.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[r+80>>2]=tempI64[0],GROWABLE_HEAP_I32()[r+84>>2]=tempI64[1],0},doMsync:function(e,t,r,n,o){var a=GROWABLE_HEAP_U8().slice(e,e+r);FS.msync(t,a,o,r,n)},doMkdir:function(e,t){return"/"===(e=PATH.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),FS.mkdir(e,t,0),0},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return FS.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var n=FS.readlink(e),o=Math.min(r,lengthBytesUTF8(n)),a=GROWABLE_HEAP_I8()[t+o];return stringToUTF8(n,t,r+1),GROWABLE_HEAP_I8()[t+o]=a,o},doAccess:function(e,t){if(-8&t)return-28;var r;if(!(r=FS.lookupPath(e,{follow:!0}).node))return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&FS.nodePermissions(r,n)?-2:0},doDup:function(e,t,r){var n=FS.getStream(r);return n&&FS.close(n),FS.open(e,t,0,r,r).fd},doReadv:function(e,t,r,n){for(var o=0,a=0;a>2],_=GROWABLE_HEAP_I32()[t+(8*a+4)>>2],s=FS.read(e,GROWABLE_HEAP_I8(),i,_,n);if(s<0)return-1;if(o+=s,s<_)break}return o},doWritev:function(e,t,r,n){for(var o=0,a=0;a>2],_=GROWABLE_HEAP_I32()[t+(8*a+4)>>2],s=FS.write(e,GROWABLE_HEAP_I8(),i,_,n);if(s<0)return-1;o+=s}return o},varargs:void 0,get:function(){return SYSCALLS.varargs+=4,GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2]},getStr:function(e){return UTF8ToString(e)},getStreamFromFD:function(e){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(8);return t},get64:function(e,t){return e}};function ___sys_access(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,e,t);try{return e=SYSCALLS.getStr(e),SYSCALLS.doAccess(e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_fcntl64(e,t,r){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,e,t,r);SYSCALLS.varargs=r;try{var n=SYSCALLS.getStreamFromFD(e);switch(t){case 0:return(o=SYSCALLS.get())<0?-28:FS.open(n.path,n.flags,0,o).fd;case 1:case 2:case 13:case 14:return 0;case 3:return n.flags;case 4:var o=SYSCALLS.get();return n.flags|=o,0;case 12:o=SYSCALLS.get();return GROWABLE_HEAP_I16()[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return setErrNo(28),-1}}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_fstat64(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,e,t);try{var r=SYSCALLS.getStreamFromFD(e);return SYSCALLS.doStat(FS.stat,r.path,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_getdents64(e,t,r){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,e,t,r);try{var n=SYSCALLS.getStreamFromFD(e);n.getdents||(n.getdents=FS.readdir(n.path));for(var o=280,a=0,i=FS.llseek(n,0,1),_=Math.floor(i/o);_>>0,(tempDouble=s,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[t+a>>2]=tempI64[0],GROWABLE_HEAP_I32()[t+a+4>>2]=tempI64[1],tempI64=[(_+1)*o>>>0,(tempDouble=(_+1)*o,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[t+a+8>>2]=tempI64[0],GROWABLE_HEAP_I32()[t+a+12>>2]=tempI64[1],GROWABLE_HEAP_I16()[t+a+16>>1]=280,GROWABLE_HEAP_I8()[t+a+18|0]=l,stringToUTF8(u,t+a+19,256),a+=o,_+=1}return FS.llseek(n,_*o,0),a}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_getegid32(){return 0}function ___sys_geteuid32(){return ___sys_getegid32()}function ___sys_getgid32(){return ___sys_getegid32()}function ___sys_getpid(){return 42}function ___sys_getuid32(){return ___sys_getegid32()}function ___sys_ioctl(e,t,r){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,e,t,r);SYSCALLS.varargs=r;try{var n=SYSCALLS.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=SYSCALLS.get();return GROWABLE_HEAP_I32()[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:o=SYSCALLS.get();return FS.ioctl(n,t,o);default:abort("bad ioctl syscall "+t)}}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_mkdir(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,e,t);try{return e=SYSCALLS.getStr(e),SYSCALLS.doMkdir(e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function syscallMmap2(e,t,r,n,o,a){var i;a<<=12;var _=!1;if(0!==(16&n)&&e%16384!==0)return-28;if(0!==(32&n)){if(!(i=_memalign(16384,t)))return-48;_memset(i,0,t),_=!0}else{var s=FS.getStream(o);if(!s)return-8;var l=FS.mmap(s,e,t,a,r,n);i=l.ptr,_=l.allocated}return SYSCALLS.mappings[i]={malloc:i,len:t,allocated:_,fd:o,prot:r,flags:n,offset:a},i}function ___sys_mmap2(e,t,r,n,o,a){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(9,1,e,t,r,n,o,a);try{return syscallMmap2(e,t,r,n,o,a)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function syscallMunmap(e,t){if(-1===(0|e)||0===t)return-28;var r=SYSCALLS.mappings[e];if(!r)return 0;if(t===r.len){var n=FS.getStream(r.fd);n&&(2&r.prot&&SYSCALLS.doMsync(e,n,t,r.flags,r.offset),FS.munmap(n)),SYSCALLS.mappings[e]=null,r.allocated&&_free(r.malloc)}return 0}function ___sys_munmap(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(10,1,e,t);try{return syscallMunmap(e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_open(e,t,r){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(11,1,e,t,r);SYSCALLS.varargs=r;try{var n=SYSCALLS.getStr(e),o=r?SYSCALLS.get():0;return FS.open(n,t,o).fd}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_rename(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(12,1,e,t);try{return e=SYSCALLS.getStr(e),t=SYSCALLS.getStr(t),FS.rename(e,t),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_rmdir(e){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(13,1,e);try{return e=SYSCALLS.getStr(e),FS.rmdir(e),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_stat64(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(14,1,e,t);try{return e=SYSCALLS.getStr(e),SYSCALLS.doStat(FS.stat,e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_statfs64(e,t,r){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(15,1,e,t,r);try{return e=SYSCALLS.getStr(e),GROWABLE_HEAP_I32()[r+4>>2]=4096,GROWABLE_HEAP_I32()[r+40>>2]=4096,GROWABLE_HEAP_I32()[r+8>>2]=1e6,GROWABLE_HEAP_I32()[r+12>>2]=5e5,GROWABLE_HEAP_I32()[r+16>>2]=5e5,GROWABLE_HEAP_I32()[r+20>>2]=FS.nextInode,GROWABLE_HEAP_I32()[r+24>>2]=1e6,GROWABLE_HEAP_I32()[r+28>>2]=42,GROWABLE_HEAP_I32()[r+44>>2]=2,GROWABLE_HEAP_I32()[r+36>>2]=255,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_unlink(e){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(16,1,e);try{return e=SYSCALLS.getStr(e),FS.unlink(e),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function __emscripten_notify_thread_queue(e,t){if(e==t)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:e,cmd:"processThreadQueue"});else{var r=PThread.pthreads[e],n=r&&r.worker;if(!n)return;n.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _cPlusAudioEncodeCallBack(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(29,1,e,t);cPlusAudioEncodeCallBack(e,t)}function _cPlusAudioPackedCallBack(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(28,1,e,t);cPlusAudioPackedCallBack(e,t)}function _cPlusDataRecordCallBack(e,t,r,n){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(30,1,e,t,r,n);cPlusDataRecordCallBack(e,t,r,n)}function _cPlusDigitalSignCallBack(e,t,r){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(31,1,e,t,r);cPlusDigitalSignCallBack(e,t,r)}function _cPlusLogMessageCallBack(e,t,r,n,o){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(35,1,e,t,r,n,o);cPlusLogMessageCallBack(e,t,r,n,o)}function _cPlusParseStreamCallBack(e,t,r,n,o){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(34,1,e,t,r,n,o);cPlusParseStreamCallBack(e,t,r,n,o)}function _cPlusStatisticCallBack(e,t,r,n){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(33,1,e,t,r,n);cPlusStatisticCallBack(e,t,r,n)}function _cPlusVideoPackedCallback(e,t,r){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(32,1,e,t,r);cPlusVideoPackedCallback(e,t,r)}function _cPlusVisibleDecCallBack(e,t,r,n,o,a,i){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(27,1,e,t,r,n,o,a,i);cPlusVisibleDecCallBack(e,t,r,n,o,a,i)}function _clock(){return void 0===_clock.start&&(_clock.start=Date.now()),1e3*(Date.now()-_clock.start)|0}function _dlclose(e){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _dlopen(e,t){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _dlsym(e,t){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _emscripten_asm_const_int(e,t,r){var n=readAsmConstArgs(t,r);return ASM_CONSTS[e].apply(null,n)}function _emscripten_check_blocking_allowed(){ENVIRONMENT_IS_WORKER||warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function _emscripten_conditional_set_current_thread_status_js(e,t){}function _emscripten_conditional_set_current_thread_status(e,t){}function _emscripten_futex_wait(e,t,r){if(e<=0||e>GROWABLE_HEAP_I8().length||!0&e)return-28;if(ENVIRONMENT_IS_WEB){if(Atomics.load(GROWABLE_HEAP_I32(),e>>2)!=t)return-6;var n=performance.now(),o=n+r;for(Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,e);;){if((n=performance.now())>o)return Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0),-73;if(0==Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0))break;if(_emscripten_main_thread_process_queued_calls(),Atomics.load(GROWABLE_HEAP_I32(),e>>2)!=t)return-6;Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,e)}return 0}var a=Atomics.wait(GROWABLE_HEAP_I32(),e>>2,t,r);if("timed-out"===a)return-73;if("not-equal"===a)return-6;if("ok"===a)return 0;throw"Atomics.wait returned an unexpected value "+a}function reallyNegative(e){return e<0||0===e&&1/e===-1/0}function convertI32PairToI53(e,t){return(e>>>0)+4294967296*t}function convertU32PairToI53(e,t){return(e>>>0)+4294967296*(t>>>0)}function reSign(e,t){if(e<=0)return e;var r=t<=32?Math.abs(1<=r&&(t<=32||e>r)&&(e=-2*r+e),e}function unSign(e,t){return e>=0?e:t<=32?2*Math.abs(1<>3],n+=8):"i64"==e?(t=[GROWABLE_HEAP_I32()[n>>2],GROWABLE_HEAP_I32()[n+4>>2]],n+=8):(e="i32",t=GROWABLE_HEAP_I32()[n>>2],n+=4),t}for(var a,i,_,s=[];;){var l=r;if(0===(a=GROWABLE_HEAP_I8()[r|0]))break;if(i=GROWABLE_HEAP_I8()[r+1|0],37==a){var u=!1,c=!1,d=!1,f=!1,m=!1;e:for(;;){switch(i){case 43:u=!0;break;case 45:c=!0;break;case 35:d=!0;break;case 48:if(f)break e;f=!0;break;case 32:m=!0;break;default:break e}r++,i=GROWABLE_HEAP_I8()[r+1|0]}var p=0;if(42==i)p=o("i32"),r++,i=GROWABLE_HEAP_I8()[r+1|0];else for(;i>=48&&i<=57;)p=10*p+(i-48),r++,i=GROWABLE_HEAP_I8()[r+1|0];var E,S=!1,h=-1;if(46==i){if(h=0,S=!0,r++,42==(i=GROWABLE_HEAP_I8()[r+1|0]))h=o("i32"),r++;else for(;;){var A=GROWABLE_HEAP_I8()[r+1|0];if(A<48||A>57)break;h=10*h+(A-48),r++}i=GROWABLE_HEAP_I8()[r+1|0]}switch(h<0&&(h=6,S=!1),String.fromCharCode(i)){case"h":104==GROWABLE_HEAP_I8()[r+2|0]?(r++,E=1):E=2;break;case"l":108==GROWABLE_HEAP_I8()[r+2|0]?(r++,E=8):E=4;break;case"L":case"q":case"j":E=8;break;case"z":case"t":case"I":E=4;break;default:E=null}switch(E&&r++,i=GROWABLE_HEAP_I8()[r+1|0],String.fromCharCode(i)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var g=100==i||105==i;if(_=o("i"+8*(E=E||4)),8==E&&(_=117==i?convertU32PairToI53(_[0],_[1]):convertI32PairToI53(_[0],_[1])),E<=4)_=(g?reSign:unSign)(_&Math.pow(256,E)-1,8*E);var y=Math.abs(_),M="";if(100==i||105==i)F=reSign(_,8*E,1).toString(10);else if(117==i)F=unSign(_,8*E,1).toString(10),_=Math.abs(_);else if(111==i)F=(d?"0":"")+y.toString(8);else if(120==i||88==i){if(M=d&&0!=_?"0x":"",_<0){_=-_,F=(y-1).toString(16);for(var P=[],v=0;v=0&&(u?M="+"+M:m&&(M=" "+M)),"-"==F.charAt(0)&&(M="-"+M,F=F.substr(1));M.length+F.lengthL&&L>=-4?(i=(103==i?"f":"F").charCodeAt(0),h-=L+1):(i=(103==i?"e":"E").charCodeAt(0),h--),w=Math.min(h,20)}101==i||69==i?(F=_.toExponential(w),/[eE][-+]\d$/.test(F)&&(F=F.slice(0,-1)+"0"+F.slice(-1))):102!=i&&70!=i||(F=_.toFixed(w),0===_&&reallyNegative(_)&&(F="-"+F));var R=F.split("e");if(T&&!d)for(;R[0].length>1&&-1!=R[0].indexOf(".")&&("0"==R[0].slice(-1)||"."==R[0].slice(-1));)R[0]=R[0].slice(0,-1);else for(d&&-1==F.indexOf(".")&&(R[0]+=".");h>w++;)R[0]+="0";F=R[0]+(R.length>1?"e"+R[1]:""),69==i&&(F=F.toUpperCase()),_>=0&&(u?F="+"+F:m&&(F=" "+F))}else F=(_<0?"-":"")+"inf",f=!1;for(;F.length0;)s.push(32);c||s.push(o("i8"));break;case"n":var b=o("i32*");GROWABLE_HEAP_I32()[b>>2]=s.length;break;case"%":s.push(a);break;default:for(v=l;v=0;)a=traverseStack(a[0]);var i=t.split("\n");t="";var _=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),s=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),l=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var u in i){var c=i[u],d="",f="",m=0,p=0,E=l.exec(c);if(E&&5==E.length)d=E[1],f=E[2],m=E[3],p=E[4];else{if((E=_.exec(c))||(E=s.exec(c)),!(E&&E.length>=4)){t+=c+"\n";continue}d=E[1],f=E[2],m=E[3],p=0|E[4]}var S=!1;if(8&e){var h=emscripten_source_map.originalPositionFor({line:m,column:p});(S=h&&h.source)&&(64&e&&(h.source=h.source.substring(h.source.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=" at "+d+" ("+h.source+":"+h.line+":"+h.column+")\n")}(16&e||!S)&&(64&e&&(f=f.substring(f.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=(S?" = "+d:" at "+d)+" ("+f+":"+m+":"+p+")\n"),128&e&&a[0]&&(a[1]==d&&a[2].length>0&&(t=t.replace(/\s+$/,""),t+=" with values: "+a[1]+a[2]+"\n"),a=traverseStack(a[0]))}return t=t.replace(/\s+$/,"")}function _emscripten_log_js(e,t){24&e&&(t=t.replace(/\s+$/,""),t+=(t.length>0?"\n":"")+_emscripten_get_callstack_js(e)),1&e?4&e?console.error(t):2&e?console.warn(t):512&e?console.info(t):256&e?console.debug(t):console.log(t):6&e?err(t):out(t)}function _emscripten_log(e,t,r){_emscripten_log_js(e,UTF8ArrayToString(formatString(t,r),0))}function _emscripten_memcpy_big(e,t,r){GROWABLE_HEAP_U8().copyWithin(e,t,t+r)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(e,t){for(var r=arguments.length-2,n=stackSave(),o=r,a=stackAlloc(8*o),i=a>>3,_=0;_>=2;r=GROWABLE_HEAP_U8()[e++];){var n=r<105;n&&1&t&&t++,readAsmConstArgsArray.push(n?GROWABLE_HEAP_F64()[t++>>1]:GROWABLE_HEAP_I32()[t]),++t}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(e,t,r){_emscripten_receive_on_main_thread_js_callArgs.length=t;for(var n=r>>3,o=0;o>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(e){var t=_emscripten_get_heap_size();if(e<=t)return!1;var r=2147483648;if(e>r)return!1;for(var n=1;n<=4;n*=2){var o=t*(1+.2/n);if(o=Math.min(o,e+100663296),emscripten_realloc_buffer(Math.min(r,alignUp(Math.max(e,o),65536))))return!0}return!1}Module.readAsmConstArgsArray=readAsmConstArgsArray,Module.readAsmConstArgs=readAsmConstArgs,Module._emscripten_receive_on_main_thread_js=_emscripten_receive_on_main_thread_js,Module._emscripten_get_heap_size=_emscripten_get_heap_size,Module.emscripten_realloc_buffer=emscripten_realloc_buffer,Module._emscripten_resize_heap=_emscripten_resize_heap;var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var e=JSEvents.eventHandlers.length-1;e>=0;--e)JSEvents._removeHandler(e);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(e,t,r){function n(e,t){if(e.length!=t.length)return!1;for(var r in e)if(e[r]!=t[r])return!1;return!0}for(var o in JSEvents.deferredCalls){var a=JSEvents.deferredCalls[o];if(a.targetFunction==e&&n(a.argsList,r))return}JSEvents.deferredCalls.push({targetFunction:e,precedence:t,argsList:r}),JSEvents.deferredCalls.sort((function(e,t){return e.precedence>2]=r,GROWABLE_HEAP_I32()[i+4>>2]=n,GROWABLE_HEAP_I32()[i+8>>2]=o,__emscripten_call_on_thread(0,e,637534208,t,n,i),stackRestore(a)},getTargetThreadForEventCallback:function(e){switch(e){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return e}},getNodeNameForTarget:function(e){return e?e==window?"#window":e==screen?"#screen":e&&e.nodeName?e.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(e){var t=lengthBytesUTF8(e)+1,r=_malloc(t);return stringToUTF8(e,r,t),r}function _emscripten_set_offscreencanvas_size_on_target_thread_js(e,t,r,n){var o=stackSave(),a=stackAlloc(12),i=0;t&&(i=stringToNewUTF8(t)),GROWABLE_HEAP_I32()[a>>2]=i,GROWABLE_HEAP_I32()[a+4>>2]=r,GROWABLE_HEAP_I32()[a+8>>2]=n,__emscripten_call_on_thread(0,e,657457152,0,i,a),stackRestore(o)}function _emscripten_set_offscreencanvas_size_on_target_thread(e,t,r,n){_emscripten_set_offscreencanvas_size_on_target_thread_js(e,t=t?UTF8ToString(t):"",r,n)}function maybeCStringToJsString(e){return e>2?UTF8ToString(e):e}Module.JSEvents=JSEvents,Module.stringToNewUTF8=stringToNewUTF8,Module._emscripten_set_offscreencanvas_size_on_target_thread_js=_emscripten_set_offscreencanvas_size_on_target_thread_js,Module._emscripten_set_offscreencanvas_size_on_target_thread=_emscripten_set_offscreencanvas_size_on_target_thread,Module.maybeCStringToJsString=maybeCStringToJsString;var specialHTMLTargets=[0,"undefined"!==typeof document?document:0,"undefined"!==typeof window?window:0];function findEventTarget(e){return e=maybeCStringToJsString(e),specialHTMLTargets[e]||("undefined"!==typeof document?document.querySelector(e):void 0)}function findCanvasEventTarget(e){return findEventTarget(e)}function _emscripten_set_canvas_element_size_calling_thread(e,t,r){var n=findCanvasEventTarget(e);if(!n)return-4;if(n.canvasSharedPtr&&(GROWABLE_HEAP_I32()[n.canvasSharedPtr>>2]=t,GROWABLE_HEAP_I32()[n.canvasSharedPtr+4>>2]=r),!n.offscreenCanvas&&n.controlTransferredOffscreen)return n.canvasSharedPtr?(_emscripten_set_offscreencanvas_size_on_target_thread(GROWABLE_HEAP_I32()[n.canvasSharedPtr+8>>2],e,t,r),1):-4;n.offscreenCanvas&&(n=n.offscreenCanvas);var o=!1;if(n.GLctxObject&&n.GLctxObject.GLctx){var a=n.GLctxObject.GLctx.getParameter(2978);o=0===a[0]&&0===a[1]&&a[2]===n.width&&a[3]===n.height}return n.width=t,n.height=r,o&&n.GLctxObject.GLctx.viewport(0,0,t,r),0}function _emscripten_set_canvas_element_size_main_thread(e,t,r){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(17,1,e,t,r):_emscripten_set_canvas_element_size_calling_thread(e,t,r)}function _emscripten_set_canvas_element_size(e,t,r){return findCanvasEventTarget(e)?_emscripten_set_canvas_element_size_calling_thread(e,t,r):_emscripten_set_canvas_element_size_main_thread(e,t,r)}function _emscripten_set_current_thread_status_js(e){}function _emscripten_set_current_thread_status(e){}function _emscripten_set_thread_name(e,t){}function __webgl_enable_ANGLE_instanced_arrays(e){var t=e.getExtension("ANGLE_instanced_arrays");if(t)return e.vertexAttribDivisor=function(e,r){t.vertexAttribDivisorANGLE(e,r)},e.drawArraysInstanced=function(e,r,n,o){t.drawArraysInstancedANGLE(e,r,n,o)},e.drawElementsInstanced=function(e,r,n,o,a){t.drawElementsInstancedANGLE(e,r,n,o,a)},1}function __webgl_enable_OES_vertex_array_object(e){var t=e.getExtension("OES_vertex_array_object");if(t)return e.createVertexArray=function(){return t.createVertexArrayOES()},e.deleteVertexArray=function(e){t.deleteVertexArrayOES(e)},e.bindVertexArray=function(e){t.bindVertexArrayOES(e)},e.isVertexArray=function(e){return t.isVertexArrayOES(e)},1}function __webgl_enable_WEBGL_draw_buffers(e){var t=e.getExtension("WEBGL_draw_buffers");if(t)return e.drawBuffers=function(e,r){t.drawBuffersWEBGL(e,r)},1}function __webgl_enable_WEBGL_multi_draw(e){return!!(e.multiDrawWebgl=e.getExtension("WEBGL_multi_draw"))}Module.specialHTMLTargets=specialHTMLTargets,Module.findEventTarget=findEventTarget,Module.findCanvasEventTarget=findCanvasEventTarget,Module._emscripten_set_canvas_element_size_calling_thread=_emscripten_set_canvas_element_size_calling_thread,Module._emscripten_set_canvas_element_size_main_thread=_emscripten_set_canvas_element_size_main_thread,Module._emscripten_set_canvas_element_size=_emscripten_set_canvas_element_size,Module._emscripten_set_current_thread_status_js=_emscripten_set_current_thread_status_js,Module._emscripten_set_current_thread_status=_emscripten_set_current_thread_status,Module._emscripten_set_thread_name=_emscripten_set_thread_name,Module.__webgl_enable_ANGLE_instanced_arrays=__webgl_enable_ANGLE_instanced_arrays,Module.__webgl_enable_OES_vertex_array_object=__webgl_enable_OES_vertex_array_object,Module.__webgl_enable_WEBGL_draw_buffers=__webgl_enable_WEBGL_draw_buffers,Module.__webgl_enable_WEBGL_multi_draw=__webgl_enable_WEBGL_multi_draw;var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(e){GL.lastError||(GL.lastError=e)},getNewId:function(e){for(var t=GL.counter++,r=e.length;r>2]:-1;o+=UTF8ToString(GROWABLE_HEAP_I32()[r+4*a>>2],i<0?void 0:i)}return o},createContext:function(e,t){var r=e.getContext("webgl",t);return r?GL.registerContext(r,t):0},registerContext:function(e,t){var r=_malloc(8);GROWABLE_HEAP_I32()[r+4>>2]=_pthread_self();var n={handle:r,attributes:t,version:t.majorVersion,GLctx:e};return e.canvas&&(e.canvas.GLctxObject=n),GL.contexts[r]=n,("undefined"===typeof t.enableExtensionsByDefault||t.enableExtensionsByDefault)&&GL.initExtensions(n),r},makeContextCurrent:function(e){return GL.currentContext=GL.contexts[e],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(e&&!GLctx)},getContext:function(e){return GL.contexts[e]},deleteContext:function(e){GL.currentContext===GL.contexts[e]&&(GL.currentContext=null),"object"===typeof JSEvents&&JSEvents.removeAllHandlersOnTarget(GL.contexts[e].GLctx.canvas),GL.contexts[e]&&GL.contexts[e].GLctx.canvas&&(GL.contexts[e].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[e].handle),GL.contexts[e]=null},initExtensions:function(e){if(e||(e=GL.currentContext),!e.initExtensionsDone){e.initExtensionsDone=!0;var t=e.GLctx;__webgl_enable_ANGLE_instanced_arrays(t),__webgl_enable_OES_vertex_array_object(t),__webgl_enable_WEBGL_draw_buffers(t),t.disjointTimerQueryExt=t.getExtension("EXT_disjoint_timer_query"),__webgl_enable_WEBGL_multi_draw(t),(t.getSupportedExtensions()||[]).forEach((function(e){e.indexOf("lose_context")<0&&e.indexOf("debug")<0&&t.getExtension(e)}))}},populateUniformTable:function(e){for(var t=GL.programs[e],r=GL.programInfos[e]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},n=r.uniforms,o=GLctx.getProgramParameter(t,35718),a=0;a>2,n=GROWABLE_HEAP_I32()[r+6],o={alpha:!!GROWABLE_HEAP_I32()[r+0],depth:!!GROWABLE_HEAP_I32()[r+1],stencil:!!GROWABLE_HEAP_I32()[r+2],antialias:!!GROWABLE_HEAP_I32()[r+3],premultipliedAlpha:!!GROWABLE_HEAP_I32()[r+4],preserveDrawingBuffer:!!GROWABLE_HEAP_I32()[r+5],powerPreference:__emscripten_webgl_power_preferences[n],failIfMajorPerformanceCaveat:!!GROWABLE_HEAP_I32()[r+7],majorVersion:GROWABLE_HEAP_I32()[r+8],minorVersion:GROWABLE_HEAP_I32()[r+9],enableExtensionsByDefault:GROWABLE_HEAP_I32()[r+10],explicitSwapControl:GROWABLE_HEAP_I32()[r+11],proxyContextToMainThread:GROWABLE_HEAP_I32()[r+12],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[r+13]},a=findCanvasEventTarget(e);return a?o.explicitSwapControl?0:GL.createContext(a,o):0}function _emscripten_webgl_create_context(e,t){return _emscripten_webgl_do_create_context(e,t)}Module.__emscripten_webgl_power_preferences=__emscripten_webgl_power_preferences,Module._emscripten_webgl_do_create_context=_emscripten_webgl_do_create_context,Module._emscripten_webgl_create_context=_emscripten_webgl_create_context;var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:getExecutableName()};for(var t in ENV)e[t]=ENV[t];var r=[];for(var t in e)r.push(t+"="+e[t]);getEnvStrings.strings=r}return getEnvStrings.strings}function _environ_get(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(18,1,e,t);try{var r=0;return getEnvStrings().forEach((function(n,o){var a=t+r;GROWABLE_HEAP_I32()[e+4*o>>2]=a,writeAsciiToMemory(n,a),r+=n.length+1})),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _environ_sizes_get(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(19,1,e,t);try{var r=getEnvStrings();GROWABLE_HEAP_I32()[e>>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),GROWABLE_HEAP_I32()[t>>2]=n,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _exit(e){exit(e)}function _fd_close(e){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(20,1,e);try{var t=SYSCALLS.getStreamFromFD(e);return FS.close(t),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_fdstat_get(e,t){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(21,1,e,t);try{var r=SYSCALLS.getStreamFromFD(e),n=r.tty?2:FS.isDir(r.mode)?3:FS.isLink(r.mode)?7:4;return GROWABLE_HEAP_I8()[t|0]=n,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_read(e,t,r,n){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(22,1,e,t,r,n);try{var o=SYSCALLS.getStreamFromFD(e),a=SYSCALLS.doReadv(o,t,r);return GROWABLE_HEAP_I32()[n>>2]=a,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_seek(e,t,r,n,o){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(23,1,e,t,r,n,o);try{var a=SYSCALLS.getStreamFromFD(e),i=4294967296*r+(t>>>0),_=9007199254740992;return i<=-_||i>=_?-61:(FS.llseek(a,i,n),tempI64=[a.position>>>0,(tempDouble=a.position,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[o>>2]=tempI64[0],GROWABLE_HEAP_I32()[o+4>>2]=tempI64[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_sync(e){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(24,1,e);try{var t=SYSCALLS.getStreamFromFD(e);return t.stream_ops&&t.stream_ops.fsync?-t.stream_ops.fsync(t):0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_write(e,t,r,n){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(25,1,e,t,r,n);try{var o=SYSCALLS.getStreamFromFD(e),a=SYSCALLS.doWritev(o,t,r);return GROWABLE_HEAP_I32()[n>>2]=a,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _gettimeofday(e){var t=Date.now();return GROWABLE_HEAP_I32()[e>>2]=t/1e3|0,GROWABLE_HEAP_I32()[e+4>>2]=t%1e3*1e3|0,0}function _mktime(e){_tzset();var t=new Date(GROWABLE_HEAP_I32()[e+20>>2]+1900,GROWABLE_HEAP_I32()[e+16>>2],GROWABLE_HEAP_I32()[e+12>>2],GROWABLE_HEAP_I32()[e+8>>2],GROWABLE_HEAP_I32()[e+4>>2],GROWABLE_HEAP_I32()[e>>2],0),r=GROWABLE_HEAP_I32()[e+32>>2],n=t.getTimezoneOffset(),o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),_=Math.min(i,a);if(r<0)GROWABLE_HEAP_I32()[e+32>>2]=Number(a!=i&&_==n);else if(r>0!=(_==n)){var s=Math.max(i,a),l=r>0?_:s;t.setTime(t.getTime()+6e4*(l-n))}GROWABLE_HEAP_I32()[e+24>>2]=t.getDay();var u=(t.getTime()-o.getTime())/864e5|0;return GROWABLE_HEAP_I32()[e+28>>2]=u,GROWABLE_HEAP_I32()[e>>2]=t.getSeconds(),GROWABLE_HEAP_I32()[e+4>>2]=t.getMinutes(),GROWABLE_HEAP_I32()[e+8>>2]=t.getHours(),GROWABLE_HEAP_I32()[e+12>>2]=t.getDate(),GROWABLE_HEAP_I32()[e+16>>2]=t.getMonth(),t.getTime()/1e3|0}function _pthread_cancel(e){return e===_emscripten_main_browser_thread_id()?(err("Main thread (id="+e+") cannot be canceled!"),ERRNO_CODES.ESRCH):e?GROWABLE_HEAP_I32()[e+12>>2]!==e?(err("pthread_cancel attempted on thread "+e+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH):(Atomics.compareExchange(GROWABLE_HEAP_U32(),e+0>>2,0,2),ENVIRONMENT_IS_PTHREAD?postMessage({cmd:"cancelThread",thread:e}):cancelThread(e),0):(err("pthread_cancel attempted on a null thread pointer!"),ERRNO_CODES.ESRCH)}function _pthread_cleanup_pop(e){var t=PThread.threadExitHandlers.pop();e&&t()}function _pthread_cleanup_push(e,t){PThread.threadExitHandlers.push((function(){wasmTable.get(e)(t)}))}function spawnThread(e){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var t=PThread.getNewWorker();if(void 0!==t.pthread)throw"Internal error!";if(!e.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(t);for(var r=_malloc(512),n=0;n<128;++n)GROWABLE_HEAP_I32()[r+4*n>>2]=0;var o=e.stackBase+e.stackSize,a=PThread.pthreads[e.pthread_ptr]={worker:t,stackBase:e.stackBase,stackSize:e.stackSize,allocatedOwnStack:e.allocatedOwnStack,threadInfoStruct:e.pthread_ptr},i=a.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),i+16,e.detached),Atomics.store(GROWABLE_HEAP_U32(),i+25,r),Atomics.store(GROWABLE_HEAP_U32(),i+10,a.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),i+20,e.stackSize),Atomics.store(GROWABLE_HEAP_U32(),i+19,o),Atomics.store(GROWABLE_HEAP_U32(),i+26,e.stackSize),Atomics.store(GROWABLE_HEAP_U32(),i+28,o),Atomics.store(GROWABLE_HEAP_U32(),i+29,e.detached);var _=_emscripten_get_global_libc()+40;Atomics.store(GROWABLE_HEAP_U32(),i+43,_),t.pthread=a;var s={cmd:"run",start_routine:e.startRoutine,arg:e.arg,threadInfoStruct:e.pthread_ptr,stackBase:e.stackBase,stackSize:e.stackSize};t.runPthread=function(){s.time=performance.now(),t.postMessage(s,e.transferList)},t.loaded&&(t.runPthread(),delete t.runPthread)}function _pthread_create(e,t,r,n){if("undefined"===typeof SharedArrayBuffer)return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!e)return err("pthread_create called with a null thread pointer!"),28;var o=[];if(ENVIRONMENT_IS_PTHREAD&&0===o.length)return _emscripten_sync_run_in_main_thread_4(687865856,e,t,r,n);var a=0,i=0,_=0;t&&-1!=t?(a=GROWABLE_HEAP_I32()[t>>2],a+=81920,i=GROWABLE_HEAP_I32()[t+8>>2],_=0!==GROWABLE_HEAP_I32()[t+12>>2]):a=2097152;var s=0==i;s?i=_memalign(16,a):assert((i-=a)>0);for(var l=_malloc(228),u=0;u<57;++u)GROWABLE_HEAP_U32()[(l>>2)+u]=0;GROWABLE_HEAP_I32()[e>>2]=l,GROWABLE_HEAP_I32()[l+12>>2]=l;var c=l+152;GROWABLE_HEAP_I32()[c>>2]=c;var d={stackBase:i,stackSize:a,allocatedOwnStack:s,detached:_,startRoutine:r,pthread_ptr:l,arg:n,transferList:o};return ENVIRONMENT_IS_PTHREAD?(d.cmd="spawnThread",postMessage(d,o)):spawnThread(d),0}function _pthread_detach(e){return e?GROWABLE_HEAP_I32()[e+12>>2]!==e?(err("pthread_detach attempted on thread "+e+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH):Atomics.compareExchange(GROWABLE_HEAP_U32(),e+64>>2,0,2)?ERRNO_CODES.EINVAL:0:(err("pthread_detach attempted on a null thread pointer!"),ERRNO_CODES.ESRCH)}function __pthread_testcancel_js(){if(ENVIRONMENT_IS_PTHREAD){var e=_pthread_self();if(e)if(!Atomics.load(GROWABLE_HEAP_U32(),e+56>>2))if(2==Atomics.load(GROWABLE_HEAP_U32(),e+0>>2))throw"Canceled!"}}function __emscripten_do_pthread_join(e,t,r){if(!e)return err("pthread_join attempted on a null thread pointer!"),ERRNO_CODES.ESRCH;if(ENVIRONMENT_IS_PTHREAD&&_pthread_self()==e)return err("PThread "+e+" is attempting to join to itself!"),ERRNO_CODES.EDEADLK;if(!ENVIRONMENT_IS_PTHREAD&&_emscripten_main_browser_thread_id()==e)return err("Main thread "+e+" is attempting to join to itself!"),ERRNO_CODES.EDEADLK;if(GROWABLE_HEAP_I32()[e+12>>2]!==e)return err("pthread_join attempted on thread "+e+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;if(Atomics.load(GROWABLE_HEAP_U32(),e+64>>2))return err("Attempted to join thread "+e+", which was already detached!"),ERRNO_CODES.EINVAL;for(r&&_emscripten_check_blocking_allowed();;){var n=Atomics.load(GROWABLE_HEAP_U32(),e+0>>2);if(1==n){var o=Atomics.load(GROWABLE_HEAP_U32(),e+4>>2);return t&&(GROWABLE_HEAP_I32()[t>>2]=o),Atomics.store(GROWABLE_HEAP_U32(),e+64>>2,1),ENVIRONMENT_IS_PTHREAD?postMessage({cmd:"cleanupThread",thread:e}):cleanupThread(e),0}if(!r)return ERRNO_CODES.EBUSY;__pthread_testcancel_js(),ENVIRONMENT_IS_PTHREAD||_emscripten_main_thread_process_queued_calls(),_emscripten_futex_wait(e+0,n,ENVIRONMENT_IS_PTHREAD?100:1)}}function _pthread_join(e,t){return __emscripten_do_pthread_join(e,t,!0)}function _setTempRet0(e){setTempRet0(0|e)}function __isLeapYear(e){return e%4===0&&(e%100!==0||e%400===0)}function __arraySum(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}Module.ENV=ENV,Module.getExecutableName=getExecutableName,Module.getEnvStrings=getEnvStrings,Module._environ_get=_environ_get,Module._environ_sizes_get=_environ_sizes_get,Module._exit=_exit,Module._fd_close=_fd_close,Module._fd_fdstat_get=_fd_fdstat_get,Module._fd_read=_fd_read,Module._fd_seek=_fd_seek,Module._fd_sync=_fd_sync,Module._fd_write=_fd_write,Module._gettimeofday=_gettimeofday,Module._mktime=_mktime,Module._pthread_cancel=_pthread_cancel,Module._pthread_cleanup_pop=_pthread_cleanup_pop,Module._pthread_cleanup_push=_pthread_cleanup_push,Module.spawnThread=spawnThread,Module._pthread_create=_pthread_create,Module._pthread_detach=_pthread_detach,Module.__pthread_testcancel_js=__pthread_testcancel_js,Module.__emscripten_do_pthread_join=__emscripten_do_pthread_join,Module._pthread_join=_pthread_join,Module._setTempRet0=_setTempRet0,Module.__isLeapYear=__isLeapYear,Module.__arraySum=__arraySum;var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];Module.__MONTH_DAYS_LEAP=__MONTH_DAYS_LEAP;var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(e,t){for(var r=new Date(e.getTime());t>0;){var n=__isLeapYear(r.getFullYear()),o=r.getMonth(),a=(n?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[o];if(!(t>a-r.getDate()))return r.setDate(r.getDate()+t),r;t-=a-r.getDate()+1,r.setDate(1),o<11?r.setMonth(o+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}function _strftime(e,t,r,n){var o=GROWABLE_HEAP_I32()[n+40>>2],a={tm_sec:GROWABLE_HEAP_I32()[n>>2],tm_min:GROWABLE_HEAP_I32()[n+4>>2],tm_hour:GROWABLE_HEAP_I32()[n+8>>2],tm_mday:GROWABLE_HEAP_I32()[n+12>>2],tm_mon:GROWABLE_HEAP_I32()[n+16>>2],tm_year:GROWABLE_HEAP_I32()[n+20>>2],tm_wday:GROWABLE_HEAP_I32()[n+24>>2],tm_yday:GROWABLE_HEAP_I32()[n+28>>2],tm_isdst:GROWABLE_HEAP_I32()[n+32>>2],tm_gmtoff:GROWABLE_HEAP_I32()[n+36>>2],tm_zone:o?UTF8ToString(o):""},i=UTF8ToString(r),_={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var s in _)i=i.replace(new RegExp(s,"g"),_[s]);var l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],u=["January","February","March","April","May","June","July","August","September","October","November","December"];function c(e,t,r){for(var n="number"===typeof e?e.toString():e||"";n.length0?1:0}var n;return 0===(n=r(e.getFullYear()-t.getFullYear()))&&0===(n=r(e.getMonth()-t.getMonth()))&&(n=r(e.getDate()-t.getDate())),n}function m(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function p(e){var t=__addDays(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=m(r),a=m(n);return f(o,t)<=0?f(a,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var E={"%a":function(e){return l[e.tm_wday].substring(0,3)},"%A":function(e){return l[e.tm_wday]},"%b":function(e){return u[e.tm_mon].substring(0,3)},"%B":function(e){return u[e.tm_mon]},"%C":function(e){return d((e.tm_year+1900)/100|0,2)},"%d":function(e){return d(e.tm_mday,2)},"%e":function(e){return c(e.tm_mday,2," ")},"%g":function(e){return p(e).toString().substring(2)},"%G":function(e){return p(e)},"%H":function(e){return d(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(e){return d(e.tm_mday+__arraySum(__isLeapYear(e.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,e.tm_mon-1),3)},"%m":function(e){return d(e.tm_mon+1,2)},"%M":function(e){return d(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return d(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=new Date(e.tm_year+1900,0,1),r=0===t.getDay()?t:__addDays(t,7-t.getDay()),n=new Date(e.tm_year+1900,e.tm_mon,e.tm_mday);if(f(r,n)<0){var o=__arraySum(__isLeapYear(n.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,n.getMonth()-1)-31,a=31-r.getDate()+o+n.getDate();return d(Math.ceil(a/7),2)}return 0===f(r,t)?"01":"00"},"%V":function(e){var t,r=new Date(e.tm_year+1900,0,4),n=new Date(e.tm_year+1901,0,4),o=m(r),a=m(n),i=__addDays(new Date(e.tm_year+1900,0,1),e.tm_yday);return f(i,o)<0?"53":f(a,i)<=0?"01":(t=o.getFullYear()=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var s in E)i.indexOf(s)>=0&&(i=i.replace(new RegExp(s,"g"),E[s](a)));var S=intArrayFromString(i,!1);return S.length>t?0:(writeArrayToMemory(S,e),S.length-1)}function _strftime_l(e,t,r,n){return _strftime(e,t,r,n)}function _sysconf(e){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(26,1,e);switch(e){case 30:case 75:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}function _system(e){return e?(setErrNo(6),-1):0}function _time(e){var t=Date.now()/1e3|0;return e&&(GROWABLE_HEAP_I32()[e>>2]=t),t}Module.__MONTH_DAYS_REGULAR=__MONTH_DAYS_REGULAR,Module.__addDays=__addDays,Module._strftime=_strftime,Module._strftime_l=_strftime_l,Module._sysconf=_sysconf,Module._system=_system,Module._time=_time,ENVIRONMENT_IS_PTHREAD||PThread.initMainThreadBlock();var GLctx,FSNode=function(e,t,r,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=FS.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n},readMode=365,writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(e){e?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(e){e?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();var proxiedFunctionTable=[null,_atexit,_tzset,___sys_access,___sys_fcntl64,___sys_fstat64,___sys_getdents64,___sys_ioctl,___sys_mkdir,___sys_mmap2,___sys_munmap,___sys_open,___sys_rename,___sys_rmdir,___sys_stat64,___sys_statfs64,___sys_unlink,_emscripten_set_canvas_element_size_main_thread,_environ_get,_environ_sizes_get,_fd_close,_fd_fdstat_get,_fd_read,_fd_seek,_fd_sync,_fd_write,_sysconf,_cPlusVisibleDecCallBack,_cPlusAudioPackedCallBack,_cPlusAudioEncodeCallBack,_cPlusDataRecordCallBack,_cPlusDigitalSignCallBack,_cPlusVideoPackedCallback,_cPlusStatisticCallBack,_cPlusParseStreamCallBack,_cPlusLogMessageCallBack];function intArrayFromString(e,t,r){var n=r>0?r:lengthBytesUTF8(e)+1,o=new Array(n),a=stringToUTF8Array(e,o,0,o.length);return t&&(o.length=a),o}var calledRun,asmLibraryArg={g:___assert_fail,Q:___call_main,na:___clock_gettime,y:___cxa_allocate_exception,x:___cxa_throw,_:___gmtime_r,Z:___localtime_r,ha:___sys_access,v:___sys_fcntl64,pa:___sys_fstat64,la:___sys_getdents64,ja:___sys_getegid32,ia:___sys_geteuid32,ea:___sys_getgid32,o:___sys_getpid,ga:___sys_getuid32,ka:___sys_ioctl,qa:___sys_mkdir,ba:___sys_mmap2,ca:___sys_munmap,H:___sys_open,$:___sys_rename,F:___sys_rmdir,G:___sys_stat64,oa:___sys_statfs64,aa:___sys_unlink,V:__emscripten_notify_thread_queue,d:_abort,za:_cPlusAudioEncodeCallBack,Ca:_cPlusAudioPackedCallBack,L:_cPlusDataRecordCallBack,w:_cPlusDigitalSignCallBack,b:_cPlusLogMessageCallBack,Ba:_cPlusParseStreamCallBack,ma:_cPlusStatisticCallBack,fa:_cPlusVideoPackedCallback,Da:_cPlusVisibleDecCallBack,ta:_clock,q:_clock_gettime,xa:_dlclose,sa:_dlopen,ya:_dlsym,A:_emscripten_asm_const_int,W:_emscripten_check_blocking_allowed,s:_emscripten_conditional_set_current_thread_status,k:_emscripten_futex_wait,j:_emscripten_futex_wake,i:_emscripten_get_now,c:_emscripten_log,N:_emscripten_memcpy_big,ra:_emscripten_num_logical_cores,S:_emscripten_receive_on_main_thread_js,O:_emscripten_resize_heap,T:_emscripten_set_canvas_element_size,z:_emscripten_set_current_thread_status,R:_emscripten_set_thread_name,U:_emscripten_webgl_create_context,X:_environ_get,Y:_environ_sizes_get,Aa:_exit,t:_fd_close,D:_fd_fdstat_get,E:_fd_read,K:_fd_seek,da:_fd_sync,u:_fd_write,e:_gettimeofday,M:initPthreadsJS,n:_localtime_r,a:wasmMemory,r:_mktime,wa:_pthread_cancel,B:_pthread_cleanup_pop,C:_pthread_cleanup_push,l:_pthread_create,va:_pthread_detach,p:_pthread_join,m:_setTempRet0,f:_strftime,P:_strftime_l,I:_sysconf,J:_system,h:_time,ua:_tzset},asm=createWasm(),___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.Ea).apply(null,arguments)},_PLAY_Init=Module._PLAY_Init=function(){return(_PLAY_Init=Module._PLAY_Init=Module.asm.Fa).apply(null,arguments)},_strlen=Module._strlen=function(){return(_strlen=Module._strlen=Module.asm.Ga).apply(null,arguments)},_PLAY_UnInit=Module._PLAY_UnInit=function(){return(_PLAY_UnInit=Module._PLAY_UnInit=Module.asm.Ha).apply(null,arguments)},_PLAY_OpenStream=Module._PLAY_OpenStream=function(){return(_PLAY_OpenStream=Module._PLAY_OpenStream=Module.asm.Ia).apply(null,arguments)},_PLAY_ConvertToJpegFile=Module._PLAY_ConvertToJpegFile=function(){return(_PLAY_ConvertToJpegFile=Module._PLAY_ConvertToJpegFile=Module.asm.Ja).apply(null,arguments)},_PLAY_GetFreePort=Module._PLAY_GetFreePort=function(){return(_PLAY_GetFreePort=Module._PLAY_GetFreePort=Module.asm.Ka).apply(null,arguments)},_PLAY_SetStreamOpenMode=Module._PLAY_SetStreamOpenMode=function(){return(_PLAY_SetStreamOpenMode=Module._PLAY_SetStreamOpenMode=Module.asm.La).apply(null,arguments)},_PLAY_Play=Module._PLAY_Play=function(){return(_PLAY_Play=Module._PLAY_Play=Module.asm.Ma).apply(null,arguments)},_PLAY_SetInt32=Module._PLAY_SetInt32=function(){return(_PLAY_SetInt32=Module._PLAY_SetInt32=Module.asm.Na).apply(null,arguments)},_PLAY_InputData=Module._PLAY_InputData=function(){return(_PLAY_InputData=Module._PLAY_InputData=Module.asm.Oa).apply(null,arguments)},_PLAY_GetBufferValue=Module._PLAY_GetBufferValue=function(){return(_PLAY_GetBufferValue=Module._PLAY_GetBufferValue=Module.asm.Pa).apply(null,arguments)},_PLAY_Stop=Module._PLAY_Stop=function(){return(_PLAY_Stop=Module._PLAY_Stop=Module.asm.Qa).apply(null,arguments)},_PLAY_CloseStream=Module._PLAY_CloseStream=function(){return(_PLAY_CloseStream=Module._PLAY_CloseStream=Module.asm.Ra).apply(null,arguments)},_PLAY_ReleasePort=Module._PLAY_ReleasePort=function(){return(_PLAY_ReleasePort=Module._PLAY_ReleasePort=Module.asm.Sa).apply(null,arguments)},_PLAY_Pause=Module._PLAY_Pause=function(){return(_PLAY_Pause=Module._PLAY_Pause=Module.asm.Ta).apply(null,arguments)},_PLAY_SetPrintLogLevel=Module._PLAY_SetPrintLogLevel=function(){return(_PLAY_SetPrintLogLevel=Module._PLAY_SetPrintLogLevel=Module.asm.Ua).apply(null,arguments)},_PLAY_SetDisplayRegion=Module._PLAY_SetDisplayRegion=function(){return(_PLAY_SetDisplayRegion=Module._PLAY_SetDisplayRegion=Module.asm.Va).apply(null,arguments)},_PLAY_SetEngine=Module._PLAY_SetEngine=function(){return(_PLAY_SetEngine=Module._PLAY_SetEngine=Module.asm.Wa).apply(null,arguments)},_PLAY_SetDemuxCallBack=Module._PLAY_SetDemuxCallBack=function(){return(_PLAY_SetDemuxCallBack=Module._PLAY_SetDemuxCallBack=Module.asm.Xa).apply(null,arguments)},_PLAY_SetVisibleDecodeCallBack=Module._PLAY_SetVisibleDecodeCallBack=function(){return(_PLAY_SetVisibleDecodeCallBack=Module._PLAY_SetVisibleDecodeCallBack=Module.asm.Ya).apply(null,arguments)},_PLAY_SetDecodeCallBack=Module._PLAY_SetDecodeCallBack=function(){return(_PLAY_SetDecodeCallBack=Module._PLAY_SetDecodeCallBack=Module.asm.Za).apply(null,arguments)},_PLAY_SetIVSCallBack=Module._PLAY_SetIVSCallBack=function(){return(_PLAY_SetIVSCallBack=Module._PLAY_SetIVSCallBack=Module.asm._a).apply(null,arguments)},_PLAY_CleanScreen=Module._PLAY_CleanScreen=function(){return(_PLAY_CleanScreen=Module._PLAY_CleanScreen=Module.asm.$a).apply(null,arguments)},_PLAY_SetSecurityKey=Module._PLAY_SetSecurityKey=function(){return(_PLAY_SetSecurityKey=Module._PLAY_SetSecurityKey=Module.asm.ab).apply(null,arguments)},_PLAY_StartDataRecordEx=Module._PLAY_StartDataRecordEx=function(){return(_PLAY_StartDataRecordEx=Module._PLAY_StartDataRecordEx=Module.asm.bb).apply(null,arguments)},_PLAY_StopDataRecord=Module._PLAY_StopDataRecord=function(){return(_PLAY_StopDataRecord=Module._PLAY_StopDataRecord=Module.asm.cb).apply(null,arguments)},_PLAY_RenderPrivateData=Module._PLAY_RenderPrivateData=function(){return(_PLAY_RenderPrivateData=Module._PLAY_RenderPrivateData=Module.asm.db).apply(null,arguments)},_PLAY_OpenAudioEncode=Module._PLAY_OpenAudioEncode=function(){return(_PLAY_OpenAudioEncode=Module._PLAY_OpenAudioEncode=Module.asm.eb).apply(null,arguments)},_PLAY_PushAudioData=Module._PLAY_PushAudioData=function(){return(_PLAY_PushAudioData=Module._PLAY_PushAudioData=Module.asm.fb).apply(null,arguments)},_PLAY_CloseAudioEncode=Module._PLAY_CloseAudioEncode=function(){return(_PLAY_CloseAudioEncode=Module._PLAY_CloseAudioEncode=Module.asm.gb).apply(null,arguments)},_PLAY_StartVideoTalk=Module._PLAY_StartVideoTalk=function(){return(_PLAY_StartVideoTalk=Module._PLAY_StartVideoTalk=Module.asm.hb).apply(null,arguments)},_PLAY_StopVideoTalk=Module._PLAY_StopVideoTalk=function(){return(_PLAY_StopVideoTalk=Module._PLAY_StopVideoTalk=Module.asm.ib).apply(null,arguments)},_PLAY_InputTalkVideoData=Module._PLAY_InputTalkVideoData=function(){return(_PLAY_InputTalkVideoData=Module._PLAY_InputTalkVideoData=Module.asm.jb).apply(null,arguments)},_PLAY_ResetVideoEncoder=Module._PLAY_ResetVideoEncoder=function(){return(_PLAY_ResetVideoEncoder=Module._PLAY_ResetVideoEncoder=Module.asm.kb).apply(null,arguments)},_PLAY_SetCacheMode=Module._PLAY_SetCacheMode=function(){return(_PLAY_SetCacheMode=Module._PLAY_SetCacheMode=Module.asm.lb).apply(null,arguments)},_PLAY_SetVolume=Module._PLAY_SetVolume=function(){return(_PLAY_SetVolume=Module._PLAY_SetVolume=Module.asm.mb).apply(null,arguments)},_PLAY_SetPlaySpeed=Module._PLAY_SetPlaySpeed=function(){return(_PLAY_SetPlaySpeed=Module._PLAY_SetPlaySpeed=Module.asm.nb).apply(null,arguments)},_PLAY_ViewResolutionChanged=Module._PLAY_ViewResolutionChanged=function(){return(_PLAY_ViewResolutionChanged=Module._PLAY_ViewResolutionChanged=Module.asm.ob).apply(null,arguments)},_PLAY_GetSourceBufferRemain=Module._PLAY_GetSourceBufferRemain=function(){return(_PLAY_GetSourceBufferRemain=Module._PLAY_GetSourceBufferRemain=Module.asm.pb).apply(null,arguments)},_PLAY_ResetBuffer=Module._PLAY_ResetBuffer=function(){return(_PLAY_ResetBuffer=Module._PLAY_ResetBuffer=Module.asm.qb).apply(null,arguments)},_PLAY_OpenPlayGroup=Module._PLAY_OpenPlayGroup=function(){return(_PLAY_OpenPlayGroup=Module._PLAY_OpenPlayGroup=Module.asm.rb).apply(null,arguments)},_PLAY_AddToPlayGroup=Module._PLAY_AddToPlayGroup=function(){return(_PLAY_AddToPlayGroup=Module._PLAY_AddToPlayGroup=Module.asm.sb).apply(null,arguments)},_PLAY_DelFromPlayGroup=Module._PLAY_DelFromPlayGroup=function(){return(_PLAY_DelFromPlayGroup=Module._PLAY_DelFromPlayGroup=Module.asm.tb).apply(null,arguments)},_PLAY_PausePlayGroup=Module._PLAY_PausePlayGroup=function(){return(_PLAY_PausePlayGroup=Module._PLAY_PausePlayGroup=Module.asm.ub).apply(null,arguments)},_PLAY_ClosePlayGroup=Module._PLAY_ClosePlayGroup=function(){return(_PLAY_ClosePlayGroup=Module._PLAY_ClosePlayGroup=Module.asm.vb).apply(null,arguments)},_PLAY_SetPlayGroupSpeed=Module._PLAY_SetPlayGroupSpeed=function(){return(_PLAY_SetPlayGroupSpeed=Module._PLAY_SetPlayGroupSpeed=Module.asm.wb).apply(null,arguments)},_PLAY_PlaySound=Module._PLAY_PlaySound=function(){return(_PLAY_PlaySound=Module._PLAY_PlaySound=Module.asm.xb).apply(null,arguments)},_PLAY_StopSound=Module._PLAY_StopSound=function(){return(_PLAY_StopSound=Module._PLAY_StopSound=Module.asm.yb).apply(null,arguments)},_PLAY_SetDecodeThreadNum=Module._PLAY_SetDecodeThreadNum=function(){return(_PLAY_SetDecodeThreadNum=Module._PLAY_SetDecodeThreadNum=Module.asm.zb).apply(null,arguments)},_PLAY_SetSupportWebMSE=Module._PLAY_SetSupportWebMSE=function(){return(_PLAY_SetSupportWebMSE=Module._PLAY_SetSupportWebMSE=Module.asm.Ab).apply(null,arguments)},_PLAY_ParsePlayToken=Module._PLAY_ParsePlayToken=function(){return(_PLAY_ParsePlayToken=Module._PLAY_ParsePlayToken=Module.asm.Bb).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Cb).apply(null,arguments)},_PLAY_ParsePlayTokenEx=Module._PLAY_ParsePlayTokenEx=function(){return(_PLAY_ParsePlayTokenEx=Module._PLAY_ParsePlayTokenEx=Module.asm.Db).apply(null,arguments)},_PLAY_FreeStringPointer=Module._PLAY_FreeStringPointer=function(){return(_PLAY_FreeStringPointer=Module._PLAY_FreeStringPointer=Module.asm.Eb).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Fb).apply(null,arguments)},_PLAY_ParseDecryptKey=Module._PLAY_ParseDecryptKey=function(){return(_PLAY_ParseDecryptKey=Module._PLAY_ParseDecryptKey=Module.asm.Gb).apply(null,arguments)},_PLAY_ParseStreamInit=Module._PLAY_ParseStreamInit=function(){return(_PLAY_ParseStreamInit=Module._PLAY_ParseStreamInit=Module.asm.Hb).apply(null,arguments)},_PLAY_ParseStream=Module._PLAY_ParseStream=function(){return(_PLAY_ParseStream=Module._PLAY_ParseStream=Module.asm.Ib).apply(null,arguments)},_PLAY_StreamEncryptKey=Module._PLAY_StreamEncryptKey=function(){return(_PLAY_StreamEncryptKey=Module._PLAY_StreamEncryptKey=Module.asm.Jb).apply(null,arguments)},_PLAY_ParseStreamUint=Module._PLAY_ParseStreamUint=function(){return(_PLAY_ParseStreamUint=Module._PLAY_ParseStreamUint=Module.asm.Kb).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Mb).apply(null,arguments)},_pthread_self=Module._pthread_self=function(){return(_pthread_self=Module._pthread_self=Module.asm.Nb).apply(null,arguments)},_ntohs=Module._ntohs=function(){return(_ntohs=Module._ntohs=Module.asm.Ob).apply(null,arguments)},_htons=Module._htons=function(){return(_htons=Module._htons=Module.asm.Pb).apply(null,arguments)},_htonl=Module._htonl=function(){return(_htonl=Module._htonl=Module.asm.Qb).apply(null,arguments)},_memset=Module._memset=function(){return(_memset=Module._memset=Module.asm.Rb).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Sb).apply(null,arguments)},__get_tzname=Module.__get_tzname=function(){return(__get_tzname=Module.__get_tzname=Module.asm.Tb).apply(null,arguments)},__get_daylight=Module.__get_daylight=function(){return(__get_daylight=Module.__get_daylight=Module.asm.Ub).apply(null,arguments)},__get_timezone=Module.__get_timezone=function(){return(__get_timezone=Module.__get_timezone=Module.asm.Vb).apply(null,arguments)},___emscripten_pthread_data_constructor=Module.___emscripten_pthread_data_constructor=function(){return(___emscripten_pthread_data_constructor=Module.___emscripten_pthread_data_constructor=Module.asm.Wb).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.Xb).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Yb).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm.Zb).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm._b).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.$b).apply(null,arguments)},__emscripten_do_dispatch_to_thread=Module.__emscripten_do_dispatch_to_thread=function(){return(__emscripten_do_dispatch_to_thread=Module.__emscripten_do_dispatch_to_thread=Module.asm.ac).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.bc).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.cc).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.dc).apply(null,arguments)},__emscripten_call_on_thread=Module.__emscripten_call_on_thread=function(){return(__emscripten_call_on_thread=Module.__emscripten_call_on_thread=Module.asm.ec).apply(null,arguments)},_emscripten_proxy_main=Module._emscripten_proxy_main=function(){return(_emscripten_proxy_main=Module._emscripten_proxy_main=Module.asm.fc).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.gc).apply(null,arguments)},__emscripten_thread_init=Module.__emscripten_thread_init=function(){return(__emscripten_thread_init=Module.__emscripten_thread_init=Module.asm.hc).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.ic).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.jc).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.kc).apply(null,arguments)},_emscripten_stack_set_limits=Module._emscripten_stack_set_limits=function(){return(_emscripten_stack_set_limits=Module._emscripten_stack_set_limits=Module.asm.lc).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.mc).apply(null,arguments)},dynCall_viiiji=Module.dynCall_viiiji=function(){return(dynCall_viiiji=Module.dynCall_viiiji=Module.asm.nc).apply(null,arguments)},dynCall_viijii=Module.dynCall_viijii=function(){return(dynCall_viijii=Module.dynCall_viijii=Module.asm.oc).apply(null,arguments)},dynCall_iiiij=Module.dynCall_iiiij=function(){return(dynCall_iiiij=Module.dynCall_iiiij=Module.asm.pc).apply(null,arguments)},dynCall_iiij=Module.dynCall_iiij=function(){return(dynCall_iiij=Module.dynCall_iiij=Module.asm.qc).apply(null,arguments)},dynCall_iiji=Module.dynCall_iiji=function(){return(dynCall_iiji=Module.dynCall_iiji=Module.asm.rc).apply(null,arguments)},dynCall_viiij=Module.dynCall_viiij=function(){return(dynCall_viiij=Module.dynCall_viiij=Module.asm.sc).apply(null,arguments)},dynCall_iiiji=Module.dynCall_iiiji=function(){return(dynCall_iiiji=Module.dynCall_iiiji=Module.asm.tc).apply(null,arguments)},dynCall_jii=Module.dynCall_jii=function(){return(dynCall_jii=Module.dynCall_jii=Module.asm.uc).apply(null,arguments)},dynCall_iiijiiii=Module.dynCall_iiijiiii=function(){return(dynCall_iiijiiii=Module.dynCall_iiijiiii=Module.asm.vc).apply(null,arguments)},dynCall_viiijj=Module.dynCall_viiijj=function(){return(dynCall_viiijj=Module.dynCall_viiijj=Module.asm.wc).apply(null,arguments)},dynCall_jij=Module.dynCall_jij=function(){return(dynCall_jij=Module.dynCall_jij=Module.asm.xc).apply(null,arguments)},dynCall_ji=Module.dynCall_ji=function(){return(dynCall_ji=Module.dynCall_ji=Module.asm.yc).apply(null,arguments)},dynCall_iiiijj=Module.dynCall_iiiijj=function(){return(dynCall_iiiijj=Module.dynCall_iiiijj=Module.asm.zc).apply(null,arguments)},dynCall_jiij=Module.dynCall_jiij=function(){return(dynCall_jiij=Module.dynCall_jiij=Module.asm.Ac).apply(null,arguments)},dynCall_viiji=Module.dynCall_viiji=function(){return(dynCall_viiji=Module.dynCall_viiji=Module.asm.Bc).apply(null,arguments)},dynCall_viji=Module.dynCall_viji=function(){return(dynCall_viji=Module.dynCall_viji=Module.asm.Cc).apply(null,arguments)},dynCall_jiiii=Module.dynCall_jiiii=function(){return(dynCall_jiiii=Module.dynCall_jiiii=Module.asm.Dc).apply(null,arguments)},dynCall_vij=Module.dynCall_vij=function(){return(dynCall_vij=Module.dynCall_vij=Module.asm.Ec).apply(null,arguments)},dynCall_viij=Module.dynCall_viij=function(){return(dynCall_viij=Module.dynCall_viij=Module.asm.Fc).apply(null,arguments)},dynCall_jiji=Module.dynCall_jiji=function(){return(dynCall_jiji=Module.dynCall_jiji=Module.asm.Gc).apply(null,arguments)},dynCall_iiiiij=Module.dynCall_iiiiij=function(){return(dynCall_iiiiij=Module.dynCall_iiiiij=Module.asm.Hc).apply(null,arguments)},dynCall_iiiiijj=Module.dynCall_iiiiijj=function(){return(dynCall_iiiiijj=Module.dynCall_iiiiijj=Module.asm.Ic).apply(null,arguments)},dynCall_iiiiiijj=Module.dynCall_iiiiiijj=function(){return(dynCall_iiiiiijj=Module.dynCall_iiiiiijj=Module.asm.Jc).apply(null,arguments)},_ff_h264_cabac_tables=Module._ff_h264_cabac_tables=179301,__emscripten_allow_main_runtime_queued_calls=Module.__emscripten_allow_main_runtime_queued_calls=835832,__emscripten_main_thread_futex=Module.__emscripten_main_thread_futex=18135432;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function run(e){if(e=e||arguments_,!(runDependencies>0)){if(ENVIRONMENT_IS_PTHREAD)return initRuntime(),void postMessage({cmd:"loaded"});preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),t()}),1)):t())}function t(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()))}}function exit(e,t){if(!t||!noExitRuntime||0!==e){if(!t&&ENVIRONMENT_IS_PTHREAD)throw postMessage({cmd:"exitProcess",returnCode:e}),new ExitStatus(e);noExitRuntime||(PThread.terminateAllThreads(),EXITSTATUS=e,exitRuntime(),Module.onExit&&Module.onExit(e),ABORT=!0),quit_(e,new ExitStatus(e))}}if(Module.cwrap=cwrap,Module.UTF8ToString=UTF8ToString,Module.addFunction=addFunction,Module.PThread=PThread,Module.PThread=PThread,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus,dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)},Module.run=run,Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();ENVIRONMENT_IS_PTHREAD&&(noExitRuntime=!1,PThread.initWorker()),run(); \ No newline at end of file diff --git a/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.wasm b/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.wasm new file mode 100644 index 0000000000000000000000000000000000000000..37162df4ca9438ff894d52d7b8ae10e24d59dc6e Binary files /dev/null and b/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.wasm differ diff --git a/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.worker.js b/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.worker.js new file mode 100644 index 0000000000000000000000000000000000000000..7ed31e1bffe1052043c1e34ffbfff699835e7cb6 --- /dev/null +++ b/cn-universal-web-ui/public/imou/WasmLib/MultiThread/liblcplay.worker.js @@ -0,0 +1 @@ +var Module={};function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;function moduleLoaded(){}this.alert=threadAlert,Module.instantiateWasm=function(e,a){var t=new WebAssembly.Instance(Module.wasmModule,e);return Module.wasmModule=null,a(t),t.exports},this.onmessage=function(e){try{if("load"===e.data.cmd){if(Module.wasmModule=e.data.wasmModule,Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,"string"===typeof e.data.urlOrBlob)importScripts(e.data.urlOrBlob);else{var a=URL.createObjectURL(e.data.urlOrBlob);importScripts(a),URL.revokeObjectURL(a)}moduleLoaded()}else if("objectTransfer"===e.data.cmd)Module.PThread.receiveObjectTransfer(e.data);else if("run"===e.data.cmd){Module.__performance_now_clock_drift=performance.now()-e.data.time,Module.__emscripten_thread_init(e.data.threadInfoStruct,0,0);var t=e.data.stackBase,r=e.data.stackBase+e.data.stackSize;Module.establishStackSpace(r,t),Module._emscripten_tls_init(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.setThreadStatus(Module._pthread_self(),1);try{var d=Module.invokeEntryPoint(e.data.start_routine,e.data.arg);Module.getNoExitRuntime()||Module.PThread.threadExit(d)}catch(e){if("Canceled!"===e)Module.PThread.threadCancel();else if("unwind"!=e){if(!(e instanceof Module.ExitStatus))throw Module.PThread.threadExit(-2),e;Module.getNoExitRuntime()||Module.PThread.threadExit(e.status)}}}else"cancel"===e.data.cmd?Module._pthread_self()&&Module.PThread.threadCancel():"setimmediate"===e.data.target||("processThreadQueue"===e.data.cmd?Module._pthread_self()&&Module._emscripten_current_thread_process_queued_calls():(err("worker.js received unknown command "+e.data.cmd),err(e.data)))}catch(e){throw err("worker.js onmessage() captured an uncaught exception: "+e),e&&e.stack&&err(e.stack),e}}; \ No newline at end of file diff --git a/cn-universal-web-ui/public/imou/WasmLib/SingleThread/PlaySdkWorker.js b/cn-universal-web-ui/public/imou/WasmLib/SingleThread/PlaySdkWorker.js new file mode 100644 index 0000000000000000000000000000000000000000..95964c4706b8226ad0c8ba902a2f02854690d6b1 --- /dev/null +++ b/cn-universal-web-ui/public/imou/WasmLib/SingleThread/PlaySdkWorker.js @@ -0,0 +1 @@ +"use strict";importScripts("liblcplay.js"),addEventListener("message",receiveMessage,!1);let loadSuccess=!1,m_nPlayId=0,port=0,playback=!1,canvasWidth=0,canvasHeight=0,jsInputData=null,jsInputDataAry=null,jsInputStream=null,jsInputStreamAry=null,jsFrameInfo=null,m_iVideoFrameTimestamp=0,jsFrameBuf=null,dataView=null,videoEncodeType=0,smartEncode=0,supportH264MSE=!0,supportH265MSE=!0,preWidth=0,preHeight=0,jsBuf=null,jsBufY=null,jsBufU=null,jsBufV=null,jsFrameBodyData=null,jsYuvDataY=null,jsYuvDataU=null,jsYuvDataV=null,jsPreAudioDataLenth=0,jsI16AudioData=null,jsF32AudioData=null,jsAudioBuf=null,jsAudioData=null,frameRate=15,lastTime=0,msgDataToWorker=[],intervalId=null,playVideo=!1,dlNextTime=0,playspeed=1,pauseStatus=0,LOG_DOWMLOAD_ENALBE=!1,log_c=!1,log_js=!1,log_counter_last_clear_time=0,log_js_counter={},log_cpp_counter={};const LOGLEVEL_LOG=1,LOGLEVEL_INFO=2,LOGLEVEL_WARN=3,LOGLEVEL_ERROR=4;let streamBuf=null,streamBodyData=null,nextplayTime=0;const CACHE_MODE_OFF=0,ADAPTIVE_CACHE=1,REALTIME_FIRST=2,FLUENCY_FIRST=3,ENCODE_VIDEO_HI_H264=2,ENCODE_VIDEO_DH_H264=4,ENCODE_VIDEO_STD_H264=8,ENCODE_VIDEO_DH_H265=12,VIDEO_SMART_I=18,VIDEO_SMART_P=19,VIDEO_SMART_I_NORENDER=20,FRAME_TYPE_VIDEO=1,FRAME_TYPE_AUDIO=2,VIDEO_FRAME_SUB_TYPE_I=0,VIDEO_FRAME_SUB_TYPE_P=1,VIDEO_FRAME_SUB_TYPE_B=2;function getTimestamp(){return`[${(new Date).toISOString()}]`}function formatUTCDate(e){return`[${new Date(e).toISOString()}]`}function loggerArgsToString(...e){let t=e.map((e=>{if("object"===typeof e)try{return e instanceof Error?`Error: ${e.message}\n${e.stack}`:JSON.stringify(e,((e,t)=>t instanceof Error?`Error: ${t.message}`:t))}catch(e){return"[Unserializable Object]"}return String(e)})).join(" ");return t.length>1e3&&(t=t.slice(0,1e3),t+="(\u957f\u5ea6\u8d85\u8fc71000\u7701\u7565)"),t}function loggerLog(...e){if(log_js||LOG_DOWMLOAD_ENALBE){let t=getTimestamp()+`|PlaySdkWorker.js|${m_nPlayId}|`+loggerArgsToString(e);sendMessage(port,"PrintLogCallBack",{logLevel:1,logContent:t})}}function loggerWarn(...e){if(log_js||LOG_DOWMLOAD_ENALBE){let t=getTimestamp()+`|PlaySdkWorker.js|${m_nPlayId}|`+loggerArgsToString(e);sendMessage(port,"PrintLogCallBack",{logLevel:3,logContent:t})}}function loggerClearCounter(){}function loggerKeyLimit(e,t,...a){loggerWithKeyLimit(1,e,t,...a)}function loggerWithKeyLimit(e,t,a,...r){if(log_js||LOG_DOWMLOAD_ENALBE){const a=getTimestamp();t=`|PlaySdkWorker.js|${m_nPlayId}|`+t;const n=Date.now();loggerClearCounter(),log_js_counter[t]||(log_js_counter[t]={count:0,lastTimestamp:0});const o=log_js_counter[t];if(o.count+=1,n-o.lastTimestamp>=1e4){o.lastTimestamp=n;const l={logKey:t,logLevel:e,logContent:a+"!"+o.count+"~"+t+"!"+loggerArgsToString(r)};o.count=0,sendMessage(port,"PrintLogCallBack",l)}}}function loggerCppLimit(e,t,a){if(log_c){const r=getTimestamp();e=`|PlaySdkWorker.js|${m_nPlayId}|`+e,loggerClearCounter(),log_cpp_counter[e]||(log_cpp_counter[e]={count:0});const n=log_cpp_counter[e];if(n.count+=1,n.count<=t){sendMessage(port,"PrintLogCallBack",{logKey:e,logLevel:1,logContent:a})}if(n.count===t+1){sendMessage(port,"PrintLogCallBack",{logKey:e,logLevel:3,logContent:`${r}[\u65e5\u5fd7\u9650\u5236]\u5ffd\u7565Key"${e}"\u56e0\u4e3a\u8d85\u8fc7\u6bcf\u5206\u949f${t}\u6761`})}}}function receiveMessage(e){if(!loadSuccess)return;let t=e.data;switch(t.type){case"Init":m_nPlayId=t.option.nPlayId,playback=t.option.playback,canvasWidth=t.option.canvasWidth,canvasHeight=t.option.canvasHeight,supportH265MSE=t.option.supportH265MSE,supportH264MSE=t.option.supportH264MSE,log_c=t.option.log_c,log_js=t.option.log_js,LOG_DOWMLOAD_ENALBE=t.option.LOG_DOWMLOAD_ENALBE,loggerLog("receiveMessage type Init",m_nPlayId,port),init();break;case"InputData":inputData(t.data);break;case"Pause":loggerLog("receiveMessage type",t.type,m_nPlayId,port),pauseStatus=t.pause,pause(t.pause);break;case"Stop":loggerLog("receiveMessage type",t.type,m_nPlayId,port);let e=stop();postMessage(e);break;case"SetPlaySpeed":loggerLog("receiveMessage type",t.type,m_nPlayId,port),setPlaySpeed(t.speed);break;case"StartRecord":loggerLog("receiveMessage type",t.type,m_nPlayId,port),startRecord(t.port,t.recordType,t.nFileSize,t.strRecordName);break;case"StopRecord":loggerLog("receiveMessage type",t.type,m_nPlayId,port),stopRecord(t.port);break;case"SetSupportWebMSE":loggerLog("receiveMessage type",t.type,m_nPlayId,port),supportH265MSE=t.option.supportH265MSE,supportH264MSE=t.option.supportH264MSE,SetSupportWebMSE(supportH264MSE,supportH265MSE);break;case"SetSecurityKey":loggerLog("receiveMessage type",t.type,m_nPlayId,port),SetSecurityKey(t.szKey,t.keyLen);break;case"SetSecurityEncrytTypeKey":loggerLog("receiveMessage type",t.type,m_nPlayId,port),SetSecurityKeyByEncrytType(3,t.szKey,t.keyLen,null,0);break;default:loggerKeyLimit("receiveMessage \u672a\u77e5\u7c7b\u578b type=",5,t.type,m_nPlayId,port)}}function SetSecurityKey(e,t){let a=Module._malloc(e.length+1);Module.HEAPU8.set(e,a),Module.HEAPU8[a+e.length]=0,loggerLog("SetSecurityKey() call Module._PLAY_StreamEncryptKey() - \u5355\u7ebf\u7a0b"),Module._PLAY_StreamEncryptKey(a,t),Module._free(a)}function SetSecurityKeyByEncrytType(e,t,a,r,n){loggerLog("SetSecurityKeyByEncrytType----");const o=Module._malloc(49),l=new Uint8Array(Module.HEAPU8.buffer);let s=0;if(1==e)t.forEach(((e,t)=>{l[o+s|0]=e,s++}));else if(2==e){let e=new Uint8Array(16);if(l[o+s|0]=1,s++,0==n){for(let t=0;t>16;t++)e[t]=0;n=16,r=e}r.forEach(((e,t)=>{l[o+s|0]=e,s++})),t.forEach(((e,t)=>{l[o+s]=e,s++})),a=1+a+n,e=null}else 3==e&&t.split("").forEach(((e,t)=>{l[o+s|0]=e.charCodeAt(0),s++}));loggerLog("SetSecurityKeyByEncrytType() call Module._PLAY_SetSecurityKey() - \u5355\u7ebf\u7a0b"),Module._PLAY_SetSecurityKey(port,o,a),Module._free(o)}function SetSupportWebMSE(e,t){loggerLog("SetSupportWebMSE() ",m_nPlayId,port,e,t),Module._PLAY_SetSupportWebMSE(port,e,t)}function init(){let e=Module._malloc(1),t=new Uint8Array(Module.HEAPU8.buffer,e,1);Module._PLAY_GetFreePort(t.byteOffset),port=t[0],t=null,Module._free(e),Module._PLAY_Init(port,m_nPlayId);let a=Module._PLAY_SetStreamOpenMode(port,playback);if(a=Module._PLAY_OpenStream(port,0,0,10485760),a=Module._PLAY_SetCacheMode(port,1),a=Module._PLAY_PlaySound(port),a=Module._PLAY_SetPrintLogLevel(log_c?1:0),a=Module._PLAY_SetDecodeThreadNum(port,1),loggerLog(" init() SetSupportWebMSE ",m_nPlayId,port,supportH264MSE,supportH265MSE),a=Module._PLAY_SetSupportWebMSE(port,supportH264MSE,supportH265MSE),Module._PLAY_ViewResolutionChanged(port,canvasWidth,canvasHeight,0),Module._PLAY_ParseStreamInit(),a=Module._PLAY_Play(port,1),a){jsInputData=Module._malloc(5242880),jsInputDataAry=new Uint8Array(Module.HEAPU8.buffer,jsInputData,5242880),jsInputStream=Module._malloc(5242880),jsInputStreamAry=new Uint8Array(Module.HEAPU8.buffer,jsInputData,5242880),sendMessage(port,"InitSuccess",null)}}function pause(e){let t=Module._PLAY_Pause(port,e);loggerLog("_PLAY_Pause",m_nPlayId,port,t)}function startTimer(){clearInterval(intervalId),intervalId=setInterval((()=>{let e=!1,t=Date.now();0==nextplayTime&&(nextplayTime=t);let a=t-nextplayTime,r=msgDataToWorker.length;loggerKeyLimit("\u5faa\u73af\u6267\u884c",m_nPlayId,port,5,"diff:",a,"msgDataToWorker size:",r,"nextplayTime=",nextplayTime);let n=!0;for((1==videoEncodeType&&1==supportH264MSE||2==videoEncodeType&&1==supportH265MSE)&&!smartEncode&&(n=!pauseStatus);00&&n&&a>=-5;){let t=msgDataToWorker[0];if("video"==t.type){if(1==e&&(1==videoEncodeType&&1==supportH264MSE||2==videoEncodeType&&1==supportH265MSE)&&!smartEncode)return;0===jsInputDataAry.byteLength&&(loggerKeyLimit("ArrayBuffer is detached",5),jsInputDataAry=null,jsInputDataAry=new Uint8Array(Module.HEAPU8.buffer,jsInputData,5242880)),jsInputDataAry.set(t.data),Module._PLAY_InputData(port,jsInputDataAry.byteOffset,t.datalen),msgDataToWorker.shift(),r=msgDataToWorker.length,e=!0,nextplayTime=(1==videoEncodeType&&1==supportH264MSE||2==videoEncodeType&&1==supportH265MSE)&&!smartEncode?Date.now()+1e3/frameRate/playspeed:Date.now(),loggerKeyLimit("frameRate:",5,frameRate,"playspeed:",playspeed)}else 0===jsInputDataAry.byteLength&&(loggerKeyLimit("ArrayBuffer is detached",5),jsInputDataAry=null,jsInputDataAry=new Uint8Array(Module.HEAPU8.buffer,jsInputData,5242880)),jsInputDataAry.set(t.data),Module._PLAY_InputData(port,jsInputDataAry.byteOffset,t.datalen),msgDataToWorker.shift(),r=msgDataToWorker.length}}),10)}function stop(){loggerLog("\u505c\u6b62",m_nPlayId,port);let e=1;return Module._PLAY_UnInit(port),Module._PLAY_ResetBuffer(port,1),Module._PLAY_ResetBuffer(port,2),Module._PLAY_ResetBuffer(port,3),Module._PLAY_ResetBuffer(port,4),e=Module._PLAY_Stop(port),0==e||(e=Module._PLAY_CloseStream(port),jsInputDataAry=null,Module._free(jsInputData),jsInputStreamAry=null,Module._free(jsInputStream),jsFrameBuf=null,jsFrameInfo=null,dataView=null,jsBufY=null,jsBufU=null,jsBufV=null,jsYuvDataY=null,jsYuvDataU=null,jsYuvDataV=null,jsAudioBuf=null,jsAudioData=null,preWidth=0,preHeight=0,Module._PLAY_ParseStreamUint(),intervalId&&(clearInterval(intervalId),intervalId=null),sendMessage(port,"stopFromWorker",{})),e}function setPlaySpeed(e){Module._PLAY_SetPlaySpeed(port,e),loggerLog("\u8bbe\u7f6e\u500d\u901f",m_nPlayId,port,e),playspeed!==e&&(playspeed=e)}function inputData(e){return null===intervalId&&startTimer(),0===jsInputStreamAry.byteLength&&(loggerKeyLimit("ArrayBuffer is detached",5),jsInputStreamAry=null,jsInputStreamAry=new Uint8Array(Module.HEAPU8.buffer,jsInputStream,5242880)),jsInputStreamAry&&(jsInputStreamAry.set(e),Module._PLAY_ParseStream(jsInputStreamAry.byteOffset,e.length)),0}function cPlusParseStreamCallBack(e,t,a,r,n){loggerKeyLimit("cPlusParseStreamCallBack C++\u8f6c\u7801\u56de\u8c03",5,e,t,a,r,n),streamBuf=new ArrayBuffer(n),streamBodyData=new Uint8Array(streamBuf),streamBodyData.set(Module.HEAPU8.subarray(r,r+n));let o=null,l=null;1==e?(loggerKeyLimit("frameid video:",5,a),o="video",l=0==t?"IFrame":"PFrame"):2==e?(loggerKeyLimit("frameid audio:",5,a),o="audio"):3==e&&(loggerKeyLimit("frameid data:",5,a),o="data"),msgDataToWorker.push({type:o,subtype:l,data:streamBodyData,datalen:n,frameId:a})}function cPlusVisibleDecCallBack(e,t,a,r,n,o,l){if(m_nPlayId!==e)return void loggerWithKeyLimit(3,"cPlusVisibleDecCallBack \u5ffd\u7565C++\u5e27\u4fe1\u606f\u56de\u8c03\uff0c\u56e0\u4e3aid\u4e0d\u540c",5,m_nPlayId,e,t,a,r,n,o,l);loggerWithKeyLimit(1,"cPlusVisibleDecCallBack C++\u5e27\u4fe1\u606f\u56de\u8c03",5,m_nPlayId,t,a,r,n,o,l);let s={};jsFrameInfo||(jsFrameBuf=new ArrayBuffer(40),jsFrameInfo=new Uint8Array(jsFrameBuf),dataView=new DataView(jsFrameBuf)),jsFrameInfo.set(Module.HEAPU8.subarray(l,l+40)),s.nFrameID=dataView.getUint32(0,!0),s.nFrameType=dataView.getUint8(4),s.nFrameSubType=dataView.getUint8(5),s.nYear=dataView.getUint16(30,!0),s.nMonth=dataView.getUint8(32),s.nDay=dataView.getUint8(33),s.nHour=dataView.getUint8(34),s.nMinute=dataView.getUint8(35),s.nSecond=dataView.getUint8(36);var u={};let i="VisibleDecCallBack";if(1==s.nFrameType){if(s.nEncodeType=dataView.getUint8(6),s.nStreamType=dataView.getUint8(7),2==s.nEncodeType||4==s.nEncodeType||8==s.nEncodeType?videoEncodeType=1:12==s.nEncodeType&&(videoEncodeType=2),s.nWidth=dataView.getUint16(16,!0),s.nHeight=dataView.getUint16(18,!0),0==s.nWidth||0==s.nHeight)return;if(s.nFrameRate=dataView.getUint8(37),s.nStride=dataView.getUint16(20,!0),frameRate=s.nFrameRate,18==s.nFrameSubType||19==s.nFrameSubType||20==s.nFrameSubType?smartEncode=1:0==s.nFrameSubType&&(smartEncode=0),(1==videoEncodeType&&1==supportH264MSE||2==videoEncodeType&&1==supportH265MSE)&&!smartEncode)i="VisibleMseDecCallBack",jsBuf=new ArrayBuffer(o),jsFrameBodyData=new Uint8Array(jsBuf),jsFrameBodyData.set(Module.HEAPU8.subarray(a,a+o)),u={pBufY:jsFrameBodyData,pBufU:null,pBufV:null,nSize:o,stuFrameInfo:s};else{s.nWidth==preWidth&&s.nHeight==preHeight||(preWidth=s.nWidth,preHeight=s.nHeight,jsBufY=null,jsBufU=null,jsBufV=null,jsYuvDataY=null,jsYuvDataU=null,jsYuvDataV=null,jsBufY=new ArrayBuffer(s.nWidth*s.nHeight),jsYuvDataY=new Uint8Array(jsBufY),jsBufU=new ArrayBuffer(s.nWidth*s.nHeight/4),jsYuvDataU=new Uint8Array(jsBufU),jsBufV=new ArrayBuffer(s.nWidth*s.nHeight/4),jsYuvDataV=new Uint8Array(jsBufV));let e=0;for(e=0;e"+formatUTCDate(c)),m_iVideoFrameTimestamp=c}else if(2==s.nFrameType){i="VisibleDecCallBack",s.nSamples=dataView.getUint32(24,!0),s.nBits=dataView.getUint8(28,!0),s.nAudioChnNum=dataView.getUint8(29,!0),jsAudioBuf=new ArrayBuffer(o),jsAudioData=new Uint8Array(jsAudioBuf),jsAudioData.set(Module.HEAPU8.subarray(a,a+o)),jsI16AudioData=new Int16Array(jsAudioData.buffer,jsAudioData.byteOffset,jsAudioData.byteLength/Int16Array.BYTES_PER_ELEMENT),jsF32AudioData=new Float32Array(jsI16AudioData.length);for(let e=0;e1e3&&(o=o.slice(0,1e3)+"(\u957f\u5ea6\u8d85\u8fc71000\u7701\u7565)"),loggerCppLimit("cpp_",1e3,o)} \ No newline at end of file diff --git a/cn-universal-web-ui/public/imou/WasmLib/SingleThread/liblcplay.js b/cn-universal-web-ui/public/imou/WasmLib/SingleThread/liblcplay.js new file mode 100644 index 0000000000000000000000000000000000000000..48c1be2184d89dee5a1058ff67ae70141d1416a9 --- /dev/null +++ b/cn-universal-web-ui/public/imou/WasmLib/SingleThread/liblcplay.js @@ -0,0 +1 @@ +var key,Module="undefined"!==typeof Module?Module:{},moduleOverrides={};for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var read_,readAsync,readBinary,setWindowTitle,arguments_=[],thisProgram="./this.program",quit_=function(e,t){throw t},ENVIRONMENT_IS_WEB=!0,ENVIRONMENT_IS_WORKER=!1,scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:"undefined"!==typeof document&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=0!==scriptDirectory.indexOf("blob:")?scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):"",read_=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),readAsync=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)},setWindowTitle=function(e){document.title=e});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var STACK_ALIGN=16;function alignMemory(e,t){return t||(t=STACK_ALIGN),Math.ceil(e/t)*t}function warnOnce(e){warnOnce.shown||(warnOnce.shown={}),warnOnce.shown[e]||(warnOnce.shown[e]=1,err(e))}function convertJsFunctionToWasm(e,t){if("function"===typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},n={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},o=1;o=n);)++o;if(o-t>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,o));for(var a="";t>10,56320|1023&s)}}else a+=String.fromCharCode((31&i)<<6|l)}else a+=String.fromCharCode(i)}return a}function UTF8ToString(e,t){return e?UTF8ArrayToString(HEAPU8,e,t):""}function stringToUTF8Array(e,t,r,n){if(!(n>0))return 0;for(var o=r,a=r+n-1,i=0;i=55296&&l<=57343)l=65536+((1023&l)<<10)|1023&e.charCodeAt(++i);if(l<=127){if(r>=a)break;t[r++]=l}else if(l<=2047){if(r+1>=a)break;t[r++]=192|l>>6,t[r++]=128|63&l}else if(l<=65535){if(r+2>=a)break;t[r++]=224|l>>12,t[r++]=128|l>>6&63,t[r++]=128|63&l}else{if(r+3>=a)break;t[r++]=240|l>>18,t[r++]=128|l>>12&63,t[r++]=128|l>>6&63,t[r++]=128|63&l}}return t[r]=0,r-o}function stringToUTF8(e,t,r){return stringToUTF8Array(e,HEAPU8,t,r)}function lengthBytesUTF8(e){for(var t=0,r=0;r=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function allocateUTF8(e){var t=lengthBytesUTF8(e)+1,r=_malloc(t);return r&&stringToUTF8Array(e,HEAP8,r,t),r}function writeArrayToMemory(e,t){HEAP8.set(e,t)}function writeAsciiToMemory(e,t,r){for(var n=0;n0&&(e+=t-e%t),e}function updateGlobalBufferAndViews(e){buffer=e,Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e)}var wasmTable,INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432,__ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,Module.noFSInit||FS.init.initialized||FS.init(),TTY.init(),callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=!1,callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}__ATINIT__.push({func:function(){___wasm_call_ctors()}});var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}function abort(e){throw Module.onAbort&&Module.onAbort(e),err(e+=""),ABORT=!0,EXITSTATUS=1,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}function hasPrefix(e,t){return String.prototype.startsWith?e.startsWith(t):0===e.indexOf(t)}Module.preloadedImages={},Module.preloadedAudios={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(e){return hasPrefix(e,dataURIPrefix)}var tempDouble,tempI64,wasmBinaryFile="liblcplay.wasm";function getBinary(e){try{if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}catch(e){abort(e)}}function getBinaryPromise(){return wasmBinary||!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER||"function"!==typeof fetch?Promise.resolve().then((function(){return getBinary(wasmBinaryFile)})):fetch(wasmBinaryFile,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return e.arrayBuffer()})).catch((function(){return getBinary(wasmBinaryFile)}))}function createWasm(){var e={a:asmLibraryArg};function t(e,t){var r=e.exports;Module.asm=r,updateGlobalBufferAndViews((wasmMemory=Module.asm.ka).buffer),wasmTable=Module.asm.tb,removeRunDependency("wasm-instantiate")}function r(e){t(e.instance)}function n(t){return getBinaryPromise().then((function(t){return WebAssembly.instantiate(t,e)})).then(t,(function(e){err("failed to asynchronously prepare wasm: "+e),abort(e)}))}if(addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(e,t)}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||isDataURI(wasmBinaryFile)||"function"!==typeof fetch?n(r):fetch(wasmBinaryFile,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(r,(function(e){return err("wasm streaming compile failed: "+e),err("falling back to ArrayBuffer instantiation"),n(r)}))})),{}}function callRuntimeCallbacks(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"===typeof r?void 0===t.arg?wasmTable.get(r)():wasmTable.get(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(Module)}}function demangle(e){return e}function demangleAll(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t=demangle(e);return e===t?e:t+" ["+e+"]"}))}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+="\n"+Module.extraStackTrace()),demangleAll(e)}function ___assert_fail(e,t,r,n){abort("Assertion failed: "+UTF8ToString(e)+", at: "+[t?UTF8ToString(t):"unknown filename",r,n?UTF8ToString(n):"unknown function"])}isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile)),Module.callRuntimeCallbacks=callRuntimeCallbacks,Module.demangle=demangle,Module.demangleAll=demangleAll,Module.jsStackTrace=jsStackTrace,Module.stackTrace=stackTrace,Module.___assert_fail=___assert_fail;var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(e){return _malloc(e+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function _atexit(e,t){}function ___cxa_atexit(e,t){return _atexit(e,t)}function ExceptionInfo(e){this.excPtr=e,this.ptr=e-ExceptionInfoAttrs.SIZE,this.set_type=function(e){HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=e},this.get_type=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]},this.set_destructor=function(e){HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=e},this.get_destructor=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]},this.set_refcount=function(e){HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=e},this.set_caught=function(e){e=e?1:0,HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET|0]=e},this.get_caught=function(){return 0!=HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET|0]},this.set_rethrown=function(e){e=e?1:0,HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET|0]=e},this.get_rethrown=function(){return 0!=HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET|0]},this.init=function(e,t){this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=e+1},this.release_ref=function(){var e=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];return HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=e-1,1===e}}Module.ExceptionInfoAttrs=ExceptionInfoAttrs,Module.___cxa_allocate_exception=___cxa_allocate_exception,Module._atexit=_atexit,Module.___cxa_atexit=___cxa_atexit,Module.ExceptionInfo=ExceptionInfo;var exceptionLast=0;Module.exceptionLast=exceptionLast;var uncaughtExceptionCount=0;function ___cxa_throw(e,t,r){throw new ExceptionInfo(e).init(t,r),exceptionLast=e,uncaughtExceptionCount++,e}function _gmtime_r(e,t){var r=new Date(1e3*HEAP32[e>>2]);HEAP32[t>>2]=r.getUTCSeconds(),HEAP32[t+4>>2]=r.getUTCMinutes(),HEAP32[t+8>>2]=r.getUTCHours(),HEAP32[t+12>>2]=r.getUTCDate(),HEAP32[t+16>>2]=r.getUTCMonth(),HEAP32[t+20>>2]=r.getUTCFullYear()-1900,HEAP32[t+24>>2]=r.getUTCDay(),HEAP32[t+36>>2]=0,HEAP32[t+32>>2]=0;var n=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),o=(r.getTime()-n)/864e5|0;return HEAP32[t+28>>2]=o,_gmtime_r.GMTString||(_gmtime_r.GMTString=allocateUTF8("GMT")),HEAP32[t+40>>2]=_gmtime_r.GMTString,t}function ___gmtime_r(e,t){return _gmtime_r(e,t)}function _tzset(){if(!_tzset.called){_tzset.called=!0;var e=(new Date).getFullYear(),t=new Date(e,0,1),r=new Date(e,6,1),n=t.getTimezoneOffset(),o=r.getTimezoneOffset(),a=Math.max(n,o);HEAP32[__get_timezone()>>2]=60*a,HEAP32[__get_daylight()>>2]=Number(n!=o);var i=c(t),l=c(r),u=allocateUTF8(i),s=allocateUTF8(l);o>2]=u,HEAP32[__get_tzname()+4>>2]=s):(HEAP32[__get_tzname()>>2]=s,HEAP32[__get_tzname()+4>>2]=u)}function c(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}}function _localtime_r(e,t){_tzset();var r=new Date(1e3*HEAP32[e>>2]);HEAP32[t>>2]=r.getSeconds(),HEAP32[t+4>>2]=r.getMinutes(),HEAP32[t+8>>2]=r.getHours(),HEAP32[t+12>>2]=r.getDate(),HEAP32[t+16>>2]=r.getMonth(),HEAP32[t+20>>2]=r.getFullYear()-1900,HEAP32[t+24>>2]=r.getDay();var n=new Date(r.getFullYear(),0,1),o=(r.getTime()-n.getTime())/864e5|0;HEAP32[t+28>>2]=o,HEAP32[t+36>>2]=-60*r.getTimezoneOffset();var a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=n.getTimezoneOffset(),l=0|(a!=i&&r.getTimezoneOffset()==Math.min(i,a));HEAP32[t+32>>2]=l;var u=HEAP32[__get_tzname()+(l?4:0)>>2];return HEAP32[t+40>>2]=u,t}function ___localtime_r(e,t){return _localtime_r(e,t)}Module.uncaughtExceptionCount=uncaughtExceptionCount,Module.___cxa_throw=___cxa_throw,Module._gmtime_r=_gmtime_r,Module.___gmtime_r=___gmtime_r,Module._tzset=_tzset,Module._localtime_r=_localtime_r,Module.___localtime_r=___localtime_r;var PATH={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=PATH.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=PATH.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=PATH.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},extname:function(e){return PATH.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return PATH.normalize(e.join("/"))},join2:function(e,t){return PATH.normalize(e+"/"+t)}};function getRandomDevice(){if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}return function(){abort("randomDevice")}}Module.PATH=PATH,Module.getRandomDevice=getRandomDevice;var PATH_FS={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:FS.cwd();if("string"!==typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t="/"===n.charAt(0)}return(t?"/":"")+(e=PATH.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=PATH_FS.resolve(e).substr(1),t=PATH_FS.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),a=Math.min(n.length,o.length),i=a,l=0;l0&&(out(UTF8ArrayToString(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(err(UTF8ArrayToString(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(err(UTF8ArrayToString(e.output,0)),e.output=[])}}};function mmapAlloc(e){for(var t=alignMemory(e,16384),r=_malloc(t);e=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=FS.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,FS.isDir(e.mode)?t.size=4096:FS.isFile(e.mode)?t.size=e.usedBytes:FS.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&MEMFS.resizeFileStorage(e,t.size)},lookup:function(e,t){throw FS.genericErrors[44]},mknod:function(e,t,r,n){return MEMFS.createNode(e,t,r,n)},rename:function(e,t,r){if(FS.isDir(e.mode)){var n;try{n=FS.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new FS.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=FS.lookupNode(e,t);for(var n in r.contents)throw new FS.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var n=MEMFS.createNode(e,t,41471,0);return n.link=r,n},readlink:function(e){if(!FS.isLink(e.mode))throw new FS.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)t.set(a.subarray(o,o+i),r);else for(var l=0;l0||n+r8)throw new FS.ErrnoError(32);for(var o=PATH.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),a=FS.root,i="/",l=0;l40)throw new FS.ErrnoError(32)}}return{path:i,node:a}},getPath:function(e){for(var t;;){if(FS.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,n=0;n>>0)%FS.nameTable.length},hashAddNode:function(e){var t=FS.hashName(e.parent.id,e.name);e.name_next=FS.nameTable[t],FS.nameTable[t]=e},hashRemoveNode:function(e){var t=FS.hashName(e.parent.id,e.name);if(FS.nameTable[t]===e)FS.nameTable[t]=e.name_next;else for(var r=FS.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=FS.mayLookup(e);if(r)throw new FS.ErrnoError(r,e);for(var n=FS.hashName(e.id,t),o=FS.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===t)return o}return FS.lookup(e,t)},createNode:function(e,t,r,n){var o=new FS.FSNode(e,t,r,n);return FS.hashAddNode(o),o},destroyNode:function(e){FS.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768===(61440&e)},isDir:function(e){return 16384===(61440&e)},isLink:function(e){return 40960===(61440&e)},isChrdev:function(e){return 8192===(61440&e)},isBlkdev:function(e){return 24576===(61440&e)},isFIFO:function(e){return 4096===(61440&e)},isSocket:function(e){return 49152===(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=FS.flagModes[e];if("undefined"===typeof t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return FS.ignorePermissions||(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){var t=FS.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{FS.lookupNode(e,t);return 20}catch(e){}return FS.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var n;try{n=FS.lookupNode(e,t)}catch(e){return e.errno}var o=FS.nodePermissions(e,"wx");if(o)return o;if(r){if(!FS.isDir(n.mode))return 54;if(FS.isRoot(n)||FS.getPath(n)===FS.cwd())return 10}else if(FS.isDir(n.mode))return 31;return 0},mayOpen:function(e,t){return e?FS.isLink(e.mode)?32:FS.isDir(e.mode)&&("r"!==FS.flagsToPermissionString(t)||512&t)?31:FS.nodePermissions(e,FS.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(e,t){e=e||0,t=t||FS.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!FS.streams[r])return r;throw new FS.ErrnoError(33)},getStream:function(e){return FS.streams[e]},createStream:function(e,t,r){FS.FSStream||(FS.FSStream=function(){},FS.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!==(2097155&this.flags)}},isWrite:{get:function(){return 0!==(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new FS.FSStream;for(var o in e)n[o]=e[o];e=n;var a=FS.nextfd(t,r);return e.fd=a,FS.streams[a]=e,e},closeStream:function(e){FS.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=FS.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new FS.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){FS.devices[e]={stream_ops:t}},getDevice:function(e){return FS.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:function(e,t){"function"===typeof e&&(t=e,e=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=FS.getMounts(FS.root.mount),n=0;function o(e){return FS.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((function(t){if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:function(e,t,r){var n,o="/"===r,a=!r;if(o&&FS.root)throw new FS.ErrnoError(10);if(!o&&!a){var i=FS.lookupPath(r,{follow_mount:!1});if(r=i.path,n=i.node,FS.isMountpoint(n))throw new FS.ErrnoError(10);if(!FS.isDir(n.mode))throw new FS.ErrnoError(54)}var l={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(l);return u.mount=l,l.root=u,o?FS.root=u:n&&(n.mounted=l,n.mount&&n.mount.mounts.push(l)),u},unmount:function(e){var t=FS.lookupPath(e,{follow_mount:!1});if(!FS.isMountpoint(t.node))throw new FS.ErrnoError(28);var r=t.node,n=r.mounted,o=FS.getMounts(n);Object.keys(FS.nameTable).forEach((function(e){for(var t=FS.nameTable[e];t;){var r=t.name_next;-1!==o.indexOf(t.mount)&&FS.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(n);r.mount.mounts.splice(a,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var n=FS.lookupPath(e,{parent:!0}).node,o=PATH.basename(e);if(!o||"."===o||".."===o)throw new FS.ErrnoError(28);var a=FS.mayCreate(n,o);if(a)throw new FS.ErrnoError(a);if(!n.node_ops.mknod)throw new FS.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,FS.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,FS.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),n="",o=0;othis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,i=1048576;o||(i=n);var l=this;l.setDataGetter((function(e){var t=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),"undefined"===typeof l.chunks[e]&&(l.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):intArrayFromString(o.responseText||"",!0)}(t,o)),"undefined"===typeof l.chunks[e])throw new Error("doXHR failed!");return l.chunks[e]})),!a&&n||(i=n=1,n=this.getter(0).length,i=n,out("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!==typeof XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var l={isDevice:!1,contents:i}}else l={isDevice:!1,url:r};var u=FS.createFile(e,t,l,n,o);l.contents?u.contents=l.contents:l.url&&(u.contents=null,u.url=l.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var s={};return Object.keys(u.stream_ops).forEach((function(e){var t=u.stream_ops[e];s[e]=function(){return FS.forceLoadFile(u),t.apply(null,arguments)}})),s.read=function(e,t,r,n,o){FS.forceLoadFile(u);var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var l=0;l>2]=n.dev,HEAP32[r+4>>2]=0,HEAP32[r+8>>2]=n.ino,HEAP32[r+12>>2]=n.mode,HEAP32[r+16>>2]=n.nlink,HEAP32[r+20>>2]=n.uid,HEAP32[r+24>>2]=n.gid,HEAP32[r+28>>2]=n.rdev,HEAP32[r+32>>2]=0,tempI64=[n.size>>>0,(tempDouble=n.size,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r+40>>2]=tempI64[0],HEAP32[r+44>>2]=tempI64[1],HEAP32[r+48>>2]=4096,HEAP32[r+52>>2]=n.blocks,HEAP32[r+56>>2]=n.atime.getTime()/1e3|0,HEAP32[r+60>>2]=0,HEAP32[r+64>>2]=n.mtime.getTime()/1e3|0,HEAP32[r+68>>2]=0,HEAP32[r+72>>2]=n.ctime.getTime()/1e3|0,HEAP32[r+76>>2]=0,tempI64=[n.ino>>>0,(tempDouble=n.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r+80>>2]=tempI64[0],HEAP32[r+84>>2]=tempI64[1],0},doMsync:function(e,t,r,n,o){var a=HEAPU8.slice(e,e+r);FS.msync(t,a,o,r,n)},doMkdir:function(e,t){return"/"===(e=PATH.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),FS.mkdir(e,t,0),0},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return FS.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var n=FS.readlink(e),o=Math.min(r,lengthBytesUTF8(n)),a=HEAP8[t+o];return stringToUTF8(n,t,r+1),HEAP8[t+o]=a,o},doAccess:function(e,t){if(-8&t)return-28;var r;if(!(r=FS.lookupPath(e,{follow:!0}).node))return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&FS.nodePermissions(r,n)?-2:0},doDup:function(e,t,r){var n=FS.getStream(r);return n&&FS.close(n),FS.open(e,t,0,r,r).fd},doReadv:function(e,t,r,n){for(var o=0,a=0;a>2],l=HEAP32[t+(8*a+4)>>2],u=FS.read(e,HEAP8,i,l,n);if(u<0)return-1;if(o+=u,u>2],l=HEAP32[t+(8*a+4)>>2],u=FS.write(e,HEAP8,i,l,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return SYSCALLS.varargs+=4,HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(e){return UTF8ToString(e)},getStreamFromFD:function(e){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(8);return t},get64:function(e,t){return e}};function ___sys_access(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doAccess(e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function setErrNo(e){return HEAP32[___errno_location()>>2]=e,e}function ___sys_fcntl64(e,t,r){SYSCALLS.varargs=r;try{var n=SYSCALLS.getStreamFromFD(e);switch(t){case 0:return(o=SYSCALLS.get())<0?-28:FS.open(n.path,n.flags,0,o).fd;case 1:case 2:case 13:case 14:return 0;case 3:return n.flags;case 4:var o=SYSCALLS.get();return n.flags|=o,0;case 12:o=SYSCALLS.get();return HEAP16[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return setErrNo(28),-1}}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_fstat64(e,t){try{var r=SYSCALLS.getStreamFromFD(e);return SYSCALLS.doStat(FS.stat,r.path,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_getdents64(e,t,r){try{var n=SYSCALLS.getStreamFromFD(e);n.getdents||(n.getdents=FS.readdir(n.path));for(var o=280,a=0,i=FS.llseek(n,0,1),l=Math.floor(i/o);l>>0,(tempDouble=u,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t+a>>2]=tempI64[0],HEAP32[t+a+4>>2]=tempI64[1],tempI64=[(l+1)*o>>>0,(tempDouble=(l+1)*o,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t+a+8>>2]=tempI64[0],HEAP32[t+a+12>>2]=tempI64[1],HEAP16[t+a+16>>1]=280,HEAP8[t+a+18|0]=s,stringToUTF8(c,t+a+19,256),a+=o,l+=1}return FS.llseek(n,l*o,0),a}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_getegid32(){return 0}function ___sys_geteuid32(){return ___sys_getegid32()}function ___sys_getgid32(){return ___sys_getegid32()}function ___sys_getpid(){return 42}function ___sys_getuid32(){return ___sys_getegid32()}function ___sys_ioctl(e,t,r){SYSCALLS.varargs=r;try{var n=SYSCALLS.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=SYSCALLS.get();return HEAP32[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:o=SYSCALLS.get();return FS.ioctl(n,t,o);default:abort("bad ioctl syscall "+t)}}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_mkdir(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doMkdir(e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function syscallMmap2(e,t,r,n,o,a){var i;a<<=12;var l=!1;if(0!==(16&n)&&e%16384!==0)return-28;if(0!==(32&n)){if(!(i=_memalign(16384,t)))return-48;_memset(i,0,t),l=!0}else{var u=FS.getStream(o);if(!u)return-8;var s=FS.mmap(u,e,t,a,r,n);i=s.ptr,l=s.allocated}return SYSCALLS.mappings[i]={malloc:i,len:t,allocated:l,fd:o,prot:r,flags:n,offset:a},i}function ___sys_mmap2(e,t,r,n,o,a){try{return syscallMmap2(e,t,r,n,o,a)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function syscallMunmap(e,t){if(-1===(0|e)||0===t)return-28;var r=SYSCALLS.mappings[e];if(!r)return 0;if(t===r.len){var n=FS.getStream(r.fd);n&&(2&r.prot&&SYSCALLS.doMsync(e,n,t,r.flags,r.offset),FS.munmap(n)),SYSCALLS.mappings[e]=null,r.allocated&&_free(r.malloc)}return 0}function ___sys_munmap(e,t){try{return syscallMunmap(e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_open(e,t,r){SYSCALLS.varargs=r;try{var n=SYSCALLS.getStr(e),o=r?SYSCALLS.get():0;return FS.open(n,t,o).fd}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_rename(e,t){try{return e=SYSCALLS.getStr(e),t=SYSCALLS.getStr(t),FS.rename(e,t),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_rmdir(e){try{return e=SYSCALLS.getStr(e),FS.rmdir(e),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_stat64(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doStat(FS.stat,e,t)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_statfs64(e,t,r){try{return e=SYSCALLS.getStr(e),HEAP32[r+4>>2]=4096,HEAP32[r+40>>2]=4096,HEAP32[r+8>>2]=1e6,HEAP32[r+12>>2]=5e5,HEAP32[r+16>>2]=5e5,HEAP32[r+20>>2]=FS.nextInode,HEAP32[r+24>>2]=1e6,HEAP32[r+28>>2]=42,HEAP32[r+44>>2]=2,HEAP32[r+36>>2]=255,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___sys_unlink(e){try{return e=SYSCALLS.getStr(e),FS.unlink(e),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function _abort(){abort()}function _cPlusAudioEncodeCallBack(e,t){cPlusAudioEncodeCallBack(e,t)}function _cPlusAudioPackedCallBack(e,t){cPlusAudioPackedCallBack(e,t)}function _cPlusDataRecordCallBack(e,t,r,n){cPlusDataRecordCallBack(e,t,r,n)}function _cPlusDigitalSignCallBack(e,t,r){cPlusDigitalSignCallBack(e,t,r)}function _cPlusLogMessageCallBack(e,t,r,n,o){cPlusLogMessageCallBack(e,t,r,n,o)}function _cPlusParseStreamCallBack(e,t,r,n,o){cPlusParseStreamCallBack(e,t,r,n,o)}function _cPlusStatisticCallBack(e,t,r,n){cPlusStatisticCallBack(e,t,r,n)}function _cPlusVideoPackedCallback(e,t,r){cPlusVideoPackedCallback(e,t,r)}function _cPlusVisibleDecCallBack(e,t,r,n,o,a,i){cPlusVisibleDecCallBack(e,t,r,n,o,a,i)}function _clock(){return void 0===_clock.start&&(_clock.start=Date.now()),1e3*(Date.now()-_clock.start)|0}Module.SYSCALLS=SYSCALLS,Module.___sys_access=___sys_access,Module.setErrNo=setErrNo,Module.___sys_fcntl64=___sys_fcntl64,Module.___sys_fstat64=___sys_fstat64,Module.___sys_getdents64=___sys_getdents64,Module.___sys_getegid32=___sys_getegid32,Module.___sys_geteuid32=___sys_geteuid32,Module.___sys_getgid32=___sys_getgid32,Module.___sys_getpid=___sys_getpid,Module.___sys_getuid32=___sys_getuid32,Module.___sys_ioctl=___sys_ioctl,Module.___sys_mkdir=___sys_mkdir,Module.syscallMmap2=syscallMmap2,Module.___sys_mmap2=___sys_mmap2,Module.syscallMunmap=syscallMunmap,Module.___sys_munmap=___sys_munmap,Module.___sys_open=___sys_open,Module.___sys_rename=___sys_rename,Module.___sys_rmdir=___sys_rmdir,Module.___sys_stat64=___sys_stat64,Module.___sys_statfs64=___sys_statfs64,Module.___sys_unlink=___sys_unlink,Module._abort=_abort,Module._cPlusAudioEncodeCallBack=_cPlusAudioEncodeCallBack,Module._cPlusAudioPackedCallBack=_cPlusAudioPackedCallBack,Module._cPlusDataRecordCallBack=_cPlusDataRecordCallBack,Module._cPlusDigitalSignCallBack=_cPlusDigitalSignCallBack,Module._cPlusLogMessageCallBack=_cPlusLogMessageCallBack,Module._cPlusParseStreamCallBack=_cPlusParseStreamCallBack,Module._cPlusStatisticCallBack=_cPlusStatisticCallBack,Module._cPlusVideoPackedCallback=_cPlusVideoPackedCallback,Module._cPlusVisibleDecCallBack=_cPlusVisibleDecCallBack,Module._clock=_clock,_emscripten_get_now=function(){return performance.now()},Module._emscripten_get_now=_emscripten_get_now;var _emscripten_get_now_is_monotonic=!0;function _clock_gettime(e,t){var r;if(0===e)r=Date.now();else{if(1!==e&&4!==e||!_emscripten_get_now_is_monotonic)return setErrNo(28),-1;r=_emscripten_get_now()}return HEAP32[t>>2]=r/1e3|0,HEAP32[t+4>>2]=r%1e3*1e3*1e3|0,0}function _dlclose(e){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _dlopen(e,t){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _dlsym(e,t){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function reallyNegative(e){return e<0||0===e&&1/e===-1/0}function convertI32PairToI53(e,t){return(e>>>0)+4294967296*t}function convertU32PairToI53(e,t){return(e>>>0)+4294967296*(t>>>0)}function reSign(e,t){if(e<=0)return e;var r=t<=32?Math.abs(1<=r&&(t<=32||e>r)&&(e=-2*r+e),e}function unSign(e,t){return e>=0?e:t<=32?2*Math.abs(1<>3],n+=8):"i64"==e?(t=[HEAP32[n>>2],HEAP32[n+4>>2]],n+=8):(e="i32",t=HEAP32[n>>2],n+=4),t}for(var a,i,l,u=[];;){var s=r;if(0===(a=HEAP8[r|0]))break;if(i=HEAP8[r+1|0],37==a){var c=!1,_=!1,d=!1,f=!1,m=!1;e:for(;;){switch(i){case 43:c=!0;break;case 45:_=!0;break;case 35:d=!0;break;case 48:if(f)break e;f=!0;break;case 32:m=!0;break;default:break e}r++,i=HEAP8[r+1|0]}var p=0;if(42==i)p=o("i32"),r++,i=HEAP8[r+1|0];else for(;i>=48&&i<=57;)p=10*p+(i-48),r++,i=HEAP8[r+1|0];var S,y=!1,g=-1;if(46==i){if(g=0,y=!0,r++,42==(i=HEAP8[r+1|0]))g=o("i32"),r++;else for(;;){var F=HEAP8[r+1|0];if(F<48||F>57)break;g=10*g+(F-48),r++}i=HEAP8[r+1|0]}switch(g<0&&(g=6,y=!1),String.fromCharCode(i)){case"h":104==HEAP8[r+2|0]?(r++,S=1):S=2;break;case"l":108==HEAP8[r+2|0]?(r++,S=8):S=4;break;case"L":case"q":case"j":S=8;break;case"z":case"t":case"I":S=4;break;default:S=null}switch(S&&r++,i=HEAP8[r+1|0],String.fromCharCode(i)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var h=100==i||105==i;if(l=o("i"+8*(S=S||4)),8==S&&(l=117==i?convertU32PairToI53(l[0],l[1]):convertI32PairToI53(l[0],l[1])),S<=4)l=(h?reSign:unSign)(l&Math.pow(256,S)-1,8*S);var M=Math.abs(l),E="";if(100==i||105==i)w=reSign(l,8*S,1).toString(10);else if(117==i)w=unSign(l,8*S,1).toString(10),l=Math.abs(l);else if(111==i)w=(d?"0":"")+M.toString(8);else if(120==i||88==i){if(E=d&&0!=l?"0x":"",l<0){l=-l,w=(M-1).toString(16);for(var P=[],A=0;A=0&&(c?E="+"+E:m&&(E=" "+E)),"-"==w.charAt(0)&&(E="-"+E,w=w.substr(1));E.length+w.lengthb&&b>=-4?(i=(103==i?"f":"F").charCodeAt(0),g-=b+1):(i=(103==i?"e":"E").charCodeAt(0),g--),k=Math.min(g,20)}101==i||69==i?(w=l.toExponential(k),/[eE][-+]\d$/.test(w)&&(w=w.slice(0,-1)+"0"+w.slice(-1))):102!=i&&70!=i||(w=l.toFixed(k),0===l&&reallyNegative(l)&&(w="-"+w));var T=w.split("e");if(v&&!d)for(;T[0].length>1&&-1!=T[0].indexOf(".")&&("0"==T[0].slice(-1)||"."==T[0].slice(-1));)T[0]=T[0].slice(0,-1);else for(d&&-1==w.indexOf(".")&&(T[0]+=".");g>k++;)T[0]+="0";w=T[0]+(T.length>1?"e"+T[1]:""),69==i&&(w=w.toUpperCase()),l>=0&&(c?w="+"+w:m&&(w=" "+w))}else w=(l<0?"-":"")+"inf",f=!1;for(;w.length0;)u.push(32);_||u.push(o("i8"));break;case"n":var Y=o("i32*");HEAP32[Y>>2]=u.length;break;case"%":u.push(a);break;default:for(A=s;A=0;)a=traverseStack(a[0]);var i=t.split("\n");t="";var l=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),u=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),s=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var c in i){var _=i[c],d="",f="",m=0,p=0,S=s.exec(_);if(S&&5==S.length)d=S[1],f=S[2],m=S[3],p=S[4];else{if((S=l.exec(_))||(S=u.exec(_)),!(S&&S.length>=4)){t+=_+"\n";continue}d=S[1],f=S[2],m=S[3],p=0|S[4]}var y=!1;if(8&e){var g=emscripten_source_map.originalPositionFor({line:m,column:p});(y=g&&g.source)&&(64&e&&(g.source=g.source.substring(g.source.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=" at "+d+" ("+g.source+":"+g.line+":"+g.column+")\n")}(16&e||!y)&&(64&e&&(f=f.substring(f.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=(y?" = "+d:" at "+d)+" ("+f+":"+m+":"+p+")\n"),128&e&&a[0]&&(a[1]==d&&a[2].length>0&&(t=t.replace(/\s+$/,""),t+=" with values: "+a[1]+a[2]+"\n"),a=traverseStack(a[0]))}return t=t.replace(/\s+$/,"")}function _emscripten_log_js(e,t){24&e&&(t=t.replace(/\s+$/,""),t+=(t.length>0?"\n":"")+_emscripten_get_callstack_js(e)),1&e?4&e?console.error(t):2&e?console.warn(t):512&e?console.info(t):256&e?console.debug(t):console.log(t):6&e?err(t):out(t)}function _emscripten_log(e,t,r){_emscripten_log_js(e,UTF8ArrayToString(formatString(t,r),0))}function _emscripten_memcpy_big(e,t,r){HEAPU8.copyWithin(e,t,t+r)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(e){try{return wasmMemory.grow(e-buffer.byteLength+65535>>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(e){var t=_emscripten_get_heap_size(),r=2147483648;if(e>r)return!1;for(var n=1;n<=4;n*=2){var o=t*(1+.2/n);if(o=Math.min(o,e+100663296),emscripten_realloc_buffer(Math.min(r,alignUp(Math.max(e,o),65536))))return!0}return!1}function _emscripten_thread_sleep(e){for(var t=_emscripten_get_now();_emscripten_get_now()-t>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),HEAP32[t>>2]=n,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _exit(e){exit(e)}function _fd_close(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.close(t),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_fdstat_get(e,t){try{var r=SYSCALLS.getStreamFromFD(e),n=r.tty?2:FS.isDir(r.mode)?3:FS.isLink(r.mode)?7:4;return HEAP8[t|0]=n,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_read(e,t,r,n){try{var o=SYSCALLS.getStreamFromFD(e),a=SYSCALLS.doReadv(o,t,r);return HEAP32[n>>2]=a,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_seek(e,t,r,n,o){try{var a=SYSCALLS.getStreamFromFD(e),i=4294967296*r+(t>>>0),l=9007199254740992;return i<=-l||i>=l?-61:(FS.llseek(a,i,n),tempI64=[a.position>>>0,(tempDouble=a.position,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[o>>2]=tempI64[0],HEAP32[o+4>>2]=tempI64[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0)}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_sync(e){try{var t=SYSCALLS.getStreamFromFD(e);return t.stream_ops&&t.stream_ops.fsync?-t.stream_ops.fsync(t):0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _fd_write(e,t,r,n){try{var o=SYSCALLS.getStreamFromFD(e),a=SYSCALLS.doWritev(o,t,r);return HEAP32[n>>2]=a,0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),e.errno}}function _gettimeofday(e){var t=Date.now();return HEAP32[e>>2]=t/1e3|0,HEAP32[e+4>>2]=t%1e3*1e3|0,0}function _mktime(e){_tzset();var t=new Date(HEAP32[e+20>>2]+1900,HEAP32[e+16>>2],HEAP32[e+12>>2],HEAP32[e+8>>2],HEAP32[e+4>>2],HEAP32[e>>2],0),r=HEAP32[e+32>>2],n=t.getTimezoneOffset(),o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),l=Math.min(i,a);if(r<0)HEAP32[e+32>>2]=Number(a!=i&&l==n);else if(r>0!=(l==n)){var u=Math.max(i,a),s=r>0?l:u;t.setTime(t.getTime()+6e4*(s-n))}HEAP32[e+24>>2]=t.getDay();var c=(t.getTime()-o.getTime())/864e5|0;return HEAP32[e+28>>2]=c,HEAP32[e>>2]=t.getSeconds(),HEAP32[e+4>>2]=t.getMinutes(),HEAP32[e+8>>2]=t.getHours(),HEAP32[e+12>>2]=t.getDate(),HEAP32[e+16>>2]=t.getMonth(),t.getTime()/1e3|0}function _pthread_create(){return 6}function _pthread_join(){return 28}function _setTempRet0(e){setTempRet0(0|e)}function __isLeapYear(e){return e%4===0&&(e%100!==0||e%400===0)}function __arraySum(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}Module.ENV=ENV,Module.getExecutableName=getExecutableName,Module.getEnvStrings=getEnvStrings,Module._environ_get=_environ_get,Module._environ_sizes_get=_environ_sizes_get,Module._exit=_exit,Module._fd_close=_fd_close,Module._fd_fdstat_get=_fd_fdstat_get,Module._fd_read=_fd_read,Module._fd_seek=_fd_seek,Module._fd_sync=_fd_sync,Module._fd_write=_fd_write,Module._gettimeofday=_gettimeofday,Module._mktime=_mktime,Module._pthread_create=_pthread_create,Module._pthread_join=_pthread_join,Module._setTempRet0=_setTempRet0,Module.__isLeapYear=__isLeapYear,Module.__arraySum=__arraySum;var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];Module.__MONTH_DAYS_LEAP=__MONTH_DAYS_LEAP;var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(e,t){for(var r=new Date(e.getTime());t>0;){var n=__isLeapYear(r.getFullYear()),o=r.getMonth(),a=(n?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[o];if(!(t>a-r.getDate()))return r.setDate(r.getDate()+t),r;t-=a-r.getDate()+1,r.setDate(1),o<11?r.setMonth(o+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}function _strftime(e,t,r,n){var o=HEAP32[n+40>>2],a={tm_sec:HEAP32[n>>2],tm_min:HEAP32[n+4>>2],tm_hour:HEAP32[n+8>>2],tm_mday:HEAP32[n+12>>2],tm_mon:HEAP32[n+16>>2],tm_year:HEAP32[n+20>>2],tm_wday:HEAP32[n+24>>2],tm_yday:HEAP32[n+28>>2],tm_isdst:HEAP32[n+32>>2],tm_gmtoff:HEAP32[n+36>>2],tm_zone:o?UTF8ToString(o):""},i=UTF8ToString(r),l={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in l)i=i.replace(new RegExp(u,"g"),l[u]);var s=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function _(e,t,r){for(var n="number"===typeof e?e.toString():e||"";n.length0?1:0}var n;return 0===(n=r(e.getFullYear()-t.getFullYear()))&&0===(n=r(e.getMonth()-t.getMonth()))&&(n=r(e.getDate()-t.getDate())),n}function m(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function p(e){var t=__addDays(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=m(r),a=m(n);return f(o,t)<=0?f(a,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var S={"%a":function(e){return s[e.tm_wday].substring(0,3)},"%A":function(e){return s[e.tm_wday]},"%b":function(e){return c[e.tm_mon].substring(0,3)},"%B":function(e){return c[e.tm_mon]},"%C":function(e){return d((e.tm_year+1900)/100|0,2)},"%d":function(e){return d(e.tm_mday,2)},"%e":function(e){return _(e.tm_mday,2," ")},"%g":function(e){return p(e).toString().substring(2)},"%G":function(e){return p(e)},"%H":function(e){return d(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(e){return d(e.tm_mday+__arraySum(__isLeapYear(e.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,e.tm_mon-1),3)},"%m":function(e){return d(e.tm_mon+1,2)},"%M":function(e){return d(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return d(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=new Date(e.tm_year+1900,0,1),r=0===t.getDay()?t:__addDays(t,7-t.getDay()),n=new Date(e.tm_year+1900,e.tm_mon,e.tm_mday);if(f(r,n)<0){var o=__arraySum(__isLeapYear(n.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,n.getMonth()-1)-31,a=31-r.getDate()+o+n.getDate();return d(Math.ceil(a/7),2)}return 0===f(r,t)?"01":"00"},"%V":function(e){var t,r=new Date(e.tm_year+1900,0,4),n=new Date(e.tm_year+1901,0,4),o=m(r),a=m(n),i=__addDays(new Date(e.tm_year+1900,0,1),e.tm_yday);return f(i,o)<0?"53":f(a,i)<=0?"01":(t=o.getFullYear()=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in S)i.indexOf(u)>=0&&(i=i.replace(new RegExp(u,"g"),S[u](a)));var y=intArrayFromString(i,!1);return y.length>t?0:(writeArrayToMemory(y,e),y.length-1)}function _strftime_l(e,t,r,n){return _strftime(e,t,r,n)}function _sysconf(e){switch(e){case 30:case 75:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}function _system(e){return e?(setErrNo(6),-1):0}function _time(e){var t=Date.now()/1e3|0;return e&&(HEAP32[e>>2]=t),t}Module.__MONTH_DAYS_REGULAR=__MONTH_DAYS_REGULAR,Module.__addDays=__addDays,Module._strftime=_strftime,Module._strftime_l=_strftime_l,Module._sysconf=_sysconf,Module._system=_system,Module._time=_time;var FSNode=function(e,t,r,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=FS.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n},readMode=365,writeMode=146;function intArrayFromString(e,t,r){var n=r>0?r:lengthBytesUTF8(e)+1,o=new Array(n),a=stringToUTF8Array(e,o,0,o.length);return t&&(o.length=a),o}Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(e){e?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(e){e?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();var calledRun,asmLibraryArg={f:___assert_fail,t:___cxa_allocate_exception,s:___cxa_throw,K:___gmtime_r,J:___localtime_r,T:___sys_access,r:___sys_fcntl64,_:___sys_fstat64,Y:___sys_getdents64,W:___sys_getegid32,U:___sys_geteuid32,R:___sys_getgid32,j:___sys_getpid,S:___sys_getuid32,X:___sys_ioctl,$:___sys_mkdir,N:___sys_mmap2,P:___sys_munmap,y:___sys_open,L:___sys_rename,w:___sys_rmdir,x:___sys_stat64,Z:___sys_statfs64,M:___sys_unlink,c:_abort,fa:_cPlusAudioEncodeCallBack,ia:_cPlusAudioPackedCallBack,C:_cPlusDataRecordCallBack,q:_cPlusDigitalSignCallBack,a:_cPlusLogMessageCallBack,ha:_cPlusParseStreamCallBack,V:_cPlusStatisticCallBack,O:_cPlusVideoPackedCallback,ja:_cPlusVisibleDecCallBack,ba:_clock,m:_clock_gettime,da:_dlclose,aa:_dlopen,ea:_dlsym,b:_emscripten_log,D:_emscripten_memcpy_big,E:_emscripten_resize_heap,I:_emscripten_thread_sleep,G:_environ_get,H:_environ_sizes_get,ga:_exit,o:_fd_close,u:_fd_fdstat_get,v:_fd_read,B:_fd_seek,Q:_fd_sync,p:_fd_write,d:_gettimeofday,i:_localtime_r,n:_mktime,l:_pthread_create,k:_pthread_join,h:_setTempRet0,e:_strftime,F:_strftime_l,z:_sysconf,A:_system,g:_time,ca:_tzset},asm=createWasm(),___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.la).apply(null,arguments)},_PLAY_Init=Module._PLAY_Init=function(){return(_PLAY_Init=Module._PLAY_Init=Module.asm.ma).apply(null,arguments)},_strlen=Module._strlen=function(){return(_strlen=Module._strlen=Module.asm.na).apply(null,arguments)},_PLAY_UnInit=Module._PLAY_UnInit=function(){return(_PLAY_UnInit=Module._PLAY_UnInit=Module.asm.oa).apply(null,arguments)},_PLAY_OpenStream=Module._PLAY_OpenStream=function(){return(_PLAY_OpenStream=Module._PLAY_OpenStream=Module.asm.pa).apply(null,arguments)},_PLAY_ConvertToJpegFile=Module._PLAY_ConvertToJpegFile=function(){return(_PLAY_ConvertToJpegFile=Module._PLAY_ConvertToJpegFile=Module.asm.qa).apply(null,arguments)},_PLAY_GetFreePort=Module._PLAY_GetFreePort=function(){return(_PLAY_GetFreePort=Module._PLAY_GetFreePort=Module.asm.ra).apply(null,arguments)},_PLAY_SetStreamOpenMode=Module._PLAY_SetStreamOpenMode=function(){return(_PLAY_SetStreamOpenMode=Module._PLAY_SetStreamOpenMode=Module.asm.sa).apply(null,arguments)},_PLAY_Play=Module._PLAY_Play=function(){return(_PLAY_Play=Module._PLAY_Play=Module.asm.ta).apply(null,arguments)},_PLAY_SetInt32=Module._PLAY_SetInt32=function(){return(_PLAY_SetInt32=Module._PLAY_SetInt32=Module.asm.ua).apply(null,arguments)},_PLAY_InputData=Module._PLAY_InputData=function(){return(_PLAY_InputData=Module._PLAY_InputData=Module.asm.va).apply(null,arguments)},_PLAY_GetBufferValue=Module._PLAY_GetBufferValue=function(){return(_PLAY_GetBufferValue=Module._PLAY_GetBufferValue=Module.asm.wa).apply(null,arguments)},_PLAY_Stop=Module._PLAY_Stop=function(){return(_PLAY_Stop=Module._PLAY_Stop=Module.asm.xa).apply(null,arguments)},_PLAY_CloseStream=Module._PLAY_CloseStream=function(){return(_PLAY_CloseStream=Module._PLAY_CloseStream=Module.asm.ya).apply(null,arguments)},_PLAY_ReleasePort=Module._PLAY_ReleasePort=function(){return(_PLAY_ReleasePort=Module._PLAY_ReleasePort=Module.asm.za).apply(null,arguments)},_PLAY_Pause=Module._PLAY_Pause=function(){return(_PLAY_Pause=Module._PLAY_Pause=Module.asm.Aa).apply(null,arguments)},_PLAY_SetPrintLogLevel=Module._PLAY_SetPrintLogLevel=function(){return(_PLAY_SetPrintLogLevel=Module._PLAY_SetPrintLogLevel=Module.asm.Ba).apply(null,arguments)},_PLAY_SetDisplayRegion=Module._PLAY_SetDisplayRegion=function(){return(_PLAY_SetDisplayRegion=Module._PLAY_SetDisplayRegion=Module.asm.Ca).apply(null,arguments)},_PLAY_SetEngine=Module._PLAY_SetEngine=function(){return(_PLAY_SetEngine=Module._PLAY_SetEngine=Module.asm.Da).apply(null,arguments)},_PLAY_SetDemuxCallBack=Module._PLAY_SetDemuxCallBack=function(){return(_PLAY_SetDemuxCallBack=Module._PLAY_SetDemuxCallBack=Module.asm.Ea).apply(null,arguments)},_PLAY_SetVisibleDecodeCallBack=Module._PLAY_SetVisibleDecodeCallBack=function(){return(_PLAY_SetVisibleDecodeCallBack=Module._PLAY_SetVisibleDecodeCallBack=Module.asm.Fa).apply(null,arguments)},_PLAY_SetDecodeCallBack=Module._PLAY_SetDecodeCallBack=function(){return(_PLAY_SetDecodeCallBack=Module._PLAY_SetDecodeCallBack=Module.asm.Ga).apply(null,arguments)},_PLAY_SetIVSCallBack=Module._PLAY_SetIVSCallBack=function(){return(_PLAY_SetIVSCallBack=Module._PLAY_SetIVSCallBack=Module.asm.Ha).apply(null,arguments)},_PLAY_CleanScreen=Module._PLAY_CleanScreen=function(){return(_PLAY_CleanScreen=Module._PLAY_CleanScreen=Module.asm.Ia).apply(null,arguments)},_PLAY_SetSecurityKey=Module._PLAY_SetSecurityKey=function(){return(_PLAY_SetSecurityKey=Module._PLAY_SetSecurityKey=Module.asm.Ja).apply(null,arguments)},_PLAY_StartDataRecordEx=Module._PLAY_StartDataRecordEx=function(){return(_PLAY_StartDataRecordEx=Module._PLAY_StartDataRecordEx=Module.asm.Ka).apply(null,arguments)},_PLAY_StopDataRecord=Module._PLAY_StopDataRecord=function(){return(_PLAY_StopDataRecord=Module._PLAY_StopDataRecord=Module.asm.La).apply(null,arguments)},_PLAY_RenderPrivateData=Module._PLAY_RenderPrivateData=function(){return(_PLAY_RenderPrivateData=Module._PLAY_RenderPrivateData=Module.asm.Ma).apply(null,arguments)},_PLAY_OpenAudioEncode=Module._PLAY_OpenAudioEncode=function(){return(_PLAY_OpenAudioEncode=Module._PLAY_OpenAudioEncode=Module.asm.Na).apply(null,arguments)},_PLAY_PushAudioData=Module._PLAY_PushAudioData=function(){return(_PLAY_PushAudioData=Module._PLAY_PushAudioData=Module.asm.Oa).apply(null,arguments)},_PLAY_CloseAudioEncode=Module._PLAY_CloseAudioEncode=function(){return(_PLAY_CloseAudioEncode=Module._PLAY_CloseAudioEncode=Module.asm.Pa).apply(null,arguments)},_PLAY_StartVideoTalk=Module._PLAY_StartVideoTalk=function(){return(_PLAY_StartVideoTalk=Module._PLAY_StartVideoTalk=Module.asm.Qa).apply(null,arguments)},_PLAY_StopVideoTalk=Module._PLAY_StopVideoTalk=function(){return(_PLAY_StopVideoTalk=Module._PLAY_StopVideoTalk=Module.asm.Ra).apply(null,arguments)},_PLAY_InputTalkVideoData=Module._PLAY_InputTalkVideoData=function(){return(_PLAY_InputTalkVideoData=Module._PLAY_InputTalkVideoData=Module.asm.Sa).apply(null,arguments)},_PLAY_ResetVideoEncoder=Module._PLAY_ResetVideoEncoder=function(){return(_PLAY_ResetVideoEncoder=Module._PLAY_ResetVideoEncoder=Module.asm.Ta).apply(null,arguments)},_PLAY_SetCacheMode=Module._PLAY_SetCacheMode=function(){return(_PLAY_SetCacheMode=Module._PLAY_SetCacheMode=Module.asm.Ua).apply(null,arguments)},_PLAY_SetVolume=Module._PLAY_SetVolume=function(){return(_PLAY_SetVolume=Module._PLAY_SetVolume=Module.asm.Va).apply(null,arguments)},_PLAY_SetPlaySpeed=Module._PLAY_SetPlaySpeed=function(){return(_PLAY_SetPlaySpeed=Module._PLAY_SetPlaySpeed=Module.asm.Wa).apply(null,arguments)},_PLAY_ViewResolutionChanged=Module._PLAY_ViewResolutionChanged=function(){return(_PLAY_ViewResolutionChanged=Module._PLAY_ViewResolutionChanged=Module.asm.Xa).apply(null,arguments)},_PLAY_GetSourceBufferRemain=Module._PLAY_GetSourceBufferRemain=function(){return(_PLAY_GetSourceBufferRemain=Module._PLAY_GetSourceBufferRemain=Module.asm.Ya).apply(null,arguments)},_PLAY_ResetBuffer=Module._PLAY_ResetBuffer=function(){return(_PLAY_ResetBuffer=Module._PLAY_ResetBuffer=Module.asm.Za).apply(null,arguments)},_PLAY_OpenPlayGroup=Module._PLAY_OpenPlayGroup=function(){return(_PLAY_OpenPlayGroup=Module._PLAY_OpenPlayGroup=Module.asm._a).apply(null,arguments)},_PLAY_AddToPlayGroup=Module._PLAY_AddToPlayGroup=function(){return(_PLAY_AddToPlayGroup=Module._PLAY_AddToPlayGroup=Module.asm.$a).apply(null,arguments)},_PLAY_DelFromPlayGroup=Module._PLAY_DelFromPlayGroup=function(){return(_PLAY_DelFromPlayGroup=Module._PLAY_DelFromPlayGroup=Module.asm.ab).apply(null,arguments)},_PLAY_PausePlayGroup=Module._PLAY_PausePlayGroup=function(){return(_PLAY_PausePlayGroup=Module._PLAY_PausePlayGroup=Module.asm.bb).apply(null,arguments)},_PLAY_ClosePlayGroup=Module._PLAY_ClosePlayGroup=function(){return(_PLAY_ClosePlayGroup=Module._PLAY_ClosePlayGroup=Module.asm.cb).apply(null,arguments)},_PLAY_SetPlayGroupSpeed=Module._PLAY_SetPlayGroupSpeed=function(){return(_PLAY_SetPlayGroupSpeed=Module._PLAY_SetPlayGroupSpeed=Module.asm.db).apply(null,arguments)},_PLAY_PlaySound=Module._PLAY_PlaySound=function(){return(_PLAY_PlaySound=Module._PLAY_PlaySound=Module.asm.eb).apply(null,arguments)},_PLAY_StopSound=Module._PLAY_StopSound=function(){return(_PLAY_StopSound=Module._PLAY_StopSound=Module.asm.fb).apply(null,arguments)},_PLAY_SetDecodeThreadNum=Module._PLAY_SetDecodeThreadNum=function(){return(_PLAY_SetDecodeThreadNum=Module._PLAY_SetDecodeThreadNum=Module.asm.gb).apply(null,arguments)},_PLAY_SetSupportWebMSE=Module._PLAY_SetSupportWebMSE=function(){return(_PLAY_SetSupportWebMSE=Module._PLAY_SetSupportWebMSE=Module.asm.hb).apply(null,arguments)},_PLAY_ParsePlayToken=Module._PLAY_ParsePlayToken=function(){return(_PLAY_ParsePlayToken=Module._PLAY_ParsePlayToken=Module.asm.ib).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.jb).apply(null,arguments)},_PLAY_ParsePlayTokenEx=Module._PLAY_ParsePlayTokenEx=function(){return(_PLAY_ParsePlayTokenEx=Module._PLAY_ParsePlayTokenEx=Module.asm.kb).apply(null,arguments)},_PLAY_FreeStringPointer=Module._PLAY_FreeStringPointer=function(){return(_PLAY_FreeStringPointer=Module._PLAY_FreeStringPointer=Module.asm.lb).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.mb).apply(null,arguments)},_PLAY_ParseDecryptKey=Module._PLAY_ParseDecryptKey=function(){return(_PLAY_ParseDecryptKey=Module._PLAY_ParseDecryptKey=Module.asm.nb).apply(null,arguments)},_memset=Module._memset=function(){return(_memset=Module._memset=Module.asm.ob).apply(null,arguments)},_PLAY_ParseStreamInit=Module._PLAY_ParseStreamInit=function(){return(_PLAY_ParseStreamInit=Module._PLAY_ParseStreamInit=Module.asm.pb).apply(null,arguments)},_PLAY_ParseStream=Module._PLAY_ParseStream=function(){return(_PLAY_ParseStream=Module._PLAY_ParseStream=Module.asm.qb).apply(null,arguments)},_PLAY_StreamEncryptKey=Module._PLAY_StreamEncryptKey=function(){return(_PLAY_StreamEncryptKey=Module._PLAY_StreamEncryptKey=Module.asm.rb).apply(null,arguments)},_PLAY_ParseStreamUint=Module._PLAY_ParseStreamUint=function(){return(_PLAY_ParseStreamUint=Module._PLAY_ParseStreamUint=Module.asm.sb).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.ub).apply(null,arguments)},_ntohs=Module._ntohs=function(){return(_ntohs=Module._ntohs=Module.asm.vb).apply(null,arguments)},_htons=Module._htons=function(){return(_htons=Module._htons=Module.asm.wb).apply(null,arguments)},_htonl=Module._htonl=function(){return(_htonl=Module._htonl=Module.asm.xb).apply(null,arguments)},__get_tzname=Module.__get_tzname=function(){return(__get_tzname=Module.__get_tzname=Module.asm.yb).apply(null,arguments)},__get_daylight=Module.__get_daylight=function(){return(__get_daylight=Module.__get_daylight=Module.asm.zb).apply(null,arguments)},__get_timezone=Module.__get_timezone=function(){return(__get_timezone=Module.__get_timezone=Module.asm.Ab).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm.Bb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.Cb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.Db).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.Eb).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Fb).apply(null,arguments)},dynCall_viiiji=Module.dynCall_viiiji=function(){return(dynCall_viiiji=Module.dynCall_viiiji=Module.asm.Gb).apply(null,arguments)},dynCall_viijii=Module.dynCall_viijii=function(){return(dynCall_viijii=Module.dynCall_viijii=Module.asm.Hb).apply(null,arguments)},dynCall_iiiij=Module.dynCall_iiiij=function(){return(dynCall_iiiij=Module.dynCall_iiiij=Module.asm.Ib).apply(null,arguments)},dynCall_iiij=Module.dynCall_iiij=function(){return(dynCall_iiij=Module.dynCall_iiij=Module.asm.Jb).apply(null,arguments)},dynCall_iiji=Module.dynCall_iiji=function(){return(dynCall_iiji=Module.dynCall_iiji=Module.asm.Kb).apply(null,arguments)},dynCall_viiij=Module.dynCall_viiij=function(){return(dynCall_viiij=Module.dynCall_viiij=Module.asm.Lb).apply(null,arguments)},dynCall_iiiji=Module.dynCall_iiiji=function(){return(dynCall_iiiji=Module.dynCall_iiiji=Module.asm.Mb).apply(null,arguments)},dynCall_jii=Module.dynCall_jii=function(){return(dynCall_jii=Module.dynCall_jii=Module.asm.Nb).apply(null,arguments)},dynCall_iiijiiii=Module.dynCall_iiijiiii=function(){return(dynCall_iiijiiii=Module.dynCall_iiijiiii=Module.asm.Ob).apply(null,arguments)},dynCall_viiijj=Module.dynCall_viiijj=function(){return(dynCall_viiijj=Module.dynCall_viiijj=Module.asm.Pb).apply(null,arguments)},dynCall_jij=Module.dynCall_jij=function(){return(dynCall_jij=Module.dynCall_jij=Module.asm.Qb).apply(null,arguments)},dynCall_ji=Module.dynCall_ji=function(){return(dynCall_ji=Module.dynCall_ji=Module.asm.Rb).apply(null,arguments)},dynCall_iiiijj=Module.dynCall_iiiijj=function(){return(dynCall_iiiijj=Module.dynCall_iiiijj=Module.asm.Sb).apply(null,arguments)},dynCall_jiij=Module.dynCall_jiij=function(){return(dynCall_jiij=Module.dynCall_jiij=Module.asm.Tb).apply(null,arguments)},dynCall_viiji=Module.dynCall_viiji=function(){return(dynCall_viiji=Module.dynCall_viiji=Module.asm.Ub).apply(null,arguments)},dynCall_viji=Module.dynCall_viji=function(){return(dynCall_viji=Module.dynCall_viji=Module.asm.Vb).apply(null,arguments)},dynCall_jiiii=Module.dynCall_jiiii=function(){return(dynCall_jiiii=Module.dynCall_jiiii=Module.asm.Wb).apply(null,arguments)},dynCall_vij=Module.dynCall_vij=function(){return(dynCall_vij=Module.dynCall_vij=Module.asm.Xb).apply(null,arguments)},dynCall_viij=Module.dynCall_viij=function(){return(dynCall_viij=Module.dynCall_viij=Module.asm.Yb).apply(null,arguments)},dynCall_jiji=Module.dynCall_jiji=function(){return(dynCall_jiji=Module.dynCall_jiji=Module.asm.Zb).apply(null,arguments)},dynCall_iiiiij=Module.dynCall_iiiiij=function(){return(dynCall_iiiiij=Module.dynCall_iiiiij=Module.asm._b).apply(null,arguments)},dynCall_iiiiijj=Module.dynCall_iiiiijj=function(){return(dynCall_iiiiijj=Module.dynCall_iiiiijj=Module.asm.$b).apply(null,arguments)},dynCall_iiiiiijj=Module.dynCall_iiiiiijj=function(){return(dynCall_iiiiiijj=Module.dynCall_iiiiiijj=Module.asm.ac).apply(null,arguments)},_ff_h264_cabac_tables=Module._ff_h264_cabac_tables=179269;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function run(e){function t(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()))}e=e||arguments_,runDependencies>0||(preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),t()}),1)):t()))}function exit(e,t){t&&noExitRuntime&&0===e||(noExitRuntime||(EXITSTATUS=e,exitRuntime(),Module.onExit&&Module.onExit(e),ABORT=!0),quit_(e,new ExitStatus(e)))}if(Module.cwrap=cwrap,Module.UTF8ToString=UTF8ToString,Module.addFunction=addFunction,dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)},Module.run=run,Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();run(); \ No newline at end of file diff --git a/cn-universal-web-ui/public/imou/WasmLib/SingleThread/liblcplay.wasm b/cn-universal-web-ui/public/imou/WasmLib/SingleThread/liblcplay.wasm new file mode 100644 index 0000000000000000000000000000000000000000..21d231687433b6fdb89862856e0b345f987175a2 Binary files /dev/null and b/cn-universal-web-ui/public/imou/WasmLib/SingleThread/liblcplay.wasm differ diff --git a/cn-universal-web-ui/public/imou/imou-player.js b/cn-universal-web-ui/public/imou/imou-player.js new file mode 100644 index 0000000000000000000000000000000000000000..b1090eee1e8266c31335bffdd75f27bc48ce5a64 --- /dev/null +++ b/cn-universal-web-ui/public/imou/imou-player.js @@ -0,0 +1,351 @@ +/* +* imou-player.js +* Version: V1.2.0 +* Copyright (c) 2025-08-12T06:47:44.226Z +*/ +(function(ai,Zt){typeof exports=="object"&&typeof module!="undefined"?module.exports=Zt():typeof define=="function"&&define.amd?define(Zt):(ai=typeof globalThis!="undefined"?globalThis:ai||self,ai["imou-player"]=Zt())})(this,function(){"use strict";var h1=Object.defineProperty,p1=Object.defineProperties;var g1=Object.getOwnPropertyDescriptors;var Xh=Object.getOwnPropertySymbols;var m1=Object.prototype.hasOwnProperty,y1=Object.prototype.propertyIsEnumerable;var Zh=(ai,Zt,Ri)=>Zt in ai?h1(ai,Zt,{enumerable:!0,configurable:!0,writable:!0,value:Ri}):ai[Zt]=Ri,on=(ai,Zt)=>{for(var Ri in Zt||(Zt={}))m1.call(Zt,Ri)&&Zh(ai,Ri,Zt[Ri]);if(Xh)for(var Ri of Xh(Zt))y1.call(Zt,Ri)&&Zh(ai,Ri,Zt[Ri]);return ai},$i=(ai,Zt)=>p1(ai,g1(Zt));var Ar=(ai,Zt,Ri)=>new Promise((Us,$s)=>{var Ml=Mr=>{try{oo(Ri.next(Mr))}catch(so){$s(so)}},js=Mr=>{try{oo(Ri.throw(Mr))}catch(so){$s(so)}},oo=Mr=>Mr.done?Us(Mr.value):Promise.resolve(Mr.value).then(Ml,js);oo((Ri=Ri.apply(ai,Zt)).next())});function ai(d,i){return i.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(s){if(s!=="default"&&!(s in d)){var u=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(d,s,u.get?u:{enumerable:!0,get:function(){return t[s]}})}})}),Object.freeze(Object.defineProperty(d,Symbol.toStringTag,{value:"Module"}))}const Zt=d=>typeof d=="string",Ri=()=>{let d,i;const t=new Promise((s,u)=>{d=s,i=u});return t.resolve=d,t.reject=i,t},Us=d=>d==null?"":""+d,$s=(d,i,t)=>{d.forEach(s=>{i[s]&&(t[s]=i[s])})},Ml=/###/g,js=d=>d&&d.indexOf("###")>-1?d.replace(Ml,"."):d,oo=d=>!d||Zt(d),Mr=(d,i,t)=>{const s=Zt(i)?i.split("."):i;let u=0;for(;u{const{obj:s,k:u}=Mr(d,i,Object);if(s!==void 0||i.length===1){s[u]=t;return}let A=i[i.length-1],b=i.slice(0,i.length-1),C=Mr(d,b,Object);for(;C.obj===void 0&&b.length;)A=`${b[b.length-1]}.${A}`,b=b.slice(0,b.length-1),C=Mr(d,b,Object),(C==null?void 0:C.obj)&&typeof C.obj[`${C.k}.${A}`]!="undefined"&&(C.obj=void 0);C.obj[`${C.k}.${A}`]=t},e0=(d,i,t,s)=>{const{obj:u,k:A}=Mr(d,i,Object);u[A]=u[A]||[],u[A].push(t)},Ws=(d,i)=>{const{obj:t,k:s}=Mr(d,i);if(!!t&&!!Object.prototype.hasOwnProperty.call(t,s))return t[s]},t0=(d,i,t)=>{const s=Ws(d,t);return s!==void 0?s:Ws(i,t)},rc=(d,i,t)=>{for(const s in i)s!=="__proto__"&&s!=="constructor"&&(s in d?Zt(d[s])||d[s]instanceof String||Zt(i[s])||i[s]instanceof String?t&&(d[s]=i[s]):rc(d[s],i[s],t):d[s]=i[s]);return d},lo=d=>d.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var n0={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const i0=d=>Zt(d)?d.replace(/[&<>"'\/]/g,i=>n0[i]):d;class r0{constructor(i){this.capacity=i,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(i){const t=this.regExpMap.get(i);if(t!==void 0)return t;const s=new RegExp(i);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(i,s),this.regExpQueue.push(i),s}}const a0=[" ",",","?","!",";"],o0=new r0(20),s0=(d,i,t)=>{i=i||"",t=t||"";const s=a0.filter(b=>i.indexOf(b)<0&&t.indexOf(b)<0);if(s.length===0)return!0;const u=o0.getRegExp(`(${s.map(b=>b==="?"?"\\?":b).join("|")})`);let A=!u.test(d);if(!A){const b=d.indexOf(t);b>0&&!u.test(d.substring(0,b))&&(A=!0)}return A},Ql=function(d,i){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!d)return;if(d[i])return Object.prototype.hasOwnProperty.call(d,i)?d[i]:void 0;const s=i.split(t);let u=d;for(let A=0;A-1&&cd==null?void 0:d.replace("_","-"),l0={type:"logger",log(d){this.output("log",d)},warn(d){this.output("warn",d)},error(d){this.output("error",d)},output(d,i){var t,s;(s=(t=console==null?void 0:console[d])==null?void 0:t.apply)==null||s.call(t,console,i)}};class qs{constructor(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(i,t)}init(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=i||l0,this.options=t,this.debug=t.debug}log(){for(var i=arguments.length,t=new Array(i),s=0;s{this.observers[s]||(this.observers[s]=new Map);const u=this.observers[s].get(t)||0;this.observers[s].set(t,u+1)}),this}off(i,t){if(!!this.observers[i]){if(!t){delete this.observers[i];return}this.observers[i].delete(t)}}emit(i){for(var t=arguments.length,s=new Array(t>1?t-1:0),u=1;u{let[C,c]=b;for(let T=0;T{let[C,c]=b;for(let T=0;T1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=i||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(i){this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}removeNamespaces(i){const t=this.options.ns.indexOf(i);t>-1&&this.options.ns.splice(t,1)}getResource(i,t,s){var T,k;let u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const A=u.keySeparator!==void 0?u.keySeparator:this.options.keySeparator,b=u.ignoreJSONStructure!==void 0?u.ignoreJSONStructure:this.options.ignoreJSONStructure;let C;i.indexOf(".")>-1?C=i.split("."):(C=[i,t],s&&(Array.isArray(s)?C.push(...s):Zt(s)&&A?C.push(...s.split(A)):C.push(s)));const c=Ws(this.data,C);return!c&&!t&&!s&&i.indexOf(".")>-1&&(i=C[0],t=C[1],s=C.slice(2).join(".")),c||!b||!Zt(s)?c:Ql((k=(T=this.data)==null?void 0:T[i])==null?void 0:k[t],s,A)}addResource(i,t,s,u){let A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const b=A.keySeparator!==void 0?A.keySeparator:this.options.keySeparator;let C=[i,t];s&&(C=C.concat(b?s.split(b):s)),i.indexOf(".")>-1&&(C=i.split("."),u=t,t=C[1]),this.addNamespaces(t),so(this.data,C,u),A.silent||this.emit("added",i,t,s,u)}addResources(i,t,s){let u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const A in s)(Zt(s[A])||Array.isArray(s[A]))&&this.addResource(i,t,A,s[A],{silent:!0});u.silent||this.emit("added",i,t,s)}addResourceBundle(i,t,s,u,A){let b=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},C=[i,t];i.indexOf(".")>-1&&(C=i.split("."),u=s,s=t,t=C[1]),this.addNamespaces(t);let c=Ws(this.data,C)||{};b.skipCopy||(s=JSON.parse(JSON.stringify(s))),u?rc(c,s,A):c=on(on({},c),s),so(this.data,C,c),b.silent||this.emit("added",i,t,s)}removeResourceBundle(i,t){this.hasResourceBundle(i,t)&&delete this.data[i][t],this.removeNamespaces(t),this.emit("removed",i,t)}hasResourceBundle(i,t){return this.getResource(i,t)!==void 0}getResourceBundle(i,t){return t||(t=this.options.defaultNS),this.getResource(i,t)}getDataByLanguage(i){return this.data[i]}hasLanguageSomeTranslations(i){const t=this.getDataByLanguage(i);return!!(t&&Object.keys(t)||[]).find(u=>t[u]&&Object.keys(t[u]).length>0)}toJSON(){return this.data}}var oc={processors:{},addPostProcessor(d){this.processors[d.name]=d},handle(d,i,t,s,u){return d.forEach(A=>{var b,C;i=(C=(b=this.processors[A])==null?void 0:b.process(i,t,s,u))!=null?C:i}),i}};const sc={},lc=d=>!Zt(d)&&typeof d!="boolean"&&typeof d!="number";class Vs extends Ys{constructor(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),$s(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],i,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=la.create("translator")}changeLanguage(i){i&&(this.language=i)}exists(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(i==null)return!1;const s=this.resolve(i,t);return(s==null?void 0:s.res)!==void 0}extractFromKey(i,t){let s=t.nsSeparator!==void 0?t.nsSeparator:this.options.nsSeparator;s===void 0&&(s=":");const u=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator;let A=t.ns||this.options.defaultNS||[];const b=s&&i.indexOf(s)>-1,C=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!s0(i,s,u);if(b&&!C){const c=i.match(this.interpolator.nestingRegexp);if(c&&c.length>0)return{key:i,namespaces:Zt(A)?[A]:A};const T=i.split(s);(s!==u||s===u&&this.options.ns.indexOf(T[0])>-1)&&(A=T.shift()),i=T.join(u)}return{key:i,namespaces:Zt(A)?[A]:A}}translate(i,t,s){if(typeof t!="object"&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),typeof t=="object"&&(t=on({},t)),t||(t={}),i==null)return"";Array.isArray(i)||(i=[String(i)]);const u=t.returnDetails!==void 0?t.returnDetails:this.options.returnDetails,A=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator,{key:b,namespaces:C}=this.extractFromKey(i[i.length-1],t),c=C[C.length-1],T=t.lng||this.language,k=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((T==null?void 0:T.toLowerCase())==="cimode"){if(k){const x=t.nsSeparator||this.options.nsSeparator;return u?{res:`${c}${x}${b}`,usedKey:b,exactUsedKey:b,usedLng:T,usedNS:c,usedParams:this.getUsedParamsDetails(t)}:`${c}${x}${b}`}return u?{res:b,usedKey:b,exactUsedKey:b,usedLng:T,usedNS:c,usedParams:this.getUsedParamsDetails(t)}:b}const S=this.resolve(i,t);let E=S==null?void 0:S.res;const r=(S==null?void 0:S.usedKey)||b,D=(S==null?void 0:S.exactUsedKey)||b,f=["[object Number]","[object Function]","[object RegExp]"],y=t.joinArrays!==void 0?t.joinArrays:this.options.joinArrays,Q=!this.i18nFormat||this.i18nFormat.handleAsObject,g=t.count!==void 0&&!Zt(t.count),w=Vs.hasDefaultValue(t),M=g?this.pluralResolver.getSuffix(T,t.count,t):"",z=t.ordinal&&g?this.pluralResolver.getSuffix(T,t.count,{ordinal:!1}):"",G=g&&!t.ordinal&&t.count===0,Y=G&&t[`defaultValue${this.options.pluralSeparator}zero`]||t[`defaultValue${M}`]||t[`defaultValue${z}`]||t.defaultValue;let N=E;Q&&!E&&w&&(N=Y);const K=lc(N),p=Object.prototype.toString.apply(N);if(Q&&N&&K&&f.indexOf(p)<0&&!(Zt(y)&&Array.isArray(N))){if(!t.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const x=this.options.returnedObjectHandler?this.options.returnedObjectHandler(r,N,$i(on({},t),{ns:C})):`key '${b} (${this.language})' returned an object instead of string.`;return u?(S.res=x,S.usedParams=this.getUsedParamsDetails(t),S):x}if(A){const x=Array.isArray(N),_=x?[]:{},B=x?D:r;for(const R in N)if(Object.prototype.hasOwnProperty.call(N,R)){const X=`${B}${A}${R}`;w&&!E?_[R]=this.translate(X,$i(on({},t),{defaultValue:lc(Y)?Y[R]:void 0,joinArrays:!1,ns:C})):_[R]=this.translate(X,$i(on({},t),{joinArrays:!1,ns:C})),_[R]===X&&(_[R]=N[R])}E=_}}else if(Q&&Zt(y)&&Array.isArray(E))E=E.join(y),E&&(E=this.extendTranslation(E,i,t,s));else{let x=!1,_=!1;!this.isValidLookup(E)&&w&&(x=!0,E=Y),this.isValidLookup(E)||(_=!0,E=b);const R=(t.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&_?void 0:E,X=w&&Y!==E&&this.options.updateMissing;if(_||x||X){if(this.logger.log(X?"updateKey":"missingKey",T,c,b,X?Y:E),A){const me=this.resolve(b,$i(on({},t),{keySeparator:!1}));me&&me.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let J=[];const ne=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if(this.options.saveMissingTo==="fallback"&&ne&&ne[0])for(let me=0;me{var re;const Z=w&&q!==E?q:R;this.options.missingKeyHandler?this.options.missingKeyHandler(me,c,Ae,Z,X,t):(re=this.backendConnector)!=null&&re.saveMissing&&this.backendConnector.saveMissing(me,c,Ae,Z,X,t),this.emit("missingKey",me,c,Ae,E)};this.options.saveMissing&&(this.options.saveMissingPlurals&&g?J.forEach(me=>{const Ae=this.pluralResolver.getSuffixes(me,t);G&&t[`defaultValue${this.options.pluralSeparator}zero`]&&Ae.indexOf(`${this.options.pluralSeparator}zero`)<0&&Ae.push(`${this.options.pluralSeparator}zero`),Ae.forEach(q=>{le([me],b+q,t[`defaultValue${q}`]||Y)})}):le(J,b,Y))}E=this.extendTranslation(E,i,t,S,s),_&&E===b&&this.options.appendNamespaceToMissingKey&&(E=`${c}:${b}`),(_||x)&&this.options.parseMissingKeyHandler&&(E=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}:${b}`:b,x?E:void 0))}return u?(S.res=E,S.usedParams=this.getUsedParamsDetails(t),S):E}extendTranslation(i,t,s,u,A){var T,k;var b=this;if((T=this.i18nFormat)!=null&&T.parse)i=this.i18nFormat.parse(i,on(on({},this.options.interpolation.defaultVariables),s),s.lng||this.language||u.usedLng,u.usedNS,u.usedKey,{resolved:u});else if(!s.skipInterpolation){s.interpolation&&this.interpolator.init($i(on({},s),{interpolation:on(on({},this.options.interpolation),s.interpolation)}));const S=Zt(i)&&(((k=s==null?void 0:s.interpolation)==null?void 0:k.skipOnVariables)!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let E;if(S){const D=i.match(this.interpolator.nestingRegexp);E=D&&D.length}let r=s.replace&&!Zt(s.replace)?s.replace:s;if(this.options.interpolation.defaultVariables&&(r=on(on({},this.options.interpolation.defaultVariables),r)),i=this.interpolator.interpolate(i,r,s.lng||this.language||u.usedLng,s),S){const D=i.match(this.interpolator.nestingRegexp),f=D&&D.length;E1&&arguments[1]!==void 0?arguments[1]:{},s,u,A,b,C;return Zt(i)&&(i=[i]),i.forEach(c=>{if(this.isValidLookup(s))return;const T=this.extractFromKey(c,t),k=T.key;u=k;let S=T.namespaces;this.options.fallbackNS&&(S=S.concat(this.options.fallbackNS));const E=t.count!==void 0&&!Zt(t.count),r=E&&!t.ordinal&&t.count===0,D=t.context!==void 0&&(Zt(t.context)||typeof t.context=="number")&&t.context!=="",f=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);S.forEach(y=>{var Q,g;this.isValidLookup(s)||(C=y,!sc[`${f[0]}-${y}`]&&((Q=this.utils)==null?void 0:Q.hasLoadedNamespace)&&!((g=this.utils)!=null&&g.hasLoadedNamespace(C))&&(sc[`${f[0]}-${y}`]=!0,this.logger.warn(`key "${u}" for languages "${f.join(", ")}" won't get resolved as namespace "${C}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(w=>{var G;if(this.isValidLookup(s))return;b=w;const M=[k];if((G=this.i18nFormat)!=null&&G.addLookupKeys)this.i18nFormat.addLookupKeys(M,k,w,y,t);else{let Y;E&&(Y=this.pluralResolver.getSuffix(w,t.count,t));const N=`${this.options.pluralSeparator}zero`,K=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(E&&(M.push(k+Y),t.ordinal&&Y.indexOf(K)===0&&M.push(k+Y.replace(K,this.options.pluralSeparator)),r&&M.push(k+N)),D){const p=`${k}${this.options.contextSeparator}${t.context}`;M.push(p),E&&(M.push(p+Y),t.ordinal&&Y.indexOf(K)===0&&M.push(p+Y.replace(K,this.options.pluralSeparator)),r&&M.push(p+N))}}let z;for(;z=M.pop();)this.isValidLookup(s)||(A=z,s=this.getResource(w,y,z,t))}))})}),{res:s,usedKey:u,exactUsedKey:A,usedLng:b,usedNS:C}}isValidLookup(i){return i!==void 0&&!(!this.options.returnNull&&i===null)&&!(!this.options.returnEmptyString&&i==="")}getResource(i,t,s){var A;let u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return(A=this.i18nFormat)!=null&&A.getResource?this.i18nFormat.getResource(i,t,s,u):this.resourceStore.getResource(i,t,s,u)}getUsedParamsDetails(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],s=i.replace&&!Zt(i.replace);let u=s?i.replace:i;if(s&&typeof i.count!="undefined"&&(u.count=i.count),this.options.interpolation.defaultVariables&&(u=on(on({},this.options.interpolation.defaultVariables),u)),!s){u=on({},u);for(const A of t)delete u[A]}return u}static hasDefaultValue(i){const t="defaultValue";for(const s in i)if(Object.prototype.hasOwnProperty.call(i,s)&&t===s.substring(0,t.length)&&i[s]!==void 0)return!0;return!1}}class uc{constructor(i){this.options=i,this.supportedLngs=this.options.supportedLngs||!1,this.logger=la.create("languageUtils")}getScriptPartFromCode(i){if(i=zs(i),!i||i.indexOf("-")<0)return null;const t=i.split("-");return t.length===2||(t.pop(),t[t.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(t.join("-"))}getLanguagePartFromCode(i){if(i=zs(i),!i||i.indexOf("-")<0)return i;const t=i.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(i){if(Zt(i)&&i.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(i)[0]}catch(s){}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?i.toLowerCase():i)}return this.options.cleanCode||this.options.lowerCaseLng?i.toLowerCase():i}isSupportedCode(i){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(i=this.getLanguagePartFromCode(i)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(i)>-1}getBestMatchFromCodes(i){if(!i)return null;let t;return i.forEach(s=>{if(t)return;const u=this.formatLanguageCode(s);(!this.options.supportedLngs||this.isSupportedCode(u))&&(t=u)}),!t&&this.options.supportedLngs&&i.forEach(s=>{if(t)return;const u=this.getLanguagePartFromCode(s);if(this.isSupportedCode(u))return t=u;t=this.options.supportedLngs.find(A=>{if(A===u)return A;if(!(A.indexOf("-")<0&&u.indexOf("-")<0)&&(A.indexOf("-")>0&&u.indexOf("-")<0&&A.substring(0,A.indexOf("-"))===u||A.indexOf(u)===0&&u.length>1))return A})}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(i,t){if(!i)return[];if(typeof i=="function"&&(i=i(t)),Zt(i)&&(i=[i]),Array.isArray(i))return i;if(!t)return i.default||[];let s=i[t];return s||(s=i[this.getScriptPartFromCode(t)]),s||(s=i[this.formatLanguageCode(t)]),s||(s=i[this.getLanguagePartFromCode(t)]),s||(s=i.default),s||[]}toResolveHierarchy(i,t){const s=this.getFallbackCodes(t||this.options.fallbackLng||[],i),u=[],A=b=>{!b||(this.isSupportedCode(b)?u.push(b):this.logger.warn(`rejecting language code not found in supportedLngs: ${b}`))};return Zt(i)&&(i.indexOf("-")>-1||i.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&A(this.formatLanguageCode(i)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&A(this.getScriptPartFromCode(i)),this.options.load!=="currentOnly"&&A(this.getLanguagePartFromCode(i))):Zt(i)&&A(this.formatLanguageCode(i)),s.forEach(b=>{u.indexOf(b)<0&&A(this.formatLanguageCode(b))}),u}}const cc={zero:0,one:1,two:2,few:3,many:4,other:5},dc={select:d=>d===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class u0{constructor(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=i,this.options=t,this.logger=la.create("pluralResolver"),this.pluralRulesCache={}}addRule(i,t){this.rules[i]=t}clearCache(){this.pluralRulesCache={}}getRule(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const s=zs(i==="dev"?"en":i),u=t.ordinal?"ordinal":"cardinal",A=JSON.stringify({cleanedCode:s,type:u});if(A in this.pluralRulesCache)return this.pluralRulesCache[A];let b;try{b=new Intl.PluralRules(s,{type:u})}catch(C){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),dc;if(!i.match(/-|_/))return dc;const c=this.languageUtils.getLanguagePartFromCode(i);b=this.getRule(c,t)}return this.pluralRulesCache[A]=b,b}needsPlural(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=this.getRule(i,t);return s||(s=this.getRule("dev",t)),(s==null?void 0:s.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(i,t){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(i,s).map(u=>`${t}${u}`)}getSuffixes(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=this.getRule(i,t);return s||(s=this.getRule("dev",t)),s?s.resolvedOptions().pluralCategories.sort((u,A)=>cc[u]-cc[A]).map(u=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${u}`):[]}getSuffix(i,t){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const u=this.getRule(i,s);return u?`${this.options.prepend}${s.ordinal?`ordinal${this.options.prepend}`:""}${u.select(t)}`:(this.logger.warn(`no plural rule found for: ${i}`),this.getSuffix("dev",t,s))}}const fc=function(d,i,t){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",u=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,A=t0(d,i,t);return!A&&u&&Zt(t)&&(A=Ql(d,t,s),A===void 0&&(A=Ql(i,t,s))),A},Pl=d=>d.replace(/\$/g,"$$$$");class c0{constructor(){var t;let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=la.create("interpolator"),this.options=i,this.format=((t=i==null?void 0:i.interpolation)==null?void 0:t.format)||(s=>s),this.init(i)}init(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};i.interpolation||(i.interpolation={escapeValue:!0});const{escape:t,escapeValue:s,useRawValueToEscape:u,prefix:A,prefixEscaped:b,suffix:C,suffixEscaped:c,formatSeparator:T,unescapeSuffix:k,unescapePrefix:S,nestingPrefix:E,nestingPrefixEscaped:r,nestingSuffix:D,nestingSuffixEscaped:f,nestingOptionsSeparator:y,maxReplaces:Q,alwaysFormat:g}=i.interpolation;this.escape=t!==void 0?t:i0,this.escapeValue=s!==void 0?s:!0,this.useRawValueToEscape=u!==void 0?u:!1,this.prefix=A?lo(A):b||"{{",this.suffix=C?lo(C):c||"}}",this.formatSeparator=T||",",this.unescapePrefix=k?"":S||"-",this.unescapeSuffix=this.unescapePrefix?"":k||"",this.nestingPrefix=E?lo(E):r||lo("$t("),this.nestingSuffix=D?lo(D):f||lo(")"),this.nestingOptionsSeparator=y||",",this.maxReplaces=Q||1e3,this.alwaysFormat=g!==void 0?g:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const i=(t,s)=>(t==null?void 0:t.source)===s?(t.lastIndex=0,t):new RegExp(s,"g");this.regexp=i(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=i(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=i(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(i,t,s,u){var r;let A,b,C;const c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},T=D=>{if(D.indexOf(this.formatSeparator)<0){const g=fc(t,c,D,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(g,void 0,s,$i(on(on({},u),t),{interpolationkey:D})):g}const f=D.split(this.formatSeparator),y=f.shift().trim(),Q=f.join(this.formatSeparator).trim();return this.format(fc(t,c,y,this.options.keySeparator,this.options.ignoreJSONStructure),Q,s,$i(on(on({},u),t),{interpolationkey:y}))};this.resetRegExp();const k=(u==null?void 0:u.missingInterpolationHandler)||this.options.missingInterpolationHandler,S=((r=u==null?void 0:u.interpolation)==null?void 0:r.skipOnVariables)!==void 0?u.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:D=>Pl(D)},{regex:this.regexp,safeValue:D=>this.escapeValue?Pl(this.escape(D)):Pl(D)}].forEach(D=>{for(C=0;A=D.regex.exec(i);){const f=A[1].trim();if(b=T(f),b===void 0)if(typeof k=="function"){const Q=k(i,A,u);b=Zt(Q)?Q:""}else if(u&&Object.prototype.hasOwnProperty.call(u,f))b="";else if(S){b=A[0];continue}else this.logger.warn(`missed to pass in variable ${f} for interpolating ${i}`),b="";else!Zt(b)&&!this.useRawValueToEscape&&(b=Us(b));const y=D.safeValue(b);if(i=i.replace(A[0],y),S?(D.regex.lastIndex+=b.length,D.regex.lastIndex-=A[0].length):D.regex.lastIndex=0,C++,C>=this.maxReplaces)break}}),i}nest(i,t){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u,A,b;const C=(c,T)=>{var f;const k=this.nestingOptionsSeparator;if(c.indexOf(k)<0)return c;const S=c.split(new RegExp(`${k}[ ]*{`));let E=`{${S[1]}`;c=S[0],E=this.interpolate(E,b);const r=E.match(/'/g),D=E.match(/"/g);(((f=r==null?void 0:r.length)!=null?f:0)%2===0&&!D||D.length%2!==0)&&(E=E.replace(/'/g,'"'));try{b=JSON.parse(E),T&&(b=on(on({},T),b))}catch(y){return this.logger.warn(`failed parsing options string in nesting for key ${c}`,y),`${c}${k}${E}`}return b.defaultValue&&b.defaultValue.indexOf(this.prefix)>-1&&delete b.defaultValue,c};for(;u=this.nestingRegexp.exec(i);){let c=[];b=on({},s),b=b.replace&&!Zt(b.replace)?b.replace:b,b.applyPostProcessor=!1,delete b.defaultValue;let T=!1;if(u[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(u[1])){const k=u[1].split(this.formatSeparator).map(S=>S.trim());u[1]=k.shift(),c=k,T=!0}if(A=t(C.call(this,u[1].trim(),b),b),A&&u[0]===i&&!Zt(A))return A;Zt(A)||(A=Us(A)),A||(this.logger.warn(`missed to resolve ${u[1]} for nesting ${i}`),A=""),T&&(A=c.reduce((k,S)=>this.format(k,S,s.lng,$i(on({},s),{interpolationkey:u[1].trim()})),A.trim())),i=i.replace(u[0],A),this.regexp.lastIndex=0}return i}}const d0=d=>{let i=d.toLowerCase().trim();const t={};if(d.indexOf("(")>-1){const s=d.split("(");i=s[0].toLowerCase().trim();const u=s[1].substring(0,s[1].length-1);i==="currency"&&u.indexOf(":")<0?t.currency||(t.currency=u.trim()):i==="relativetime"&&u.indexOf(":")<0?t.range||(t.range=u.trim()):u.split(";").forEach(b=>{if(b){const[C,...c]=b.split(":"),T=c.join(":").trim().replace(/^'+|'+$/g,""),k=C.trim();t[k]||(t[k]=T),T==="false"&&(t[k]=!1),T==="true"&&(t[k]=!0),isNaN(T)||(t[k]=parseInt(T,10))}})}return{formatName:i,formatOptions:t}},uo=d=>{const i={};return(t,s,u)=>{let A=u;u&&u.interpolationkey&&u.formatParams&&u.formatParams[u.interpolationkey]&&u[u.interpolationkey]&&(A=$i(on({},A),{[u.interpolationkey]:void 0}));const b=s+JSON.stringify(A);let C=i[b];return C||(C=d(zs(s),u),i[b]=C),C(t)}};class f0{constructor(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=la.create("formatter"),this.options=i,this.formats={number:uo((t,s)=>{const u=new Intl.NumberFormat(t,on({},s));return A=>u.format(A)}),currency:uo((t,s)=>{const u=new Intl.NumberFormat(t,$i(on({},s),{style:"currency"}));return A=>u.format(A)}),datetime:uo((t,s)=>{const u=new Intl.DateTimeFormat(t,on({},s));return A=>u.format(A)}),relativetime:uo((t,s)=>{const u=new Intl.RelativeTimeFormat(t,on({},s));return A=>u.format(A,s.range||"day")}),list:uo((t,s)=>{const u=new Intl.ListFormat(t,on({},s));return A=>u.format(A)})},this.init(i)}init(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};this.formatSeparator=t.interpolation.formatSeparator||","}add(i,t){this.formats[i.toLowerCase().trim()]=t}addCached(i,t){this.formats[i.toLowerCase().trim()]=uo(t)}format(i,t,s){let u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const A=t.split(this.formatSeparator);if(A.length>1&&A[0].indexOf("(")>1&&A[0].indexOf(")")<0&&A.find(C=>C.indexOf(")")>-1)){const C=A.findIndex(c=>c.indexOf(")")>-1);A[0]=[A[0],...A.splice(1,C)].join(this.formatSeparator)}return A.reduce((C,c)=>{var S;const{formatName:T,formatOptions:k}=d0(c);if(this.formats[T]){let E=C;try{const r=((S=u==null?void 0:u.formatParams)==null?void 0:S[u.interpolationkey])||{},D=r.locale||r.lng||u.locale||u.lng||s;E=this.formats[T](C,D,on(on(on({},k),u),r))}catch(r){this.logger.warn(r)}return E}else this.logger.warn(`there was no format function for ${T}`);return C},i)}}const h0=(d,i)=>{d.pending[i]!==void 0&&(delete d.pending[i],d.pendingCount--)};class p0 extends Ys{constructor(i,t,s){var A,b;let u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=i,this.store=t,this.services=s,this.languageUtils=s.languageUtils,this.options=u,this.logger=la.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=u.maxParallelReads||10,this.readingCalls=0,this.maxRetries=u.maxRetries>=0?u.maxRetries:5,this.retryTimeout=u.retryTimeout>=1?u.retryTimeout:350,this.state={},this.queue=[],(b=(A=this.backend)==null?void 0:A.init)==null||b.call(A,s,u.backend,u)}queueLoad(i,t,s,u){const A={},b={},C={},c={};return i.forEach(T=>{let k=!0;t.forEach(S=>{const E=`${T}|${S}`;!s.reload&&this.store.hasResourceBundle(T,S)?this.state[E]=2:this.state[E]<0||(this.state[E]===1?b[E]===void 0&&(b[E]=!0):(this.state[E]=1,k=!1,b[E]===void 0&&(b[E]=!0),A[E]===void 0&&(A[E]=!0),c[S]===void 0&&(c[S]=!0)))}),k||(C[T]=!0)}),(Object.keys(A).length||Object.keys(b).length)&&this.queue.push({pending:b,pendingCount:Object.keys(b).length,loaded:{},errors:[],callback:u}),{toLoad:Object.keys(A),pending:Object.keys(b),toLoadLanguages:Object.keys(C),toLoadNamespaces:Object.keys(c)}}loaded(i,t,s){const u=i.split("|"),A=u[0],b=u[1];t&&this.emit("failedLoading",A,b,t),!t&&s&&this.store.addResourceBundle(A,b,s,void 0,void 0,{skipCopy:!0}),this.state[i]=t?-1:2,t&&s&&(this.state[i]=0);const C={};this.queue.forEach(c=>{e0(c.loaded,[A],b),h0(c,i),t&&c.errors.push(t),c.pendingCount===0&&!c.done&&(Object.keys(c.loaded).forEach(T=>{C[T]||(C[T]={});const k=c.loaded[T];k.length&&k.forEach(S=>{C[T][S]===void 0&&(C[T][S]=!0)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit("loaded",C),this.queue=this.queue.filter(c=>!c.done)}read(i,t,s){let u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,b=arguments.length>5?arguments[5]:void 0;if(!i.length)return b(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:i,ns:t,fcName:s,tried:u,wait:A,callback:b});return}this.readingCalls++;const C=(T,k)=>{if(this.readingCalls--,this.waitingReads.length>0){const S=this.waitingReads.shift();this.read(S.lng,S.ns,S.fcName,S.tried,S.wait,S.callback)}if(T&&k&&u{this.read.call(this,i,t,s,u+1,A*2,b)},A);return}b(T,k)},c=this.backend[s].bind(this.backend);if(c.length===2){try{const T=c(i,t);T&&typeof T.then=="function"?T.then(k=>C(null,k)).catch(C):C(null,T)}catch(T){C(T)}return}return c(i,t,C)}prepareLoading(i,t){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),u&&u();Zt(i)&&(i=this.languageUtils.toResolveHierarchy(i)),Zt(t)&&(t=[t]);const A=this.queueLoad(i,t,s,u);if(!A.toLoad.length)return A.pending.length||u(),null;A.toLoad.forEach(b=>{this.loadOne(b)})}load(i,t,s){this.prepareLoading(i,t,{},s)}reload(i,t,s){this.prepareLoading(i,t,{reload:!0},s)}loadOne(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const s=i.split("|"),u=s[0],A=s[1];this.read(u,A,"read",void 0,void 0,(b,C)=>{b&&this.logger.warn(`${t}loading namespace ${A} for language ${u} failed`,b),!b&&C&&this.logger.log(`${t}loaded namespace ${A} for language ${u}`,C),this.loaded(i,b,C)})}saveMissing(i,t,s,u,A){var c,T,k,S,E;let b=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},C=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(((T=(c=this.services)==null?void 0:c.utils)==null?void 0:T.hasLoadedNamespace)&&!((S=(k=this.services)==null?void 0:k.utils)!=null&&S.hasLoadedNamespace(t))){this.logger.warn(`did not save key "${s}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(s==null||s==="")){if((E=this.backend)!=null&&E.create){const r=$i(on({},b),{isUpdate:A}),D=this.backend.create.bind(this.backend);if(D.length<6)try{let f;D.length===5?f=D(i,t,s,u,r):f=D(i,t,s,u),f&&typeof f.then=="function"?f.then(y=>C(null,y)).catch(C):C(null,f)}catch(f){C(f)}else D(i,t,s,u,C,r)}!i||!i[0]||this.store.addResource(i[0],t,s,u)}}}const hc=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:d=>{let i={};if(typeof d[1]=="object"&&(i=d[1]),Zt(d[1])&&(i.defaultValue=d[1]),Zt(d[2])&&(i.tDescription=d[2]),typeof d[2]=="object"||typeof d[3]=="object"){const t=d[3]||d[2];Object.keys(t).forEach(s=>{i[s]=t[s]})}return i},interpolation:{escapeValue:!0,format:d=>d,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),pc=d=>{var i,t;return Zt(d.ns)&&(d.ns=[d.ns]),Zt(d.fallbackLng)&&(d.fallbackLng=[d.fallbackLng]),Zt(d.fallbackNS)&&(d.fallbackNS=[d.fallbackNS]),((t=(i=d.supportedLngs)==null?void 0:i.indexOf)==null?void 0:t.call(i,"cimode"))<0&&(d.supportedLngs=d.supportedLngs.concat(["cimode"])),typeof d.initImmediate=="boolean"&&(d.initAsync=d.initImmediate),d},Ks=()=>{},g0=d=>{Object.getOwnPropertyNames(Object.getPrototypeOf(d)).forEach(t=>{typeof d[t]=="function"&&(d[t]=d[t].bind(d))})};class So extends Ys{constructor(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;if(super(),this.options=pc(i),this.services={},this.logger=la,this.modules={external:[]},g0(this),t&&!this.isInitialized&&!i.isClone){if(!this.options.initAsync)return this.init(i,t),this;setTimeout(()=>{this.init(i,t)},0)}}init(){var i=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof t=="function"&&(s=t,t={}),t.defaultNS==null&&t.ns&&(Zt(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));const u=hc();this.options=on(on(on({},u),this.options),pc(t)),this.options.interpolation=on(on({},u.interpolation),this.options.interpolation),t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator);const A=k=>k?typeof k=="function"?new k:k:null;if(!this.options.isClone){this.modules.logger?la.init(A(this.modules.logger),this.options):la.init(null,this.options);let k;this.modules.formatter?k=this.modules.formatter:k=f0;const S=new uc(this.options);this.store=new ac(this.options.resources,this.options);const E=this.services;E.logger=la,E.resourceStore=this.store,E.languageUtils=S,E.pluralResolver=new u0(S,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),k&&(!this.options.interpolation.format||this.options.interpolation.format===u.interpolation.format)&&(E.formatter=A(k),E.formatter.init(E,this.options),this.options.interpolation.format=E.formatter.format.bind(E.formatter)),E.interpolator=new c0(this.options),E.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},E.backendConnector=new p0(A(this.modules.backend),E.resourceStore,E,this.options),E.backendConnector.on("*",function(r){for(var D=arguments.length,f=new Array(D>1?D-1:0),y=1;y1?D-1:0),y=1;y{r.init&&r.init(this)})}if(this.format=this.options.interpolation.format,s||(s=Ks),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const k=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);k.length>0&&k[0]!=="dev"&&(this.options.lng=k[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(k=>{this[k]=function(){return i.store[k](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(k=>{this[k]=function(){return i.store[k](...arguments),i}});const c=Ri(),T=()=>{const k=(S,E)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),c.resolve(E),s(S,E)};if(this.languages&&!this.isInitialized)return k(null,this.t.bind(this));this.changeLanguage(this.options.lng,k)};return this.options.resources||!this.options.initAsync?T():setTimeout(T,0),c}loadResources(i){var A,b;let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ks;const u=Zt(i)?i:this.language;if(typeof i=="function"&&(s=i),!this.options.resources||this.options.partialBundledLanguages){if((u==null?void 0:u.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return s();const C=[],c=T=>{if(!T||T==="cimode")return;this.services.languageUtils.toResolveHierarchy(T).forEach(S=>{S!=="cimode"&&C.indexOf(S)<0&&C.push(S)})};u?c(u):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(k=>c(k)),(b=(A=this.options.preload)==null?void 0:A.forEach)==null||b.call(A,T=>c(T)),this.services.backendConnector.load(C,this.options.ns,T=>{!T&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),s(T)})}else s(null)}reloadResources(i,t,s){const u=Ri();return typeof i=="function"&&(s=i,i=void 0),typeof t=="function"&&(s=t,t=void 0),i||(i=this.languages),t||(t=this.options.ns),s||(s=Ks),this.services.backendConnector.reload(i,t,A=>{u.resolve(),s(A)}),u}use(i){if(!i)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!i.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return i.type==="backend"&&(this.modules.backend=i),(i.type==="logger"||i.log&&i.warn&&i.error)&&(this.modules.logger=i),i.type==="languageDetector"&&(this.modules.languageDetector=i),i.type==="i18nFormat"&&(this.modules.i18nFormat=i),i.type==="postProcessor"&&oc.addPostProcessor(i),i.type==="formatter"&&(this.modules.formatter=i),i.type==="3rdParty"&&this.modules.external.push(i),this}setResolvedLanguage(i){if(!(!i||!this.languages)&&!(["cimode","dev"].indexOf(i)>-1))for(let t=0;t-1)&&this.store.hasLanguageSomeTranslations(s)){this.resolvedLanguage=s;break}}}changeLanguage(i,t){var s=this;this.isLanguageChangingTo=i;const u=Ri();this.emit("languageChanging",i);const A=c=>{this.language=c,this.languages=this.services.languageUtils.toResolveHierarchy(c),this.resolvedLanguage=void 0,this.setResolvedLanguage(c)},b=(c,T)=>{T?(A(T),this.translator.changeLanguage(T),this.isLanguageChangingTo=void 0,this.emit("languageChanged",T),this.logger.log("languageChanged",T)):this.isLanguageChangingTo=void 0,u.resolve(function(){return s.t(...arguments)}),t&&t(c,function(){return s.t(...arguments)})},C=c=>{var k,S;!i&&!c&&this.services.languageDetector&&(c=[]);const T=Zt(c)?c:this.services.languageUtils.getBestMatchFromCodes(c);T&&(this.language||A(T),this.translator.language||this.translator.changeLanguage(T),(S=(k=this.services.languageDetector)==null?void 0:k.cacheUserLanguage)==null||S.call(k,T)),this.loadResources(T,E=>{b(E,T)})};return!i&&this.services.languageDetector&&!this.services.languageDetector.async?C(this.services.languageDetector.detect()):!i&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(C):this.services.languageDetector.detect(C):C(i),u}getFixedT(i,t,s){var u=this;const A=function(b,C){let c;if(typeof C!="object"){for(var T=arguments.length,k=new Array(T>2?T-2:0),S=2;S`${c.keyPrefix}${E}${D}`):r=c.keyPrefix?`${c.keyPrefix}${E}${b}`:b,u.t(r,c)};return Zt(i)?A.lng=i:A.lngs=i,A.ns=t,A.keyPrefix=s,A}t(){var u;for(var i=arguments.length,t=new Array(i),s=0;s1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const s=t.lng||this.resolvedLanguage||this.languages[0],u=this.options?this.options.fallbackLng:!1,A=this.languages[this.languages.length-1];if(s.toLowerCase()==="cimode")return!0;const b=(C,c)=>{const T=this.services.backendConnector.state[`${C}|${c}`];return T===-1||T===0||T===2};if(t.precheck){const C=t.precheck(this,b);if(C!==void 0)return C}return!!(this.hasResourceBundle(s,i)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||b(s,i)&&(!u||b(A,i)))}loadNamespaces(i,t){const s=Ri();return this.options.ns?(Zt(i)&&(i=[i]),i.forEach(u=>{this.options.ns.indexOf(u)<0&&this.options.ns.push(u)}),this.loadResources(u=>{s.resolve(),t&&t(u)}),s):(t&&t(),Promise.resolve())}loadLanguages(i,t){const s=Ri();Zt(i)&&(i=[i]);const u=this.options.preload||[],A=i.filter(b=>u.indexOf(b)<0&&this.services.languageUtils.isSupportedCode(b));return A.length?(this.options.preload=u.concat(A),this.loadResources(b=>{s.resolve(),t&&t(b)}),s):(t&&t(),Promise.resolve())}dir(i){var u,A;if(i||(i=this.resolvedLanguage||(((u=this.languages)==null?void 0:u.length)>0?this.languages[0]:this.language)),!i)return"rtl";const t=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],s=((A=this.services)==null?void 0:A.languageUtils)||new uc(hc());return t.indexOf(s.getLanguagePartFromCode(i))>-1||i.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new So(i,t)}cloneInstance(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ks;const s=i.forkResourceStore;s&&delete i.forkResourceStore;const u=$i(on(on({},this.options),i),{isClone:!0}),A=new So(u);if((i.debug!==void 0||i.prefix!==void 0)&&(A.logger=A.logger.clone(i)),["store","services","language"].forEach(C=>{A[C]=this[C]}),A.services=on({},this.services),A.services.utils={hasLoadedNamespace:A.hasLoadedNamespace.bind(A)},s){const C=Object.keys(this.store.data).reduce((c,T)=>(c[T]=on({},this.store.data[T]),Object.keys(c[T]).reduce((k,S)=>(k[S]=on({},c[T][S]),k),{})),{});A.store=new ac(C,u),A.services.resourceStore=A.store}return A.translator=new Vs(A.services,u),A.translator.on("*",function(C){for(var c=arguments.length,T=new Array(c>1?c-1:0),k=1;k!!window.ActiveXObject||"ActiveXObject"in window,Gt.isMobile=()=>navigator?/(iPhone|iPod|Android|ios|SymbianOS)/i.test(navigator.userAgent):!1,Gt.setAttr=(d,i,t)=>{d&&d.setAttribute(i,t)},Gt.$=d=>document.querySelector(d),Gt.appendDom=(d,i)=>{const s=new DOMParser().parseFromString(i,"text/html");d.appendChild(s.querySelector("body").children[0])},Gt.domParser=d=>new DOMParser().parseFromString(d,"text/html").querySelector("body").children[0],Gt.asyncLoadScripts=d=>new Promise((i,t)=>{if(Gt.$(`script[src="${d}"]`))i();else{const s=document.createElement("script");s.setAttribute("src",d),s.onload=()=>i(),s.onerror=()=>t(),document.getElementsByTagName("head")[0].appendChild(s)}}),Gt.isFullScreen=()=>{const d=document.fullscreenEnabled||window.fullScreen||document.webkitIsFullScreen||document.msFullScreenEnabled;return Boolean(d)},Gt.isRecord=d=>/.m3u8/.test(d),Gt.setStyle=(d,i)=>{typeof i=="object"&&Object.keys(i).forEach(t=>{d.style[t]=i[t]})},Gt.addClass=(d,i)=>{const t=document.querySelector(d),s=t.getAttribute("class");Gt.setAttr(t,"class",`${s||""} ${i}`)},Gt.setValue=d=>typeof Number(d)!="number"?d:d<10?`0${d}`:d,Gt.getRecordTimeRange=()=>{const d=new Date,i=d.getFullYear(),t=Gt.setValue(d.getMonth()+1),s=Gt.setValue(d.getDate());Gt.setValue(d.getHours()),Gt.setValue(d.getMinutes()),Gt.setValue(d.getSeconds());const u=`${i}-${t}-${s} 00:00:00`,A=`${i}-${t}-${s} 23:59:59`;return{beginTime:u,endTime:A}},Gt.getFormatTime=d=>{const i=new Date(d),t=i.getFullYear(),s=Gt.setValue(i.getMonth()+1),u=Gt.setValue(i.getDate()),A=Gt.setValue(i.getHours()),b=Gt.setValue(i.getMinutes()),C=Gt.setValue(i.getSeconds());return`${t}-${s}-${u} ${A}:${b}:${C}`},Gt.getBeginInitFormatTime=d=>{const i=new Date(d),t=i.getFullYear(),s=Gt.setValue(i.getMonth()+1),u=Gt.setValue(i.getDate());return Gt.setValue(i.getHours()),Gt.setValue(i.getMinutes()),Gt.setValue(i.getSeconds()),`${t}-${s}-${u} 00:00:00`},Gt.getEndInitFormatTime=d=>{const i=new Date(d),t=i.getFullYear(),s=Gt.setValue(i.getMonth()+1),u=Gt.setValue(i.getDate());return Gt.setValue(i.getHours()),Gt.setValue(i.getMinutes()),Gt.setValue(i.getSeconds()),`${t}-${s}-${u} 23:59:59`},Gt.emptyDom=d=>{for(let i=0,{length:t}=d.children;iObject.keys(d).reduce((i,t,s)=>`${i}${s===0?"?":"&"}${t}=${d[t]}`,""),Gt.logsFunction=()=>Gt.isIE()?{info(){},error(){},log(){}}:console,Gt.getRandomString=(d=32)=>{const i=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];let t="";for(let s=0;sAr(this,[...s],function*(d={checkMicrophone:!0,checkCamera:!0},i,t){const{checkMicrophone:u=!0,checkCamera:A=!0}=d;try{if(!navigator.mediaDevices||!navigator.mediaDevices.enumerateDevices){console.error(vt.t("microphoneError")),t();return}const b=yield navigator.mediaDevices.enumerateDevices(),C=b.some(T=>T.kind==="audioinput"),c=b.some(T=>T.kind==="videoinput");if(console.log("navigator.mediaDevices:",b,C,c),u&&!C){console.error(vt.t("microphoneError")),t();return}if(A&&!c){console.error(vt.t("cameraError")),t();return}if(u&&C)try{(yield navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(k=>k.stop())}catch(T){console.log("checkMicrophone Error:",T),console.error(vt.t("microphoneError")),t();return}if(A&&c)try{const T=yield navigator.mediaDevices.getUserMedia({video:!0});T&&T.getTracks().forEach(k=>k.stop())}catch(T){console.log("checkCamera Error:",T),console.error(vt.t("cameraError")),t();return}i()}catch(b){console.log("error",b),console.error(vt.t("mediaDevicesError")),t()}}),Gt.hexToRGBA=(d,i=1)=>{d.charAt(0)!=="#"&&(d="#"+d),d=d.replace("#","");let t,s,u;if(d.length===3)t=parseInt(d.charAt(0)+d.charAt(0),16),s=parseInt(d.charAt(1)+d.charAt(1),16),u=parseInt(d.charAt(2)+d.charAt(2),16);else if(d.length===6)t=parseInt(d.substring(0,2),16),s=parseInt(d.substring(2,4),16),u=parseInt(d.substring(4,6),16);else throw new Error("Invalid hex color");return`rgba(${t}, ${s}, ${u}, ${i})`},Gt.detectHostEnvironment=()=>{const d=navigator.userAgent.toLowerCase(),i=window.__wxjs_environment==="miniprogram"||d.includes("micromessenger")&&d.includes("miniprogram"),t=d.includes("alipay")&&d.includes("miniprogram"),s=d.includes("swan"),u=d.includes("toutiaomicroapp")||d.includes("ttmicroapp");return{isMiniProgramWebView:i||t||s||u,platform:i?"wechat":t?"alipay":s?"baidu":u?"toutiao":"browser"}},Gt.isAndroidWeChatBrowser=()=>{const d=navigator.userAgent.toLowerCase(),i=/iphone|ipad|ipod/.test(d),t=d.includes("micromessenger"),s=window.__wxjs_environment==="miniprogram"||d.includes("micromessenger")&&d.includes("miniprogram");return t&&!s&&!i};var Tn=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Ni(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}function rr(d){if(d.__esModule)return d;var i=d.default;if(typeof i=="function"){var t=function s(){return this instanceof s?Reflect.construct(i,arguments,this.constructor):i.apply(this,arguments)};t.prototype=i.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(d).forEach(function(s){var u=Object.getOwnPropertyDescriptor(d,s);Object.defineProperty(t,s,u.get?u:{enumerable:!0,get:function(){return d[s]}})}),t}var Rl={exports:{}},gc=function(i,t){return function(){for(var u=new Array(arguments.length),A=0;A=0)return;A==="set-cookie"?u[A]=(u[A]?u[A]:[]).concat([b]):u[A]=u[A]?u[A]+", "+b:b}}),u},Yl}var Vl,Nc;function ip(){if(Nc)return Vl;Nc=1;var d=Qr;return Vl=d.isStandardBrowserEnv()?function(){var t=/(msie|trident)/i.test(navigator.userAgent),s=document.createElement("a"),u;function A(b){var C=b;return t&&(s.setAttribute("href",C),C=s.href),s.setAttribute("href",C),{href:s.href,protocol:s.protocol?s.protocol.replace(/:$/,""):"",host:s.host,search:s.search?s.search.replace(/^\?/,""):"",hash:s.hash?s.hash.replace(/^#/,""):"",hostname:s.hostname,port:s.port,pathname:s.pathname.charAt(0)==="/"?s.pathname:"/"+s.pathname}}return u=A(window.location.href),function(C){var c=d.isString(C)?A(C):C;return c.protocol===u.protocol&&c.host===u.host}}():function(){return function(){return!0}}(),Vl}var Kl,Hc;function rp(){if(Hc)return Kl;Hc=1;var d=Qr;return Kl=d.isStandardBrowserEnv()?function(){return{write:function(s,u,A,b,C,c){var T=[];T.push(s+"="+encodeURIComponent(u)),d.isNumber(A)&&T.push("expires="+new Date(A).toGMTString()),d.isString(b)&&T.push("path="+b),d.isString(C)&&T.push("domain="+C),c===!0&&T.push("secure"),document.cookie=T.join("; ")},read:function(s){var u=document.cookie.match(new RegExp("(^|;\\s*)("+s+")=([^;]*)"));return u?decodeURIComponent(u[3]):null},remove:function(s){this.write(s,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}(),Kl}var Gl,Oc;function Uc(){if(Oc)return Gl;Oc=1;var d=Qr,i=X0(),t=Ec,s=tp(),u=np(),A=ip(),b=Lc();return Gl=function(c){return new Promise(function(k,S){var E=c.data,r=c.headers;d.isFormData(E)&&delete r["Content-Type"];var D=new XMLHttpRequest;if(c.auth){var f=c.auth.username||"",y=c.auth.password||"";r.Authorization="Basic "+btoa(f+":"+y)}var Q=s(c.baseURL,c.url);if(D.open(c.method.toUpperCase(),t(Q,c.params,c.paramsSerializer),!0),D.timeout=c.timeout,D.onreadystatechange=function(){if(!(!D||D.readyState!==4)&&!(D.status===0&&!(D.responseURL&&D.responseURL.indexOf("file:")===0))){var z="getAllResponseHeaders"in D?u(D.getAllResponseHeaders()):null,G=!c.responseType||c.responseType==="text"?D.responseText:D.response,Y={data:G,status:D.status,statusText:D.statusText,headers:z,config:c,request:D};i(k,S,Y),D=null}},D.onabort=function(){!D||(S(b("Request aborted",c,"ECONNABORTED",D)),D=null)},D.onerror=function(){S(b("Network Error",c,null,D)),D=null},D.ontimeout=function(){var z="timeout of "+c.timeout+"ms exceeded";c.timeoutErrorMessage&&(z=c.timeoutErrorMessage),S(b(z,c,"ECONNABORTED",D)),D=null},d.isStandardBrowserEnv()){var g=rp(),w=(c.withCredentials||A(Q))&&c.xsrfCookieName?g.read(c.xsrfCookieName):void 0;w&&(r[c.xsrfHeaderName]=w)}if("setRequestHeader"in D&&d.forEach(r,function(z,G){typeof E=="undefined"&&G.toLowerCase()==="content-type"?delete r[G]:D.setRequestHeader(G,z)}),d.isUndefined(c.withCredentials)||(D.withCredentials=!!c.withCredentials),c.responseType)try{D.responseType=c.responseType}catch(M){if(c.responseType!=="json")throw M}typeof c.onDownloadProgress=="function"&&D.addEventListener("progress",c.onDownloadProgress),typeof c.onUploadProgress=="function"&&D.upload&&D.upload.addEventListener("progress",c.onUploadProgress),c.cancelToken&&c.cancelToken.promise.then(function(z){!D||(D.abort(),S(z),D=null)}),E===void 0&&(E=null),D.send(E)})},Gl}var vr=Qr,$c=G0,ap={"Content-Type":"application/x-www-form-urlencoded"};function jc(d,i){!vr.isUndefined(d)&&vr.isUndefined(d["Content-Type"])&&(d["Content-Type"]=i)}function op(){var d;return(typeof XMLHttpRequest!="undefined"||typeof process!="undefined"&&Object.prototype.toString.call(process)==="[object process]")&&(d=Uc()),d}var Xs={adapter:op(),transformRequest:[function(i,t){return $c(t,"Accept"),$c(t,"Content-Type"),vr.isFormData(i)||vr.isArrayBuffer(i)||vr.isBuffer(i)||vr.isStream(i)||vr.isFile(i)||vr.isBlob(i)?i:vr.isArrayBufferView(i)?i.buffer:vr.isURLSearchParams(i)?(jc(t,"application/x-www-form-urlencoded;charset=utf-8"),i.toString()):vr.isObject(i)?(jc(t,"application/json;charset=utf-8"),JSON.stringify(i)):i}],transformResponse:[function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(t){}return i}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(i){return i>=200&&i<300}};Xs.headers={common:{Accept:"application/json, text/plain, */*"}},vr.forEach(["delete","get","head"],function(i){Xs.headers[i]={}}),vr.forEach(["post","put","patch"],function(i){Xs.headers[i]=vr.merge(ap)});var Wc=Xs,sp=Ni(Wc),lp=ai({__proto__:null,default:sp},[Wc]),zc=rr(lp),qc=Qr,Jl=q0,up=Sc(),cp=zc;function Xl(d){d.cancelToken&&d.cancelToken.throwIfRequested()}var Yc=function(i){Xl(i),i.headers=i.headers||{},i.data=Jl(i.data,i.headers,i.transformRequest),i.headers=qc.merge(i.headers.common||{},i.headers[i.method]||{},i.headers),qc.forEach(["delete","get","head","post","put","patch","common"],function(u){delete i.headers[u]});var t=i.adapter||cp.adapter;return t(i).then(function(u){return Xl(i),u.data=Jl(u.data,u.headers,i.transformResponse),u},function(u){return up(u)||(Xl(i),u&&u.response&&(u.response.data=Jl(u.response.data,u.response.headers,i.transformResponse))),Promise.reject(u)})},dp=Ni(Yc),fp=ai({__proto__:null,default:dp},[Yc]),hp=rr(fp),wa=Qr,Vc=function(i,t){t=t||{};var s={},u=["url","method","params","data"],A=["headers","auth","proxy"],b=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];wa.forEach(u,function(k){typeof t[k]!="undefined"&&(s[k]=t[k])}),wa.forEach(A,function(k){wa.isObject(t[k])?s[k]=wa.deepMerge(i[k],t[k]):typeof t[k]!="undefined"?s[k]=t[k]:wa.isObject(i[k])?s[k]=wa.deepMerge(i[k]):typeof i[k]!="undefined"&&(s[k]=i[k])}),wa.forEach(b,function(k){typeof t[k]!="undefined"?s[k]=t[k]:typeof i[k]!="undefined"&&(s[k]=i[k])});var C=u.concat(A).concat(b),c=Object.keys(t).filter(function(k){return C.indexOf(k)===-1});return wa.forEach(c,function(k){typeof t[k]!="undefined"?s[k]=t[k]:typeof i[k]!="undefined"&&(s[k]=i[k])}),s},pp=Ni(Vc),gp=ai({__proto__:null,default:pp},[Vc]),Kc=rr(gp),Zs=Qr,mp=Ec,Gc=$0,yp=hp,Jc=Kc;function Bo(d){this.defaults=d,this.interceptors={request:new Gc,response:new Gc}}Bo.prototype.request=function(i){typeof i=="string"?(i=arguments[1]||{},i.url=arguments[0]):i=i||{},i=Jc(this.defaults,i),i.method?i.method=i.method.toLowerCase():this.defaults.method?i.method=this.defaults.method.toLowerCase():i.method="get";var t=[yp,void 0],s=Promise.resolve(i);for(this.interceptors.request.forEach(function(A){t.unshift(A.fulfilled,A.rejected)}),this.interceptors.response.forEach(function(A){t.push(A.fulfilled,A.rejected)});t.length;)s=s.then(t.shift(),t.shift());return s},Bo.prototype.getUri=function(i){return i=Jc(this.defaults,i),mp(i.url,i.params,i.paramsSerializer).replace(/^\?/,"")},Zs.forEach(["delete","get","head","options"],function(i){Bo.prototype[i]=function(t,s){return this.request(Zs.merge(s||{},{method:i,url:t}))}}),Zs.forEach(["post","put","patch"],function(i){Bo.prototype[i]=function(t,s,u){return this.request(Zs.merge(u||{},{method:i,url:t,data:s}))}});var Xc=Bo,Ap=Ni(Xc),vp=ai({__proto__:null,default:Ap},[Xc]),xp=rr(vp),Zl,Zc;function ed(){if(Zc)return Zl;Zc=1;function d(i){this.message=i}return d.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},d.prototype.__CANCEL__=!0,Zl=d,Zl}var eu,td;function Cp(){if(td)return eu;td=1;var d=ed();function i(t){if(typeof t!="function")throw new TypeError("executor must be a function.");var s;this.promise=new Promise(function(b){s=b});var u=this;t(function(b){u.reason||(u.reason=new d(b),s(u.reason))})}return i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var s,u=new i(function(b){s=b});return{token:u,cancel:s}},eu=i,eu}var tu,nd;function bp(){return nd||(nd=1,tu=function(i){return function(s){return i.apply(null,s)}}),tu}var id=Qr,_p=mc,el=xp,Ep=Kc,Ip=zc;function rd(d){var i=new el(d),t=_p(el.prototype.request,i);return id.extend(t,el.prototype,i),id.extend(t,i),t}var ua=rd(Ip);ua.Axios=el,ua.create=function(i){return rd(Ep(ua.defaults,i))},ua.Cancel=ed(),ua.CancelToken=Cp(),ua.isCancel=Sc(),ua.all=function(i){return Promise.all(i)},ua.spread=bp(),Rl.exports=ua,Rl.exports.default=ua;var ad=Rl.exports,wp=Ni(ad),kp=ai({__proto__:null,default:wp},[ad]),Sp=rr(kp),Bp=Sp,Dp=Ni(Bp),tl={exports:{}};function Tp(d){throw new Error('Could not dynamically require "'+d+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Do={exports:{}},Lp=new Proxy({},{get(){throw new Error('Module "" has been externalized for browser compatibility and cannot be accessed in client code.')}}),Fp=Object.freeze(Object.defineProperty({__proto__:null,default:Lp},Symbol.toStringTag,{value:"Module"})),Mp=rr(Fp);Do.exports;var od;function ei(){return od||(od=1,function(d,i){(function(t,s){d.exports=s()})(Tn,function(){var t=t||function(s,u){var A;if(typeof window!="undefined"&&window.crypto&&(A=window.crypto),typeof self!="undefined"&&self.crypto&&(A=self.crypto),typeof globalThis!="undefined"&&globalThis.crypto&&(A=globalThis.crypto),!A&&typeof window!="undefined"&&window.msCrypto&&(A=window.msCrypto),!A&&typeof Tn!="undefined"&&Tn.crypto&&(A=Tn.crypto),!A&&typeof Tp=="function")try{A=Mp}catch(g){}var b=function(){if(A){if(typeof A.getRandomValues=="function")try{return A.getRandomValues(new Uint32Array(1))[0]}catch(g){}if(typeof A.randomBytes=="function")try{return A.randomBytes(4).readInt32LE()}catch(g){}}throw new Error("Native crypto module could not be used to get secure random number.")},C=Object.create||function(){function g(){}return function(w){var M;return g.prototype=w,M=new g,g.prototype=null,M}}(),c={},T=c.lib={},k=T.Base=function(){return{extend:function(g){var w=C(this);return g&&w.mixIn(g),(!w.hasOwnProperty("init")||this.init===w.init)&&(w.init=function(){w.$super.init.apply(this,arguments)}),w.init.prototype=w,w.$super=this,w},create:function(){var g=this.extend();return g.init.apply(g,arguments),g},init:function(){},mixIn:function(g){for(var w in g)g.hasOwnProperty(w)&&(this[w]=g[w]);g.hasOwnProperty("toString")&&(this.toString=g.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),S=T.WordArray=k.extend({init:function(g,w){g=this.words=g||[],w!=u?this.sigBytes=w:this.sigBytes=g.length*4},toString:function(g){return(g||r).stringify(this)},concat:function(g){var w=this.words,M=g.words,z=this.sigBytes,G=g.sigBytes;if(this.clamp(),z%4)for(var Y=0;Y>>2]>>>24-Y%4*8&255;w[z+Y>>>2]|=N<<24-(z+Y)%4*8}else for(var K=0;K>>2]=M[K>>>2];return this.sigBytes+=G,this},clamp:function(){var g=this.words,w=this.sigBytes;g[w>>>2]&=4294967295<<32-w%4*8,g.length=s.ceil(w/4)},clone:function(){var g=k.clone.call(this);return g.words=this.words.slice(0),g},random:function(g){for(var w=[],M=0;M>>2]>>>24-G%4*8&255;z.push((Y>>>4).toString(16)),z.push((Y&15).toString(16))}return z.join("")},parse:function(g){for(var w=g.length,M=[],z=0;z>>3]|=parseInt(g.substr(z,2),16)<<24-z%8*4;return new S.init(M,w/2)}},D=E.Latin1={stringify:function(g){for(var w=g.words,M=g.sigBytes,z=[],G=0;G>>2]>>>24-G%4*8&255;z.push(String.fromCharCode(Y))}return z.join("")},parse:function(g){for(var w=g.length,M=[],z=0;z>>2]|=(g.charCodeAt(z)&255)<<24-z%4*8;return new S.init(M,w)}},f=E.Utf8={stringify:function(g){try{return decodeURIComponent(escape(D.stringify(g)))}catch(w){throw new Error("Malformed UTF-8 data")}},parse:function(g){return D.parse(unescape(encodeURIComponent(g)))}},y=T.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=new S.init,this._nDataBytes=0},_append:function(g){typeof g=="string"&&(g=f.parse(g)),this._data.concat(g),this._nDataBytes+=g.sigBytes},_process:function(g){var w,M=this._data,z=M.words,G=M.sigBytes,Y=this.blockSize,N=Y*4,K=G/N;g?K=s.ceil(K):K=s.max((K|0)-this._minBufferSize,0);var p=K*Y,x=s.min(p*4,G);if(p){for(var _=0;_>>2]|=c[S]<<24-S%4*8;b.call(this,k,T)}else b.apply(this,arguments)};C.prototype=A}}(),t.lib.WordArray})}(Lo,Lo.exports)),Lo.exports}var Fo={exports:{}};Fo.exports;var ud;function Pp(){return ud||(ud=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.WordArray,b=s.enc;b.Utf16=b.Utf16BE={stringify:function(c){for(var T=c.words,k=c.sigBytes,S=[],E=0;E>>2]>>>16-E%4*8&65535;S.push(String.fromCharCode(r))}return S.join("")},parse:function(c){for(var T=c.length,k=[],S=0;S>>1]|=c.charCodeAt(S)<<16-S%2*16;return A.create(k,T*2)}},b.Utf16LE={stringify:function(c){for(var T=c.words,k=c.sigBytes,S=[],E=0;E>>2]>>>16-E%4*8&65535);S.push(String.fromCharCode(r))}return S.join("")},parse:function(c){for(var T=c.length,k=[],S=0;S>>1]|=C(c.charCodeAt(S)<<16-S%2*16);return A.create(k,T*2)}};function C(c){return c<<8&4278255360|c>>>8&16711935}}(),t.enc.Utf16})}(Fo,Fo.exports)),Fo.exports}var Mo={exports:{}};Mo.exports;var cd;function ja(){return cd||(cd=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.WordArray,b=s.enc;b.Base64={stringify:function(c){var T=c.words,k=c.sigBytes,S=this._map;c.clamp();for(var E=[],r=0;r>>2]>>>24-r%4*8&255,f=T[r+1>>>2]>>>24-(r+1)%4*8&255,y=T[r+2>>>2]>>>24-(r+2)%4*8&255,Q=D<<16|f<<8|y,g=0;g<4&&r+g*.75>>6*(3-g)&63));var w=S.charAt(64);if(w)for(;E.length%4;)E.push(w);return E.join("")},parse:function(c){var T=c.length,k=this._map,S=this._reverseMap;if(!S){S=this._reverseMap=[];for(var E=0;E>>6-r%4*2,y=D|f;S[E>>>2]|=y<<24-E%4*8,E++}return A.create(S,E)}}(),t.enc.Base64})}(Mo,Mo.exports)),Mo.exports}var Qo={exports:{}};Qo.exports;var dd;function Rp(){return dd||(dd=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.WordArray,b=s.enc;b.Base64url={stringify:function(c,T){T===void 0&&(T=!0);var k=c.words,S=c.sigBytes,E=T?this._safe_map:this._map;c.clamp();for(var r=[],D=0;D>>2]>>>24-D%4*8&255,y=k[D+1>>>2]>>>24-(D+1)%4*8&255,Q=k[D+2>>>2]>>>24-(D+2)%4*8&255,g=f<<16|y<<8|Q,w=0;w<4&&D+w*.75>>6*(3-w)&63));var M=E.charAt(64);if(M)for(;r.length%4;)r.push(M);return r.join("")},parse:function(c,T){T===void 0&&(T=!0);var k=c.length,S=T?this._safe_map:this._map,E=this._reverseMap;if(!E){E=this._reverseMap=[];for(var r=0;r>>6-r%4*2,y=D|f;S[E>>>2]|=y<<24-E%4*8,E++}return A.create(S,E)}}(),t.enc.Base64url})}(Qo,Qo.exports)),Qo.exports}var Po={exports:{}};Po.exports;var fd;function Wa(){return fd||(fd=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){return function(s){var u=t,A=u.lib,b=A.WordArray,C=A.Hasher,c=u.algo,T=[];(function(){for(var f=0;f<64;f++)T[f]=s.abs(s.sin(f+1))*4294967296|0})();var k=c.MD5=C.extend({_doReset:function(){this._hash=new b.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(f,y){for(var Q=0;Q<16;Q++){var g=y+Q,w=f[g];f[g]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360}var M=this._hash.words,z=f[y+0],G=f[y+1],Y=f[y+2],N=f[y+3],K=f[y+4],p=f[y+5],x=f[y+6],_=f[y+7],B=f[y+8],R=f[y+9],X=f[y+10],J=f[y+11],ne=f[y+12],le=f[y+13],me=f[y+14],Ae=f[y+15],q=M[0],Z=M[1],re=M[2],ae=M[3];q=S(q,Z,re,ae,z,7,T[0]),ae=S(ae,q,Z,re,G,12,T[1]),re=S(re,ae,q,Z,Y,17,T[2]),Z=S(Z,re,ae,q,N,22,T[3]),q=S(q,Z,re,ae,K,7,T[4]),ae=S(ae,q,Z,re,p,12,T[5]),re=S(re,ae,q,Z,x,17,T[6]),Z=S(Z,re,ae,q,_,22,T[7]),q=S(q,Z,re,ae,B,7,T[8]),ae=S(ae,q,Z,re,R,12,T[9]),re=S(re,ae,q,Z,X,17,T[10]),Z=S(Z,re,ae,q,J,22,T[11]),q=S(q,Z,re,ae,ne,7,T[12]),ae=S(ae,q,Z,re,le,12,T[13]),re=S(re,ae,q,Z,me,17,T[14]),Z=S(Z,re,ae,q,Ae,22,T[15]),q=E(q,Z,re,ae,G,5,T[16]),ae=E(ae,q,Z,re,x,9,T[17]),re=E(re,ae,q,Z,J,14,T[18]),Z=E(Z,re,ae,q,z,20,T[19]),q=E(q,Z,re,ae,p,5,T[20]),ae=E(ae,q,Z,re,X,9,T[21]),re=E(re,ae,q,Z,Ae,14,T[22]),Z=E(Z,re,ae,q,K,20,T[23]),q=E(q,Z,re,ae,R,5,T[24]),ae=E(ae,q,Z,re,me,9,T[25]),re=E(re,ae,q,Z,N,14,T[26]),Z=E(Z,re,ae,q,B,20,T[27]),q=E(q,Z,re,ae,le,5,T[28]),ae=E(ae,q,Z,re,Y,9,T[29]),re=E(re,ae,q,Z,_,14,T[30]),Z=E(Z,re,ae,q,ne,20,T[31]),q=r(q,Z,re,ae,p,4,T[32]),ae=r(ae,q,Z,re,B,11,T[33]),re=r(re,ae,q,Z,J,16,T[34]),Z=r(Z,re,ae,q,me,23,T[35]),q=r(q,Z,re,ae,G,4,T[36]),ae=r(ae,q,Z,re,K,11,T[37]),re=r(re,ae,q,Z,_,16,T[38]),Z=r(Z,re,ae,q,X,23,T[39]),q=r(q,Z,re,ae,le,4,T[40]),ae=r(ae,q,Z,re,z,11,T[41]),re=r(re,ae,q,Z,N,16,T[42]),Z=r(Z,re,ae,q,x,23,T[43]),q=r(q,Z,re,ae,R,4,T[44]),ae=r(ae,q,Z,re,ne,11,T[45]),re=r(re,ae,q,Z,Ae,16,T[46]),Z=r(Z,re,ae,q,Y,23,T[47]),q=D(q,Z,re,ae,z,6,T[48]),ae=D(ae,q,Z,re,_,10,T[49]),re=D(re,ae,q,Z,me,15,T[50]),Z=D(Z,re,ae,q,p,21,T[51]),q=D(q,Z,re,ae,ne,6,T[52]),ae=D(ae,q,Z,re,N,10,T[53]),re=D(re,ae,q,Z,X,15,T[54]),Z=D(Z,re,ae,q,G,21,T[55]),q=D(q,Z,re,ae,B,6,T[56]),ae=D(ae,q,Z,re,Ae,10,T[57]),re=D(re,ae,q,Z,x,15,T[58]),Z=D(Z,re,ae,q,le,21,T[59]),q=D(q,Z,re,ae,K,6,T[60]),ae=D(ae,q,Z,re,J,10,T[61]),re=D(re,ae,q,Z,Y,15,T[62]),Z=D(Z,re,ae,q,R,21,T[63]),M[0]=M[0]+q|0,M[1]=M[1]+Z|0,M[2]=M[2]+re|0,M[3]=M[3]+ae|0},_doFinalize:function(){var f=this._data,y=f.words,Q=this._nDataBytes*8,g=f.sigBytes*8;y[g>>>5]|=128<<24-g%32;var w=s.floor(Q/4294967296),M=Q;y[(g+64>>>9<<4)+15]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,y[(g+64>>>9<<4)+14]=(M<<8|M>>>24)&16711935|(M<<24|M>>>8)&4278255360,f.sigBytes=(y.length+1)*4,this._process();for(var z=this._hash,G=z.words,Y=0;Y<4;Y++){var N=G[Y];G[Y]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360}return z},clone:function(){var f=C.clone.call(this);return f._hash=this._hash.clone(),f}});function S(f,y,Q,g,w,M,z){var G=f+(y&Q|~y&g)+w+z;return(G<>>32-M)+y}function E(f,y,Q,g,w,M,z){var G=f+(y&g|Q&~g)+w+z;return(G<>>32-M)+y}function r(f,y,Q,g,w,M,z){var G=f+(y^Q^g)+w+z;return(G<>>32-M)+y}function D(f,y,Q,g,w,M,z){var G=f+(Q^(y|~g))+w+z;return(G<>>32-M)+y}u.MD5=C._createHelper(k),u.HmacMD5=C._createHmacHelper(k)}(Math),t.MD5})}(Po,Po.exports)),Po.exports}var Ro={exports:{}};Ro.exports;var hd;function pd(){return hd||(hd=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.WordArray,b=u.Hasher,C=s.algo,c=[],T=C.SHA1=b.extend({_doReset:function(){this._hash=new A.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(k,S){for(var E=this._hash.words,r=E[0],D=E[1],f=E[2],y=E[3],Q=E[4],g=0;g<80;g++){if(g<16)c[g]=k[S+g]|0;else{var w=c[g-3]^c[g-8]^c[g-14]^c[g-16];c[g]=w<<1|w>>>31}var M=(r<<5|r>>>27)+Q+c[g];g<20?M+=(D&f|~D&y)+1518500249:g<40?M+=(D^f^y)+1859775393:g<60?M+=(D&f|D&y|f&y)-1894007588:M+=(D^f^y)-899497514,Q=y,y=f,f=D<<30|D>>>2,D=r,r=M}E[0]=E[0]+r|0,E[1]=E[1]+D|0,E[2]=E[2]+f|0,E[3]=E[3]+y|0,E[4]=E[4]+Q|0},_doFinalize:function(){var k=this._data,S=k.words,E=this._nDataBytes*8,r=k.sigBytes*8;return S[r>>>5]|=128<<24-r%32,S[(r+64>>>9<<4)+14]=Math.floor(E/4294967296),S[(r+64>>>9<<4)+15]=E,k.sigBytes=S.length*4,this._process(),this._hash},clone:function(){var k=b.clone.call(this);return k._hash=this._hash.clone(),k}});s.SHA1=b._createHelper(T),s.HmacSHA1=b._createHmacHelper(T)}(),t.SHA1})}(Ro,Ro.exports)),Ro.exports}var No={exports:{}};No.exports;var gd;function nu(){return gd||(gd=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){return function(s){var u=t,A=u.lib,b=A.WordArray,C=A.Hasher,c=u.algo,T=[],k=[];(function(){function r(Q){for(var g=s.sqrt(Q),w=2;w<=g;w++)if(!(Q%w))return!1;return!0}function D(Q){return(Q-(Q|0))*4294967296|0}for(var f=2,y=0;y<64;)r(f)&&(y<8&&(T[y]=D(s.pow(f,1/2))),k[y]=D(s.pow(f,1/3)),y++),f++})();var S=[],E=c.SHA256=C.extend({_doReset:function(){this._hash=new b.init(T.slice(0))},_doProcessBlock:function(r,D){for(var f=this._hash.words,y=f[0],Q=f[1],g=f[2],w=f[3],M=f[4],z=f[5],G=f[6],Y=f[7],N=0;N<64;N++){if(N<16)S[N]=r[D+N]|0;else{var K=S[N-15],p=(K<<25|K>>>7)^(K<<14|K>>>18)^K>>>3,x=S[N-2],_=(x<<15|x>>>17)^(x<<13|x>>>19)^x>>>10;S[N]=p+S[N-7]+_+S[N-16]}var B=M&z^~M&G,R=y&Q^y&g^Q&g,X=(y<<30|y>>>2)^(y<<19|y>>>13)^(y<<10|y>>>22),J=(M<<26|M>>>6)^(M<<21|M>>>11)^(M<<7|M>>>25),ne=Y+J+B+k[N]+S[N],le=X+R;Y=G,G=z,z=M,M=w+ne|0,w=g,g=Q,Q=y,y=ne+le|0}f[0]=f[0]+y|0,f[1]=f[1]+Q|0,f[2]=f[2]+g|0,f[3]=f[3]+w|0,f[4]=f[4]+M|0,f[5]=f[5]+z|0,f[6]=f[6]+G|0,f[7]=f[7]+Y|0},_doFinalize:function(){var r=this._data,D=r.words,f=this._nDataBytes*8,y=r.sigBytes*8;return D[y>>>5]|=128<<24-y%32,D[(y+64>>>9<<4)+14]=s.floor(f/4294967296),D[(y+64>>>9<<4)+15]=f,r.sigBytes=D.length*4,this._process(),this._hash},clone:function(){var r=C.clone.call(this);return r._hash=this._hash.clone(),r}});u.SHA256=C._createHelper(E),u.HmacSHA256=C._createHmacHelper(E)}(Math),t.SHA256})}(No,No.exports)),No.exports}var Ho={exports:{}};Ho.exports;var md;function Np(){return md||(md=1,function(d,i){(function(t,s,u){d.exports=s(ei(),nu())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.WordArray,b=s.algo,C=b.SHA256,c=b.SHA224=C.extend({_doReset:function(){this._hash=new A.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var T=C._doFinalize.call(this);return T.sigBytes-=4,T}});s.SHA224=C._createHelper(c),s.HmacSHA224=C._createHmacHelper(c)}(),t.SHA224})}(Ho,Ho.exports)),Ho.exports}var Oo={exports:{}};Oo.exports;var yd;function Ad(){return yd||(yd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),nl())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.Hasher,b=s.x64,C=b.Word,c=b.WordArray,T=s.algo;function k(){return C.create.apply(C,arguments)}var S=[k(1116352408,3609767458),k(1899447441,602891725),k(3049323471,3964484399),k(3921009573,2173295548),k(961987163,4081628472),k(1508970993,3053834265),k(2453635748,2937671579),k(2870763221,3664609560),k(3624381080,2734883394),k(310598401,1164996542),k(607225278,1323610764),k(1426881987,3590304994),k(1925078388,4068182383),k(2162078206,991336113),k(2614888103,633803317),k(3248222580,3479774868),k(3835390401,2666613458),k(4022224774,944711139),k(264347078,2341262773),k(604807628,2007800933),k(770255983,1495990901),k(1249150122,1856431235),k(1555081692,3175218132),k(1996064986,2198950837),k(2554220882,3999719339),k(2821834349,766784016),k(2952996808,2566594879),k(3210313671,3203337956),k(3336571891,1034457026),k(3584528711,2466948901),k(113926993,3758326383),k(338241895,168717936),k(666307205,1188179964),k(773529912,1546045734),k(1294757372,1522805485),k(1396182291,2643833823),k(1695183700,2343527390),k(1986661051,1014477480),k(2177026350,1206759142),k(2456956037,344077627),k(2730485921,1290863460),k(2820302411,3158454273),k(3259730800,3505952657),k(3345764771,106217008),k(3516065817,3606008344),k(3600352804,1432725776),k(4094571909,1467031594),k(275423344,851169720),k(430227734,3100823752),k(506948616,1363258195),k(659060556,3750685593),k(883997877,3785050280),k(958139571,3318307427),k(1322822218,3812723403),k(1537002063,2003034995),k(1747873779,3602036899),k(1955562222,1575990012),k(2024104815,1125592928),k(2227730452,2716904306),k(2361852424,442776044),k(2428436474,593698344),k(2756734187,3733110249),k(3204031479,2999351573),k(3329325298,3815920427),k(3391569614,3928383900),k(3515267271,566280711),k(3940187606,3454069534),k(4118630271,4000239992),k(116418474,1914138554),k(174292421,2731055270),k(289380356,3203993006),k(460393269,320620315),k(685471733,587496836),k(852142971,1086792851),k(1017036298,365543100),k(1126000580,2618297676),k(1288033470,3409855158),k(1501505948,4234509866),k(1607167915,987167468),k(1816402316,1246189591)],E=[];(function(){for(var D=0;D<80;D++)E[D]=k()})();var r=T.SHA512=A.extend({_doReset:function(){this._hash=new c.init([new C.init(1779033703,4089235720),new C.init(3144134277,2227873595),new C.init(1013904242,4271175723),new C.init(2773480762,1595750129),new C.init(1359893119,2917565137),new C.init(2600822924,725511199),new C.init(528734635,4215389547),new C.init(1541459225,327033209)])},_doProcessBlock:function(D,f){for(var y=this._hash.words,Q=y[0],g=y[1],w=y[2],M=y[3],z=y[4],G=y[5],Y=y[6],N=y[7],K=Q.high,p=Q.low,x=g.high,_=g.low,B=w.high,R=w.low,X=M.high,J=M.low,ne=z.high,le=z.low,me=G.high,Ae=G.low,q=Y.high,Z=Y.low,re=N.high,ae=N.low,oe=K,ue=p,Ee=x,O=_,ee=B,ie=R,ge=X,_e=J,we=ne,ke=le,Se=me,Te=Ae,Re=q,Ne=Z,Ye=re,Je=ae,rt=0;rt<80;rt++){var We,Ve,Oe=E[rt];if(rt<16)Ve=Oe.high=D[f+rt*2]|0,We=Oe.low=D[f+rt*2+1]|0;else{var ft=E[rt-15],ht=ft.high,qt=ft.low,bn=(ht>>>1|qt<<31)^(ht>>>8|qt<<24)^ht>>>7,sn=(qt>>>1|ht<<31)^(qt>>>8|ht<<24)^(qt>>>7|ht<<25),gn=E[rt-2],kn=gn.high,Yn=gn.low,Nn=(kn>>>19|Yn<<13)^(kn<<3|Yn>>>29)^kn>>>6,pi=(Yn>>>19|kn<<13)^(Yn<<3|kn>>>29)^(Yn>>>6|kn<<26),Ln=E[rt-7],si=Ln.high,Xi=Ln.low,or=E[rt-16],jr=or.high,ji=or.low;We=sn+Xi,Ve=bn+si+(We>>>0>>0?1:0),We=We+pi,Ve=Ve+Nn+(We>>>0>>0?1:0),We=We+ji,Ve=Ve+jr+(We>>>0>>0?1:0),Oe.high=Ve,Oe.low=We}var br=we&Se^~we&Re,Zr=ke&Te^~ke&Ne,ea=oe&Ee^oe&ee^Ee&ee,Wr=ue&O^ue&ie^O&ie,_r=(oe>>>28|ue<<4)^(oe<<30|ue>>>2)^(oe<<25|ue>>>7),$=(ue>>>28|oe<<4)^(ue<<30|oe>>>2)^(ue<<25|oe>>>7),F=(we>>>14|ke<<18)^(we>>>18|ke<<14)^(we<<23|ke>>>9),n=(ke>>>14|we<<18)^(ke>>>18|we<<14)^(ke<<23|we>>>9),v=S[rt],I=v.high,U=v.low,W=Je+n,fe=Ye+F+(W>>>0>>0?1:0),W=W+Zr,fe=fe+br+(W>>>0>>0?1:0),W=W+U,fe=fe+I+(W>>>0>>0?1:0),W=W+We,fe=fe+Ve+(W>>>0>>0?1:0),pe=$+Wr,ve=_r+ea+(pe>>>0<$>>>0?1:0);Ye=Re,Je=Ne,Re=Se,Ne=Te,Se=we,Te=ke,ke=_e+W|0,we=ge+fe+(ke>>>0<_e>>>0?1:0)|0,ge=ee,_e=ie,ee=Ee,ie=O,Ee=oe,O=ue,ue=W+pe|0,oe=fe+ve+(ue>>>0>>0?1:0)|0}p=Q.low=p+ue,Q.high=K+oe+(p>>>0>>0?1:0),_=g.low=_+O,g.high=x+Ee+(_>>>0>>0?1:0),R=w.low=R+ie,w.high=B+ee+(R>>>0>>0?1:0),J=M.low=J+_e,M.high=X+ge+(J>>>0<_e>>>0?1:0),le=z.low=le+ke,z.high=ne+we+(le>>>0>>0?1:0),Ae=G.low=Ae+Te,G.high=me+Se+(Ae>>>0>>0?1:0),Z=Y.low=Z+Ne,Y.high=q+Re+(Z>>>0>>0?1:0),ae=N.low=ae+Je,N.high=re+Ye+(ae>>>0>>0?1:0)},_doFinalize:function(){var D=this._data,f=D.words,y=this._nDataBytes*8,Q=D.sigBytes*8;f[Q>>>5]|=128<<24-Q%32,f[(Q+128>>>10<<5)+30]=Math.floor(y/4294967296),f[(Q+128>>>10<<5)+31]=y,D.sigBytes=f.length*4,this._process();var g=this._hash.toX32();return g},clone:function(){var D=A.clone.call(this);return D._hash=this._hash.clone(),D},blockSize:1024/32});s.SHA512=A._createHelper(r),s.HmacSHA512=A._createHmacHelper(r)}(),t.SHA512})}(Oo,Oo.exports)),Oo.exports}var Uo={exports:{}};Uo.exports;var vd;function Hp(){return vd||(vd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),nl(),Ad())})(Tn,function(t){return function(){var s=t,u=s.x64,A=u.Word,b=u.WordArray,C=s.algo,c=C.SHA512,T=C.SHA384=c.extend({_doReset:function(){this._hash=new b.init([new A.init(3418070365,3238371032),new A.init(1654270250,914150663),new A.init(2438529370,812702999),new A.init(355462360,4144912697),new A.init(1731405415,4290775857),new A.init(2394180231,1750603025),new A.init(3675008525,1694076839),new A.init(1203062813,3204075428)])},_doFinalize:function(){var k=c._doFinalize.call(this);return k.sigBytes-=16,k}});s.SHA384=c._createHelper(T),s.HmacSHA384=c._createHmacHelper(T)}(),t.SHA384})}(Uo,Uo.exports)),Uo.exports}var $o={exports:{}};$o.exports;var xd;function Op(){return xd||(xd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),nl())})(Tn,function(t){return function(s){var u=t,A=u.lib,b=A.WordArray,C=A.Hasher,c=u.x64,T=c.Word,k=u.algo,S=[],E=[],r=[];(function(){for(var y=1,Q=0,g=0;g<24;g++){S[y+5*Q]=(g+1)*(g+2)/2%64;var w=Q%5,M=(2*y+3*Q)%5;y=w,Q=M}for(var y=0;y<5;y++)for(var Q=0;Q<5;Q++)E[y+5*Q]=Q+(2*y+3*Q)%5*5;for(var z=1,G=0;G<24;G++){for(var Y=0,N=0,K=0;K<7;K++){if(z&1){var p=(1<>>24)&16711935|(z<<24|z>>>8)&4278255360,G=(G<<8|G>>>24)&16711935|(G<<24|G>>>8)&4278255360;var Y=g[M];Y.high^=G,Y.low^=z}for(var N=0;N<24;N++){for(var K=0;K<5;K++){for(var p=0,x=0,_=0;_<5;_++){var Y=g[K+5*_];p^=Y.high,x^=Y.low}var B=D[K];B.high=p,B.low=x}for(var K=0;K<5;K++)for(var R=D[(K+4)%5],X=D[(K+1)%5],J=X.high,ne=X.low,p=R.high^(J<<1|ne>>>31),x=R.low^(ne<<1|J>>>31),_=0;_<5;_++){var Y=g[K+5*_];Y.high^=p,Y.low^=x}for(var le=1;le<25;le++){var p,x,Y=g[le],me=Y.high,Ae=Y.low,q=S[le];q<32?(p=me<>>32-q,x=Ae<>>32-q):(p=Ae<>>64-q,x=me<>>64-q);var Z=D[E[le]];Z.high=p,Z.low=x}var re=D[0],ae=g[0];re.high=ae.high,re.low=ae.low;for(var K=0;K<5;K++)for(var _=0;_<5;_++){var le=K+5*_,Y=g[le],oe=D[le],ue=D[(K+1)%5+5*_],Ee=D[(K+2)%5+5*_];Y.high=oe.high^~ue.high&Ee.high,Y.low=oe.low^~ue.low&Ee.low}var Y=g[0],O=r[N];Y.high^=O.high,Y.low^=O.low}},_doFinalize:function(){var y=this._data,Q=y.words;this._nDataBytes*8;var g=y.sigBytes*8,w=this.blockSize*32;Q[g>>>5]|=1<<24-g%32,Q[(s.ceil((g+1)/w)*w>>>5)-1]|=128,y.sigBytes=Q.length*4,this._process();for(var M=this._state,z=this.cfg.outputLength/8,G=z/8,Y=[],N=0;N>>24)&16711935|(p<<24|p>>>8)&4278255360,x=(x<<8|x>>>24)&16711935|(x<<24|x>>>8)&4278255360,Y.push(x),Y.push(p)}return new b.init(Y,z)},clone:function(){for(var y=C.clone.call(this),Q=y._state=this._state.slice(0),g=0;g<25;g++)Q[g]=Q[g].clone();return y}});u.SHA3=C._createHelper(f),u.HmacSHA3=C._createHmacHelper(f)}(Math),t.SHA3})}($o,$o.exports)),$o.exports}var jo={exports:{}};jo.exports;var Cd;function Up(){return Cd||(Cd=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){/** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */return function(s){var u=t,A=u.lib,b=A.WordArray,C=A.Hasher,c=u.algo,T=b.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),k=b.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),S=b.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),E=b.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),r=b.create([0,1518500249,1859775393,2400959708,2840853838]),D=b.create([1352829926,1548603684,1836072691,2053994217,0]),f=c.RIPEMD160=C.extend({_doReset:function(){this._hash=b.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(G,Y){for(var N=0;N<16;N++){var K=Y+N,p=G[K];G[K]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var x=this._hash.words,_=r.words,B=D.words,R=T.words,X=k.words,J=S.words,ne=E.words,le,me,Ae,q,Z,re,ae,oe,ue,Ee;re=le=x[0],ae=me=x[1],oe=Ae=x[2],ue=q=x[3],Ee=Z=x[4];for(var O,N=0;N<80;N+=1)O=le+G[Y+R[N]]|0,N<16?O+=y(me,Ae,q)+_[0]:N<32?O+=Q(me,Ae,q)+_[1]:N<48?O+=g(me,Ae,q)+_[2]:N<64?O+=w(me,Ae,q)+_[3]:O+=M(me,Ae,q)+_[4],O=O|0,O=z(O,J[N]),O=O+Z|0,le=Z,Z=q,q=z(Ae,10),Ae=me,me=O,O=re+G[Y+X[N]]|0,N<16?O+=M(ae,oe,ue)+B[0]:N<32?O+=w(ae,oe,ue)+B[1]:N<48?O+=g(ae,oe,ue)+B[2]:N<64?O+=Q(ae,oe,ue)+B[3]:O+=y(ae,oe,ue)+B[4],O=O|0,O=z(O,ne[N]),O=O+Ee|0,re=Ee,Ee=ue,ue=z(oe,10),oe=ae,ae=O;O=x[1]+Ae+ue|0,x[1]=x[2]+q+Ee|0,x[2]=x[3]+Z+re|0,x[3]=x[4]+le+ae|0,x[4]=x[0]+me+oe|0,x[0]=O},_doFinalize:function(){var G=this._data,Y=G.words,N=this._nDataBytes*8,K=G.sigBytes*8;Y[K>>>5]|=128<<24-K%32,Y[(K+64>>>9<<4)+14]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360,G.sigBytes=(Y.length+1)*4,this._process();for(var p=this._hash,x=p.words,_=0;_<5;_++){var B=x[_];x[_]=(B<<8|B>>>24)&16711935|(B<<24|B>>>8)&4278255360}return p},clone:function(){var G=C.clone.call(this);return G._hash=this._hash.clone(),G}});function y(G,Y,N){return G^Y^N}function Q(G,Y,N){return G&Y|~G&N}function g(G,Y,N){return(G|~Y)^N}function w(G,Y,N){return G&N|Y&~N}function M(G,Y,N){return G^(Y|~N)}function z(G,Y){return G<>>32-Y}u.RIPEMD160=C._createHelper(f),u.HmacRIPEMD160=C._createHmacHelper(f)}(),t.RIPEMD160})}(jo,jo.exports)),jo.exports}var Wo={exports:{}};Wo.exports;var bd;function iu(){return bd||(bd=1,function(d,i){(function(t,s){d.exports=s(ei())})(Tn,function(t){(function(){var s=t,u=s.lib,A=u.Base,b=s.enc,C=b.Utf8,c=s.algo;c.HMAC=A.extend({init:function(T,k){T=this._hasher=new T.init,typeof k=="string"&&(k=C.parse(k));var S=T.blockSize,E=S*4;k.sigBytes>E&&(k=T.finalize(k)),k.clamp();for(var r=this._oKey=k.clone(),D=this._iKey=k.clone(),f=r.words,y=D.words,Q=0;Q>>2]&255;p.sigBytes-=x}};A.BlockCipher=r.extend({cfg:r.cfg.extend({mode:y,padding:g}),reset:function(){var p;r.reset.call(this);var x=this.cfg,_=x.iv,B=x.mode;this._xformMode==this._ENC_XFORM_MODE?p=B.createEncryptor:(p=B.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==p?this._mode.init(this,_&&_.words):(this._mode=p.call(B,this,_&&_.words),this._mode.__creator=p)},_doProcessBlock:function(p,x){this._mode.processBlock(p,x)},_doFinalize:function(){var p,x=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(x.pad(this._data,this.blockSize),p=this._process(!0)):(p=this._process(!0),x.unpad(p)),p},blockSize:128/32});var w=A.CipherParams=b.extend({init:function(p){this.mixIn(p)},toString:function(p){return(p||this.formatter).stringify(this)}}),M=u.format={},z=M.OpenSSL={stringify:function(p){var x,_=p.ciphertext,B=p.salt;return B?x=C.create([1398893684,1701076831]).concat(B).concat(_):x=_,x.toString(k)},parse:function(p){var x,_=k.parse(p),B=_.words;return B[0]==1398893684&&B[1]==1701076831&&(x=C.create(B.slice(2,4)),B.splice(0,4),_.sigBytes-=16),w.create({ciphertext:_,salt:x})}},G=A.SerializableCipher=b.extend({cfg:b.extend({format:z}),encrypt:function(p,x,_,B){B=this.cfg.extend(B);var R=p.createEncryptor(_,B),X=R.finalize(x),J=R.cfg;return w.create({ciphertext:X,key:_,iv:J.iv,algorithm:p,mode:J.mode,padding:J.padding,blockSize:p.blockSize,formatter:B.format})},decrypt:function(p,x,_,B){B=this.cfg.extend(B),x=this._parse(x,B.format);var R=p.createDecryptor(_,B).finalize(x.ciphertext);return R},_parse:function(p,x){return typeof p=="string"?x.parse(p,this):p}}),Y=u.kdf={},N=Y.OpenSSL={execute:function(p,x,_,B,R){if(B||(B=C.random(64/8)),R)var X=E.create({keySize:x+_,hasher:R}).compute(p,B);else var X=E.create({keySize:x+_}).compute(p,B);var J=C.create(X.words.slice(x),_*4);return X.sigBytes=x*4,w.create({key:X,iv:J,salt:B})}},K=A.PasswordBasedCipher=G.extend({cfg:G.cfg.extend({kdf:N}),encrypt:function(p,x,_,B){B=this.cfg.extend(B);var R=B.kdf.execute(_,p.keySize,p.ivSize,B.salt,B.hasher);B.iv=R.iv;var X=G.encrypt.call(this,p,x,R.key,B);return X.mixIn(R),X},decrypt:function(p,x,_,B){B=this.cfg.extend(B),x=this._parse(x,B.format);var R=B.kdf.execute(_,p.keySize,p.ivSize,x.salt,B.hasher);B.iv=R.iv;var X=G.decrypt.call(this,p,x,R.key,B);return X}})}()})}(Yo,Yo.exports)),Yo.exports}var Vo={exports:{}};Vo.exports;var wd;function jp(){return wd||(wd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),Ji())})(Tn,function(t){return t.mode.CFB=function(){var s=t.lib.BlockCipherMode.extend();s.Encryptor=s.extend({processBlock:function(A,b){var C=this._cipher,c=C.blockSize;u.call(this,A,b,c,C),this._prevBlock=A.slice(b,b+c)}}),s.Decryptor=s.extend({processBlock:function(A,b){var C=this._cipher,c=C.blockSize,T=A.slice(b,b+c);u.call(this,A,b,c,C),this._prevBlock=T}});function u(A,b,C,c){var T,k=this._iv;k?(T=k.slice(0),this._iv=void 0):T=this._prevBlock,c.encryptBlock(T,0);for(var S=0;S>24&255)===255){var c=C>>16&255,T=C>>8&255,k=C&255;c===255?(c=0,T===255?(T=0,k===255?k=0:++k):++T):++c,C=0,C+=c<<16,C+=T<<8,C+=k}else C+=1<<24;return C}function A(C){return(C[0]=u(C[0]))===0&&(C[1]=u(C[1])),C}var b=s.Encryptor=s.extend({processBlock:function(C,c){var T=this._cipher,k=T.blockSize,S=this._iv,E=this._counter;S&&(E=this._counter=S.slice(0),this._iv=void 0),A(E);var r=E.slice(0);T.encryptBlock(r,0);for(var D=0;D>>2]|=C<<24-c%4*8,s.sigBytes+=C},unpad:function(s){var u=s.words[s.sigBytes-1>>>2]&255;s.sigBytes-=u}},t.pad.Ansix923})}(Zo,Zo.exports)),Zo.exports}var es={exports:{}};es.exports;var Ld;function Kp(){return Ld||(Ld=1,function(d,i){(function(t,s,u){d.exports=s(ei(),Ji())})(Tn,function(t){return t.pad.Iso10126={pad:function(s,u){var A=u*4,b=A-s.sigBytes%A;s.concat(t.lib.WordArray.random(b-1)).concat(t.lib.WordArray.create([b<<24],1))},unpad:function(s){var u=s.words[s.sigBytes-1>>>2]&255;s.sigBytes-=u}},t.pad.Iso10126})}(es,es.exports)),es.exports}var ts={exports:{}};ts.exports;var Fd;function Gp(){return Fd||(Fd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),Ji())})(Tn,function(t){return t.pad.Iso97971={pad:function(s,u){s.concat(t.lib.WordArray.create([2147483648],1)),t.pad.ZeroPadding.pad(s,u)},unpad:function(s){t.pad.ZeroPadding.unpad(s),s.sigBytes--}},t.pad.Iso97971})}(ts,ts.exports)),ts.exports}var ns={exports:{}};ns.exports;var Md;function Jp(){return Md||(Md=1,function(d,i){(function(t,s,u){d.exports=s(ei(),Ji())})(Tn,function(t){return t.pad.ZeroPadding={pad:function(s,u){var A=u*4;s.clamp(),s.sigBytes+=A-(s.sigBytes%A||A)},unpad:function(s){for(var u=s.words,A=s.sigBytes-1,A=s.sigBytes-1;A>=0;A--)if(u[A>>>2]>>>24-A%4*8&255){s.sigBytes=A+1;break}}},t.pad.ZeroPadding})}(ns,ns.exports)),ns.exports}var is={exports:{}};is.exports;var Qd;function Xp(){return Qd||(Qd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),Ji())})(Tn,function(t){return t.pad.NoPadding={pad:function(){},unpad:function(){}},t.pad.NoPadding})}(is,is.exports)),is.exports}var rs={exports:{}};rs.exports;var Pd;function Zp(){return Pd||(Pd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),Ji())})(Tn,function(t){return function(s){var u=t,A=u.lib,b=A.CipherParams,C=u.enc,c=C.Hex,T=u.format;T.Hex={stringify:function(k){return k.ciphertext.toString(c)},parse:function(k){var S=c.parse(k);return b.create({ciphertext:S})}}}(),t.format.Hex})}(rs,rs.exports)),rs.exports}var as={exports:{}};as.exports;var Rd;function eg(){return Rd||(Rd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),ja(),Wa(),ka(),Ji())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.BlockCipher,b=s.algo,C=[],c=[],T=[],k=[],S=[],E=[],r=[],D=[],f=[],y=[];(function(){for(var w=[],M=0;M<256;M++)M<128?w[M]=M<<1:w[M]=M<<1^283;for(var z=0,G=0,M=0;M<256;M++){var Y=G^G<<1^G<<2^G<<3^G<<4;Y=Y>>>8^Y&255^99,C[z]=Y,c[Y]=z;var N=w[z],K=w[N],p=w[K],x=w[Y]*257^Y*16843008;T[z]=x<<24|x>>>8,k[z]=x<<16|x>>>16,S[z]=x<<8|x>>>24,E[z]=x;var x=p*16843009^K*65537^N*257^z*16843008;r[Y]=x<<24|x>>>8,D[Y]=x<<16|x>>>16,f[Y]=x<<8|x>>>24,y[Y]=x,z?(z=N^w[w[w[p^N]]],G^=w[w[G]]):z=G=1}})();var Q=[0,1,2,4,8,16,32,64,128,27,54],g=b.AES=A.extend({_doReset:function(){var w;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var M=this._keyPriorReset=this._key,z=M.words,G=M.sigBytes/4,Y=this._nRounds=G+6,N=(Y+1)*4,K=this._keySchedule=[],p=0;p6&&p%G==4&&(w=C[w>>>24]<<24|C[w>>>16&255]<<16|C[w>>>8&255]<<8|C[w&255]):(w=w<<8|w>>>24,w=C[w>>>24]<<24|C[w>>>16&255]<<16|C[w>>>8&255]<<8|C[w&255],w^=Q[p/G|0]<<24),K[p]=K[p-G]^w);for(var x=this._invKeySchedule=[],_=0;_>>24]]^D[C[w>>>16&255]]^f[C[w>>>8&255]]^y[C[w&255]]}}},encryptBlock:function(w,M){this._doCryptBlock(w,M,this._keySchedule,T,k,S,E,C)},decryptBlock:function(w,M){var z=w[M+1];w[M+1]=w[M+3],w[M+3]=z,this._doCryptBlock(w,M,this._invKeySchedule,r,D,f,y,c);var z=w[M+1];w[M+1]=w[M+3],w[M+3]=z},_doCryptBlock:function(w,M,z,G,Y,N,K,p){for(var x=this._nRounds,_=w[M]^z[0],B=w[M+1]^z[1],R=w[M+2]^z[2],X=w[M+3]^z[3],J=4,ne=1;ne>>24]^Y[B>>>16&255]^N[R>>>8&255]^K[X&255]^z[J++],me=G[B>>>24]^Y[R>>>16&255]^N[X>>>8&255]^K[_&255]^z[J++],Ae=G[R>>>24]^Y[X>>>16&255]^N[_>>>8&255]^K[B&255]^z[J++],q=G[X>>>24]^Y[_>>>16&255]^N[B>>>8&255]^K[R&255]^z[J++];_=le,B=me,R=Ae,X=q}var le=(p[_>>>24]<<24|p[B>>>16&255]<<16|p[R>>>8&255]<<8|p[X&255])^z[J++],me=(p[B>>>24]<<24|p[R>>>16&255]<<16|p[X>>>8&255]<<8|p[_&255])^z[J++],Ae=(p[R>>>24]<<24|p[X>>>16&255]<<16|p[_>>>8&255]<<8|p[B&255])^z[J++],q=(p[X>>>24]<<24|p[_>>>16&255]<<16|p[B>>>8&255]<<8|p[R&255])^z[J++];w[M]=le,w[M+1]=me,w[M+2]=Ae,w[M+3]=q},keySize:256/32});s.AES=A._createHelper(g)}(),t.AES})}(as,as.exports)),as.exports}var os={exports:{}};os.exports;var Nd;function tg(){return Nd||(Nd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),ja(),Wa(),ka(),Ji())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.WordArray,b=u.BlockCipher,C=s.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],T=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],k=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],S=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],E=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],r=C.DES=b.extend({_doReset:function(){for(var Q=this._key,g=Q.words,w=[],M=0;M<56;M++){var z=c[M]-1;w[M]=g[z>>>5]>>>31-z%32&1}for(var G=this._subKeys=[],Y=0;Y<16;Y++){for(var N=G[Y]=[],K=k[Y],M=0;M<24;M++)N[M/6|0]|=w[(T[M]-1+K)%28]<<31-M%6,N[4+(M/6|0)]|=w[28+(T[M+24]-1+K)%28]<<31-M%6;N[0]=N[0]<<1|N[0]>>>31;for(var M=1;M<7;M++)N[M]=N[M]>>>(M-1)*4+3;N[7]=N[7]<<5|N[7]>>>27}for(var p=this._invSubKeys=[],M=0;M<16;M++)p[M]=G[15-M]},encryptBlock:function(Q,g){this._doCryptBlock(Q,g,this._subKeys)},decryptBlock:function(Q,g){this._doCryptBlock(Q,g,this._invSubKeys)},_doCryptBlock:function(Q,g,w){this._lBlock=Q[g],this._rBlock=Q[g+1],D.call(this,4,252645135),D.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),D.call(this,1,1431655765);for(var M=0;M<16;M++){for(var z=w[M],G=this._lBlock,Y=this._rBlock,N=0,K=0;K<8;K++)N|=S[K][((Y^z[K])&E[K])>>>0];this._lBlock=Y,this._rBlock=G^N}var p=this._lBlock;this._lBlock=this._rBlock,this._rBlock=p,D.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),D.call(this,16,65535),D.call(this,4,252645135),Q[g]=this._lBlock,Q[g+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function D(Q,g){var w=(this._lBlock>>>Q^this._rBlock)&g;this._rBlock^=w,this._lBlock^=w<>>Q^this._lBlock)&g;this._lBlock^=w,this._rBlock^=w<192.");var w=g.slice(0,2),M=g.length<4?g.slice(0,2):g.slice(2,4),z=g.length<6?g.slice(0,2):g.slice(4,6);this._des1=r.createEncryptor(A.create(w)),this._des2=r.createEncryptor(A.create(M)),this._des3=r.createEncryptor(A.create(z))},encryptBlock:function(Q,g){this._des1.encryptBlock(Q,g),this._des2.decryptBlock(Q,g),this._des3.encryptBlock(Q,g)},decryptBlock:function(Q,g){this._des3.decryptBlock(Q,g),this._des2.encryptBlock(Q,g),this._des1.decryptBlock(Q,g)},keySize:192/32,ivSize:64/32,blockSize:64/32});s.TripleDES=b._createHelper(y)}(),t.TripleDES})}(os,os.exports)),os.exports}var ss={exports:{}};ss.exports;var Hd;function ng(){return Hd||(Hd=1,function(d,i){(function(t,s,u){d.exports=s(ei(),ja(),Wa(),ka(),Ji())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.StreamCipher,b=s.algo,C=b.RC4=A.extend({_doReset:function(){for(var k=this._key,S=k.words,E=k.sigBytes,r=this._S=[],D=0;D<256;D++)r[D]=D;for(var D=0,f=0;D<256;D++){var y=D%E,Q=S[y>>>2]>>>24-y%4*8&255;f=(f+r[D]+Q)%256;var g=r[D];r[D]=r[f],r[f]=g}this._i=this._j=0},_doProcessBlock:function(k,S){k[S]^=c.call(this)},keySize:256/32,ivSize:0});function c(){for(var k=this._S,S=this._i,E=this._j,r=0,D=0;D<4;D++){S=(S+1)%256,E=(E+k[S])%256;var f=k[S];k[S]=k[E],k[E]=f,r|=k[(k[S]+k[E])%256]<<24-D*8}return this._i=S,this._j=E,r}s.RC4=A._createHelper(C);var T=b.RC4Drop=C.extend({cfg:C.cfg.extend({drop:192}),_doReset:function(){C._doReset.call(this);for(var k=this.cfg.drop;k>0;k--)c.call(this)}});s.RC4Drop=A._createHelper(T)}(),t.RC4})}(ss,ss.exports)),ss.exports}var ls={exports:{}};ls.exports;var Od;function ig(){return Od||(Od=1,function(d,i){(function(t,s,u){d.exports=s(ei(),ja(),Wa(),ka(),Ji())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.StreamCipher,b=s.algo,C=[],c=[],T=[],k=b.Rabbit=A.extend({_doReset:function(){for(var E=this._key.words,r=this.cfg.iv,D=0;D<4;D++)E[D]=(E[D]<<8|E[D]>>>24)&16711935|(E[D]<<24|E[D]>>>8)&4278255360;var f=this._X=[E[0],E[3]<<16|E[2]>>>16,E[1],E[0]<<16|E[3]>>>16,E[2],E[1]<<16|E[0]>>>16,E[3],E[2]<<16|E[1]>>>16],y=this._C=[E[2]<<16|E[2]>>>16,E[0]&4294901760|E[1]&65535,E[3]<<16|E[3]>>>16,E[1]&4294901760|E[2]&65535,E[0]<<16|E[0]>>>16,E[2]&4294901760|E[3]&65535,E[1]<<16|E[1]>>>16,E[3]&4294901760|E[0]&65535];this._b=0;for(var D=0;D<4;D++)S.call(this);for(var D=0;D<8;D++)y[D]^=f[D+4&7];if(r){var Q=r.words,g=Q[0],w=Q[1],M=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360,z=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,G=M>>>16|z&4294901760,Y=z<<16|M&65535;y[0]^=M,y[1]^=G,y[2]^=z,y[3]^=Y,y[4]^=M,y[5]^=G,y[6]^=z,y[7]^=Y;for(var D=0;D<4;D++)S.call(this)}},_doProcessBlock:function(E,r){var D=this._X;S.call(this),C[0]=D[0]^D[5]>>>16^D[3]<<16,C[1]=D[2]^D[7]>>>16^D[5]<<16,C[2]=D[4]^D[1]>>>16^D[7]<<16,C[3]=D[6]^D[3]>>>16^D[1]<<16;for(var f=0;f<4;f++)C[f]=(C[f]<<8|C[f]>>>24)&16711935|(C[f]<<24|C[f]>>>8)&4278255360,E[r+f]^=C[f]},blockSize:128/32,ivSize:64/32});function S(){for(var E=this._X,r=this._C,D=0;D<8;D++)c[D]=r[D];r[0]=r[0]+1295307597+this._b|0,r[1]=r[1]+3545052371+(r[0]>>>0>>0?1:0)|0,r[2]=r[2]+886263092+(r[1]>>>0>>0?1:0)|0,r[3]=r[3]+1295307597+(r[2]>>>0>>0?1:0)|0,r[4]=r[4]+3545052371+(r[3]>>>0>>0?1:0)|0,r[5]=r[5]+886263092+(r[4]>>>0>>0?1:0)|0,r[6]=r[6]+1295307597+(r[5]>>>0>>0?1:0)|0,r[7]=r[7]+3545052371+(r[6]>>>0>>0?1:0)|0,this._b=r[7]>>>0>>0?1:0;for(var D=0;D<8;D++){var f=E[D]+r[D],y=f&65535,Q=f>>>16,g=((y*y>>>17)+y*Q>>>15)+Q*Q,w=((f&4294901760)*f|0)+((f&65535)*f|0);T[D]=g^w}E[0]=T[0]+(T[7]<<16|T[7]>>>16)+(T[6]<<16|T[6]>>>16)|0,E[1]=T[1]+(T[0]<<8|T[0]>>>24)+T[7]|0,E[2]=T[2]+(T[1]<<16|T[1]>>>16)+(T[0]<<16|T[0]>>>16)|0,E[3]=T[3]+(T[2]<<8|T[2]>>>24)+T[1]|0,E[4]=T[4]+(T[3]<<16|T[3]>>>16)+(T[2]<<16|T[2]>>>16)|0,E[5]=T[5]+(T[4]<<8|T[4]>>>24)+T[3]|0,E[6]=T[6]+(T[5]<<16|T[5]>>>16)+(T[4]<<16|T[4]>>>16)|0,E[7]=T[7]+(T[6]<<8|T[6]>>>24)+T[5]|0}s.Rabbit=A._createHelper(k)}(),t.Rabbit})}(ls,ls.exports)),ls.exports}var us={exports:{}};us.exports;var Ud;function rg(){return Ud||(Ud=1,function(d,i){(function(t,s,u){d.exports=s(ei(),ja(),Wa(),ka(),Ji())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.StreamCipher,b=s.algo,C=[],c=[],T=[],k=b.RabbitLegacy=A.extend({_doReset:function(){var E=this._key.words,r=this.cfg.iv,D=this._X=[E[0],E[3]<<16|E[2]>>>16,E[1],E[0]<<16|E[3]>>>16,E[2],E[1]<<16|E[0]>>>16,E[3],E[2]<<16|E[1]>>>16],f=this._C=[E[2]<<16|E[2]>>>16,E[0]&4294901760|E[1]&65535,E[3]<<16|E[3]>>>16,E[1]&4294901760|E[2]&65535,E[0]<<16|E[0]>>>16,E[2]&4294901760|E[3]&65535,E[1]<<16|E[1]>>>16,E[3]&4294901760|E[0]&65535];this._b=0;for(var y=0;y<4;y++)S.call(this);for(var y=0;y<8;y++)f[y]^=D[y+4&7];if(r){var Q=r.words,g=Q[0],w=Q[1],M=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360,z=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,G=M>>>16|z&4294901760,Y=z<<16|M&65535;f[0]^=M,f[1]^=G,f[2]^=z,f[3]^=Y,f[4]^=M,f[5]^=G,f[6]^=z,f[7]^=Y;for(var y=0;y<4;y++)S.call(this)}},_doProcessBlock:function(E,r){var D=this._X;S.call(this),C[0]=D[0]^D[5]>>>16^D[3]<<16,C[1]=D[2]^D[7]>>>16^D[5]<<16,C[2]=D[4]^D[1]>>>16^D[7]<<16,C[3]=D[6]^D[3]>>>16^D[1]<<16;for(var f=0;f<4;f++)C[f]=(C[f]<<8|C[f]>>>24)&16711935|(C[f]<<24|C[f]>>>8)&4278255360,E[r+f]^=C[f]},blockSize:128/32,ivSize:64/32});function S(){for(var E=this._X,r=this._C,D=0;D<8;D++)c[D]=r[D];r[0]=r[0]+1295307597+this._b|0,r[1]=r[1]+3545052371+(r[0]>>>0>>0?1:0)|0,r[2]=r[2]+886263092+(r[1]>>>0>>0?1:0)|0,r[3]=r[3]+1295307597+(r[2]>>>0>>0?1:0)|0,r[4]=r[4]+3545052371+(r[3]>>>0>>0?1:0)|0,r[5]=r[5]+886263092+(r[4]>>>0>>0?1:0)|0,r[6]=r[6]+1295307597+(r[5]>>>0>>0?1:0)|0,r[7]=r[7]+3545052371+(r[6]>>>0>>0?1:0)|0,this._b=r[7]>>>0>>0?1:0;for(var D=0;D<8;D++){var f=E[D]+r[D],y=f&65535,Q=f>>>16,g=((y*y>>>17)+y*Q>>>15)+Q*Q,w=((f&4294901760)*f|0)+((f&65535)*f|0);T[D]=g^w}E[0]=T[0]+(T[7]<<16|T[7]>>>16)+(T[6]<<16|T[6]>>>16)|0,E[1]=T[1]+(T[0]<<8|T[0]>>>24)+T[7]|0,E[2]=T[2]+(T[1]<<16|T[1]>>>16)+(T[0]<<16|T[0]>>>16)|0,E[3]=T[3]+(T[2]<<8|T[2]>>>24)+T[1]|0,E[4]=T[4]+(T[3]<<16|T[3]>>>16)+(T[2]<<16|T[2]>>>16)|0,E[5]=T[5]+(T[4]<<8|T[4]>>>24)+T[3]|0,E[6]=T[6]+(T[5]<<16|T[5]>>>16)+(T[4]<<16|T[4]>>>16)|0,E[7]=T[7]+(T[6]<<8|T[6]>>>24)+T[5]|0}s.RabbitLegacy=A._createHelper(k)}(),t.RabbitLegacy})}(us,us.exports)),us.exports}var cs={exports:{}};cs.exports;var $d;function ag(){return $d||($d=1,function(d,i){(function(t,s,u){d.exports=s(ei(),ja(),Wa(),ka(),Ji())})(Tn,function(t){return function(){var s=t,u=s.lib,A=u.BlockCipher,b=s.algo;const C=16,c=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],T=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var k={pbox:[],sbox:[]};function S(y,Q){let g=Q>>24&255,w=Q>>16&255,M=Q>>8&255,z=Q&255,G=y.sbox[0][g]+y.sbox[1][w];return G=G^y.sbox[2][M],G=G+y.sbox[3][z],G}function E(y,Q,g){let w=Q,M=g,z;for(let G=0;G1;--G)w=w^y.pbox[G],M=S(y,w)^M,z=w,w=M,M=z;return z=w,w=M,M=z,M=M^y.pbox[1],w=w^y.pbox[0],{left:w,right:M}}function D(y,Q,g){for(let Y=0;Y<4;Y++){y.sbox[Y]=[];for(let N=0;N<256;N++)y.sbox[Y][N]=T[Y][N]}let w=0;for(let Y=0;Y=g&&(w=0);let M=0,z=0,G=0;for(let Y=0;Y=s);)++u;if(u-i>16&&d.subarray&&Vd)return Vd.decode(d.subarray(i,u));for(var A="";i>10,56320|T&1023)}}return A}function Kd(d,i){return d?Cg(ps,d,i):""}function bg(d,i,t,s){if(!(s>0))return 0;for(var u=t,A=t+s-1,b=0;b=55296&&C<=57343){var c=d.charCodeAt(++b);C=65536+((C&1023)<<10)|c&1023}if(C<=127){if(t>=A)break;i[t++]=C}else if(C<=2047){if(t+1>=A)break;i[t++]=192|C>>6,i[t++]=128|C&63}else if(C<=65535){if(t+2>=A)break;i[t++]=224|C>>12,i[t++]=128|C>>6&63,i[t++]=128|C&63}else{if(t+3>=A)break;i[t++]=240|C>>18,i[t++]=128|C>>12&63,i[t++]=128|C>>6&63,i[t++]=128|C&63}}return i[t]=0,t-u}function _g(d,i,t){return bg(d,ps,i,t)}function Eg(d,i){Jd.set(d,i)}function Ig(d,i){return d%i>0&&(d+=i-d%i),d}var Gd,Jd,ps;function Xd(d){Gd=d,Ze.HEAP8=Jd=new Int8Array(d),Ze.HEAP16=new Int16Array(d),Ze.HEAP32=new Int32Array(d),Ze.HEAPU8=ps=new Uint8Array(d),Ze.HEAPU16=new Uint16Array(d),Ze.HEAPU32=new Uint32Array(d),Ze.HEAPF32=new Float32Array(d),Ze.HEAPF64=new Float64Array(d)}Ze.INITIAL_MEMORY;var ya,Zd=[],ef=[],wg=[],tf=[];ef.push({func:function(){df()}});function kg(){if(Ze.preRun)for(typeof Ze.preRun=="function"&&(Ze.preRun=[Ze.preRun]);Ze.preRun.length;)Tg(Ze.preRun.shift());ms(Zd)}function Sg(){ms(ef)}function Bg(){ms(wg)}function Dg(){if(Ze.postRun)for(typeof Ze.postRun=="function"&&(Ze.postRun=[Ze.postRun]);Ze.postRun.length;)Lg(Ze.postRun.shift());ms(tf)}function Tg(d){Zd.unshift(d)}function Lg(d){tf.unshift(d)}var za=0,gs=null;function Fg(d){za++,Ze.monitorRunDependencies&&Ze.monitorRunDependencies(za)}function Mg(d){if(za--,Ze.monitorRunDependencies&&Ze.monitorRunDependencies(za),za==0&&gs){var i=gs;gs=null,i()}}Ze.preloadedImages={},Ze.preloadedAudios={};function rl(d){Ze.onAbort&&Ze.onAbort(d),d+="",fs(d),qd=!0,d="abort("+d+"). Build with -s ASSERTIONS=1 for more info.";var i=new WebAssembly.RuntimeError(d);throw i}function Qg(d,i){return String.prototype.startsWith?d.startsWith(i):d.indexOf(i)===0}var Pg="data:application/octet-stream;base64,";function nf(d){return Qg(d,Pg)}var ca="libFrontBasicAlg.wasm";nf(ca)||(ca=cg(ca));function rf(d){try{if(d==ca&&hs)return new Uint8Array(hs);if(!dg)throw"both async and sync fetching of the wasm failed"}catch(i){rl(i)}}function Rg(){return!hs&&ug&&typeof fetch=="function"?fetch(ca,{credentials:"same-origin"}).then(function(d){if(!d.ok)throw"failed to load wasm binary file at '"+ca+"'";return d.arrayBuffer()}).catch(function(){return rf(ca)}):Promise.resolve().then(function(){return rf(ca)})}function Ng(){var d={a:Ug};function i(b,C){var c=b.exports;Ze.asm=c,il=Ze.asm.c,Xd(il.buffer),ya=Ze.asm.o,Mg()}Fg();function t(b){i(b.instance)}function s(b){return Rg().then(function(C){return WebAssembly.instantiate(C,d)}).then(b,function(C){fs("failed to asynchronously prepare wasm: "+C),rl(C)})}function u(){return!hs&&typeof WebAssembly.instantiateStreaming=="function"&&!nf(ca)&&typeof fetch=="function"?fetch(ca,{credentials:"same-origin"}).then(function(b){var C=WebAssembly.instantiateStreaming(b,d);return C.then(t,function(c){return fs("wasm streaming compile failed: "+c),fs("falling back to ArrayBuffer instantiation"),s(t)})}):s(t)}if(Ze.instantiateWasm)try{var A=Ze.instantiateWasm(d,i);return A}catch(b){return fs("Module.instantiateWasm callback failed with error: "+b),!1}return u(),{}}function ms(d){for(;d.length>0;){var i=d.shift();if(typeof i=="function"){i(Ze);continue}var t=i.func;typeof t=="number"?i.arg===void 0?ya.get(t)():ya.get(t)(i.arg):t(i.arg===void 0?null:i.arg)}}Ze.callRuntimeCallbacks=ms;function Hg(d){return d}Ze.demangle=Hg;function af(d){var i=/\b_Z[\w\d_]+/g;return d.replace(i,function(t){var s=t;return t===s?t:s+" ["+t+"]"})}Ze.demangleAll=af;function of(){var d=new Error;if(!d.stack){try{throw new Error}catch(i){d=i}if(!d.stack)return"(no stack trace available)"}return d.stack.toString()}Ze.jsStackTrace=of;function Og(){var d=of();return Ze.extraStackTrace&&(d+=` +`+Ze.extraStackTrace()),af(d)}Ze.stackTrace=Og;function sf(d,i,t){ps.copyWithin(d,i,i+t)}Ze._emscripten_memcpy_big=sf;function lf(){return ps.length}Ze._emscripten_get_heap_size=lf;function uf(d){try{return il.grow(d-Gd.byteLength+65535>>>16),Xd(il.buffer),1}catch(i){}}Ze.emscripten_realloc_buffer=uf;function cf(d){var i=lf(),t=2147483648;if(d>t)return!1;for(var s=1;s<=4;s*=2){var u=i*(1+.2/s);u=Math.min(u,d+100663296);var A=Math.min(t,Ig(Math.max(d,u),65536)),b=uf(A);if(b)return!0}return!1}Ze._emscripten_resize_heap=cf;var Ug={a:sf,b:cf};Ng();var df=Ze.___wasm_call_ctors=function(){return(df=Ze.___wasm_call_ctors=Ze.asm.d).apply(null,arguments)};Ze._LCOldContentV1=function(){return(Ze._LCOldContentV1=Ze.asm.e).apply(null,arguments)},Ze._LCOldContentV2=function(){return(Ze._LCOldContentV2=Ze.asm.f).apply(null,arguments)},Ze._LCContent=function(){return(Ze._LCContent=Ze.asm.g).apply(null,arguments)},Ze._LCBaseSignature=function(){return(Ze._LCBaseSignature=Ze.asm.h).apply(null,arguments)},Ze._malloc=function(){return(Ze._malloc=Ze.asm.i).apply(null,arguments)},Ze._free=function(){return(Ze._free=Ze.asm.j).apply(null,arguments)},Ze._LCFileUploadSignature=function(){return(Ze._LCFileUploadSignature=Ze.asm.k).apply(null,arguments)},Ze._LCOMSSignatureByUserName=function(){return(Ze._LCOMSSignatureByUserName=Ze.asm.l).apply(null,arguments)},Ze._LCOMSSignatureByPassword=function(){return(Ze._LCOMSSignatureByPassword=Ze.asm.m).apply(null,arguments)},Ze._LCDUBHESignature=function(){return(Ze._LCDUBHESignature=Ze.asm.n).apply(null,arguments)},Ze.___errno_location=function(){return(Ze.___errno_location=Ze.asm.p).apply(null,arguments)};var ff=Ze.stackSave=function(){return(ff=Ze.stackSave=Ze.asm.q).apply(null,arguments)},hf=Ze.stackRestore=function(){return(hf=Ze.stackRestore=Ze.asm.r).apply(null,arguments)},ru=Ze.stackAlloc=function(){return(ru=Ze.stackAlloc=Ze.asm.s).apply(null,arguments)};Ze.cwrap=xg,Ze.UTF8ToString=Kd,Ze.addFunction=gg;var al;gs=function d(){al||au(),al||(gs=d)};function au(d){if(za>0||(kg(),za>0))return;function i(){al||(al=!0,Ze.calledRun=!0,!qd&&(Sg(),Bg(),Ze.onRuntimeInitialized&&Ze.onRuntimeInitialized(),Dg()))}Ze.setStatus?(Ze.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Ze.setStatus("")},1),i()},1)):i()}if(Ze.run=au,Ze.preInit)for(typeof Ze.preInit=="function"&&(Ze.preInit=[Ze.preInit]);Ze.preInit.length>0;)Ze.preInit.pop()();au();var ou={exports:{}},pf=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&typeof window.msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto);if(pf){var gf=new Uint8Array(16);ou.exports=function(){return pf(gf),gf}}else{var mf=new Array(16);ou.exports=function(){for(var i=0,t;i<16;i++)(i&3)===0&&(t=Math.random()*4294967296),mf[i]=t>>>((i&3)<<3)&255;return mf}}for(var yf=ou.exports,$g=Ni(yf),jg=ai({__proto__:null,default:$g},[yf]),Af=rr(jg),vf=[],ol=0;ol<256;++ol)vf[ol]=(ol+256).toString(16).substr(1);function Wg(d,i){var t=i||0,s=vf;return[s[d[t++]],s[d[t++]],s[d[t++]],s[d[t++]],"-",s[d[t++]],s[d[t++]],"-",s[d[t++]],s[d[t++]],"-",s[d[t++]],s[d[t++]],"-",s[d[t++]],s[d[t++]],s[d[t++]],s[d[t++]],s[d[t++]],s[d[t++]]].join("")}var xf=Wg,zg=Ni(xf),qg=ai({__proto__:null,default:zg},[xf]),Cf=rr(qg),Yg=Af,Vg=Cf,bf,su,lu=0,uu=0;function Kg(d,i,t){var s=i&&t||0,u=i||[];d=d||{};var A=d.node||bf,b=d.clockseq!==void 0?d.clockseq:su;if(A==null||b==null){var C=Yg();A==null&&(A=bf=[C[0]|1,C[1],C[2],C[3],C[4],C[5]]),b==null&&(b=su=(C[6]<<8|C[7])&16383)}var c=d.msecs!==void 0?d.msecs:new Date().getTime(),T=d.nsecs!==void 0?d.nsecs:uu+1,k=c-lu+(T-uu)/1e4;if(k<0&&d.clockseq===void 0&&(b=b+1&16383),(k<0||c>lu)&&d.nsecs===void 0&&(T=0),T>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");lu=c,uu=T,su=b,c+=122192928e5;var S=((c&268435455)*1e4+T)%4294967296;u[s++]=S>>>24&255,u[s++]=S>>>16&255,u[s++]=S>>>8&255,u[s++]=S&255;var E=c/4294967296*1e4&268435455;u[s++]=E>>>8&255,u[s++]=E&255,u[s++]=E>>>24&15|16,u[s++]=E>>>16&255,u[s++]=b>>>8|128,u[s++]=b&255;for(var r=0;r<6;++r)u[s+r]=A[r];return i||Vg(u)}var _f=Kg,Gg=Ni(_f),Jg=ai({__proto__:null,default:Gg},[_f]),Xg=rr(Jg),Zg=Af,em=Cf;function tm(d,i,t){var s=i&&t||0;typeof d=="string"&&(i=d==="binary"?new Array(16):null,d=null),d=d||{};var u=d.random||(d.rng||Zg)();if(u[6]=u[6]&15|64,u[8]=u[8]&63|128,i)for(var A=0;A<16;++A)i[s+A]=u[A];return i||em(u)}var Ef=tm,nm=Ni(Ef),im=ai({__proto__:null,default:nm},[Ef]),rm=rr(im),am=Xg,If=rm,cu=If;cu.v1=am,cu.v4=If;var om=cu;let sm=0;function lm(){const d=om.v4().replace(/-/g,"");return Date.now()+d}function um(d){const i=u=>u<10?"0"+u:u;var t=d.getUTCFullYear()+"-"+i(d.getUTCMonth()+1)+"-"+i(d.getUTCDate()),s=i(d.getUTCHours())+":"+i(d.getUTCMinutes())+":"+i(d.getUTCSeconds());return t+"T"+s+"Z"}function cm(d){const i=d||sm;return um(new Date(Date.now()+i))}function dm(d){Ze.onRuntimeInitialized=d}function xr(d){let t=new TextEncoder().encode(d),s=new Uint8Array(t.length);s.set(t);let u=Ze._malloc(s.length+1);return Ze.HEAPU8.set(s,u),Ze.HEAPU8[u+t.length]=0,u}function fm(d){const i=xr(d),t=Ze._malloc(512),s=Ze._LCOldContentV2(i,t);let u=!1;return s===0&&(u=Ze.UTF8ToString(t)),Ze._free(i),Ze._free(t),u}function hm({type:d,env:i,method:t,url:s,content:u,contentType:A,apiver:b,clientUA:C,nonce:c,date:T,session:k,username:S,password:E}){const r=xr(d),D=xr(i),f=xr(t),y=xr(s),Q=xr(u),g=xr(A),w=xr(b||""),M=xr(C||""),z=xr(c),G=xr(T),Y=xr(k||""),N=xr(S),K=xr(E||""),p=Ze._malloc(512),x=Ze._LCBaseSignature(r,D,f,y,Q,g,w,M,z,G,Y,N,K,p);let _=!1;return x===0&&(_=Ze.UTF8ToString(p)),Ze._free(r),Ze._free(D),Ze._free(f),Ze._free(y),Ze._free(Q),Ze._free(g),Ze._free(w),Ze._free(M),Ze._free(z),Ze._free(G),Ze._free(Y),Ze._free(N),Ze._free(K),Ze._free(p),_}const pm="https://openapi.lechange.cn";let wf=!1;dm(()=>{wf=!0});const gm=(d,i)=>new Promise(t=>{let s=null;s=setInterval(()=>{if(wf){clearInterval(s);const A=u();t(A)}});const u=()=>{const A=lm(),b=cm(),C="openDefault\\7AbRle427K36nWUii8VUvMfsXabRnxrl",c=fm(JSON.stringify(i)),T="application/json;charset=UTF-8",k=jd.enc.Base64.stringify(jd.enc.Utf8.parse(JSON.stringify({clientVersion:Wd}))),S=hm({type:"imouopen_webapp",env:"online",method:"POST",url:d,content:c,contentType:T,apiver:"",clientUA:"",nonce:A,date:b,session:"",username:C,password:""});return{"Content-MD5":c,"Content-Type":T,"x-pcs-date":b,"x-pcs-signature":S,"x-pcs-username":C,"x-pcs-nonce":A,"x-pcs-client-ua":k}}}),Aa=(d,i,t="")=>Ar(this,null,function*(){const s=yield gm(d,i);return new Promise((u,A)=>{Dp({url:`${pm}${d}`,method:"post",data:i,headers:s}).then(b=>u(b||!0)).catch(b=>u(b))})});var sl={exports:{}};sl.exports,function(d,i){(function(t,s){d.exports=s()})(Tn,function(){var t=1e3,s=6e4,u=36e5,A="millisecond",b="second",C="minute",c="hour",T="day",k="week",S="month",E="quarter",r="year",D="date",f="Invalid Date",y=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,Q=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var X=["th","st","nd","rd"],J=R%100;return"["+R+(X[(J-20)%10]||X[J]||X[0])+"]"}},w=function(R,X,J){var ne=String(R);return!ne||ne.length>=X?R:""+Array(X+1-ne.length).join(J)+R},M={s:w,z:function(R){var X=-R.utcOffset(),J=Math.abs(X),ne=Math.floor(J/60),le=J%60;return(X<=0?"+":"-")+w(ne,2,"0")+":"+w(le,2,"0")},m:function R(X,J){if(X.date()1)return R(Ae[0])}else{var q=X.name;G[q]=X,le=q}return!ne&&le&&(z=le),le||!ne&&z},p=function(R,X){if(N(R))return R.clone();var J=typeof X=="object"?X:{};return J.date=R,J.args=arguments,new _(J)},x=M;x.l=K,x.i=N,x.w=function(R,X){return p(R,{locale:X.$L,utc:X.$u,x:X.$x,$offset:X.$offset})};var _=function(){function R(J){this.$L=K(J.locale,null,!0),this.parse(J),this.$x=this.$x||J.x||{},this[Y]=!0}var X=R.prototype;return X.parse=function(J){this.$d=function(ne){var le=ne.date,me=ne.utc;if(le===null)return new Date(NaN);if(x.u(le))return new Date;if(le instanceof Date)return new Date(le);if(typeof le=="string"&&!/Z$/i.test(le)){var Ae=le.match(y);if(Ae){var q=Ae[2]-1||0,Z=(Ae[7]||"0").substring(0,3);return me?new Date(Date.UTC(Ae[1],q,Ae[3]||1,Ae[4]||0,Ae[5]||0,Ae[6]||0,Z)):new Date(Ae[1],q,Ae[3]||1,Ae[4]||0,Ae[5]||0,Ae[6]||0,Z)}}return new Date(le)}(J),this.init()},X.init=function(){var J=this.$d;this.$y=J.getFullYear(),this.$M=J.getMonth(),this.$D=J.getDate(),this.$W=J.getDay(),this.$H=J.getHours(),this.$m=J.getMinutes(),this.$s=J.getSeconds(),this.$ms=J.getMilliseconds()},X.$utils=function(){return x},X.isValid=function(){return this.$d.toString()!==f},X.isSame=function(J,ne){var le=p(J);return this.startOf(ne)<=le&&le<=this.endOf(ne)},X.isAfter=function(J,ne){return p(J){const{token:i,deviceId:t="",channelId:s="",type:u="",streamId:A="",beginTime:b="",endTime:C="",recordType:c="",webrtc:T="",domain:k,encryptStream:S=!0,streamType:E=""}=d,r=Gt.getRandomString();let D=u=="1"?"real":c==="localRecord"?"localRecord":"cloudRecord";D=T?"talk":D;let f={kitToken:i,deviceId:t,channelId:s,streamId:A,businessType:D,beginTime:b,endTime:C,webrtc:T,rtsvEnable:!0,encryptStreamFlag:S};return E&&(f.protoType=E),Aa("/openapi/getEncryptKitStreamUrl",{id:r,params:f},k)},Am=d=>{const{token:i,deviceId:t,channelId:s,type:u,streamId:A,beginTime:b,endTime:C,recordType:c,tid:T,domain:k}=d,S=Gt.getRandomString(),E=An(b).format("YYYY_MM_DD_HH_mm_ss"),r=An(C).format("YYYY_MM_DD_HH_mm_ss"),D=u=="1"?"live":c==="localRecord"?"local":"cloud";return Aa("/openapi/getDeviceEncryptKey",{id:S,params:{businessType:D,kitToken:i,deviceId:t,channelId:s,streamId:A,beginTime:E,endTime:r,tid:T||"xxxxxxxxxxx"}},k)},vm=d=>Ar(this,null,function*(){var E;const{token:i,deviceId:t,channelId:s,recordType:u,beginTime:A,endTime:b,domain:C}=d,T={id:Gt.getRandomString(),params:{kitToken:i,deviceId:t,channelId:s,recordType:u==="localRecord"?"local":"cloud",beginTime:A,endTime:b}},k=yield Aa("/openapi/queryDeviceRecordsByKitToken",T,C),S=(E=k==null?void 0:k.data)==null?void 0:E.result;return(S==null?void 0:S.code)==="0"?S==null?void 0:S.data:S}),xm=(d,i)=>{const{token:t,deviceId:s,channelId:u,domain:A}=d;return Aa("/openapi/controlMovePTZByKitToken",{params:{kitToken:t,deviceId:s,channelId:u,operation:i}},A)},Cm=d=>{const{token:i,deviceId:t,channelId:s,streamId:u,domain:A,type:b,streamType:C=""}=d,c=Gt.getRandomString();let T={kitToken:i,deviceId:t,channelId:s,streamId:u,businessType:"rtspTalk",talkType:b==="video"?"1":"0",rtsvEnable:!0};return C&&(T.protoType=C),Aa("/openapi/getEncryptKitStreamUrl",{id:c,params:T},A)},ll=d=>Ar(this,null,function*(){var D;const{token:i,deviceId:t,channelId:s,streamId:u,domain:A,recordType:b,year:C,month:c}=d,T=Gt.getRandomString(),k=b==="localRecord"?"queryLocalRecordBitmapByKitToken":"queryCloudRecordBitmapByKitToken",S={id:T,params:{kitToken:i,deviceId:t,channelId:s,streamId:u,year:C,month:c}},E=yield Aa(`/openapi/${k}`,S,A),r=(D=E==null?void 0:E.data)==null?void 0:D.result;return(r==null?void 0:r.code)==="0"?r==null?void 0:r.data:r}),bm=d=>Ar(this,null,function*(){var S;const{token:i,deviceId:t,channelId:s,domain:u,ref:A,content:b={}}=d,c={id:Gt.getRandomString(),params:{kitToken:i,deviceId:t,channelId:s,ref:A,content:b}},T=yield Aa("/openapi/iotDeviceControlByKitToken",c,u),k=(S=T==null?void 0:T.data)==null?void 0:S.result;return(k==null?void 0:k.code)==="0"?k==null?void 0:k.data:k}),_m=d=>{const{logs:i,domain:t}=d,u={id:Gt.getRandomString(),params:{logs:i}};return Aa("/openapi/reportBuryLog",u,t)},Em=d=>{const{domain:i}=d,s={id:Gt.getRandomString(),params:{}};return Aa("/openapi/getBuryConfig",s,i)};var A1="",v1="",du={exports:{}};du.exports,function(d){(function(i){var t,s=i.document,u={modules:{},status:{},timeout:10,event:{}},A=function(){this.v="2.9.18"},b=i.LAYUI_GLOBAL||{},C=(t=s.currentScript&&s.currentScript.tagName.toUpperCase()==="SCRIPT"?s.currentScript.src:function(){for(var E,r=s.getElementsByTagName("script"),D=r.length-1,f=D;01e3*u.timeout/4?c(z+" is not a valid module","error"):void(u.status[z]?N():setTimeout(_,4))}())}function N(){D.push(layui[z]),11e3*u.timeout/4?c(z+" is not a valid module","error"):void(typeof u.modules[z]=="string"&&u.status[z]?N():setTimeout(K,4))}():((y=s.createElement("script")).async=!0,y.charset="utf-8",y.src=Q+((w=u.version===!0?u.v||new Date().getTime():u.version||"")?"?v="+w:""),M.appendChild(y),!y.attachEvent||y.attachEvent.toString&&y.attachEvent.toString().indexOf("[native code")<0||T?y.addEventListener("load",function(K){Y(K,Q)},!1):y.attachEvent("onreadystatechange",function(K){Y(K,Q)}),u.modules[z]=Q)),g},A.prototype.disuse=function(E){var r=this;return E=r.isArray(E)?E:[E],r.each(E,function(D,f){u.status[f],delete r[f],delete k[f],delete r.modules[f],delete u.status[f],delete u.modules[f]}),r},A.prototype.getStyle=function(E,r){return E=E.currentStyle||i.getComputedStyle(E,null),E[E.getPropertyValue?"getPropertyValue":"getAttribute"](r)},A.prototype.link=function(E,r,D){var f=this,y=s.getElementsByTagName("head")[0],Q=s.createElement("link"),g="layuicss-"+((D=typeof r=="string"?r:D)||E).replace(/\.|\//g,""),w="creating",M=0;return Q.href=E+(u.debug?"?v="+new Date().getTime():""),Q.rel="stylesheet",Q.id=g,Q.media="all",s.getElementById(g)||y.appendChild(Q),typeof r=="function"&&function z(G){var Y=s.getElementById(g);return++M>1e3*u.timeout/100?c(E+" timeout"):void(parseInt(f.getStyle(Y,"width"))===1989?(G===w&&Y.removeAttribute("lay-status"),Y.getAttribute("lay-status")===w?setTimeout(z,100):r()):(Y.setAttribute("lay-status",w),setTimeout(function(){z(w)},100)))}(),f},A.prototype.addcss=function(E,r,D){return layui.link(u.dir+"css/"+E,r,D)},u.callback={},A.prototype.factory=function(E){if(layui[E])return typeof u.callback[E]=="function"?u.callback[E]:null},A.prototype.img=function(E,r,D){var f=new Image;if(f.src=E,f.complete)return r(f);f.onload=function(){f.onload=null,typeof r=="function"&&r(f)},f.onerror=function(y){f.onerror=null,typeof D=="function"&&D(y)}},A.prototype.config=function(E){for(var r in E=E||{})u[r]=E[r];return this},A.prototype.modules=function(){var E,r={};for(E in k)r[E]=k[E];return r}(),A.prototype.extend=function(E){for(var r in E=E||{})this[r]||this.modules[r]?c(r+" Module already exists","error"):this.modules[r]=E[r];return this},A.prototype.router=A.prototype.hash=function(E){var r={path:[],search:{},hash:((E=E||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(E)&&(E=E.replace(/^#\//,""),r.href="/"+E,E=E.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(E,function(D,f){/^\w+=/.test(f)?(f=f.split("="),r.search[f[0]]=f[1]):r.path.push(f)})),r},A.prototype.url=function(E){var r,D,f=this;return{pathname:(E?((E.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},D=(E?((E.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),f.each(D,function(y,Q){var g=Q.indexOf("="),w=g<0?Q.substr(0,Q.length):g!==0&&Q.substr(0,g);w&&(r[w]=0(i.innerHeight||s.documentElement.clientHeight)},u.getStyleRules=function(b,C){if(b)return b=(b=b.sheet||b.styleSheet||{}).cssRules||b.rules,typeof C=="function"&&layui.each(b,function(c,T){if(C(T,c))return!0}),b},u.style=function(b){b=b||{};var C=u.elem("style"),c=b.text||"",T=b.target;if(c)return"styleSheet"in C?(C.setAttribute("type","text/css"),C.styleSheet.cssText=c):C.innerHTML=c,C.id="LAY-STYLE-"+(b.id||(c=u.style.index||0,u.style.index++,"DF-"+c)),T&&((b=u(T).find("#"+C.id))[0]&&b.remove(),u(T).append(C)),C},u.position=function(b,C,c){var T,k,S,E,r,D,f,y,Q;C&&(c=c||{},b!==s&&b!==u("body")[0]||(c.clickType="right"),T=c.clickType==="right"?{left:(T=c.e||i.event||{}).clientX,top:T.clientY,right:T.clientX,bottom:T.clientY}:b.getBoundingClientRect(),D=C.offsetWidth,f=C.offsetHeight,k=function(g){return s.body[g=g?"scrollLeft":"scrollTop"]|s.documentElement[g]},S=function(g){return s.documentElement[g?"clientWidth":"clientHeight"]},E="margin"in c?c.margin:5,Q=T.left,r=T.bottom,c.align==="center"?Q-=(D-b.offsetWidth)/2:c.align==="right"&&(Q=Q-D+b.offsetWidth),(Q=Q+D+E>S("width")?S("width")-D-E:Q)S()&&(T.top>f+E&&T.top<=S()?r=T.top-f-2*E:c.allowBottomOut||(r=S()-f-2*E)<0&&(r=0)),(D=c.position)&&(C.style.position=D),f=c.offset?c.offset[0]:0,y=c.offset?c.offset[1]:0,C.style.left=Q+(D==="fixed"?0:k(1))+f+"px",C.style.top=r+(D==="fixed"?0:k())+y+"px",u.hasScrollbar()||(Q=C.getBoundingClientRect(),!c.SYSTEM_RELOAD&&Q.bottom+E>S()&&(c.SYSTEM_RELOAD=!0,setTimeout(function(){u.position(b,C,c)},50))))},u.options=function(T,C){if(C=typeof C=="object"?C:{attr:C},T===s)return{};var T=u(T),c=C.attr||"lay-options",T=T.attr(c);try{return new Function("return "+(T||"{}"))()}catch(k){return layui.hint().error(C.errorText||[c+'="'+T+'"',` + parseerror: `+k].join(` +`),"error"),{}}},u.isTopElem=function(b){var C=[s,u("body")[0]],c=!1;return u.each(C,function(T,k){if(k===b)return c=!0}),c},u.clipboard={writeText:function(b){var C=String(b.text);function c(){var T=s.createElement("textarea");T.value=C,T.style.position="fixed",T.style.opacity="0",T.style.top="0px",T.style.left="0px",s.body.appendChild(T),T.select();try{s.execCommand("copy"),typeof b.done=="function"&&b.done()}catch(k){typeof b.error=="function"&&b.error(k)}finally{T.remove?T.remove():s.body.removeChild(T)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(C).then(b.done,function(){c()}):c()}},u.passiveSupported=function(){var b=!1;try{var C=Object.defineProperty({},"passive",{get:function(){b=!0}});i.addEventListener("test",null,C),i.removeEventListener("test",null,C)}catch(c){}return b}(),u.touchEventsSupported=function(){return"ontouchstart"in i},u.touchSwipe=function(b,C){var c,T,k,S=C,E=u(b)[0];E&&u.touchEventsSupported()&&(c={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},C=function(r){r.touches.length===1&&(E.addEventListener("touchmove",T,!!u.passiveSupported&&{passive:!1}),E.addEventListener("touchend",k),E.addEventListener("touchcancel",k),c.timeStart=Date.now(),c.pointerStart.x=c.pointerEnd.x=r.touches[0].clientX,c.pointerStart.y=c.pointerEnd.y=r.touches[0].clientY,c.distanceX=c.distanceY=0,c.direction="none",S.onTouchStart)&&S.onTouchStart(r,c)},T=function(r){r.preventDefault(),c.pointerEnd.x=r.touches[0].clientX,c.pointerEnd.y=r.touches[0].clientY,c.distanceX=c.pointerStart.x-c.pointerEnd.x,c.distanceY=c.pointerStart.y-c.pointerEnd.y,Math.abs(c.distanceX)>Math.abs(c.distanceY)?c.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(c+="")?c.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):c}},u=function(c){return new RegExp(c,"g")},A=function(c,T){var k="Laytpl Error: ";return typeof console=="object"&&console.error(k+c+` +`+(T||"")),k+c},b=function(S,T){var k=this,S=(k.config=k.config||{},k.template=S,function(E){for(var r in E)k.config[r]=E[r]});S(t),S(T)},C=(b.prototype.tagExp=function(c,T,k){var S=this.config;return u((T||"")+S.open+["#([\\s\\S])+?","([^{#}])*?"][c||0]+S.close+(k||""))},b.prototype.parse=function(c,T){var k=this,S=k.config,E=c,r=u("^"+S.open+"#"),D=u(S.close+"$");if(typeof c!="string")return c;c='"use strict";var view = "'+(c=c.replace(/\s+|\r|\t|\n/g," ").replace(u(S.open+"#"),S.open+"# ").replace(u(S.close+"}"),"} "+S.close).replace(/\\/g,"\\\\").replace(u(S.open+"!(.+?)!"+S.close),function(f){return f=f.replace(u("^"+S.open+"!"),"").replace(u("!"+S.close),"").replace(u(S.open+"|"+S.close),function(y){return y.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(k.tagExp(),function(f){return'";'+(f=f.replace(r,"").replace(D,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(k.tagExp(1),function(f){var y='"+laytpl.escape(';return f.replace(/\s/g,"")===S.open+S.close?"":(f=f.replace(u(S.open+"|"+S.close),""),/^=/.test(f)?f=f.replace(/^=/,""):/^-/.test(f)&&(f=f.replace(/^-/,""),y='"+('),y+f.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return k.cache=c=new Function("d, laytpl",c),c(T,s)}catch(f){return delete k.cache,A(f,E)}},b.prototype.render=function(S,T){S=S||{};var k=this,S=k.cache?k.cache(S,s):k.parse(k.template,S);return typeof T=="function"&&T(S),S},function(c,T){return new b(c,T)});C.config=function(c){for(var T in c=c||{})t[T]=c[T]},C.v="2.0.0",i("laytpl",C)}),layui.define(function(i){var t=document,s="getElementById",u="getElementsByTagName",A="layui-disabled",b=function(c){var T=this;T.config=c||{},T.config.index=++C.index,T.render(!0)},C=(b.prototype.type=function(){var c=this.config;if(typeof c.elem=="object")return c.elem.length===void 0?2:3},b.prototype.view=function(){var c,T,k,S=this.config,E=S.groups="groups"in S?Number(S.groups)||0:5,r=(S.layout=typeof S.layout=="object"?S.layout:["prev","page","next"],S.count=Number(S.count)||0,S.curr=Number(S.curr)||1,S.limits=typeof S.limits=="object"?S.limits:[10,20,30,40,50],S.limit=Number(S.limit)||10,S.pages=Math.ceil(S.count/S.limit)||1,S.curr>S.pages?S.curr=S.pages:S.curr<1&&(S.curr=1),E<0?E=1:E>S.pages&&(E=S.pages),S.prev="prev"in S?S.prev:"\u4E0A\u4E00\u9875",S.next="next"in S?S.next:"\u4E0B\u4E00\u9875",S.pages>E?Math.ceil((S.curr+(1'+S.prev+"":"",page:function(){var f=[];if(S.count<1)return"";1'+(S.first||1)+"");var y=Math.floor((E-1)/2),Q=1S.pages?S.pages:y:E;for(g-Q...');Q<=g;Q++)Q===S.curr?f.push('"+Q+""):f.push(''+Q+"");return S.pages>E&&S.pages>g&&S.last!==!1&&(g+1...'),E!==0)&&f.push(''+(S.last||S.pages)+""),f.join("")}(),next:S.next?''+S.next+"":"",count:''+(T=typeof S.countText=="object"?S.countText:["\u5171 "," \u6761"])[0]+S.count+T[1]+"",limit:(c=['"),refresh:['','',""].join(""),skip:[''+(T=typeof S.skipText=="object"?S.skipText:["\u5230\u7B2C","\u9875","\u786E\u5B9A"])[0],'',T[1]+'",""].join("")};return['
',(k=[],layui.each(S.layout,function(f,y){D[y]&&k.push(D[y])}),k.join("")),"
"].join("")},b.prototype.jump=function(c,T){if(c){var k=this,S=k.config,E=c.children,r=c[u]("button")[0],D=c[u]("input")[0],c=c[u]("select")[0],f=function(){var w=Number(D.value.replace(/\s|\D/g,""));w&&(S.curr=w,k.render())};if(T)return f();for(var y=0,Q=E.length;yS.pages||(S.curr=w,k.render())});c&&C.on(c,"change",function(){var w=this.value;S.curr*w>S.count&&(S.curr=Math.ceil(S.count/w)),S.limit=w,k.render()}),r&&C.on(r,"click",function(){f()})}},b.prototype.skip=function(c){var T,k;c&&(T=this,k=c[u]("input")[0])&&C.on(k,"keyup",function(r){var E=this.value,r=r.keyCode;/^(37|38|39|40)$/.test(r)||(/\D/.test(E)&&(this.value=E.replace(/\D/,"")),r===13&&T.jump(c,!0))})},b.prototype.render=function(c){var T=this,k=T.config,E=T.type(),S=T.view(),E=(E===2?k.elem&&(k.elem.innerHTML=S):E===3?k.elem.html(S):t[s](k.elem)&&(t[s](k.elem).innerHTML=S),k.jump&&k.jump(k,c),t[s]("layui-laypage-"+k.index));T.jump(E),k.hash&&!c&&(location.hash="!"+k.hash+"="+k.curr),T.skip(E)},{render:function(c){return new b(c).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(c,T,k){return c.attachEvent?c.attachEvent("on"+T,function(S){S.target=S.srcElement,k.call(c,S)}):c.addEventListener(T,k,!1),this}});i("laypage",C)}),function(i,t){var s=i.layui&&layui.define,u={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(p,x,_){c.path&&i.lay&&lay.layui&&lay.layui.link(c.path+p,x,_)}},A=i.LAYUI_GLOBAL||{},b="laydate",C="lay-"+b+"-id",c={v:"5.6.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:A.laydate_dir||u.getPath,set:function(p){var x=this;return x.config=lay.extend({},x.config,p),x},ready:function(p){var x="laydate",_=(s?"modules/":"")+"laydate.css?v="+c.v;return s?layui["layui.all"]?typeof p=="function"&&p():layui.addcss(_,p,x):u.link(_,p,x),this}},T=function(){var p=this,x=p.config.id;return(T.that[x]=p).inst={hint:function(_){p.hint.call(p,_)},reload:function(_){p.reload.call(p,_)},config:p.config}},k="layui-this",S="laydate-disabled",E=[100,2e5],r="layui-laydate-static",D="layui-laydate-list",f="laydate-selected",y="layui-laydate-hint",Q="laydate-day-prev",g="laydate-day-next",w=".laydate-btns-confirm",M="laydate-time-text",z="laydate-btns-time",G="layui-laydate-preview",Y="layui-laydate-shade",N=function(p){var x,_=this,B=(_.index=++c.index,_.config=lay.extend({},_.config,c.config,p),lay(p.elem||_.config.elem));return 1\u8BF7\u91CD\u65B0\u9009\u62E9",invalidDate:"\u4E0D\u5728\u6709\u6548\u65E5\u671F\u6216\u65F6\u95F4\u8303\u56F4\u5185",formatError:["\u65E5\u671F\u683C\u5F0F\u4E0D\u5408\u6CD5
\u5FC5\u987B\u9075\u5FAA\u4E0B\u8FF0\u683C\u5F0F\uFF1A
","
\u5DF2\u4E3A\u4F60\u91CD\u7F6E"],preview:"\u5F53\u524D\u9009\u4E2D\u7684\u7ED3\u679C"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
Please re-select",invalidDate:"Invalid date",formatError:["The date format error
Must be followed\uFF1A
","
It has been reset"],preview:"The selected result"}};return p[this.config.lang]||p.cn},N.prototype.markerOfChineseFestivals={"0-1-1":"\u5143\u65E6","0-2-14":"\u60C5\u4EBA","0-3-8":"\u5987\u5973","0-3-12":"\u690D\u6811","0-4-1":"\u611A\u4EBA","0-5-1":"\u52B3\u52A8","0-5-4":"\u9752\u5E74","0-6-1":"\u513F\u7AE5","0-9-10":"\u6559\u5E08","0-10-1":"\u56FD\u5E86","0-12-25":"\u5723\u8BDE"},N.prototype.reload=function(p){this.config=lay.extend({},this.config,p),this.init()},N.prototype.init=function(){var p=this,x=p.config,_=x.position==="static",B={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};x.elem=lay(x.elem),x.eventElem=lay(x.eventElem),x.elem[0]&&(layui.type(x.theme)!=="array"&&(x.theme=[x.theme]),x.fullPanel&&(x.type!=="datetime"||x.range)&&delete x.fullPanel,p.rangeStr=x.range?typeof x.range=="string"?x.range:"-":"",p.rangeLinked=!(!x.range||!x.rangeLinked||x.type!=="date"&&x.type!=="datetime"),p.autoCalendarModel=function(){var R=p.rangeLinked;return p.rangeLinked=x.range&&(x.type==="date"||x.type==="datetime")&&(!p.startDate||!p.endDate||p.startDate&&p.endDate&&p.startDate.year===p.endDate.year&&p.startDate.month===p.endDate.month),lay(p.elem)[p.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),p.rangeLinked!=R},p.autoCalendarModel.auto=p.rangeLinked&&x.rangeLinked==="auto",layui.type(x.range)==="array"&&(p.rangeElem=[lay(x.range[0]),lay(x.range[1])]),B[x.type]||(i.console&&console.error&&console.error("laydate type error:'"+x.type+"' is not supported"),x.type="date"),x.format===B.date&&(x.format=B[x.type]||B.date),p.format=T.formatArr(x.format),x.weekStart&&!/^[0-6]$/.test(x.weekStart)&&(B=p.lang(),x.weekStart=B.weeks.indexOf(x.weekStart),x.weekStart===-1)&&(x.weekStart=0),p.EXP_IF="",p.EXP_SPLIT="",lay.each(p.format,function(R,X){R=new RegExp(K).test(X)?"\\d{"+(new RegExp(K).test(p.format[R===0?R+1:R-1]||"")?/^yyyy|y$/.test(X)?4:X.length:/^yyyy$/.test(X)?"1,4":/^y$/.test(X)?"1,308":"1,2")+"}":"\\"+X,p.EXP_IF=p.EXP_IF+R,p.EXP_SPLIT=p.EXP_SPLIT+"("+R+")"}),p.EXP_IF_ONE=new RegExp("^"+p.EXP_IF+"$"),p.EXP_IF=new RegExp("^"+(x.range?p.EXP_IF+"\\s\\"+p.rangeStr+"\\s"+p.EXP_IF:p.EXP_IF)+"$"),p.EXP_SPLIT=new RegExp("^"+p.EXP_SPLIT+"$",""),p.isInput(x.elem[0])||x.trigger==="focus"&&(x.trigger="click"),x.elem.attr("lay-key",p.index),x.eventElem.attr("lay-key",p.index),x.elem.attr(C,x.id),lay.each(["min","max"],function(le,X){var me=[],Ae=[];if(typeof x[X]=="number")var J=x[X],ne=new Date,ne=p.newDate({year:ne.getFullYear(),month:ne.getMonth(),date:ne.getDate(),hours:le?23:0,minutes:le?59:0,seconds:le?59:0}).getTime(),le=new Date(J?J<864e5?ne+864e5*J:J:ne),me=[le.getFullYear(),le.getMonth()+1,le.getDate()],Ae=[le.getHours(),le.getMinutes(),le.getSeconds()];else if(typeof x[X]=="string")me=(x[X].match(/\d+-\d+-\d+/)||[""])[0].split("-"),Ae=(x[X].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if(typeof x[X]=="object")return x[X];x[X]={year:0|me[0]||new Date().getFullYear(),month:me[1]?(0|me[1])-1:new Date().getMonth(),date:0|me[2]||new Date().getDate(),hours:0|Ae[0],minutes:0|Ae[1],seconds:0|Ae[2]}}),p.elemID="layui-laydate"+x.elem.attr("lay-key"),(x.show||_)&&p.render(),_||p.events(),typeof x.formatToDisplay=="function"&&(p.isInput(x.elem[0])?p.formatToDisplay(x.elem[0],x.formatToDisplay):(B=p.rangeElem)&&(p.formatToDisplay(B[0][0],x.formatToDisplay),p.formatToDisplay(B[1][0],x.formatToDisplay))),x.value)&&x.isInitValue&&(layui.type(x.value)==="date"?p.setValue(p.parse(0,p.systemDate(x.value))):p.setValue(x.value))},N.prototype.render=function(){var p,x,_,B,R=this,X=R.config,J=R.lang(),ne=X.position==="static",le=R.elem=lay.elem("div",{id:R.elemID,class:["layui-laydate",X.range?" layui-laydate-range":"",R.rangeLinked?" layui-laydate-linkage":"",ne?" "+r:"",X.fullPanel?" laydate-theme-fullpanel":"",(p="",lay.each(X.theme,function(O,ee){ee==="default"||/^#/.test(ee)||(p+=" laydate-theme-"+ee)}),p)].join("")}),me=R.elemMain=[],Ae=R.elemHeader=[],q=R.elemCont=[],Z=R.table=[],re=R.footer=lay.elem("div",{class:"layui-laydate-footer"}),Ee=R.shortcut=lay.elem("ul",{class:"layui-laydate-shortcut"}),ae=(X.zIndex&&(le.style.zIndex=X.zIndex),lay.each(new Array(2),function(O){if(!X.range&&0'+J.timeTips+""),(X.range||X.type!=="datetime"||X.fullPanel)&&ae.push(''),lay.each(X.btns,function(O,ee){var ie=J.tools[ee]||"btn";X.range&&ee==="now"||(ne&&ee==="clear"&&(ie=X.lang==="cn"?"\u91CD\u7F6E":"Reset"),x.push(''+ie+""))}),ae.push('"),ae.join(""))),X.shortcuts&&(le.appendChild(Ee),lay(Ee).html((_=[],lay.each(X.shortcuts,function(O,ee){_.push('
  • '+ee.text+"
  • ")}),_.join(""))).find("li").on("click",function(O){var ie=X.shortcuts[this.dataset.index]||{},ie=(typeof ie.value=="function"?ie.value():ie.value)||[],ee=(layui.isArray(ie)||(ie=[ie]),X.type),ie=(lay.each(ie,function(ge,_e){var we=[X.dateTime,R.endDate][ge];ee==="time"&&layui.type(_e)!=="date"?R.EXP_IF.test(_e)&&(_e=(_e.match(R.EXP_SPLIT)||[]).slice(1),lay.extend(we,{hours:0|_e[0],minutes:0|_e[2],seconds:0|_e[4]})):lay.extend(we,R.systemDate(layui.type(_e)==="date"?_e:new Date(_e))),ee!=="time"&&ee!=="datetime"||(R[["startTime","endTime"][ge]]={hours:we.hours,minutes:we.minutes,seconds:we.seconds}),ge===0?R.startDate=lay.extend({},we):R.endState=!0,ee==="year"||ee==="month"||ee==="time"?R.listYM[ge]=[we.year,we.month+1]:ge&&R.autoCalendarModel.auto&&R.autoCalendarModel()}),R.checkDate("limit").calendar(null,null,"init"),lay(R.footer).find("."+z).removeClass(S));ie&&ie.attr("lay-type")==="date"&&ie[0].click(),R.done(null,"change"),lay(this).addClass(k),X.position!=="static"&&R.setValue(R.parse()).done().remove()})),lay.each(me,function(O,ee){le.appendChild(ee)}),X.showBottom&&le.appendChild(re),lay.elem("style")),oe=[],ue=!0,Ee=(lay.each(X.theme,function(O,ee){ue&&/^#/.test(ee)?(ue=!(B=!0),oe.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",X.theme.indexOf("circle")!==-1?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,R.elemID).replace(/{{theme}}/g,ee))):!ue&&/^#/.test(ee)&&oe.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,R.elemID).replace(/{{theme}}/g,ee))}),X.shortcuts&&X.range&&oe.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,R.elemID)),oe.length&&(oe=oe.join(""),"styleSheet"in ae?(ae.setAttribute("type","text/css"),ae.styleSheet.cssText=oe):ae.innerHTML=oe,B&&lay(le).addClass("laydate-theme-molv"),le.appendChild(ae)),R.remove(N.thisElemDate),c.thisId=X.id,ne?X.elem.append(le):(t.body.appendChild(le),R.position()),X.shade?'
    ':"");le.insertAdjacentHTML("beforebegin",Ee),R.checkDate().calendar(null,0,"init"),R.changeEvent(),N.thisElemDate=R.elemID,R.renderAdditional(),typeof X.ready=="function"&&X.ready(lay.extend({},X.dateTime,{month:X.dateTime.month+1})),R.preview()},N.prototype.remove=function(p){var x=this,_=x.config,B=lay("#"+(p||x.elemID));return B[0]&&(B.hasClass(r)||x.checkDate(function(){B.remove(),delete x.startDate,delete x.endDate,delete x.endState,delete x.startTime,delete x.endTime,delete c.thisId,typeof _.close=="function"&&_.close(x)}),lay("."+Y).remove()),x},N.prototype.position=function(){var p=this.config;return lay.position(p.elem[0],this.elem,{position:p.position}),this},N.prototype.hint=function(p){var x=this,_=(x.config,lay.elem("div",{class:y}));x.elem&&(_.innerHTML=(p=typeof p=="object"?p||{}:{content:p}).content||"",lay(x.elem).find("."+y).remove(),x.elem.appendChild(_),clearTimeout(x.hinTimer),x.hinTimer=setTimeout(function(){lay(x.elem).find("."+y).remove()},"ms"in p?p.ms:3e3))},N.prototype.getAsYM=function(p,x,_){return _?x--:x++,x<0&&(x=11,p--),11E[1]&&(ae.year=E[1],_=!0),11x)&&(ae.date=x,_=!0)},re=function(ae,oe,ue){var Ee=["startTime","endTime"];oe=(oe.match(J.EXP_SPLIT)||[]).slice(1),ue=ue||0,ne.range&&(J[Ee[ue]]=J[Ee[ue]]||{}),lay.each(J.format,function(O,ee){var ie=parseFloat(oe[O]);oe[O].lengthJ.getDateTime(ne.max)?(me=ne.dateTime=lay.extend({},ne.max),X=!0):J.getDateTime(me)J.getDateTime(ne.max))&&(J.endDate=lay.extend({},ne.max),X=!0),J.startTime={hours:ne.dateTime.hours,minutes:ne.dateTime.minutes,seconds:ne.dateTime.seconds},J.endTime={hours:J.endDate.hours,minutes:J.endDate.minutes,seconds:J.endDate.seconds},ne.type==="month")&&(ne.dateTime.date=1,J.endDate.date=1),X&&q&&(J.setValue(J.parse()),J.hint("value "+le.invalidDate+le.formatError[1])),J.startDate=J.startDate||q&&lay.extend({},ne.dateTime),J.autoCalendarModel.auto&&J.autoCalendarModel(),J.endState=!ne.range||!J.rangeLinked||!(!J.startDate||!J.endDate),p&&p()),J},N.prototype.markRender=function(p,x,_){var B;typeof _=="object"?lay.each(_||{},function(R,X){R=R.split("-"),R[0]!=x[0]&&R[0]!=0||R[1]!=x[1]&&R[1]!=0||R[2]!=x[2]||(B=X||x[2])}):typeof _=="string"&&(B=_||x[2]),B&&p.find("div").html(''+B+"")},N.prototype.mark=function(p,x){var _=this,B=_.config,R=function(X){_.markRender(p,x,X)};return B.calendar&&B.lang==="cn"&&R(_.markerOfChineseFestivals),typeof B.mark=="function"?B.mark({year:x[0],month:x[1],date:x[2]},R):typeof B.mark=="object"&&R(B.mark),_},N.prototype.holidaysRender=function(p,x,_){var B=["holidays","workdays"],R=function(X,J,ne){X.find("div").html(["",ne,""].join(""))};layui.type(_)==="array"?lay.each(_,function(X,J){lay.each(J,function(ne,le){var me,Ae,q;le=le,me=p.attr("lay-ymd"),Ae=le.split("-"),q=me.split("-"),lay.each(Ae,function(Z,re){Ae[Z]=parseInt(re,10)}),lay.each(q,function(Z,re){q[Z]=parseInt(re,10)}),Ae.join("-")===q.join("-")&&R(p,B[X],x[2])})}):typeof _=="string"&&B.indexOf(_)!==-1&&R(p,_,x[2])},N.prototype.holidays=function(p,x){var _=this,B=_.config,R=function(X){_.holidaysRender(p,x,X)};return typeof B.holidays=="function"?B.holidays({year:x[0],month:x[1],date:x[2]},R):layui.type(B.holidays)==="array"&&R(B.holidays),_},N.prototype.cellRender=function(p,x,_){var B=this.config;return typeof B.cellRender=="function"&&B.cellRender(x,function(R){typeof R=="string"?lay(p).html(R):typeof R=="object"&&lay(p).html("").append(lay(R)[0])},{originElem:p,type:_}),this},N.prototype.startOfYear=function(p){return p=new Date(p),p.setFullYear(p.getFullYear(),0,1),p.setHours(0,0,0,0),p},N.prototype.endOfYear=function(x){var x=new Date(x),_=x.getFullYear();return x.setFullYear(_+1,0,0),x.setHours(23,59,59,999),x},N.prototype.startOfMonth=function(p){return p=new Date(p),p.setDate(1),p.setHours(0,0,0,0),p},N.prototype.endOfMonth=function(x){var x=new Date(x),_=x.getMonth();return x.setFullYear(x.getFullYear(),_+1,0),x.setHours(23,59,59,999),x},N.prototype.addDays=function(p,x){return p=new Date(p),x&&p.setDate(p.getDate()+x),p},N.prototype.isDisabledYearOrMonth=function(p,x,_){for(var B=this,R=B.config,X=x==="year"?B.startOfYear(p):B.startOfMonth(p),x=x==="year"?B.endOfYear(p):B.endOfMonth(p),J=Math.floor((x.getTime()-X.getTime())/864e5)+1,ne=0,le=0;le(p.time?0:41)?x.endDate:_.dateTime;return lay.each({now:lay.extend({},R,p.date||{}),min:_.min,max:_.max},function(X,J){var ne;B[X]=x.newDate(lay.extend({year:J.year,month:p.type==="year"?0:J.month,date:p.type==="year"||p.type==="month"?1:J.date},(ne={},lay.each(p.time,function(le,me){ne[me]=J[me]}),ne))).getTime()}),R=B.nowE[1]&&(le.year=E[1],J.hint(Ae.invalidDate)),J.firstDate||(J.firstDate=lay.extend({},le)),me.setFullYear(le.year,le.month,1),B=(me.getDay()+(7-ne.weekStart))%7,R=c.getEndDate(le.month||12,le.year),X=c.getEndDate(le.month+1,le.year),lay.each(Z,function(ae,oe){var ue,Ee=[le.year,le.month];(oe=lay(oe)).removeAttr("class"),ae"+Ee[2]+""),J.mark(oe,Ee).holidays(oe,Ee).limit({elem:oe,date:{year:Ee[0],month:Ee[1]-1,date:Ee[2]},index:ae,rangeType:x,disabledType:"date"}),J.cellRender(oe,{year:Ee[0],month:Ee[1],date:Ee[2]},"date")}),lay(re[0]).attr("lay-ym",le.year+"-"+(le.month+1)),lay(re[1]).attr("lay-ym",le.year+"-"+(le.month+1)),J.panelYM||(J.panelYM={}),J.panelYM[x]={year:le.year,month:le.month},ne.lang==="cn"?(lay(re[0]).attr("lay-type","year").html(le.year+" \u5E74"),lay(re[1]).attr("lay-type","month").html(le.month+1+" \u6708")):(lay(re[0]).attr("lay-type","month").html(Ae.month[le.month]),lay(re[1]).attr("lay-type","year").html(le.year)),q&&(ne.range?!p&&_==="init"||(J.listYM=[[(J.startDate||ne.dateTime).year,(J.startDate||ne.dateTime).month+1],[J.endDate.year,J.endDate.month+1]],J.list(ne.type,0).list(ne.type,1),ne.type==="time"?J.setBtnStatus("\u65F6\u95F4",lay.extend({},J.systemDate(),J.startTime),lay.extend({},J.systemDate(),J.endTime)):J.setBtnStatus(!0)):(J.listYM=[[le.year,le.month+1]],J.list(ne.type,0))),ne.range&&_==="init"&&(J.rangeLinked?(me=J.getAsYM(le.year,le.month,x?"sub":null),J.calendar(lay.extend({},le,{year:me[0],month:me[1]}),1-x)):J.calendar(null,1-x)),ne.range||(Z=["hours","minutes","seconds"],J.limit({elem:lay(J.footer).find(".laydate-btns-now"),date:J.systemDate(/^(datetime|time)$/.test(ne.type)?new Date:null),index:0,time:Z,disabledType:"datetime"}),J.limit({elem:lay(J.footer).find(w),index:0,time:Z,disabledType:"datetime"})),J.setBtnStatus(),lay(J.shortcut).find("li."+k).removeClass(k),ne.range&&!q&&_!=="init"&&J.stampRange(),J},N.prototype.list=function(p,x){var _,B,R,X,J,ne,le,me=this,Ae=me.config,q=me.rangeLinked?Ae.dateTime:[Ae.dateTime,me.endDate][x],Z=me.lang(),re=Ae.range&&Ae.type!=="date"&&Ae.type!=="datetime",ae=lay.elem("ul",{class:D+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[p]}),oe=me.elemHeader[x],ue=lay(oe[2]).find("span"),Ee=me.elemCont[x||0],O=lay(Ee).find("."+D)[0],ee=Ae.lang==="cn",ie=ee?"\u5E74":"",ge=me.listYM[x]||{},_e=["hours","minutes","seconds"],we=["startTime","endTime"][x];return ge[0]<1&&(ge[0]=1),p==="year"?(R=_=ge[0]-7,_<1&&(R=_=1),lay.each(new Array(15),function(ke){var Se=lay.elem("li",{"lay-ym":_}),Te={year:_,month:0,date:1};_==ge[0]&&lay(Se).addClass(k),Se.innerHTML=_+ie,ae.appendChild(Se),me.limit({elem:lay(Se),date:Te,index:x,type:p,rangeType:x,disabledType:"date"}),me.cellRender(Se,{year:_,month:1,date:1},"year"),_++}),lay(ue[ee?0:1]).attr("lay-ym",_-8+"-"+ge[1]).html(R+ie+" - "+(_-1)+ie)):p==="month"?(lay.each(new Array(12),function(ke){var Se=lay.elem("li",{"lay-ym":ke}),Te={year:ge[0],month:ke,date:1};ke+1==ge[1]&&lay(Se).addClass(k),Se.innerHTML=Z.month[ke]+(ee?"\u6708":""),ae.appendChild(Se),me.limit({elem:lay(Se),date:Te,index:x,type:p,rangeType:x,disabledType:"date"}),me.cellRender(Se,{year:ge[0],month:ke+1,date:1},"month")}),lay(ue[ee?0:1]).attr("lay-ym",ge[0]+"-"+ge[1]).html(ge[0]+ie)):p==="time"&&(B=function(){lay(ae).find("ol").each(function(ke,Se){lay(Se).find("li").each(function(Te,Re){me.limit({elem:lay(Re),date:[{hours:Te},{hours:me[we].hours,minutes:Te},{hours:me[we].hours,minutes:me[we].minutes,seconds:Te}][ke],index:x,rangeType:x,disabledType:"time",time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][ke]})})}),Ae.range||me.limit({elem:lay(me.footer).find(w),date:me[we],index:0,time:["hours","minutes","seconds"],disabledType:"datetime"})},Ae.range?me[we]||(me[we]=we==="startTime"?q:me.endDate):me[we]=q,lay.each([24,60,60],function(ke,Se){var Te=lay.elem("li"),Re=["

    "+Z.time[ke]+"

      "];lay.each(new Array(Se),function(Ne){Re.push(""+lay.digit(Ne,2)+"")}),Te.innerHTML=Re.join("")+"
    ",ae.appendChild(Te)}),B(),R=Ae.format.indexOf("H")!==-1,ue=Ae.format.indexOf("m")!==-1,le=Ae.format.indexOf("s")!==-1,X=ae.children,J=0,lay.each([R,ue,le],function(ke,Se){Se||(X[ke].className+=" layui-hide",J++)}),ae.className+=" laydate-time-list-hide-"+J),O&&Ee.removeChild(O),Ee.appendChild(ae),p==="year"||p==="month"?(lay(me.elemMain[x]).addClass("laydate-ym-show"),lay(ae).find("li").on("click",function(){var ke,Se,Te=0|lay(this).attr("lay-ym");lay(this).hasClass(S)||(me.rangeLinked?lay.extend(q,{year:p==="year"?Te:ge[0],month:p==="year"?ge[1]-1:Te}):q[p]=Te,ke=["year","month"].indexOf(Ae.type)!==-1,Se=p==="year"&&["date","datetime"].indexOf(Ae.type)!==-1,ke||Se?(lay(ae).find("."+k).removeClass(k),lay(this).addClass(k),(Ae.type==="month"&&p==="year"||Se)&&(me.listYM[x][0]=Te,re&&((x?me.endDate:q).year=Te),me.list("month",x))):(me.checkDate("limit").calendar(q,x,"init"),me.closeList()),me.setBtnStatus(),!Ae.range&&Ae.autoConfirm&&(Ae.type==="month"&&p==="month"||Ae.type==="year"&&p==="year")&&me.setValue(me.parse()).done().remove(),me.autoCalendarModel.auto&&!me.rangeLinked?me.choose(lay(Ee).find("td.layui-this"),x):me.endState&&me.done(null,"change"),lay(me.footer).find("."+z).removeClass(S))})):(ue=lay.elem("span",{class:M}),ne=function(){lay(ae).find("ol").each(function(ke){var Se=this,Te=lay(Se).find("li");Se.scrollTop=30*(me[we][_e[ke]]-2),Se.scrollTop<=0&&Te.each(function(Re,Ne){if(!lay(this).hasClass(S))return Se.scrollTop=30*(Re-2),!0})})},le=lay(oe[2]).find("."+M),ne(),ue.innerHTML=Ae.range?[Z.startTime,Z.endTime][x]:Z.timeTips,lay(me.elemMain[x]).addClass("laydate-time-show"),le[0]&&le.remove(),oe[2].appendChild(ue),(O=lay(ae).find("ol")).each(function(ke){var Se=this;lay(Se).find("li").on("click",function(){var Te=0|this.innerHTML;lay(this).hasClass(S)||(Ae.range?me[we][_e[ke]]=Te:q[_e[ke]]=Te,lay(Se).find("."+k).removeClass(k),lay(this).addClass(k),B(),ne(),!me.endDate&&Ae.type!=="time"&&Ae.type!=="datetime"||me.done(null,"change"),me.setBtnStatus())})}),layui.device().mobile&&O.css({overflowY:"auto",touchAction:"pan-y"})),me},N.prototype.listYM=[],N.prototype.closeList=function(){var p=this;p.config,lay.each(p.elemCont,function(x,_){lay(this).find("."+D).remove(),lay(p.elemMain[x]).removeClass("laydate-ym-show laydate-time-show")}),lay(p.elem).find("."+M).remove()},N.prototype.setBtnStatus=function(p,x,_){var B=this,R=B.config,X=B.lang(),J=lay(B.footer).find(w),ne=R.type==="datetime"||R.type==="time"?["hours","minutes","seconds"]:void 0;R.range&&(x=x||(B.rangeLinked?B.startDate:R.dateTime),_=_||B.endDate,R=!B.endState||B.newDate(x).getTime()>B.newDate(_).getTime(),B.limit({date:x,disabledType:"datetime",time:ne,rangeType:0})||B.limit({date:_,disabledType:"datetime",time:ne,rangeType:1})?J.addClass(S):J[R?"addClass":"removeClass"](S),p)&&R&&B.hint(typeof p=="string"?X.timeout.replace(/\u65e5\u671f/g,p):X.timeout)},N.prototype.parse=function(p,R){var _=this,B=_.config,X=_.rangeLinked?_.startDate:B.dateTime,R=R||(p=="end"?lay.extend({},_.endDate,_.endTime):B.range?lay.extend({},X||B.dateTime,_.startTime):B.dateTime),X=c.parse(R,_.format,1);return B.range&&p===void 0?X+" "+_.rangeStr+" "+_.parse("end"):X},N.prototype.newDate=function(p){return p=p||{},new Date(p.year||1,p.month||0,p.date||1,p.hours||0,p.minutes||0,p.seconds||0)},N.prototype.getDateTime=function(p){return this.newDate(p).getTime()},N.prototype.formatToDisplay=function(p,x){var _=this,B=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");Object.defineProperty(p,"value",lay.extend({},B,{get:function(){return this.getAttribute("lay-date")},set:function(R){B.set.call(this,x.call(_,R)),this.setAttribute("lay-date",R)}}))},N.prototype.setValue=function(p){var x,_=this,B=_.config,R=B.elem[0];return B.position!=="static"&&(p=p||"",_.isInput(R)?lay(R).val(p):(x=_.rangeElem)?(layui.type(p)!=="array"&&(p=p.split(" "+_.rangeStr+" ")),x[0].val(p[0]||""),x[1].val(p[1]||"")):(lay(R).find("*").length===0&&(x=typeof B.formatToDisplay=="function"?B.formatToDisplay(p):p,lay(R).html(x)),lay(R).attr("lay-date",p))),_},N.prototype.preview=function(){var p,x=this,_=x.config;_.isPreview&&(p=lay(x.elem).find("."+G),_=!_.range||(x.rangeLinked?x.endState:x.endDate)?x.parse():"",p.html(_),p.html())&&(p.css({color:"#16b777"}),setTimeout(function(){p.css({color:"#777"})},300))},N.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},N.prototype.stampRange=function(){var p,x=this,_=x.config,B=x.rangeLinked?x.startDate:_.dateTime,R=lay(x.elem).find("td");_.range&&!x.endState&&lay(x.footer).find(w).addClass(S),B=B&&x.newDate({year:B.year,month:B.month,date:B.date}).getTime(),p=x.endState&&x.endDate&&x.newDate({year:x.endDate.year,month:x.endDate.month,date:x.endDate.date}).getTime(),lay.each(R,function(X,J){var ne=lay(J).attr("lay-ymd").split("-"),ne=x.newDate({year:ne[0],month:ne[1]-1,date:ne[2]}).getTime();_.rangeLinked&&!x.startDate&&ne===x.newDate(x.systemDate()).getTime()&&lay(J).addClass(lay(J).hasClass(Q)||lay(J).hasClass(g)?"":"laydate-day-now"),lay(J).removeClass(f+" "+k),ne!==B&&ne!==p||(x.rangeLinked||!x.rangeLinked&&(X<42?ne===B:ne===p))&&lay(J).addClass(lay(J).hasClass(Q)||lay(J).hasClass(g)?f:k),B_.getDateTime(B.max)&&(_[Ae]={hours:B.max.hours,minutes:B.max.minutes,seconds:B.max.seconds},lay.extend(X,_[Ae])))}),x||(_.startDate=lay.extend({},X)),_.endState&&!_.limit({date:_.rangeLinked?_.startDate:_.thisDateTime(1-x),disabledType:"date"})&&(((J=_.endState&&_.autoCalendarModel.auto?_.autoCalendarModel():J)||_.rangeLinked&&_.endState)&&_.newDate(_.startDate)>_.newDate(_.endDate)&&(_.startDate.year===_.endDate.year&&_.startDate.month===_.endDate.month&&_.startDate.date===_.endDate.date&&(ne=_.startTime,_.startTime=_.endTime,_.endTime=ne),ne=_.startDate,_.startDate=lay.extend({},_.endDate,_.startTime),B.dateTime=lay.extend({},_.startDate),_.endDate=lay.extend({},ne,_.endTime)),J)&&(B.dateTime=lay.extend({},_.startDate)),_.rangeLinked?(p=_.checkPanelDate(X,R),ne=lay.extend({},X),le=J||p&&p.needFullRender?"init":null,p=p?p.index:R,_.calendar(ne,p,le)):_.calendar(null,x,J?"init":null),_.endState&&_.done(null,"change")):B.position==="static"?_.calendar().done().done(null,"change"):B.type==="date"?B.autoConfirm?_.setValue(_.parse()).done().remove():_.calendar().done(null,"change"):B.type==="datetime"&&_.calendar().done(null,"change"))},N.prototype.tool=function(p,x){var _=this,B=_.config,R=_.lang(),X=B.dateTime,J=B.position==="static",ne={datetime:function(){lay(p).hasClass(S)||(_.list("time",0),B.range&&_.list("time",1),lay(p).attr("lay-type","date").html(_.lang().dateTips))},date:function(){_.closeList(),lay(p).attr("lay-type","datetime").html(_.lang().timeTips)},clear:function(){J&&(lay.extend(X,_.firstDate),_.calendar()),B.range&&(delete B.dateTime,delete _.endDate,delete _.startTime,delete _.endTime),_.setValue(""),_.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var le=new Date;if(lay(p).hasClass(S))return _.hint(R.tools.now+", "+R.invalidDate);lay.extend(X,_.systemDate(),{hours:le.getHours(),minutes:le.getMinutes(),seconds:le.getSeconds()}),_.setValue(_.parse()),J&&_.calendar(),_.done(null,"onNow").done().remove()},confirm:function(){if(B.range){if(lay(p).hasClass(S))return(B.type==="time"?_.startTime&&_.endTime&&_.newDate(_.startTime)>_.newDate(_.endTime):_.startDate&&_.endDate&&_.newDate(lay.extend({},_.startDate,_.startTime||{}))>_.newDate(lay.extend({},_.endDate,_.endTime||{})))?_.hint(B.type==="time"?R.timeout.replace(/\u65e5\u671f/g,"\u65F6\u95F4"):R.timeout):_.hint(R.invalidDate)}else if(lay(p).hasClass(S))return _.hint(R.invalidDate);_.setValue(_.parse()),_.done(null,"onConfirm").done().remove()}};ne[x]&&ne[x]()},N.prototype.change=function(p){var x=this,_=x.config,B=x.thisDateTime(p),R=_.range&&(_.type==="year"||_.type==="month"),X=x.elemCont[p||0],J=x.listYM[p],ne=function(le){var me=lay(X).find(".laydate-year-list")[0],Ae=lay(X).find(".laydate-month-list")[0];return me&&(J[0]=le?J[0]-15:J[0]+15,x.list("year",p)),Ae&&(le?J[0]--:J[0]++,x.list("month",p)),(me||Ae)&&(lay.extend(B,{year:J[0]}),R&&(B.year=J[0]),_.range||x.done(null,"change"),_.range||x.limit({elem:lay(x.footer).find(w),date:{year:J[0]},disabledType:"datetime"})),x.setBtnStatus(),me||Ae};return{prevYear:function(){ne("sub")||(x.rangeLinked?(_.dateTime.year--,x.checkDate("limit").calendar(null,null,"init")):(B.year--,x.checkDate("limit").calendar(null,p),x.autoCalendarModel.auto?x.choose(lay(X).find("td.layui-this"),p):x.done(null,"change")))},prevMonth:function(){var le,me;x.rangeLinked?(me=x.panelYM[0],me=x.getAsYM(me.year,me.month,"sub"),le=lay.extend({},_.dateTime,x.panelYM[0],{year:me[0],month:me[1]}),x.checkDate("limit").calendar(le,null,"init")):(me=x.getAsYM(B.year,B.month,"sub"),lay.extend(B,{year:me[0],month:me[1]}),x.checkDate("limit").calendar(null,null,"init"),x.autoCalendarModel.auto?x.choose(lay(X).find("td.layui-this"),p):x.done(null,"change"))},nextMonth:function(){var le,me;x.rangeLinked?(me=x.panelYM[0],me=x.getAsYM(me.year,me.month),le=lay.extend({},_.dateTime,x.panelYM[0],{year:me[0],month:me[1]}),x.checkDate("limit").calendar(le,null,"init")):(me=x.getAsYM(B.year,B.month),lay.extend(B,{year:me[0],month:me[1]}),x.checkDate("limit").calendar(null,null,"init"),x.autoCalendarModel.auto?x.choose(lay(X).find("td.layui-this"),p):x.done(null,"change"))},nextYear:function(){ne()||(x.rangeLinked?(_.dateTime.year++,x.checkDate("limit").calendar(null,0,"init")):(B.year++,x.checkDate("limit").calendar(null,p),x.autoCalendarModel.auto?x.choose(lay(X).find("td.layui-this"),p):x.done(null,"change")))}}},N.prototype.changeEvent=function(){var p=this;p.config,lay(p.elem).on("click",function(x){lay.stope(x)}).on("mousedown",function(x){lay.stope(x)}),lay.each(p.elemHeader,function(x,_){lay(_[0]).on("click",function(B){p.change(x).prevYear()}),lay(_[1]).on("click",function(B){p.change(x).prevMonth()}),lay(_[2]).find("span").on("click",function(B){var X=lay(this),R=X.attr("lay-ym"),X=X.attr("lay-type");R&&(R=R.split("-"),p.listYM[x]=[0|R[0],0|R[1]],p.list(X,x),lay(p.footer).find("."+z).addClass(S))}),lay(_[3]).on("click",function(B){p.change(x).nextMonth()}),lay(_[4]).on("click",function(B){p.change(x).nextYear()})}),lay.each(p.table,function(x,_){lay(_).find("td").on("click",function(){p.choose(lay(this),x)})}),lay(p.footer).find("span").on("click",function(){var x=lay(this).attr("lay-type");p.tool(this,x)})},N.prototype.isInput=function(p){return/input|textarea/.test(p.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(p.tagName)},N.prototype.events=function(){var p,x=this,_=x.config;_.elem[0]&&!_.elem[0].eventHandler&&(_.elem.on(_.trigger,p=function(){c.thisId!==_.id&&x.render()}),_.elem[0].eventHandler=!0,_.eventElem.on(_.trigger,p),x.unbind=function(){x.remove(),_.elem.off(_.trigger,p),_.elem.removeAttr("lay-key"),_.elem.removeAttr(C),_.elem[0].eventHandler=!1,_.eventElem.off(_.trigger,p),_.eventElem.removeAttr("lay-key"),delete T.that[_.id]})},T.that={},T.getThis=function(p){var x=T.that[p];return!x&&s&&layui.hint().error(p?b+" instance with ID '"+p+"' not found":"ID argument required"),x},u.run=function(p){p(t).on("mousedown",function(x){var _,B;c.thisId&&(_=T.getThis(c.thisId))&&(B=_.config,x.target===B.elem[0]||x.target===B.eventElem[0]||x.target===p(B.closeStop)[0]||B.elem[0]&&B.elem[0].contains(x.target)||_.remove())}).on("keydown",function(x){var _;c.thisId&&(_=T.getThis(c.thisId))&&_.config.position!=="static"&&x.keyCode===13&&p("#"+_.elemID)[0]&&_.elemID===N.thisElemDate&&(x.preventDefault(),p(_.footer).find(w)[0].click())}),p(i).on("resize",function(){if(c.thisId){var x=T.getThis(c.thisId);if(x)return!(!x.elem||!p(".layui-laydate")[0])&&void x.position()}})},c.render=function(p){return p=new N(p),T.call(p)},c.reload=function(p,x){if(p=T.getThis(p),p)return p.reload(x)},c.getInst=function(p){if(p=T.getThis(p),p)return p.inst},c.hint=function(p,x){if(p=T.getThis(p),p)return p.hint(x)},c.unbind=function(p){if(p=T.getThis(p),p)return p.unbind()},c.close=function(p){if(p=T.getThis(p||c.thisId),p)return p.remove()},c.parse=function(p,x,_){return p=p||{},x=((x=typeof x=="string"?T.formatArr(x):x)||[]).concat(),lay.each(x,function(B,R){/yyyy|y/.test(R)?x[B]=lay.digit(p.year,R.length):/MM|M/.test(R)?x[B]=lay.digit(p.month+(_||0),R.length):/dd|d/.test(R)?x[B]=lay.digit(p.date,R.length):/HH|H/.test(R)?x[B]=lay.digit(p.hours,R.length):/mm|m/.test(R)?x[B]=lay.digit(p.minutes,R.length):/ss|s/.test(R)&&(x[B]=lay.digit(p.seconds,R.length))}),x.join("")},c.getEndDate=function(p,x){var _=new Date;return _.setFullYear(x||_.getFullYear(),p||_.getMonth()+1,1),new Date(_.getTime()-864e5).getDate()},s?(c.ready(),layui.define("lay",function(p){c.path=layui.cache.dir,u.run(lay),p(b,c)})):(c.ready(),u.run(i.lay),i.laydate=c)}(window,window.document),function(i,t){d.exports=i.document?t(i):function(s){if(s.document)return t(s);throw new Error("jQuery requires a window with a document")}}(typeof window!="undefined"?window:Tn,function(i,t){var s=[],u=i.document,A=s.slice,b=s.concat,C=s.push,c=s.indexOf,T={},k=T.toString,S=T.hasOwnProperty,E={},Ee="1.12.4",r=function(l,P){return new r.fn.init(l,P)},D=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,f=/^-ms-/,y=/-([\da-z])/gi,Q=function(l,P){return P.toUpperCase()};function g(l){var P=!!l&&"length"in l&&l.length,V=r.type(l);return V!=="function"&&!r.isWindow(l)&&(V==="array"||P===0||typeof P=="number"&&0+~]|"+ri+")"+ri+"*"),bu=new RegExp("="+ri+`*([^\\]'"]*?)`+ri+"*\\]","g"),_u=new RegExp(xs),gl=new RegExp("^"+Yi+"$"),vo={ID:new RegExp("^#("+Yi+")"),CLASS:new RegExp("^\\.("+Yi+")"),TAG:new RegExp("^("+Yi+"|[*])"),ATTR:new RegExp("^"+hl),PSEUDO:new RegExp("^"+xs),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ri+"*(even|odd|(([+-]|)(\\d*)n|)"+ri+"*(?:([+-]|)"+ri+"*(\\d+)|))"+ri+"*\\)|)","i"),bool:new RegExp("^(?:"+Br+")$","i"),needsContext:new RegExp("^"+ri+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ri+"*((?:-\\d)?\\d*)"+ri+"*\\)|)(?=[^-]|$)","i")},Eu=/^(?:input|select|textarea|button)$/i,Iu=/^h\d$/i,Va=/^[^{]+\{\s*\[native \w/,wu=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Cs=/[+~]/,ku=/'|\\/g,ia=new RegExp("\\\\([\\da-f]{1,6}"+ri+"?|("+ri+")|.)","ig"),ra=function(Be,He,Fe){var Xe="0x"+He-65536;return Xe!=Xe||Fe?He:Xe<0?String.fromCharCode(65536+Xe):String.fromCharCode(Xe>>10|55296,1023&Xe|56320)},ml=function(){Tt()};try{Sr.apply(yr=va.call(En.childNodes),En.childNodes),yr[En.childNodes.length].nodeType}catch(Be){Sr={apply:yr.length?function(He,Fe){Ya.apply(He,va.call(Fe))}:function(He,Fe){for(var Xe=He.length,At=0;He[Xe++]=Fe[At++];);He.length=Xe-1}}}function yi(Be,He,Fe,Xe){var At,Jt,Rt,fn,xn,Kn,$n,Vn,qn=He&&He.ownerDocument,bi=He?He.nodeType:9;if(Fe=Fe||[],typeof Be!="string"||!Be||bi!==1&&bi!==9&&bi!==11)return Fe;if(!Xe&&((He?He.ownerDocument||He:En)!==dt&&Tt(He),He=He||dt,Dn)){if(bi!==11&&(Kn=wu.exec(Be)))if(At=Kn[1]){if(bi===9){if(!(Rt=He.getElementById(At)))return Fe;if(Rt.id===At)return Fe.push(Rt),Fe}else if(qn&&(Rt=qn.getElementById(At))&&dn(He,Rt)&&Rt.id===At)return Fe.push(Rt),Fe}else{if(Kn[2])return Sr.apply(Fe,He.getElementsByTagName(Be)),Fe;if((At=Kn[3])&&V.getElementsByClassName&&He.getElementsByClassName)return Sr.apply(Fe,He.getElementsByClassName(At)),Fe}if(V.qsa&&!na[Be+" "]&&(!Wn||!Wn.test(Be))){if(bi!==1)qn=He,Vn=Be;else if(He.nodeName.toLowerCase()!=="object"){for((fn=He.getAttribute("id"))?fn=fn.replace(ku,"\\$&"):He.setAttribute("id",fn=zn),Jt=($n=Ie(Be)).length,xn=gl.test(fn)?"#"+fn:"[id='"+fn+"']";Jt--;)$n[Jt]=xn+" "+xo($n[Jt]);Vn=$n.join(","),qn=Cs.test(Be)&&Es(He.parentNode)||He}if(Vn)try{return Sr.apply(Fe,qn.querySelectorAll(Vn)),Fe}catch(Sn){}finally{fn===zn&&He.removeAttribute("id")}}}return je(Be.replace(Ao,"$1"),He,Fe,Xe)}function bs(){var Be=[];function He(Fe,Xe){return Be.push(Fe+" ")>te.cacheLength&&delete He[Be.shift()],He[Fe+" "]=Xe}return He}function Hr(Be){return Be[zn]=!0,Be}function ui(Be){var He=dt.createElement("div");try{return!!Be(He)}catch(Fe){return!1}finally{He.parentNode&&He.parentNode.removeChild(He)}}function _s(Be,He){for(var Fe=Be.split("|"),Xe=Fe.length;Xe--;)te.attrHandle[Fe[Xe]]=He}function yl(Be,He){var Fe=He&&Be,Xe=Fe&&Be.nodeType===1&&He.nodeType===1&&(~He.sourceIndex||1<<31)-(~Be.sourceIndex||1<<31);if(Xe)return Xe;if(Fe){for(;Fe=Fe.nextSibling;)if(Fe===He)return-1}return Be?1:-1}function xa(Be){return Hr(function(He){return He=+He,Hr(function(Fe,Xe){for(var At,Jt=Be([],Fe.length,He),Rt=Jt.length;Rt--;)Fe[At=Jt[Rt]]&&(Fe[At]=!(Xe[At]=Fe[At]))})})}function Es(Be){return Be&&typeof Be.getElementsByTagName!="undefined"&&Be}for(P in V=yi.support={},ye=yi.isXML=function(Be){return Be=Be&&(Be.ownerDocument||Be).documentElement,!!Be&&Be.nodeName!=="HTML"},Tt=yi.setDocument=function(He){var He=He?He.ownerDocument||He:En;return He!==dt&&He.nodeType===9&&He.documentElement&&(kt=(dt=He).documentElement,Dn=!ye(dt),(He=dt.defaultView)&&He.top!==He&&(He.addEventListener?He.addEventListener("unload",ml,!1):He.attachEvent&&He.attachEvent("onunload",ml)),V.attributes=ui(function(Fe){return Fe.className="i",!Fe.getAttribute("className")}),V.getElementsByTagName=ui(function(Fe){return Fe.appendChild(dt.createComment("")),!Fe.getElementsByTagName("*").length}),V.getElementsByClassName=Va.test(dt.getElementsByClassName),V.getById=ui(function(Fe){return kt.appendChild(Fe).id=zn,!dt.getElementsByName||!dt.getElementsByName(zn).length}),V.getById?(te.find.ID=function(Fe,Xe){if(typeof Xe.getElementById!="undefined"&&Dn)return(Fe=Xe.getElementById(Fe))?[Fe]:[]},te.filter.ID=function(Fe){var Xe=Fe.replace(ia,ra);return function(At){return At.getAttribute("id")===Xe}}):(delete te.find.ID,te.filter.ID=function(Fe){var Xe=Fe.replace(ia,ra);return function(At){return At=typeof At.getAttributeNode!="undefined"&&At.getAttributeNode("id"),At&&At.value===Xe}}),te.find.TAG=V.getElementsByTagName?function(Fe,Xe){return typeof Xe.getElementsByTagName!="undefined"?Xe.getElementsByTagName(Fe):V.qsa?Xe.querySelectorAll(Fe):void 0}:function(Fe,Xe){var At,Jt=[],Rt=0,fn=Xe.getElementsByTagName(Fe);if(Fe!=="*")return fn;for(;At=fn[Rt++];)At.nodeType===1&&Jt.push(At);return Jt},te.find.CLASS=V.getElementsByClassName&&function(Fe,Xe){if(typeof Xe.getElementsByClassName!="undefined"&&Dn)return Xe.getElementsByClassName(Fe)},Ei=[],Wn=[],(V.qsa=Va.test(dt.querySelectorAll))&&(ui(function(Fe){kt.appendChild(Fe).innerHTML="",Fe.querySelectorAll("[msallowcapture^='']").length&&Wn.push("[*^$]="+ri+`*(?:''|"")`),Fe.querySelectorAll("[selected]").length||Wn.push("\\["+ri+"*(?:value|"+Br+")"),Fe.querySelectorAll("[id~="+zn+"-]").length||Wn.push("~="),Fe.querySelectorAll(":checked").length||Wn.push(":checked"),Fe.querySelectorAll("a#"+zn+"+*").length||Wn.push(".#.+[+~]")}),ui(function(Fe){var Xe=dt.createElement("input");Xe.setAttribute("type","hidden"),Fe.appendChild(Xe).setAttribute("name","D"),Fe.querySelectorAll("[name=d]").length&&Wn.push("name"+ri+"*[*^$|!~]?="),Fe.querySelectorAll(":enabled").length||Wn.push(":enabled",":disabled"),Fe.querySelectorAll("*,:x"),Wn.push(",.*:")})),(V.matchesSelector=Va.test(Mi=kt.matches||kt.webkitMatchesSelector||kt.mozMatchesSelector||kt.oMatchesSelector||kt.msMatchesSelector))&&ui(function(Fe){V.disconnectedMatch=Mi.call(Fe,"div"),Mi.call(Fe,"[s!='']:x"),Ei.push("!=",xs)}),Wn=Wn.length&&new RegExp(Wn.join("|")),Ei=Ei.length&&new RegExp(Ei.join("|")),He=Va.test(kt.compareDocumentPosition),dn=He||Va.test(kt.contains)?function(Fe,Jt){var At=Fe.nodeType===9?Fe.documentElement:Fe,Jt=Jt&&Jt.parentNode;return Fe===Jt||!(!Jt||Jt.nodeType!==1||!(At.contains?At.contains(Jt):Fe.compareDocumentPosition&&16&Fe.compareDocumentPosition(Jt)))}:function(Fe,Xe){if(Xe){for(;Xe=Xe.parentNode;)if(Xe===Fe)return!0}return!1},zr=He?function(Fe,Xe){var At;return Fe===Xe?(_t=!0,0):(At=!Fe.compareDocumentPosition-!Xe.compareDocumentPosition)||(1&(At=(Fe.ownerDocument||Fe)===(Xe.ownerDocument||Xe)?Fe.compareDocumentPosition(Xe):1)||!V.sortDetached&&Xe.compareDocumentPosition(Fe)===At?Fe===dt||Fe.ownerDocument===En&&dn(En,Fe)?-1:Xe===dt||Xe.ownerDocument===En&&dn(En,Xe)?1:gt?er(gt,Fe)-er(gt,Xe):0:4&At?-1:1)}:function(Fe,Xe){if(Fe===Xe)return _t=!0,0;var At,Jt=0,Rt=Fe.parentNode,fn=Xe.parentNode,xn=[Fe],Kn=[Xe];if(!Rt||!fn)return Fe===dt?-1:Xe===dt?1:Rt?-1:fn?1:gt?er(gt,Fe)-er(gt,Xe):0;if(Rt===fn)return yl(Fe,Xe);for(At=Fe;At=At.parentNode;)xn.unshift(At);for(At=Xe;At=At.parentNode;)Kn.unshift(At);for(;xn[Jt]===Kn[Jt];)Jt++;return Jt?yl(xn[Jt],Kn[Jt]):xn[Jt]===En?-1:Kn[Jt]===En?1:0}),dt},yi.matches=function(Be,He){return yi(Be,null,null,He)},yi.matchesSelector=function(Be,He){if((Be.ownerDocument||Be)!==dt&&Tt(Be),He=He.replace(bu,"='$1']"),V.matchesSelector&&Dn&&!na[He+" "]&&(!Ei||!Ei.test(He))&&(!Wn||!Wn.test(He)))try{var Fe=Mi.call(Be,He);if(Fe||V.disconnectedMatch||Be.document&&Be.document.nodeType!==11)return Fe}catch(Xe){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(Be){return Be[1]=Be[1].replace(ia,ra),Be[3]=(Be[3]||Be[4]||Be[5]||"").replace(ia,ra),Be[2]==="~="&&(Be[3]=" "+Be[3]+" "),Be.slice(0,4)},CHILD:function(Be){return Be[1]=Be[1].toLowerCase(),Be[1].slice(0,3)==="nth"?(Be[3]||yi.error(Be[0]),Be[4]=+(Be[4]?Be[5]+(Be[6]||1):2*(Be[3]==="even"||Be[3]==="odd")),Be[5]=+(Be[7]+Be[8]||Be[3]==="odd")):Be[3]&&yi.error(Be[0]),Be},PSEUDO:function(Be){var He,Fe=!Be[6]&&Be[2];return vo.CHILD.test(Be[0])?null:(Be[3]?Be[2]=Be[4]||Be[5]||"":Fe&&_u.test(Fe)&&(He=(He=Ie(Fe,!0))&&Fe.indexOf(")",Fe.length-He)-Fe.length)&&(Be[0]=Be[0].slice(0,He),Be[2]=Fe.slice(0,He)),Be.slice(0,3))}},filter:{TAG:function(Be){var He=Be.replace(ia,ra).toLowerCase();return Be==="*"?function(){return!0}:function(Fe){return Fe.nodeName&&Fe.nodeName.toLowerCase()===He}},CLASS:function(Be){var He=Nr[Be+" "];return He||(He=new RegExp("(^|"+ri+")"+Be+"("+ri+"|$)"))&&Nr(Be,function(Fe){return He.test(typeof Fe.className=="string"&&Fe.className||typeof Fe.getAttribute!="undefined"&&Fe.getAttribute("class")||"")})},ATTR:function(Be,He,Fe){return function(Xe){return Xe=yi.attr(Xe,Be),Xe==null?He==="!=":!He||(Xe+="",He==="="?Xe===Fe:He==="!="?Xe!==Fe:He==="^="?Fe&&Xe.indexOf(Fe)===0:He==="*="?Fe&&-1(?:<\/\1>|)$/,Y=/^.[^:#\[\.,]*$/;function N(l,P,V){if(r.isFunction(P))return r.grep(l,function(te,he){return!!P.call(te,he,te)!==V});if(P.nodeType)return r.grep(l,function(te){return te===P!==V});if(typeof P=="string"){if(Y.test(P))return r.filter(P,l,V);P=r.filter(P,l)}return r.grep(l,function(te){return-1)[^>]*|#([\w-]*))$/,x=((r.fn.init=function(l,P,V){if(l){if(V=V||K,typeof l!="string")return l.nodeType?(this.context=this[0]=l,this.length=1,this):r.isFunction(l)?typeof V.ready!="undefined"?V.ready(l):l(r):(l.selector!==void 0&&(this.selector=l.selector,this.context=l.context),r.makeArray(l,this));if(!(te=l.charAt(0)==="<"&&l.charAt(l.length-1)===">"&&3<=l.length?[null,l,null]:p.exec(l))||!te[1]&&P)return(!P||P.jquery?P||V:this.constructor(P)).find(l);if(te[1]){if(P=P instanceof r?P[0]:P,r.merge(this,r.parseHTML(te[1],P&&P.nodeType?P.ownerDocument||P:u,!0)),G.test(te[1])&&r.isPlainObject(P))for(var te in P)r.isFunction(this[te])?this[te](P[te]):this.attr(te,P[te])}else{if((V=u.getElementById(te[2]))&&V.parentNode){if(V.id!==te[2])return K.find(l);this.length=1,this[0]=V}this.context=u,this.selector=l}}return this}).prototype=r.fn,K=r(u),/^(?:parents|prev(?:Until|All))/),_={children:!0,contents:!0,next:!0,prev:!0};function B(l,P){for(;(l=l[P])&&l.nodeType!==1;);return l}r.fn.extend({has:function(l){var P,V=r(l,this),te=V.length;return this.filter(function(){for(P=0;P
    a",E.leadingWhitespace=di.firstChild.nodeType===3,E.tbody=!di.getElementsByTagName("tbody").length,E.htmlSerialize=!!di.getElementsByTagName("link").length,E.html5Clone=u.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",ni.type="checkbox",ni.checked=!0,tn.appendChild(ni),E.appendChecked=ni.checked,di.innerHTML="",E.noCloneChecked=!!di.cloneNode(!0).lastChild.defaultValue,tn.appendChild(di),(ni=u.createElement("input")).setAttribute("type","radio"),ni.setAttribute("checked","checked"),ni.setAttribute("name","t"),di.appendChild(ni),E.checkClone=di.cloneNode(!0).cloneNode(!0).lastChild.checked,E.noCloneEvent=!!di.addEventListener,di[r.expando]=1,E.attributes=!di.getAttribute(r.expando);var Ye={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:E.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};function Je(l,P){var V,te,he=0,ye=typeof l.getElementsByTagName!="undefined"?l.getElementsByTagName(P||"*"):typeof l.querySelectorAll!="undefined"?l.querySelectorAll(P||"*"):void 0;if(!ye)for(ye=[],V=l.childNodes||l;(te=V[he])!=null;he++)!P||r.nodeName(te,P)?ye.push(te):r.merge(ye,Je(te,P));return P===void 0||P&&r.nodeName(l,P)?r.merge([l],ye):ye}function rt(l,P){for(var V,te=0;(V=l[te])!=null;te++)r._data(V,"globalEval",!P||r._data(P[te],"globalEval"))}Ye.optgroup=Ye.option,Ye.tbody=Ye.tfoot=Ye.colgroup=Ye.caption=Ye.thead,Ye.th=Ye.td;var We=/<|&#?\w+;/,Ve=/"||Ve.test(Ie)?0:je:je.firstChild)&&Ie.childNodes.length;ye--;)r.nodeName(gt=Ie.childNodes[ye],"tbody")&&!gt.childNodes.length&&Ie.removeChild(gt);for(r.merge(kt,je.childNodes),je.textContent="";je.firstChild;)je.removeChild(je.firstChild);je=dt.lastChild}else kt.push(P.createTextNode(Ie));for(je&&dt.removeChild(je),E.appendChecked||r.grep(Je(kt,"input"),Oe),Dn=0;Ie=kt[Dn++];)if(te&&-1]","i"),ji=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,br=/\s*$/g,_r=Ne(u).appendChild(u.createElement("div"));function $(l,P){return r.nodeName(l,"table")&&r.nodeName(P.nodeType!==11?P:P.firstChild,"tr")?l.getElementsByTagName("tbody")[0]||l.appendChild(l.ownerDocument.createElement("tbody")):l}function F(l){return l.type=(r.find.attr(l,"type")!==null)+"/"+l.type,l}function n(l){var P=ea.exec(l.type);return P?l.type=P[1]:l.removeAttribute("type"),l}function v(l,P){if(P.nodeType===1&&r.hasData(l)){var V,te,he,l=r._data(l),ye=r._data(P,l),Ie=l.events;if(Ie)for(V in delete ye.handle,ye.events={},Ie)for(te=0,he=Ie[V].length;te")},clone:function(l,P,V){var te,he,ye,Ie,Pe,je=r.contains(l.ownerDocument,l);if(E.html5Clone||r.isXMLDoc(l)||!jr.test("<"+l.nodeName+">")?ye=l.cloneNode(!0):(_r.innerHTML=l.outerHTML,_r.removeChild(ye=_r.firstChild)),!(E.noCloneEvent&&E.noCloneChecked||l.nodeType!==1&&l.nodeType!==11||r.isXMLDoc(l))){for(te=Je(ye),Pe=Je(l),Ie=0;(he=Pe[Ie])!=null;++Ie)if(te[Ie]){_t=gt=qe=dt=Tt=void 0;var qe,gt,_t,Tt=he,dt=te[Ie];if(dt.nodeType===1){if(qe=dt.nodeName.toLowerCase(),!E.noCloneEvent&&dt[r.expando]){for(gt in(_t=r._data(dt)).events)r.removeEvent(dt,gt,_t.handle);dt.removeAttribute(r.expando)}qe==="script"&&dt.text!==Tt.text?(F(dt).text=Tt.text,n(dt)):qe==="object"?(dt.parentNode&&(dt.outerHTML=Tt.outerHTML),E.html5Clone&&Tt.innerHTML&&!r.trim(dt.innerHTML)&&(dt.innerHTML=Tt.innerHTML)):qe==="input"&&we.test(Tt.type)?(dt.defaultChecked=dt.checked=Tt.checked,dt.value!==Tt.value&&(dt.value=Tt.value)):qe==="option"?dt.defaultSelected=dt.selected=Tt.defaultSelected:qe!=="input"&&qe!=="textarea"||(dt.defaultValue=Tt.defaultValue)}}}if(P)if(V)for(Pe=Pe||Je(l),te=te||Je(ye),Ie=0;(he=Pe[Ie])!=null;Ie++)v(he,te[Ie]);else v(l,ye);return 0<(te=Je(ye,"script")).length&&rt(te,!je&&Je(l,"script")),te=Pe=he=null,ye},cleanData:function(l,P){for(var V,te,he,ye,Ie=0,Pe=r.expando,je=r.cache,qe=E.attributes,gt=r.event.special;(V=l[Ie])!=null;Ie++)if((P||Ae(V))&&(ye=(he=V[Pe])&&je[he])){if(ye.events)for(te in ye.events)gt[te]?r.event.remove(V,te):r.removeEvent(V,te,ye.handle);je[he]&&(delete je[he],qe||typeof V.removeAttribute=="undefined"?V[Pe]=void 0:V.removeAttribute(Pe),s.push(he))}}}),r.fn.extend({domManip:I,detach:function(l){return U(this,l,!0)},remove:function(l){return U(this,l)},text:function(l){return _e(this,function(P){return P===void 0?r.text(this):this.empty().append((this[0]&&this[0].ownerDocument||u).createTextNode(P))},null,l,arguments.length)},append:function(){return I(this,arguments,function(l){this.nodeType!==1&&this.nodeType!==11&&this.nodeType!==9||$(this,l).appendChild(l)})},prepend:function(){return I(this,arguments,function(l){var P;this.nodeType!==1&&this.nodeType!==11&&this.nodeType!==9||(P=$(this,l)).insertBefore(l,P.firstChild)})},before:function(){return I(this,arguments,function(l){this.parentNode&&this.parentNode.insertBefore(l,this)})},after:function(){return I(this,arguments,function(l){this.parentNode&&this.parentNode.insertBefore(l,this.nextSibling)})},empty:function(){for(var l,P=0;(l=this[P])!=null;P++){for(l.nodeType===1&&r.cleanData(Je(l,!1));l.firstChild;)l.removeChild(l.firstChild);l.options&&r.nodeName(l,"select")&&(l.options.length=0)}return this},clone:function(l,P){return l=l!=null&&l,P=P==null?l:P,this.map(function(){return r.clone(this,l,P)})},html:function(l){return _e(this,function(P){var V=this[0]||{},te=0,he=this.length;if(P===void 0)return V.nodeType===1?V.innerHTML.replace(or,""):void 0;if(typeof P=="string"&&!br.test(P)&&(E.htmlSerialize||!jr.test(P))&&(E.leadingWhitespace||!Te.test(P))&&!Ye[(ke.exec(P)||["",""])[1].toLowerCase()]){P=r.htmlPrefilter(P);try{for(;te")).appendTo(P.documentElement))[0].contentWindow||W[0].contentDocument).document).write(),P.close(),V=pe(l,P),W.detach()),fe[l]=V),V}var Ue,ze,Le,Qe,lt,nt,Ke,xt,Lt=/^margin/,bt=new RegExp("^("+Ee+")(?!px)[a-z%]+$","i"),un=function(l,P,V,te){var he,ye={};for(he in P)ye[he]=l.style[he],l.style[he]=P[he];for(he in te=V.apply(l,te||[]),P)l.style[he]=ye[he];return te},pt=u.documentElement;function et(){var l,P=u.documentElement;P.appendChild(Ke),xt.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",Ue=Le=nt=!1,ze=lt=!0,i.getComputedStyle&&(l=i.getComputedStyle(xt),Ue=(l||{}).top!=="1%",nt=(l||{}).marginLeft==="2px",Le=(l||{width:"4px"}).width==="4px",xt.style.marginRight="50%",ze=(l||{marginRight:"4px"}).marginRight==="4px",(l=xt.appendChild(u.createElement("div"))).style.cssText=xt.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",l.style.marginRight=l.style.width="0",xt.style.width="1px",lt=!parseFloat((i.getComputedStyle(l)||{}).marginRight),xt.removeChild(l)),xt.style.display="none",(Qe=xt.getClientRects().length===0)&&(xt.style.display="",xt.innerHTML="
    t
    ",xt.childNodes[0].style.borderCollapse="separate",(l=xt.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",Qe=l[0].offsetHeight===0)&&(l[0].style.display="",l[1].style.display="none",Qe=l[0].offsetHeight===0),P.removeChild(Ke)}Ke=u.createElement("div"),(xt=u.createElement("div")).style&&(xt.style.cssText="float:left;opacity:.5",E.opacity=xt.style.opacity==="0.5",E.cssFloat=!!xt.style.cssFloat,xt.style.backgroundClip="content-box",xt.cloneNode(!0).style.backgroundClip="",E.clearCloneStyle=xt.style.backgroundClip==="content-box",(Ke=u.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",xt.innerHTML="",Ke.appendChild(xt),E.boxSizing=xt.style.boxSizing===""||xt.style.MozBoxSizing===""||xt.style.WebkitBoxSizing==="",r.extend(E,{reliableHiddenOffsets:function(){return Ue==null&&et(),Qe},boxSizingReliable:function(){return Ue==null&&et(),Le},pixelMarginRight:function(){return Ue==null&&et(),ze},pixelPosition:function(){return Ue==null&&et(),Ue},reliableMarginRight:function(){return Ue==null&&et(),lt},reliableMarginLeft:function(){return Ue==null&&et(),nt}}));var tt,ut,rn=/^(top|right|bottom|left)$/;function Xt(l,P){return{get:function(){if(!l())return(this.get=P).apply(this,arguments);delete this.get}}}i.getComputedStyle?(tt=function(l){var P=l.ownerDocument.defaultView;return(P=P&&P.opener?P:i).getComputedStyle(l)},ut=function(l,P,V){var te,he,ye=l.style;return(he=(V=V||tt(l))?V.getPropertyValue(P)||V[P]:void 0)!==""&&he!==void 0||r.contains(l.ownerDocument,l)||(he=r.style(l,P)),V&&!E.pixelMarginRight()&&bt.test(he)&&Lt.test(P)&&(l=ye.width,P=ye.minWidth,te=ye.maxWidth,ye.minWidth=ye.maxWidth=ye.width=he,he=V.width,ye.width=l,ye.minWidth=P,ye.maxWidth=te),he===void 0?he:he+""}):pt.currentStyle&&(tt=function(l){return l.currentStyle},ut=function(l,P,V){var te,he,ye,Ie=l.style;return(V=(V=V||tt(l))?V[P]:void 0)==null&&Ie&&Ie[P]&&(V=Ie[P]),bt.test(V)&&!rn.test(P)&&(te=Ie.left,(ye=(he=l.runtimeStyle)&&he.left)&&(he.left=l.currentStyle.left),Ie.left=P==="fontSize"?"1em":V,V=Ie.pixelLeft+"px",Ie.left=te,ye)&&(he.left=ye),V===void 0?V:V+""||"auto"});var Ot=/alpha\([^)]*\)/i,ot=/opacity\s*=\s*([^)]*)/i,Ut=/^(none|table(?!-c[ea]).+)/,Kt=new RegExp("^("+Ee+")(.*)$","i"),$t={position:"absolute",visibility:"hidden",display:"block"},de={letterSpacing:"0",fontWeight:"400"},ce=["Webkit","O","Moz","ms"],xe=u.createElement("div").style;function $e(l){if(l in xe)return l;for(var P=l.charAt(0).toUpperCase()+l.slice(1),V=ce.length;V--;)if((l=ce[V]+P)in xe)return l}function De(l,P){for(var V,te,he,ye=[],Ie=0,Pe=l.length;Ie
    a",_n=ni.getElementsByTagName("a")[0],tn.setAttribute("type","checkbox"),ni.appendChild(tn),(_n=ni.getElementsByTagName("a")[0]).style.cssText="top:1px",E.getSetAttribute=ni.className!=="t",E.style=/top/.test(_n.getAttribute("style")),E.hrefNormalized=_n.getAttribute("href")==="/a",E.checkOn=!!tn.value,E.optSelected=Ee.selected,E.enctype=!!u.createElement("form").enctype,di.disabled=!0,E.optDisabled=!Ee.disabled,(tn=u.createElement("input")).setAttribute("value",""),E.input=tn.getAttribute("value")==="",tn.value="t",tn.setAttribute("type","radio"),E.radioValue=tn.value==="t";var gr=/\r/g,Wt=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(l){var P,V,te,he=this[0];return arguments.length?(te=r.isFunction(l),this.each(function(ye){this.nodeType!==1||((ye=te?l.call(this,ye,r(this).val()):l)==null?ye="":typeof ye=="number"?ye+="":r.isArray(ye)&&(ye=r.map(ye,function(Ie){return Ie==null?"":Ie+""})),(P=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()])&&"set"in P&&P.set(this,ye,"value")!==void 0)||(this.value=ye)})):he?(P=r.valHooks[he.type]||r.valHooks[he.nodeName.toLowerCase()])&&"get"in P&&(V=P.get(he,"value"))!==void 0?V:typeof(V=he.value)=="string"?V.replace(gr,""):V==null?"":V:void 0}}),r.extend({valHooks:{option:{get:function(l){var P=r.find.attr(l,"value");return P!=null?P:r.trim(r.text(l)).replace(Wt," ")}},select:{get:function(l){for(var P,V=l.options,te=l.selectedIndex,he=l.type==="select-one"||te<0,ye=he?null:[],Ie=he?te+1:V.length,Pe=te<0?Ie:he?te:0;Pe").append(r.parseHTML(je)).find(te):je)}).always(V&&function(je,qe){Ie.each(function(){V.apply(this,ye||[je.responseText,qe,je])})}),this)},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(l,P){r.fn[P]=function(V){return this.on(P,V)}}),r.expr.filters.animated=function(l){return r.grep(r.timers,function(P){return l===P.elem}).length},r.offset={setOffset:function(l,P,V){var te,he,ye,Ie,Pe=r.css(l,"position"),je=r(l),qe={};Pe==="static"&&(l.style.position="relative"),ye=je.offset(),te=r.css(l,"top"),Ie=r.css(l,"left"),Pe=(Pe==="absolute"||Pe==="fixed")&&-1'+(G?w.title[0]:w.title)+"":"";return w.zIndex=M,y([w.shade?'
    ':"",'
    '+(f&&w.type!=2?"":G)+"'+(g=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],M="layui-anim layui-anim-rotate layui-anim-loop",w.type==0&&w.icon!==-1?'':w.type==3?(Q=["layui-icon-loading","layui-icon-loading-1"],w.icon==2?'
    ':''):"")+((w.type!=1||!f)&&w.content||"")+'
    '+(g=[],z&&(g.push(''),g.push('')),w.closeBtn&&g.push(''),g.join(""))+"
    "+(w.btn?function(){var Y="";typeof w.btn=="string"&&(w.btn=[w.btn]);for(var N,K=0,p=w.btn.length;K'+w.btn[K]+"";return'
    '+Y+"
    "}():"")+(w.resize?'':"")+""],G,s('
    ')),this},T.pt.creat=function(){var f,y,Q,g,w=this,M=w.config,z=w.index,G=typeof(K=M.content)=="object",Y=s("body"),N=function(p){var x;M.shift&&(M.anim=M.shift),k.anim[M.anim]&&(x="layer-anim "+k.anim[M.anim],p.addClass(x).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){s(this).removeClass(x)}))};if(M.id&&s("."+k[0]).find("#"+M.id)[0])f=s("#"+M.id).closest("."+k[0]),y=f.attr("times"),Q=f.data("config"),g=s("#"+k.SHADE+y),(f.data("maxminStatus")||{})==="min"?c.restore(y):Q.hideOnClose&&(g.show(),f.show(),N(f),setTimeout(function(){g.css({opacity:g.data(S)})},10));else{switch(M.removeFocus&&document.activeElement&&document.activeElement.blur(),typeof M.area=="string"&&(M.area=M.area==="auto"?["",""]:[M.area,""]),c.ie==6&&(M.fixed=!1),M.type){case 0:M.btn="btn"in M?M.btn:C.btn[0],c.closeAll("dialog");break;case 2:var K=M.content=G?M.content:[M.content||"","auto"];M.content='';break;case 3:delete M.title,delete M.closeBtn,M.icon===-1&&M.icon,c.closeAll("loading");break;case 4:G||(M.content=[M.content,"body"]),M.follow=M.content[1],M.content=M.content[0]+'',delete M.title,M.tips=typeof M.tips=="object"?M.tips:[M.tips,!0],M.tipsMore||c.closeAll("tips")}w.vessel(G,function(p,x,_){Y.append(p[0]),G?M.type==2||M.type==4?s("body").append(p[1]):K.parents("."+k[0])[0]||(K.data("display",K.css("display")).show().addClass("layui-layer-wrap").wrap(p[1]),s("#"+k[0]+z).find("."+k[5]).before(x)):Y.append(p[1]),s("#"+k.MOVE)[0]||Y.append(C.moveElem=_),w.layero=s("#"+k[0]+z),w.shadeo=s("#"+k.SHADE+z),M.scrollbar||C.setScrollbar(z)}).auto(z),w.shadeo.css({"background-color":M.shade[1]||"#000",opacity:M.shade[0]||M.shade,transition:M.shade[2]||""}),w.shadeo.data(S,M.shade[0]||M.shade),M.type==2&&c.ie==6&&w.layero.find("iframe").attr("src",K[0]),M.type==4?w.tips():(w.offset(),parseInt(C.getStyle(document.getElementById(k.MOVE),"z-index"))||(w.layero.css("visibility","hidden"),c.ready(function(){w.offset(),w.layero.css("visibility","visible")}))),!M.fixed||C.events.resize[w.index]||(C.events.resize[w.index]=function(){w.resize()},u.on("resize",C.events.resize[w.index])),M.time<=0||setTimeout(function(){c.close(w.index)},M.time),w.move().callback(),N(w.layero),w.layero.data("config",M)}},T.pt.resize=function(){var f=this,y=f.config;f.offset(),(/^\d+%$/.test(y.area[0])||/^\d+%$/.test(y.area[1]))&&f.auto(f.index),y.type==4&&f.tips()},T.pt.auto=function(z){var y=this.config,Q=s("#"+k[0]+z),g=((y.area[0]===""||y.area[0]==="auto")&&0y.maxWidth)&&Q.width(y.maxWidth),[Q.innerWidth(),Q.innerHeight()]),w=Q.find(k[1]).outerHeight()||0,M=Q.find("."+k[6]).outerHeight()||0,z=function(G){(G=Q.find(G)).height(g[1]-w-M-2*(0|parseFloat(G.css("padding-top"))))};return y.type===2?z("iframe"):y.area[1]===""||y.area[1]==="auto"?0y.maxHeight?(g[1]=y.maxHeight,z("."+k[5])):y.fixed&&g[1]>=u.height()&&(g[1]=u.height(),z("."+k[5])):z("."+k[5]),this},T.pt.offset=function(){var f=this,y=f.config,Q=f.layero,g=[Q.outerWidth(),Q.outerHeight()],w=typeof y.offset=="object";f.offsetTop=(u.height()-g[1])/2,f.offsetLeft=(u.width()-g[0])/2,w?(f.offsetTop=y.offset[0],f.offsetLeft=y.offset[1]||f.offsetLeft):y.offset!=="auto"&&(y.offset==="t"?f.offsetTop=0:y.offset==="r"?f.offsetLeft=u.width()-g[0]:y.offset==="b"?f.offsetTop=u.height()-g[1]:y.offset==="l"?f.offsetLeft=0:y.offset==="lt"?(f.offsetTop=0,f.offsetLeft=0):y.offset==="lb"?(f.offsetTop=u.height()-g[1],f.offsetLeft=0):y.offset==="rt"?(f.offsetTop=0,f.offsetLeft=u.width()-g[0]):y.offset==="rb"?(f.offsetTop=u.height()-g[1],f.offsetLeft=u.width()-g[0]):f.offsetTop=y.offset),y.fixed||(f.offsetTop=/%$/.test(f.offsetTop)?u.height()*parseFloat(f.offsetTop)/100:parseFloat(f.offsetTop),f.offsetLeft=/%$/.test(f.offsetLeft)?u.width()*parseFloat(f.offsetLeft)/100:parseFloat(f.offsetLeft),f.offsetTop+=u.scrollTop(),f.offsetLeft+=u.scrollLeft()),Q.data("maxminStatus")==="min"&&(f.offsetTop=u.height()-(Q.find(k[1]).outerHeight()||0),f.offsetLeft=Q.css("left")),Q.css({top:f.offsetTop,left:f.offsetLeft})},T.pt.tips=function(){var f=this.config,y=this.layero,Q=[y.outerWidth(),y.outerHeight()],M=s(f.follow),g={width:(M=M[0]?M:s("body")).outerWidth(),height:M.outerHeight(),top:M.offset().top,left:M.offset().left},w=y.find(".layui-layer-TipsG"),M=f.tips[0];f.tips[1]||w.remove(),g.autoLeft=function(){0'):f.removeClass("layui-layer-btn-is-loading").removeAttr("disabled").find(".layui-layer-btn-loading-icon").remove()},T.pt.callback=function(){var f=this,y=f.layero,Q=f.config;f.openLayer(),Q.success&&(Q.type==2?y.find("iframe").on("load",function(){Q.success(y,f.index,f)}):Q.success(y,f.index,f)),c.ie==6&&f.IE6(y),y.find("."+k[6]).children("a").on("click",function(){var g,w=s(this),M=w.index();w.attr("disabled")||(Q.btnAsync?(g=M===0?Q.yes||Q.btn1:Q["btn"+(M+1)],f.loading=function(z){f.btnLoading(w,z)},g?C.promiseLikeResolve(g.call(Q,f.index,y,f)).then(function(z){z!==!1&&c.close(f.index)},function(z){z!==t&&i.console&&i.console.error("layer error hint: "+z)}):c.close(f.index)):M===0?Q.yes?Q.yes(f.index,y,f):Q.btn1?Q.btn1(f.index,y,f):c.close(f.index):(Q["btn"+(M+1)]&&Q["btn"+(M+1)](f.index,y,f))!==!1&&c.close(f.index))}),y.find("."+k[7]).on("click",function(){(Q.cancel&&Q.cancel(f.index,y,f))!==!1&&c.close(f.index)}),Q.shadeClose&&f.shadeo.on("click",function(){c.close(f.index)}),y.find(".layui-layer-min").on("click",function(){(Q.min&&Q.min(y,f.index,f))!==!1&&c.min(f.index,Q)}),y.find(".layui-layer-max").on("click",function(){s(this).hasClass("layui-layer-maxmin")?(c.restore(f.index),Q.restore&&Q.restore(y,f.index,f)):(c.full(f.index,Q),setTimeout(function(){Q.full&&Q.full(y,f.index,f)},100))}),Q.end&&(C.end[f.index]=Q.end),Q.beforeEnd&&(C.beforeEnd[f.index]=s.proxy(Q.beforeEnd,Q,y,f.index,f))},C.reselect=function(){s.each(s("select"),function(f,y){var Q=s(this);Q.parents("."+k[0])[0]||Q.attr("layer")==1&&s("."+k[0]).length<1&&Q.removeAttr("layer").show()})},T.pt.IE6=function(f){s("select").each(function(y,Q){var g=s(this);g.parents("."+k[0])[0]||g.css("display")!=="none"&&g.attr({layer:"1"}).hide()})},T.pt.openLayer=function(){c.zIndex=this.config.zIndex,c.setTop=function(f){return c.zIndex=parseInt(f[0].style.zIndex),f.on("mousedown",function(){c.zIndex++,f.css("z-index",c.zIndex+1)}),c.zIndex}},C.record=function(f){if(!f[0])return i.console&&console.error("index error");var Q=f.attr("type"),y=f.find(".layui-layer-content"),Q=Q===C.type[2]?y.children("iframe"):y,g=[f[0].style.width||C.getStyle(f[0],"width"),f[0].style.height||C.getStyle(f[0],"height"),f.position().top,f.position().left+parseFloat(f.css("margin-left"))];f.find(".layui-layer-max").addClass("layui-layer-maxmin"),f.attr({area:g}),y.data(E,C.getStyle(Q[0],"height"))},C.setScrollbar=function(f){k.html.css("overflow","hidden").attr("layer-full",f)},C.restScrollbar=function(f){k.html.attr("layer-full")==f&&(k.html[0].style[k.html[0].style.removeProperty?"removeProperty":"removeAttribute"]("overflow"),k.html.removeAttr("layer-full"))},C.promiseLikeResolve=function(f){var y=s.Deferred();return f&&typeof f.then=="function"?f.then(y.resolve,y.reject):y.resolve(f),y.promise()},(i.layer=c).getChildFrame=function(f,y){return y=y||s("."+k[4]).attr("times"),s("#"+k[0]+y).find("iframe").contents().find(f)},c.getFrameIndex=function(f){return s("#"+f).parents("."+k[4]).attr("times")},c.iframeAuto=function(f){var y,Q,g;f&&(y=c.getChildFrame("html",f).outerHeight(),Q=(f=s("#"+k[0]+f)).find(k[1]).outerHeight()||0,g=f.find("."+k[6]).outerHeight()||0,f.css({height:y+Q+g}),f.find("iframe").css({height:y}))},c.iframeSrc=function(f,y){s("#"+k[0]+f).find("iframe").attr("src",y)},c.style=function(g,y,Q){var g=s("#"+k[0]+g),w=g.find(".layui-layer-content"),M=g.attr("type"),z=g.find(k[1]).outerHeight()||0,G=g.find("."+k[6]).outerHeight()||0;g.attr("minLeft"),M!==C.type[3]&&M!==C.type[4]&&(Q||(parseFloat(y.width)<=260&&(y.width=260),parseFloat(y.height)-z-G<=64&&(y.height=64+z+G)),g.css(y),G=g.find("."+k[6]).outerHeight()||0,M===C.type[2]?g.find("iframe").css({height:(typeof y.height=="number"?y.height:g.height())-z-G}):w.css({height:(typeof y.height=="number"?y.height:g.height())-z-G-parseFloat(w.css("padding-top"))-parseFloat(w.css("padding-bottom"))}))},c.min=function(f,y){var Q,g,w,M,z,G,Y=s("#"+k[0]+f),N=Y.data("maxminStatus");N!=="min"&&(N==="max"&&c.restore(f),Y.data("maxminStatus","min"),y=y||Y.data("config")||{},N=s("#"+k.SHADE+f),Q=Y.find(".layui-layer-min"),g=Y.find(k[1]).outerHeight()||0,M=(w=typeof(M=Y.attr("minLeft"))=="string")?M:181*C.minStackIndex+"px",z=Y.css("position"),G={width:180,height:g,position:"fixed",overflow:"hidden"},C.record(Y),0u.width()&&(M=u.width()-180-(C.minStackArr.edgeIndex=C.minStackArr.edgeIndex||0,C.minStackArr.edgeIndex+=3))<0&&(M=0),y.minStack&&(G.left=M,G.top=u.height()-g,w||C.minStackIndex++,Y.attr("minLeft",M)),Y.attr("position",z),c.style(f,G,!0),Q.hide(),Y.attr("type")==="page"&&Y.find(k[4]).hide(),C.restScrollbar(f),N.hide())},c.restore=function(f){var y=s("#"+k[0]+f),Q=s("#"+k.SHADE+f),g=y.find(".layui-layer-content"),w=y.attr("area").split(","),M=y.attr("type"),z=y.data("config")||{},G=g.data(E);y.removeData("maxminStatus"),c.style(f,{width:w[0],height:w[1],top:parseFloat(w[2]),left:parseFloat(w[3]),position:y.attr("position"),overflow:"visible"},!0),y.find(".layui-layer-max").removeClass("layui-layer-maxmin"),y.find(".layui-layer-min").show(),M==="page"&&y.find(k[4]).show(),z.scrollbar?C.restScrollbar(f):C.setScrollbar(f),G!==t&&(g.removeData(E),(M===C.type[2]?g.children("iframe"):g).css({height:G})),Q.show()},c.full=function(f){var y=s("#"+k[0]+f),Q=y.data("maxminStatus");Q!=="max"&&(Q==="min"&&c.restore(f),y.data("maxminStatus","max"),C.record(y),k.html.attr("layer-full")||C.setScrollbar(f),setTimeout(function(){var g=y.css("position")==="fixed";c.style(f,{top:g?0:u.scrollTop(),left:g?0:u.scrollLeft(),width:"100%",height:"100%"},!0),y.find(".layui-layer-min").hide()},100))},c.title=function(f,y){s("#"+k[0]+(y||c.index)).find(k[1]).html(f)},c.close=function(f,y){var Q,g,w=(Q=s("."+k[0]).children("#"+f).closest("."+k[0]))[0]?(f=Q.attr("times"),Q):s("#"+k[0]+f),M=w.attr("type"),z=w.data("config")||{},G=z.id&&z.hideOnClose;w[0]&&(g=function(){var Y={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[z.anim]||"layer-anim-close",N=function(){var p="layui-layer-wrap";if(G)return w.removeClass("layer-anim "+Y),w.hide();if(M===C.type[1]&&w.attr("conType")==="object"){w.children(":not(."+k[5]+")").remove();for(var x=w.find("."+p),_=0;_<2;_++)x.unwrap();x.css("display",x.data("display")).removeClass(p)}else{if(M===C.type[2])try{var B=s("#"+k[4]+f)[0];B.contentWindow.document.write(""),B.contentWindow.close(),w.find("."+k[5])[0].removeChild(B)}catch(R){}w[0].innerHTML="",w.remove()}typeof C.end[f]=="function"&&C.end[f](),delete C.end[f],typeof y=="function"&&y(),C.events.resize[f]&&(u.off("resize",C.events.resize[f]),delete C.events.resize[f])},K=s("#"+k.SHADE+f);c.ie&&c.ie<10||!z.isOutAnim?K[G?"hide":"remove"]():(K.css({opacity:0}),setTimeout(function(){K[G?"hide":"remove"]()},350)),z.isOutAnim&&w.addClass("layer-anim "+Y),c.ie==6&&C.reselect(),C.restScrollbar(f),typeof w.attr("minLeft")=="string"&&(C.minStackIndex--,C.minStackArr.push(w.attr("minLeft"))),c.ie&&c.ie<10||!z.isOutAnim?N():setTimeout(function(){N()},200)},G||typeof C.beforeEnd[f]!="function"?(delete C.beforeEnd[f],g()):C.promiseLikeResolve(C.beforeEnd[f]()).then(function(Y){Y!==!1&&(delete C.beforeEnd[f],g())},function(Y){Y!==t&&i.console&&i.console.error("layer error hint: "+Y)}))},c.closeAll=function(f,y){typeof f=="function"&&(y=f,f=null);var Q=s("."+k[0]);s.each(Q,function(g){var w=s(this),M=f?w.attr("type")===f:1;M&&c.close(w.attr("times"),g===Q.length-1?y:null)}),Q.length===0&&typeof y=="function"&&y()},c.closeLast=function(f,y){var Q,g=[],w=s.isArray(f);s(typeof f=="string"?".layui-layer-"+f:".layui-layer").each(function(M,z){if(z=s(z),w&&f.indexOf(z.attr("type"))===-1||z.css("display")==="none")return!0;g.push(Number(z.attr("times")))}),0":'",z=f.success;return delete f.success,c.open(s.extend({type:1,btn:["\u786E\u5B9A","\u53D6\u6D88"],content:M,skin:"layui-layer-prompt"+D("prompt"),maxWidth:u.width(),success:function(G){(w=G.find(".layui-layer-input")).val(f.value||"").focus(),typeof z=="function"&&z(G)},resize:!1,yes:function(G){var Y=w.val();Y.length>(f.maxlength||500)?c.tips("\u6700\u591A\u8F93\u5165"+(f.maxlength||500)+"\u4E2A\u5B57\u7B26",w,{tips:1}):y&&y(Y,G,w)}},f))},c.tab=function(f){var y=(f=f||{}).tab||{},Q="layui-this",g=f.success;return delete f.success,c.open(s.extend({type:1,skin:"layui-layer-tab"+D("tab"),resize:!1,title:function(){var w=y.length,M=1,z="";if(0'+y[0].title+"";M"+y[M].title+"";return z}(),content:'
      '+function(){var w=y.length,M=1,z="";if(0'+(y[0].content||"no content")+"";M'+(y[M].content||"no content")+"";return z}()+"
    ",success:function(w){var M=w.find(".layui-layer-title").children(),z=w.find(".layui-layer-tabmain").children();M.on("mousedown",function(Y){Y.stopPropagation?Y.stopPropagation():Y.cancelBubble=!0;var Y=s(this),N=Y.index();Y.addClass(Q).siblings().removeClass(Q),z.eq(N).show().siblings().hide(),typeof f.change=="function"&&f.change(N)}),typeof g=="function"&&g(w)}},f))},c.photos=function(f,y,Q){var g={};if((f=s.extend(!0,{toolbar:!0,footer:!0},f)).photos){var K=!(typeof f.photos=="string"||f.photos instanceof s),w=K?f.photos:{},M=w.data||[],z=w.start||0,G=f.success;if(g.imgIndex=1+(0|z),f.img=f.img||"img",delete f.success,K){if(M.length===0)return c.msg("\u6CA1\u6709\u56FE\u7247")}else{var Y=s(f.photos),N=function(){M=[],Y.find(f.img).each(function(B){var R=s(this);R.attr("layer-index",B),M.push({alt:R.attr("alt"),pid:R.attr("layer-pid"),src:R.attr("lay-src")||R.attr("layer-src")||R.attr("src"),thumb:R.attr("src")})})};if(N(),M.length===0||(y||Y.on("click",f.img,function(){N();var B=s(this).attr("layer-index");c.photos(s.extend(f,{photos:{start:B,data:M,tab:f.tab},full:f.full}),!0)}),!y))return}g.imgprev=function(B){g.imgIndex--,g.imgIndex<1&&(g.imgIndex=M.length),g.tabimg(B)},g.imgnext=function(B,R){g.imgIndex++,g.imgIndex>M.length&&(g.imgIndex=1,R)||g.tabimg(B)},g.keyup=function(B){var R;g.end||(R=B.keyCode,B.preventDefault(),R===37?g.imgprev(!0):R===39?g.imgnext(!0):R===27&&c.close(g.index))},g.tabimg=function(B){if(!(M.length<=1))return w.start=g.imgIndex-1,c.close(g.index),c.photos(f,!0,B)},g.isNumber=function(B){return typeof B=="number"&&!isNaN(B)},g.image={},g.getTransform=function(ne){var R=[],X=ne.rotate,J=ne.scaleX,ne=ne.scale;return g.isNumber(X)&&X!==0&&R.push("rotate("+X+"deg)"),g.isNumber(J)&&J!==1&&R.push("scaleX("+J+")"),g.isNumber(ne)&&R.push("scale("+ne+")"),R.length?R.join(" "):"none"},g.event=function(B,R,X){var J,ne;g.main.find(".layui-layer-photos-prev").on("click",function(le){le.preventDefault(),g.imgprev(!0)}),g.main.find(".layui-layer-photos-next").on("click",function(le){le.preventDefault(),g.imgnext(!0)}),s(document).on("keyup",g.keyup),B.off("click").on("click","*[toolbar-event]",function(){var le=s(this);switch(le.attr("toolbar-event")){case"rotate":g.image.rotate=((g.image.rotate||0)+Number(le.attr("data-option")))%360,g.imgElem.css({transform:g.getTransform(g.image)});break;case"scalex":g.image.scaleX=g.image.scaleX===-1?1:-1,g.imgElem.css({transform:g.getTransform(g.image)});break;case"zoom":var me=Number(le.attr("data-option"));g.image.scale=(g.image.scale||1)+me,me<0&&g.image.scale<0-me&&(g.image.scale=0-me),g.imgElem.css({transform:g.getTransform(g.image)});break;case"reset":g.image.scaleX=1,g.image.scale=1,g.image.rotate=0,g.imgElem.css({transform:"none"});break;case"close":c.close(R)}X.offset(),X.auto(R)}),g.main.on("mousewheel DOMMouseScroll",function(le){var me=le.originalEvent.wheelDelta||-le.originalEvent.detail,Ae=g.main.find('[toolbar-event="zoom"]');(0q)&&(me.direction==="left"?g.imgnext(!0):me.direction==="right"&&g.imgprev(!0))},s.each([X.shadeo,g.main],function(le,me){J.touchSwipe(me,{onTouchEnd:ne})}))},g.loadi=c.load(1,{shade:!("shade"in f)&&[.9,t,"unset"],scrollbar:!1});var K=M[z].src,p=function(B){c.close(g.loadi);var R,X=M[z].alt||"";Q&&(f.anim=-1),g.index=c.open(s.extend({type:1,id:"layui-layer-photos",area:(B=[B.width,B.height],R=[s(i).width()-100,s(i).height()-100],!f.full&&(R[0]'+X+''+(R=['
    '],1','','',"
    "].join("")),f.toolbar&&R.push(['
    ','','','','','','',"
    "].join("")),f.footer&&R.push(['"].join("")),R.push(""),R.join(""))+"",success:function(J,ne,le){g.main=J.find(".layer-layer-photos-main"),g.footer=J.find(".layui-layer-photos-footer"),g.imgElem=g.main.children("img"),g.event(J,ne,le),f.tab&&f.tab(M[z],J),typeof G=="function"&&G(J)},end:function(){g.end=!0,s(document).off("keyup",g.keyup)}},f))},x=function(){c.close(g.loadi),c.msg("\u5F53\u524D\u56FE\u7247\u5730\u5740\u5F02\u5E38\uFF0C
    \u662F\u5426\u7EE7\u7EED\u67E5\u770B\u4E0B\u4E00\u5F20\uFF1F",{time:3e4,btn:["\u4E0B\u4E00\u5F20","\u4E0D\u770B\u4E86"],yes:function(){1").addClass(k));layui.each(A.bars,function(f,y){var Q=t('
  • ');Q.addClass(y.icon).attr({"lay-type":y.type,style:y.style||(A.bgcolor?"background-color: "+A.bgcolor:"")}).html(y.content),Q.on("click",function(){var g=t(this).attr("lay-type");g==="top"&&(A.target==="body"?t("html,body"):r).animate({scrollTop:0},A.duration),typeof A.click=="function"&&A.click.call(this,g)}),layui.type(A.on)==="object"&&layui.each(A.on,function(g,w){Q.on(g,function(){var M=t(this).attr("lay-type");typeof w=="function"&&w.call(this,M)})}),y.type==="top"&&(Q.addClass("layui-fixbar-top"),b=Q),D.append(Q)}),E.find("."+k).remove(),typeof A.css=="object"&&D.css(A.css),E.append(D),b&&(c=function f(){return r.scrollTop()>=A.margin?C||(b.show(),C=1):C&&(b.hide(),C=0),f}()),r.on("scroll",function(){c&&(clearTimeout(T),T=setTimeout(function(){c()},100))})},countdown:function(A){A=t.extend(!0,{date:new Date,now:new Date},A);var b=arguments,C=(1]|&(?=#[a-zA-Z0-9]+)/g.test(A+="")?A.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):A},unescape:function(A){return A!=null||(A=""),(A+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(A){var b=(A=A||{}).window||window.open(A.url||"",A.target,A.specs);A.url||(b.document.open("text/html","replace"),b.document.write(A.content||""),b.document.close())},toVisibleArea:function(A){var b,C,c,T,k,S,E,r;(A=t.extend({margin:160,duration:200,type:"y"},A)).scrollElem[0]&&A.thisElem[0]&&(b=A.scrollElem,E=A.thisElem,c=(k=A.type==="y")?"top":"left",T=b[C=k?"scrollTop":"scrollLeft"](),k=b[k?"height":"width"](),S=b.offset()[c],r={},(E=E.offset()[c]-S)>k-A.margin||E."+g,x=function(_){var B=this;B.index=++r.index,B.config=A.extend({},B.config,r.config,_),B.init()};x.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1,closeOnClick:!1},x.prototype.reload=function(_,B){var R=this;R.config=A.extend({},R.config,_),R.init(!0,B)},x.prototype.init=function(_,B){var R,X=this,J=X.config,ne=A(J.elem);return 1');return 0\u6682\u65E0\u6570\u636E
  • '),q},me=function(q,Z){return layui.each(Z,function(re,ae){var oe,ue=ae[J.children]&&0",(oe="href"in ae?''+O+"":O,ue?'
    '+oe+(ee==="parent"?'':ee==="group"&&X.isAllowSpread?'':"")+"
    ":'
    '+oe+"
    "),""].join(""))).data("item",ae),ue&&(Ee=A('
    '),oe=A("
      "),ee==="parent"?(Ee.append(me(oe,ae[J.children])),O.append(Ee)):O.append(me(oe,ae[J.children]))),q.append(O))}),q},Ae=['
      ',"
      "].join("");!(_=X.trigger!=="contextmenu"&&!lay.isTopElem(X.elem[0])?_:!0)&&X.elem.data(S+"_opened")||(R.elemView=A("."+f+"["+E+'="'+X.id+'"]'),B==="reloadData"&&R.elemView.length?R.elemView.html(X.content||le()):(R.elemView=A(Ae),R.elemView.append(X.content||le()),X.className&&R.elemView.addClass(X.className),X.style&&R.elemView.attr("style",X.style),r.thisId=X.id,R.remove(),ne.append(R.elemView),X.elem.data(S+"_opened",!0),_=X.shade?'
      ':"",R.elemView.before(_),X.trigger==="mouseenter"&&R.elemView.on("mouseenter",function(){clearTimeout(D.timer)}).on("mouseleave",function(){R.delayRemove()})),R.position(),(D.prevElem=R.elemView).data("prevElem",X.elem),R.elemView.find(".layui-menu").on(T,function(q){layui.stope(q)}),R.elemView.find(".layui-menu li").on("click",function(q){var Z=A(this),re=Z.data("item")||{},ae=re[J.children]&&0t.width()&&(R.addClass(N),(B=R[0].getBoundingClientRect()).left<0)&&R.removeClass(N),B.bottom>t.height())&&R.eq(0).css("margin-top",-(B.bottom-t.height()+5))}).on("mouseleave",u,function(_){var B=A(this).children("."+Y);B.removeClass(N),B.css("margin-top",0)}),r.close=function(_){return _=D.getThis(_),_?(_.remove(),D.call(_)):this},r.open=function(_){return _=D.getThis(_),_?(_.render(),D.call(_)):this},r.reload=function(_,B,R){return _=D.getThis(_),_?(_.reload(B,R),D.call(_)):this},r.reloadData=function(){var _=A.extend([],arguments),B=(_[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(_[1],function(R,X){B.test(R)||delete _[1][R]}),r.reload.apply(null,_)},r.render=function(_){return _=new x(_),D.call(_)},i(k,r)}),layui.define(["jquery","lay"],function(i){var t=layui.$,s=layui.lay,u={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(D){var f=this;return f.config=t.extend({},f.config,D),f},on:function(D,f){return layui.onevent.call(this,A,D,f)}},A="slider",b="layui-disabled",C="layui-slider-bar",c="layui-slider-wrap",T="layui-slider-wrap-btn",k="layui-slider-tips",S="layui-slider-input-txt",E="layui-slider-hover",r=function(D){var f=this;f.index=++u.index,f.config=t.extend({},f.config,u.config,D),f.render()};r.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,tipsAlways:!1,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},r.prototype.precision=function(){var D=this.config,D=t.map([D.min,D.max,D.step],function(f,y){return f=String(f).split("."),f[1]?f[1].length:0});return Math.max.apply(null,D)},r.prototype.render=function(){var D=this,f=D.config,Q=t(f.elem);if(1f.max&&(f.value=f.max),w=(f.value-f.min)/(f.max-f.min)*100+"%");var y,Q=f.disabled?"#c2c2c2":f.theme,g='
      '+(f.tips?'
      ":"")+'
      '+(f.range?'
      ':"")+"
      ",w=t(f.elem),M=w.next(".layui-slider");if(M[0]&&M.remove(),D.elemTemp=t(g),f.range?(D.elemTemp.find("."+c).eq(0).data("value",f.value[0]),D.elemTemp.find("."+c).eq(1).data("value",f.value[1])):D.elemTemp.find("."+c).data("value",f.value),w.html(D.elemTemp),f.type==="vertical"&&D.elemTemp.height(f.height+"px"),f.showstep){for(var z=(f.max-f.min)/f.step,G="",Y=1;Y<1+z;Y++){var N=100*Y/z;N<100&&(G+='
      ')}D.elemTemp.append(G)}function K(_){_=_.parent().data("value"),_=f.setTips?f.setTips(_):_,D.elemTemp.find("."+k).html(_)}function p(_){var B=f.type==="vertical"?f.height:D.elemTemp[0].offsetWidth,R=D.elemTemp.find("."+c);return(f.type==="vertical"?B-_.parent()[0].offsetTop-R.height():_.parent()[0].offsetLeft)/B*100}function x(_){f.type==="vertical"?D.elemTemp.find("."+k).css({bottom:_+"%","margin-bottom":"20px",display:"inline-block"}):D.elemTemp.find("."+k).css({left:_+"%",display:"inline-block"})}f.input&&!f.range&&(Q=t('
      '),w.css("position","relative"),w.append(Q),w.find("."+S).children("input").val(f.value),f.type==="vertical"?Q.css({left:0,top:-48}):D.elemTemp.css("margin-right",Q.outerWidth()+15)),f.disabled?(D.elemTemp.addClass(b),D.elemTemp.find("."+T).addClass(b)):D.slide(),f.tips&&(f.tipsAlways?(K(M=D.elemTemp.find("."+T)),x(p(M))):D.elemTemp.find("."+T).on("mouseover",function(){K(t(this));var _=p(t(this));clearTimeout(y),y=setTimeout(function(){x(_)},300)}).on("mouseout",function(){clearTimeout(y),f.tipsAlways||D.elemTemp.find("."+k).css("display","none")}))},r.prototype.slide=function(D,f,y){var Q=this,g=Q.config,w=Q.elemTemp,M=function(){return g.type==="vertical"?g.height:w[0].offsetWidth},z=w.find("."+c),G=w.next(".layui-slider-input"),Y=G.children("."+S).children("input").val(),N=100/((g.max-g.min)/g.step),K=Q.precision(),p=function(R,X,J){R=(R=100<(R=100ne[1]&&ne.reverse(),Q.value=g.range?ne:Ae,g.change&&g.change(Q.value),J==="done"&&g.done&&g.done(Q.value)},x=function(R){var X=R/M()*100/N,J=Math.round(X)*N;return J=R==M()?Math.ceil(X)*N:J},_=t(['
      M()?M():ae)/M()*100/N;p(ae,R),X.addClass(E),w.find("."+k).show(),re.preventDefault()},me=function(re){X.removeClass(E),g.tipsAlways||setTimeout(function(){w.find("."+k).hide()},re)},Ae=function(){me&&me(s.touchEventsSupported()?1e3:0),_.remove(),g.done&&g.done(Q.value),s.touchEventsSupported()&&(ne[0].removeEventListener("touchmove",le,!!s.passiveSupported&&{passive:!1}),ne[0].removeEventListener("touchend",Ae),ne[0].removeEventListener("touchcancel",Ae))},t("#LAY-slider-moving")[0]||t("body").append(_),_.on("mousemove",le),_.on("mouseup",Ae).on("mouseleave",Ae),s.touchEventsSupported()&&(ne[0].addEventListener("touchmove",le,!!s.passiveSupported&&{passive:!1}),ne[0].addEventListener("touchend",Ae),ne[0].addEventListener("touchcancel",Ae))})}),w.on("click",function(R){var X=t("."+T),J=t(this);!X.is(event.target)&&X.has(event.target).length===0&&X.length&&(J=(X=(X=(X=g.type==="vertical"?M()-R.clientY+J.offset().top-t(window).scrollTop():R.clientX-J.offset().left-t(window).scrollLeft())<0?0:X)>M()?M():X)/M()*100/N,X=g.range?g.type==="vertical"?Math.abs(X-parseInt(t(z[0]).css("bottom")))>Math.abs(X-parseInt(t(z[1]).css("bottom")))?1:0:Math.abs(X-z[0].offsetLeft)>Math.abs(X-z[1].offsetLeft)?1:0:0,p(J,X,"done"),R.preventDefault())}),G.children(".layui-slider-input-btn").children("i").each(function(R){t(this).on("click",function(){Y=G.children("."+S).children("input").val();var X=((Y=R==1?Y-g.stepg.max?g.max:Number(Y)+g.step)-g.min)/(g.max-g.min)*100/N;p(X,0,"done")})});var B=function(){var R=this.value,R=(R=(R=(R=isNaN(R)?0:R)g.max?g.max:R,((this.value=R)-g.min)/(g.max-g.min)*100/N);p(R,0,"done")};G.children("."+S).children("input").on("keydown",function(R){R.keyCode===13&&(R.preventDefault(),B.call(this))}).on("change",B)},r.prototype.events=function(){this.config},u.render=function(D){return D=new r(D),function(){var f=this,y=f.config;return{setValue:function(Q,g){return Q=(Q=Q>y.max?y.max:Q)',"",'','',"","","
      "].join("")),X=B.elem=t(B.elem);B.size&&R.addClass("layui-colorpicker-"+B.size),X.addClass("layui-inline").html(_.elemColorBox=R),B.id="id"in B?B.id:X.attr("id")||_.index,_.color=_.elemColorBox.find("."+r)[0].style.background,_.events()},x.prototype.renderPicker=function(){var _,B=this,R=B.config,X=B.elemColorBox[0],J=B.elemPicker=t(['
      ','
      ','
      ','
      ','
      ','
      ',"
      ",'
      ','
      ',"
      ","
      ",'
      ','
      ','
      ',"
      ","
      ",R.predefine?(_=['
      '],layui.each(R.colors,function(ne,le){_.push(['
      ','
      ',"
      "].join(""))}),_.push("
      "),_.join("")):"",'
      ','
      ','',"
      ",'
      ','','',"","
      "].join(""));B.elemColorBox.find("."+r)[0],t(k)[0]&&t(k).data("index")==B.index?B.removePicker(x.thisElemInd):(B.removePicker(x.thisElemInd),t("body").append(J)),b.thisId=R.id,x.thisElemInd=B.index,x.thisColor=X.style.background,B.position(),B.pickerEvents()},x.prototype.removePicker=function(R){var B=this.config,R=t("#layui-colorpicker"+(R||this.index));return R[0]&&(R.remove(),delete b.thisId,typeof B.close=="function")&&B.close(this.color),this},x.prototype.position=function(){var _=this,B=_.config;return s.position(_.bindElem||_.elemColorBox[0],_.elemPicker[0],{position:B.position,align:"center"}),_},x.prototype.val=function(){var _,B=this,R=(B.config,B.elemColorBox.find("."+r)),X=B.elemPicker.find("."+M),J=R[0].style.backgroundColor;J?(_=z(N(J)),R=R.attr("lay-type"),B.select(_.h,_.s,_.b),R==="torgb"?X.find("input").val(J):R==="rgba"?(R=N(J),(J.match(/[0-9]{1,3}/g)||[]).length===3?(X.find("input").val("rgba("+R.r+", "+R.g+", "+R.b+", 1)"),B.elemPicker.find("."+g).css("left",280)):(X.find("input").val(J),J=280*J.slice(J.lastIndexOf(",")+1,J.length-1),B.elemPicker.find("."+g).css("left",J)),B.elemPicker.find("."+Q)[0].style.background="linear-gradient(to right, rgba("+R.r+", "+R.g+", "+R.b+", 0), rgb("+R.r+", "+R.g+", "+R.b+"))"):X.find("input").val("#"+Y(_))):(B.select(0,100,100),X.find("input").val(""),B.elemPicker.find("."+Q)[0].style.background="",B.elemPicker.find("."+g).css("left",280))},x.prototype.side=function(){var _=this,B=_.config,R=_.elemColorBox.find("."+r),X=R.attr("lay-type"),J=_.elemPicker.find(".layui-colorpicker-side"),ne=_.elemPicker.find("."+f),le=_.elemPicker.find("."+y),me=_.elemPicker.find("."+w),Ae=_.elemPicker.find("."+Q),q=_.elemPicker.find("."+g),Z=ne[0].offsetTop/180*360,re=100-(me[0].offsetTop+3)/180*100,ae=(me[0].offsetLeft+3)/260*100,oe=Math.round(q[0].offsetLeft/280*100)/100,ue=_.elemColorBox.find("."+D),Ee=_.elemPicker.find(".layui-colorpicker-pre").children("div"),O=function(Ne,Ye,Se,Te){_.select(Ne,Ye,Se);var Re=G({h:Ne,s:Ye,b:Se}),Ne=Y({h:Ne,s:Ye,b:Se}),Ye=_.elemPicker.find("."+M).find("input");ue.addClass(S).removeClass(E),R[0].style.background="rgb("+Re.r+", "+Re.g+", "+Re.b+")",X==="torgb"?Ye.val("rgb("+Re.r+", "+Re.g+", "+Re.b+")"):X==="rgba"?(q.css("left",280*Te),Ye.val("rgba("+Re.r+", "+Re.g+", "+Re.b+", "+Te+")"),R[0].style.background="rgba("+Re.r+", "+Re.g+", "+Re.b+", "+Te+")",Ae[0].style.background="linear-gradient(to right, rgba("+Re.r+", "+Re.g+", "+Re.b+", 0), rgb("+Re.r+", "+Re.g+", "+Re.b+"))"):Ye.val("#"+Ne),B.change&&B.change(t.trim(_.elemPicker.find("."+M).find("input").val()))},ee=t(['
      '].join("")),ie=function(we){t("#LAY-colorpicker-moving")[0]||t("body").append(ee),ee.on("mousemove",we),ee.on("mouseup",function(){ee.remove()}).on("mouseleave",function(){ee.remove()})},ge=!0,_e=!0;ne.on("mousedown",function(we,ke){var Se=this.offsetTop,Te=(we.clientY===void 0?ke:we).clientY;_e&&layui.stope(we),ie(function(Re){var Ne=Se+(Re.clientY-Te),Ye=J[0].offsetHeight,Ye=(Ne=Ye<(Ne=Ne<0?0:Ne)?Ye:Ne)/180*360;O(Z=Ye,ae,re,oe),Re.preventDefault()}),we.preventDefault()}),J.on("mousedown",function(we){var ke=we.clientY-t(this).offset().top+K.scrollTop(),ke=(ke=(ke=ke<0?0:ke)>this.offsetHeight?this.offsetHeight:ke)/180*360;O(Z=ke,ae,re,oe),we.preventDefault(),ge&&ne.trigger("mousedown",we)}),me.on("mousedown",function(we,ke){var Se=this.offsetTop,Te=this.offsetLeft,Re=(we.clientY===void 0?ke:we).clientY,Ne=(we.clientX===void 0?ke:we).clientX;_e&&layui.stope(we),ie(function(Ye){var Je=Se+(Ye.clientY-Re),Ve=Te+(Ye.clientX-Ne),rt=le[0].offsetHeight,We=le[0].offsetWidth,We=(Ve=We<(Ve=Ve<0?0:Ve)?We:Ve)/260*100,Ve=100-(Je=rt<(Je=Je<0?0:Je)?rt:Je)/180*100;O(Z,ae=We,re=Ve,oe),Ye.preventDefault()}),we.preventDefault()}),le.on("mousedown",function(we){var Se=we.clientY-t(this).offset().top+K.scrollTop(),ke=we.clientX-t(this).offset().left+K.scrollLeft(),ke=((Se=Se<0?0:Se)>this.offsetHeight&&(Se=this.offsetHeight),(ke=(ke=ke<0?0:ke)>this.offsetWidth?this.offsetWidth:ke)/260*100),Se=100-Se/180*100;O(Z,ae=ke,re=Se,oe),layui.stope(we),we.preventDefault(),ge&&me.trigger("mousedown",we)}),q.on("mousedown",function(we,ke){var Se=this.offsetLeft,Te=(we.clientX===void 0?ke:we).clientX;_e&&layui.stope(we),ie(function(Re){var Ne=Se+(Re.clientX-Te),Ye=Ae[0].offsetWidth,Ye=(Ye<(Ne=Ne<0?0:Ne)&&(Ne=Ye),Math.round(Ne/280*100)/100);O(Z,ae,re,oe=Ye),Re.preventDefault()}),we.preventDefault()}),Ae.on("mousedown",function(we){var ke=we.clientX-t(this).offset().left,ke=((ke=ke<0?0:ke)>this.offsetWidth&&(ke=this.offsetWidth),Math.round(ke/280*100)/100);O(Z,ae,re,oe=ke),we.preventDefault(),ge&&q.trigger("mousedown",we)}),Ee.each(function(){t(this).on("click",function(){t(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var we=this.style.backgroundColor,ke=z(N(we)),Se=we.slice(we.lastIndexOf(",")+1,we.length-1);Z=ke.h,ae=ke.s,re=ke.b,(we.match(/[0-9]{1,3}/g)||[]).length===3&&(Se=1),oe=Se,O(ke.h,ke.s,ke.b,Se)})}),s.touchEventsSupported()&&layui.each([{elem:J,eventType:"mousedown"},{elem:Ae,eventType:"mousedown"},{elem:le,eventType:"mousedown"}],function(we,ke){s.touchSwipe(ke.elem,{onTouchStart:function(){_e=ge=!1},onTouchMove:function(Se){var Te,Re;Se=Se,Te=ke.eventType,Se=Se.touches[0],(Re=document.createEvent("MouseEvent")).initMouseEvent(Te,!0,!0,window,1,Se.screenX,Se.screenY,Se.clientX,Se.clientY,!1,!1,!1,!1,0,null),Se.target.dispatchEvent(Re)},onTouchEnd:function(){ee.remove(),_e=ge=!0}})})},x.prototype.select=function(ne,me,le,X){this.config;var J=Y({h:ne,s:100,b:100}),ne=(Y({h:ne,s:me,b:le}),ne/360*180),le=180-le/100*180,me=me/100*260,Ae=this.elemPicker.find("."+y)[0];this.elemPicker.find("."+f).css("top",ne),Ae.style.background="#"+J,this.elemPicker.find("."+w).css({top:le/Ae.offsetHeight*100+"%",left:me/Ae.offsetWidth*100+"%"})},x.prototype.pickerEvents=function(){var _=this,B=_.config,R=_.elemColorBox.find("."+r),X=_.elemPicker.find("."+M+" input"),J={clear:function(ne){R[0].style.background="",_.elemColorBox.find("."+D).removeClass(S).addClass(E),_.color="",B.done&&B.done(""),_.removePicker()},confirm:function(ne,le){var me,Ae,q,Z,re=t.trim(X.val());-1>16,g:(65280&q)>>8,b:255&q},Ae=z(Z),R[0].style.background=me="#"+Y(Ae),_.elemColorBox.find("."+D).removeClass(E).addClass(S)),le==="change"?(_.select(Ae.h,Ae.s,Ae.b,le),B.change&&B.change(me)):(_.color=re,B.done&&B.done(re),_.removePicker())}};_.elemPicker.on("click","*[colorpicker-events]",function(){var ne=t(this),le=ne.attr("colorpicker-events");J[le]&&J[le].call(this,ne)}),X.on("keyup",function(ne){var le=t(this);J.confirm.call(this,le,ne.keyCode===13?null:"change")})},x.prototype.events=function(){var _=this;_.config,_.elemColorBox.on("click",function(){_.renderPicker(),t(k)[0]&&(_.val(),_.side())})},p.on(A,function(_){var B,R,X;b.thisId&&(B=C.getThis(b.thisId))&&(R=B.config,X=B.elemColorBox.find("."+r),t(_.target).hasClass(T)||t(_.target).parents("."+T)[0]||t(_.target).hasClass(k.replace(/\./g,""))||t(_.target).parents(k)[0]||B.elemPicker&&(B.color?(_=z(N(B.color)),B.select(_.h,_.s,_.b)):B.elemColorBox.find("."+D).removeClass(S).addClass(E),X[0].style.background=B.color||"",typeof R.cancel=="function"&&R.cancel(B.color),B.removePicker()))}),K.on("resize",function(){if(b.thisId){var _=C.getThis(b.thisId);if(_)return!(!_.elemPicker||!t(k)[0])&&void _.position()}}),C.that={},C.getThis=function(_){var B=C.that[_];return B||u.error(_?c+" instance with ID '"+_+"' not found":"ID argument required"),B},b.render=function(_){return _=new x(_),C.call(_)},i(c,b)}),layui.define("jquery",function(i){var t=layui.$,s=(layui.hint(),layui.device()),u="element",A="layui-this",b="layui-show",C=".layui-tab-title",c=function(){this.config={}},T=(c.prototype.set=function(w){return t.extend(!0,this.config,w),this},c.prototype.on=function(w,M){return layui.onevent.call(this,u,w,M)},c.prototype.tabAdd=function(w,M){var z,N=t(".layui-tab[lay-filter="+w+"]"),G=N.children(C),Y=G.children(".layui-tab-bar"),N=N.children(".layui-tab-content"),K=""+(M.title||"unnaming")+"";return Y[0]?Y.before(K):G.append(K),N.append('
      "+(M.content||"")+"
      "),M.change&&this.tabChange(w,M.id),G.data("LAY_TAB_CHANGE",M.change),y.tabAuto(M.change?"change":null),this},c.prototype.tabDelete=function(w,M){return w=t(".layui-tab[lay-filter="+w+"]").children(C).find('>li[lay-id="'+M+'"]'),y.tabDelete(null,w),this},c.prototype.tabChange=function(w,M,z){return w=t(".layui-tab[lay-filter="+w+"]").children(C).find('>li[lay-id="'+M+'"]'),y.tabClick.call(w[0],{liElem:w,force:z}),this},c.prototype.tab=function(w){w=w||{},g.on("click",w.headerElem,function(M){var z=t(w.headerElem).index(t(this));y.tabClick.call(this,{index:z,options:w})})},c.prototype.progress=function(z,M){var G="layui-progress",z=t("."+G+"[lay-filter="+z+"]").find("."+G+"-bar"),G=z.find("."+G+"-text");return z.css("width",function(){return/^.+\/.+$/.test(M)?100*new Function("return "+M)()+"%":M}).attr("lay-percent",M),G.text(M),this},".layui-nav"),k="layui-nav-item",S="layui-nav-bar",E="layui-nav-tree",r="layui-nav-child",D="layui-nav-more",f="layui-anim layui-anim-upbit",y={tabClick:function(w){var G=(w=w||{}).options||{},M=w.liElem||t(this),z=G.headerElem?M.parent():M.parents(".layui-tab").eq(0),G=G.bodyElem?t(G.bodyElem):z.children(".layui-tab-content").children(".layui-tab-item"),Y=M.find("a"),Y=Y.attr("href")!=="javascript:;"&&Y.attr("target")==="_blank",N=typeof M.attr("lay-unselect")=="string",K=z.attr("lay-filter"),p=M.attr("lay-id"),x="index"in w?w.index:M.parent().children("li").index(M);if(!w.force){var w=M.siblings("."+A);if(layui.event.call(this,u,"tabBeforeChange("+K+")",{elem:z,from:{index:M.parent().children("li").index(w),id:w.attr("lay-id")},to:{index:x,id:p}})===!1)return}Y||N||(M.addClass(A).siblings().removeClass(A),(p?w=(w=G.filter('[lay-id="'+p+'"]')).length?w:G.eq(x):G.eq(x)).addClass(b).siblings().removeClass(b)),layui.event.call(this,u,"tab("+K+")",{elem:z,index:x,id:p})},tabDelete:function(w,z){var z=z||t(this).parent(),G=z.parent().children("li").index(z),Y=z.closest(".layui-tab"),N=Y.children(".layui-tab-content").children(".layui-tab-item"),K=Y.attr("lay-filter"),p=z.attr("lay-id");layui.event.call(z[0],u,"tabBeforeDelete("+K+")",{elem:Y,index:G,id:p})!==!1&&(z.hasClass(A)&&(z.next()[0]&&z.next().is("li")?y.tabClick.call(z.next()[0],{index:G+1}):z.prev()[0]&&z.prev().is("li")&&y.tabClick.call(z.prev()[0],null,G-1)),z.remove(),(p?z=(z=N.filter('[lay-id="'+p+'"]')).length?z:N.eq(G):N.eq(G)).remove(),setTimeout(function(){y.tabAuto()},50),layui.event.call(this,u,"tabDelete("+K+")",{elem:Y,index:G,id:p}))},tabAuto:function(w,M){var z="layui-tab-more",G="layui-tab-bar",Y="layui-tab-close",N=this;(M||t(".layui-tab")).each(function(){var K=t(this),p=K.children(".layui-tab-title"),x=(K.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),x=t(''),_=(N===window&&s.ie,K.attr("lay-allowclose"));_&&_!=="false"&&p.find("li").each(function(){var B,R=t(this);R.find("."+Y)[0]||R.attr("lay-allowclose")==="false"||((B=t('')).on("click",y.tabDelete),R.append(B))}),typeof K.attr("lay-unauto")!="string"&&(p.prop("scrollWidth")>p.outerWidth()+1||p.find("li").length&&p.height()>(_=p.find("li").eq(0).height())+_/2?(w==="change"&&p.data("LAY_TAB_CHANGE")&&p.addClass(z),p.find("."+G)[0]||(p.append(x),K.attr("overflow",""),x.on("click",function(B){var R=p.hasClass(z);p[R?"removeClass":"addClass"](z)}))):(p.find("."+G).remove(),K.removeAttr("overflow")))})},hideTabMore:function(w){var M=t(".layui-tab-title");w!==!0&&t(w.target).attr("lay-stope")==="tabmore"||(M.removeClass("layui-tab-more"),M.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var w=t(this),M=w.closest(T),z=M.attr("lay-filter"),G=w.parent(),Y=w.siblings("."+r),N=typeof G.attr("lay-unselect")=="string";if(w.attr("href")!=="javascript:;"&&w.attr("target")==="_blank"||N||Y[0]||(M.find("."+A).removeClass(A),G.addClass(A)),M.hasClass(E)){var N=k+"ed",K=!G.hasClass(N),p=function(){t(this).css({display:""}),M.children("."+S).css({opacity:0})};if(Y.is(":animated"))return;Y.removeClass(f),Y[0]&&(K?(Y.slideDown(200,p),G.addClass(N)):(G.removeClass(N),Y.show().slideUp(200,p)),typeof M.attr("lay-accordion")!="string"&&M.attr("lay-shrink")!=="all"||((K=G.siblings("."+N)).removeClass(N),K.children("."+r).show().stop().slideUp(200,p)))}layui.event.call(this,u,"nav("+z+")",w)},collapse:function(){var w=t(this),M=w.find(".layui-colla-icon"),z=w.siblings(".layui-colla-content"),G=w.parents(".layui-collapse").eq(0),Y=G.attr("lay-filter"),N=z.css("display")==="none";typeof G.attr("lay-accordion")=="string"&&((G=G.children(".layui-colla-item").children("."+b)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),G.removeClass(b)),z[N?"addClass":"removeClass"](b),M.html(N?"":""),layui.event.call(this,u,"collapse("+Y+")",{title:w,content:z,show:N})}},Q=(c.prototype.render=c.prototype.init=function(w,M){var z=typeof M=="string"&&M?'[lay-filter="'+M+'"]':"",G={tab:function(Y){y.tabAuto.call({},Y)},nav:function(Y){var N={},K={},p={},x="layui-nav-title";(Y||t(T+z)).each(function(_){var B=t(this),R=t(''),X=B.find("."+k),J=B.find("."+S)[0];J&&J.remove(),B.append(R),(B.hasClass(E)?X.find("dd,>."+x):X).off("mouseenter.lay_nav").on("mouseenter.lay_nav",function(){(function(ne,le,me){var Ae,q=t(this),Z=q.find("."+r);le.hasClass(E)?Z[0]||(Ae=q.children("."+x),ne.css({top:q.offset().top-le.offset().top,height:(Ae[0]?Ae:q).outerHeight(),opacity:1})):(Z.addClass(f),Z.hasClass("layui-nav-child-c")&&Z.css({left:-(Z.outerWidth()-q.width())/2}),Z[0]?ne.css({left:ne.position().left+ne.width()/2,width:0,opacity:0}):ne.css({left:q.position().left+parseFloat(q.css("marginLeft")),top:q.position().top+q.height()-ne.height()}),N[me]=setTimeout(function(){ne.css({width:Z[0]?0:q.width(),opacity:Z[0]?0:1})},s.ie&&s.ie<10?0:200),clearTimeout(p[me]),Z.css("display")==="block"&&clearTimeout(K[me]),K[me]=setTimeout(function(){Z.addClass(b),q.find("."+D).addClass(D+"d")},300))}).call(this,R,B,_)}).off("mouseleave.lay_nav").on("mouseleave.lay_nav",function(){B.hasClass(E)?R.css({height:0,opacity:0}):(clearTimeout(K[_]),K[_]=setTimeout(function(){B.find("."+r).removeClass(b),B.find("."+D).removeClass(D+"d")},300))}),B.off("mouseleave.lay_nav").on("mouseleave.lay_nav",function(){clearTimeout(N[_]),p[_]=setTimeout(function(){B.hasClass(E)||R.css({width:0,left:R.position().left+R.width()/2,opacity:0})},200)}),X.find("a").each(function(){var ne=t(this);ne.parent(),ne.siblings("."+r)[0]&&!ne.children("."+D)[0]&&ne.append(''),ne.off("click",y.clickThis).on("click",y.clickThis)})})},breadcrumb:function(Y){(Y||t(".layui-breadcrumb"+z)).each(function(){var N=t(this),K="lay-separator",p=N.attr(K)||"/",x=N.find("a");x.next("span["+K+"]")[0]||(x.each(function(_){_!==x.length-1&&t(this).after(""+p+"")}),N.css("visibility","visible"))})},progress:function(Y){var N="layui-progress";(Y||t("."+N+z)).each(function(){var K=t(this),p=K.find(".layui-progress-bar"),x=p.attr("lay-percent");p.css("width",function(){return/^.+\/.+$/.test(x)?100*new Function("return "+x)()+"%":x}),K.attr("lay-showpercent")&&setTimeout(function(){p.html(''+x+"")},350)})},collapse:function(Y){(Y||t(".layui-collapse"+z)).each(function(){t(this).find(".layui-colla-item").each(function(){var K=t(this),N=K.find(".layui-colla-title"),K=K.find(".layui-colla-content").css("display")==="none";N.find(".layui-colla-icon").remove(),N.append(''+(K?"":"")+""),N.off("click",y.collapse).on("click",y.collapse)})})}};return w&&typeof M=="object"&&M instanceof t?G[w](M):G[w]?G[w]():layui.each(G,function(Y,N){N()})},new c),g=t(document);t(function(){Q.render()}),g.on("click",".layui-tab-title li",y.tabClick),t(window).on("resize",y.tabAuto),i(u,Q)}),layui.define(["lay","layer"],function(i){var t=layui.$,s=layui.lay,u=layui.layer,A=layui.device(),b="upload",C="layui_"+b+"_index",c={config:{},index:layui[b]?layui[b].index+1e4:0,set:function(y){var Q=this;return Q.config=t.extend({},Q.config,y),Q},on:function(y,Q){return layui.onevent.call(this,b,y,Q)}},T=function(){var y=this,Q=y.config.id;return{upload:function(g){y.upload.call(y,g)},reload:function(g){y.reload.call(y,g)},config:(T.that[Q]=y).config}},k="layui-upload-file",S="layui-upload-form",E="layui-upload-iframe",r="layui-upload-choose",D="UPLOADING",f=function(y){var Q=this;Q.index=++c.index,Q.config=t.extend({},Q.config,c.config,y),Q.render()};f.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},f.prototype.reload=function(y){var Q=this;Q.config=t.extend({},Q.config,y),Q.render(!0)},f.prototype.render=function(y){var Q=this,g=Q.config,w=t(g.elem);return 1"].join("")),w=Q.elem.next();(w.hasClass(k)||w.hasClass(S))&&w.remove(),A.ie&&A.ie<10&&Q.elem.wrap('
      '),y.isFile()?(y.elemFile=Q.elem,Q.field=Q.elem[0].name):Q.elem.after(g),A.ie&&A.ie<10&&y.initIE()},f.prototype.initIE=function(){var y,Q=this.config,g=t(''),w=t(['
      ',"
      "].join(""));t("#"+E)[0]||t("body").append(g),Q.elem.next().hasClass(S)||(this.elemFile.wrap(w),Q.elem.next("."+S).append((y=[],layui.each(Q.data,function(M,z){z=typeof z=="function"?z():z,y.push('')}),y.join(""))))},f.prototype.msg=function(y){return u.msg(y,{icon:2,shift:6})},f.prototype.isFile=function(){var y=this.config.elem[0];if(y)return y.tagName.toLocaleLowerCase()==="input"&&y.type==="file"},f.prototype.preview=function(y){window.FileReader&&layui.each(this.chooseFiles,function(Q,g){var w=new FileReader;w.readAsDataURL(g),w.onload=function(){y&&y(Q,g,this.result)}})},f.prototype.upload=function(y,Q){var g,w,M,z,G,Y=this,N=Y.config,K=N.text||{},p=Y.elemFile[0],x=function(){return y||Y.files||Y.chooseFiles||p.files},_=function(){var q=0,Z=0,re=x(),ae=function(){N.multiple&&q+Z===Y.fileLength&&typeof N.allDone=="function"&&N.allDone({total:Y.fileLength,successful:q,failed:Z})},oe=function(ue){var Ee=new FormData,O=function(ie){ue.unified?layui.each(re,function(ge,_e){delete _e[D]}):delete ie[D]};if(layui.each(N.data,function(ie,ge){ge=typeof ge=="function"?ue.unified?ge():ge(ue.index,ue.file):ge,Ee.append(ie,ge)}),ue.unified)layui.each(re,function(ie,ge){ge[D]||(ge[D]=!0,Ee.append(N.field,ge))});else{if(ue.file[D])return;Ee.append(N.field,ue.file),ue.file[D]=!0}var ee={url:N.url,type:"post",data:Ee,dataType:N.dataType||"json",contentType:!1,processData:!1,headers:N.headers||{},success:function(ie){N.unified?q+=Y.fileLength:q++,X(ue.index,ie),ae(ue.index),O(ue.file)},error:function(ie){N.unified?Z+=Y.fileLength:Z++,Y.msg(K.error||["Upload failed, please try again.","status: "+(ie.status||"")+" - "+(ie.statusText||"error")].join("
      ")),J(ue.index,ie.responseText,ie),ae(ue.index),O(ue.file)}};typeof N.progress=="function"&&(ee.xhr=function(){var ie=t.ajaxSettings.xhr();return ie.upload.addEventListener("progress",function(ge){var _e;ge.lengthComputable&&(_e=Math.floor(ge.loaded/ge.total*100),N.progress(_e,(N.item||N.elem)[0],ge,ue.index))}),ie}),t.ajax(ee)};N.unified?oe({unified:!0,index:0}):layui.each(re,function(ue,Ee){oe({index:ue,file:Ee})})},B=function(){var q=t("#"+E);Y.elemFile.parent().submit(),clearInterval(f.timer),f.timer=setInterval(function(){var Z,re=q.contents().find("body");try{Z=re.text()}catch(ae){Y.msg(K["cross-domain"]),clearInterval(f.timer),J()}Z&&(clearInterval(f.timer),re.html(""),X(0,Z))},30)},R=function(q){if(N.force==="json"&&typeof q!="object")try{return{status:"CONVERTED",data:JSON.parse(q)}}catch(Z){return Y.msg(K["data-format-error"]),{status:"FORMAT_ERROR",data:{}}}return{status:"DO_NOTHING",data:{}}},X=function(q,Z){Y.elemFile.next("."+r).remove(),p.value="";var re=R(Z);switch(re.status){case"CONVERTED":Z=re.data;break;case"FORMAT_ERROR":return}typeof N.done=="function"&&N.done(Z,q||0,function(ae){Y.upload(ae)})},J=function(q,Z,re){N.auto&&(p.value="");var ae=R(Z);switch(ae.status){case"CONVERTED":Z=ae.data;break;case"FORMAT_ERROR":return}typeof N.error=="function"&&N.error(q||0,function(oe){Y.upload(oe)},Z,re)},ne=N.exts,Ae=(w=[],layui.each(y||Y.chooseFiles,function(q,Z){w.push(Z.name)}),w),le={preview:function(q){Y.preview(q)},upload:function(q,Z){var re={};re[q]=Z,Y.upload(re)},pushFile:function(){return Y.files=Y.files||{},layui.each(Y.chooseFiles,function(q,Z){Y.files[q]=Z}),Y.files},resetFile:function(q,Z,re){Z=new File([Z],re),Y.files=Y.files||{},Y.files[q]=Z},getChooseFiles:function(){return Y.chooseFiles}},me={file:"\u6587\u4EF6",images:"\u56FE\u7247",video:"\u89C6\u9891",audio:"\u97F3\u9891"}[N.accept]||"\u6587\u4EF6",Ae=Ae.length===0?p.value.match(/[^\/\\]+\..+/g)||[]:Ae;if(Ae.length!==0){switch(N.accept){case"file":layui.each(Ae,function(q,Z){if(ne&&!RegExp(".\\.("+ne+")$","i").test(escape(Z)))return g=!0});break;case"video":layui.each(Ae,function(q,Z){if(!RegExp(".\\.("+(ne||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(Z)))return g=!0});break;case"audio":layui.each(Ae,function(q,Z){if(!RegExp(".\\.("+(ne||"mp3|wav|mid")+")$","i").test(escape(Z)))return g=!0});break;default:layui.each(Ae,function(q,Z){if(!RegExp(".\\.("+(ne||"jpg|png|gif|bmp|jpeg|svg|webp")+")$","i").test(escape(Z)))return g=!0})}if(g)return Y.msg(K["check-error"]||"\u9009\u62E9\u7684"+me+"\u4E2D\u5305\u542B\u4E0D\u652F\u6301\u7684\u683C\u5F0F"),p.value="";if(Q!=="choose"&&!N.auto||(N.choose&&N.choose(le),Q!=="choose")){if(Y.fileLength=(M=0,me=x(),layui.each(me,function(){M++}),M),N.number&&Y.fileLength>N.number)return Y.msg(typeof K["limit-number"]=="function"?K["limit-number"](N,Y.fileLength):"\u540C\u65F6\u6700\u591A\u53EA\u80FD\u4E0A\u4F20: "+N.number+" \u4E2A\u6587\u4EF6
      \u60A8\u5F53\u524D\u5DF2\u7ECF\u9009\u62E9\u4E86: "+Y.fileLength+" \u4E2A\u6587\u4EF6");if(01024*N.size&&(Z=1<=(Z=N.size/1024)?Z.toFixed(2)+"MB":N.size+"KB",p.value="",z=Z)}),z))return Y.msg(typeof K["limit-size"]=="function"?K["limit-size"](N,z):"\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7 "+z);G=function(){if(A.ie)return(9'+p+"")},M=function(Y){var N=!0;return layui.each(y.files,function(K,p){if(!(N=p.name!==Y.name))return!0}),N},z=function(Y){var N=function(K){K.ext=K.name.substr(K.name.lastIndexOf(".")+1).toLowerCase(),K.sizes=c.util.parseSize(K.size)};return Y instanceof FileList?layui.each(Y,function(K,p){N(p)}):N(Y),Y},G=function(Y){var N;return(Y=Y||[]).length?y.files?(N=[],layui.each(Y,function(K,p){M(p)&&N.push(z(p))}),N):z(Y):[]};Q.elem.off("upload.start").on("upload.start",function(){var Y=t(this);y.config.item=Y,y.elemFile[0].click()}),A.ie&&A.ie<10||Q.elem.off("upload.over").on("upload.over",function(){t(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){t(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(Y,p){var K=t(this),p=G(p.originalEvent.dataTransfer.files);K.removeAttr("lay-over"),g(p),Q.auto?y.upload():w(p)}),y.elemFile.on("change",function(){var Y=G(this.files);Y.length!==0&&(g(Y),Q.auto?y.upload():w(Y))}),Q.bindAction.off("upload.action").on("upload.action",function(){y.upload()}),Q.elem.data(C)||(Q.elem.on("click",function(){y.isFile()||t(this).trigger("upload.start")}),Q.drag&&Q.elem.on("dragover",function(Y){Y.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(Y){t(this).trigger("upload.leave")}).on("drop",function(Y){Y.preventDefault(),t(this).trigger("upload.drop",Y)}),Q.bindAction.on("click",function(){t(this).trigger("upload.action")}),Q.elem.data(C,Q.id))},c.util={parseSize:function(y,Q){var g,w;return Q=Q||2,y!=null&&y?(g=typeof y=="string"?parseFloat(y):y,w=Math.floor(Math.log(g)/Math.log(1024)),(y=(y=g/Math.pow(1024,w))%1==0?y:parseFloat(y.toFixed(Q)))+["Bytes","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"][w]):"0"},promiseLikeResolve:function(y){var Q=t.Deferred();return y&&typeof y.then=="function"?y.then(Q.resolve,Q.reject):Q.resolve(y),Q.promise()}},T.that={},T.getThis=function(y){var Q=T.that[y];return Q||hint.error(y?b+" instance with ID '"+y+"' not found":"ID argument required"),Q},c.render=function(y){return y=new f(y),T.call(y)},i(b,c)}),layui.define(["lay","layer","util"],function(i){var t=layui.$,s=layui.layer,u=layui.util,A=layui.hint(),b=(layui.device(),"form"),C=".layui-form",c="layui-this",T="layui-hide",k="layui-disabled",r=function(){this.config={verify:{required:function(f){if(!/[\S]+/.test(f))return"\u5FC5\u586B\u9879\u4E0D\u80FD\u4E3A\u7A7A"},phone:function(f){if(f&&!/^1\d{10}$/.test(f))return"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u6B63\u786E"},email:function(f){if(f&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(f))return"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u6B63\u786E"},url:function(f){if(f&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(f))return"\u94FE\u63A5\u683C\u5F0F\u4E0D\u6B63\u786E"},number:function(f){if(f&&isNaN(f))return"\u53EA\u80FD\u586B\u5199\u6570\u5B57"},date:function(f){if(f&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(f))return"\u65E5\u671F\u683C\u5F0F\u4E0D\u6B63\u786E"},identity:function(f){if(f&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(f))return"\u8EAB\u4EFD\u8BC1\u53F7\u683C\u5F0F\u4E0D\u6B63\u786E"}},autocomplete:null}},S=(r.prototype.set=function(f){return t.extend(!0,this.config,f),this},r.prototype.verify=function(f){return t.extend(!0,this.config.verify,f),this},r.prototype.getFormElem=function(f){return t(C+(f?'[lay-filter="'+f+'"]':""))},r.prototype.on=function(f,y){return layui.onevent.call(this,b,f,y)},r.prototype.val=function(f,y){return this.getFormElem(f).each(function(Q,g){var w=t(this);layui.each(y,function(Y,z){var G,Y=w.find('[name="'+Y+'"]');Y[0]&&((G=Y[0].type)==="checkbox"?Y[0].checked=z:G==="radio"?Y.each(function(){this.checked=this.value==z+""}):Y.val(z))})}),E.render(null,f),this.getValue(f)},r.prototype.getValue=function(w,y){y=y||this.getFormElem(w);var Q={},g={},w=y.find("input,select,textarea");return layui.each(w,function(M,z){var G;t(this),z.name=(z.name||"").replace(/^\s*|\s*&/,""),z.name&&(/^.*\[\]$/.test(z.name)&&(G=z.name.match(/^(.*)\[\]$/g)[0],Q[G]=0|Q[G],G=z.name.replace(/^(.*)\[\]$/,"$1["+Q[G]+++"]")),/^(checkbox|radio)$/.test(z.type)&&!z.checked||(g[G||z.name]=z.value))}),g},r.prototype.render=function(f,z){var Q=this,g=Q.config,w=t(C+(z?'[lay-filter="'+z+'"]':"")),M={input:function(Y){var Y=Y||w.find("input,textarea"),N=(g.autocomplete&&Y.attr("autocomplete",g.autocomplete),function(K,p){var x=K.val(),_=Number(x),B=Number(K.attr("step"))||1,R=Number(K.attr("min")),X=Number(K.attr("max")),J=Number(K.attr("lay-precision")),ne=p!=="click"&&x==="",le=p==="init";isNaN(_)||(p==="click"&&(_=t(this).index()?_-B:_+B),p=function(me){return((me.toString().match(/\.(\d+$)/)||[])[1]||"").length},J=0<=J?J:Math.max(p(B),p(x)),ne||(le||X<=(_=_<=R?R:_)&&(_=X),J===0?_=parseInt(_):0'),q=layui.isArray(le.value)?le.value:[le.value],q=t((me=[],layui.each(q,function(ae,oe){me.push('')}),me.join(""))),Z=(Ae.append(q),le.split&&Ae.addClass("layui-input-split"),le.className&&Ae.addClass(le.className),K.next("."+B)),re=(Z[0]&&Z.remove(),K.parent().hasClass(x)||K.wrap('
      '),K.next("."+_));re[0]?((Z=re.find("."+B))[0]&&Z.remove(),re.prepend(Ae),K.css("padding-right",function(){return(K.closest(".layui-input-group")[0]?0:re.outerWidth())+Ae.outerWidth()})):(Ae.addClass(_),K.after(Ae)),le.show==="auto"&&X(Ae,K.val()),typeof le.init=="function"&&le.init.call(this,K,le),K.on("input propertychange",function(){var ae=this.value;le.show==="auto"&&X(Ae,ae)}),K.on("blur",function(){typeof le.blur=="function"&&le.blur.call(this,K,le)}),q.on("click",function(){var ae=K.attr("lay-filter");t(this).hasClass(k)||(typeof le.click=="function"&&le.click.call(this,K,le),layui.event.call(this,b,"input-affix("+ae+")",{elem:K[0],affix:p,options:le}))})},ne={eye:{value:"eye-invisible",click:function(le,me){var Ae="LAY_FORM_INPUT_AFFIX_SHOW",q=le.data(Ae);le.attr("type",q?"password":"text").data(Ae,!q),J({value:q?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(le){le.val("").focus(),X(t(this).parent(),null)},show:"auto",disabled:R},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:K.is("[disabled]"),init:function(le){N.call(this,le,"init")},click:function(le){N.call(this,le,"click")},blur:function(le){N.call(this,le,"blur")}}};J()})},select:function(_){var Y="\u8BF7\u9009\u62E9",N="layui-form-select",K="layui-select-none",p="layui-select-create-option",x="layui-select-panel-elem-data",_=_||w.find("select"),B=function(R,X,J,ne,le,me){var Ae,q,Z,re,ae,oe,ue,Ee,O,ee=t(this),ie=X,ge=ie.find("input"),_e=R.find("dl"),we=(_e.children("dd"),_e.children("dt")),ke=this.selectedIndex,Se="";J||(q=ee.attr("lay-search")==="cs"?{caseSensitive:!0}:lay.options(ee,{attr:"lay-search"}),Z=ee.attr("lay-append-to")||"body",re=ee.attr("lay-append-position"),ae=!(!lay.ie||lay.ie!=="10"&&lay.ie!=="11"||!ge.attr("placeholder")),oe=function(){me&&(R.appendTo(Z).css({width:ie.width()+"px"}),(Te=function(){lay.position(ie[0],R[0],{position:re,allowBottomOut:!0,offset:[0,5]})})(),t(window).on("resize.lay_select_resize",Te));var Te=R.offset().top+R.outerHeight()+5-D.scrollTop(),Re=_e.outerHeight(),Ne=_e.children("dd");ke=ee[0].selectedIndex,ie.parent().addClass(N+"ed"),Ne.removeClass(T),we.removeClass(T),Ne.removeClass(c),0<=ke&&Ne.eq(ke).addClass(c),Te+Re>D.height()&&Re<=Te&&R.addClass(N+"up"),Ee(),ae&&_e.off("mousedown.lay_select_ieph").on("mousedown.lay_select_ieph",function(){ge[0].__ieph=!0,setTimeout(function(){ge[0].__ieph=!1},60)}),Ae=lay.onClickOutside((me?R:_e)[0],function(){ue(),Se&&ge.val(Se)},{ignore:ie})},ue=function(Te){ie.parent().removeClass(N+"ed "+N+"up"),ge.blur(),le&&_e.children("."+p).remove(),Ae&&Ae(),me&&(R.detach(),t(window).off("resize.lay_select_resize")),Te||O(ge.val(),function(Re){var Ne=ee[0].selectedIndex;Re&&(Se=t(ee[0].options[Ne]).html(),Ne===0&&Se===ge.attr("placeholder")&&(Se=""),ge.val(Se||""))})},Ee=function(){var Te,Re,Ne=_e.children("dd."+c);Ne[0]&&(Te=Ne.position().top,Re=_e.height(),Ne=Ne.height(),Re").addClass(p).attr("lay-value",Re).html(u.escape(Re)),We=(rt=_e.children().eq(0)).hasClass("layui-select-tips"),rt[We?"after":"before"](Je)):Ye?_e.find("."+K)[0]||_e.append('

      \u65E0\u5339\u914D\u9879

      '):_e.find("."+K).remove()},"keyup"),Re===""&&(ee.val(""),_e.find("."+c).removeClass(c),(ee[0].options[0]||{}).value||_e.children("dd:eq(0)").addClass(c),_e.find("."+K).remove(),le)&&_e.children("."+p).remove(),void Ee()))},50)).on("blur",function(Te){var Re=ee[0].selectedIndex;Se=t(ee[0].options[Re]).text(),Re===0&&Se===ge.attr("placeholder")&&(Se=""),setTimeout(function(){O(ge.val(),function(Ne){Se||ge.val("")},"blur")},200)}),_e.on("click","dd",function(){var Te,Re=t(this),Ne=Re.attr("lay-value"),Ye=ee.attr("lay-filter");return Re.hasClass(k)||(Re.hasClass("layui-select-tips")?ge.val(""):(ge.val(Re.text()),Re.addClass(c)),le&&Re.hasClass(p)&&(_e.append(Re.removeClass(p)),Te=t("
      "].join("")),x.after(R),function(le,me){var Ae=t(this),Z=Ae.attr("lay-skin")||"primary",q=Z==="switch",Z=Z==="primary";le.on("click",function(){var re=Ae.attr("lay-filter");Ae[0].disabled||(Ae[0].indeterminate&&(Ae[0].indeterminate=!1),Ae[0].checked=!Ae[0].checked,layui.event.call(Ae[0],b,me[2]+"("+re+")",{elem:Ae[0],value:Ae[0].value,othis:le}))}),Q.syncAppearanceOnPropChanged(this,"checked",function(){var re;q&&(re=(le.next("*[lay-checkbox]")[0]?le.next().html():Ae.attr("title")||"").split("|"),le.children("div").html(!this.checked&&re[1]||re[0])),le.toggleClass(me[1],this.checked)}),Z&&Q.syncAppearanceOnPropChanged(this,"indeterminate",function(){this.indeterminate?le.children(".layui-icon-ok").removeClass("layui-icon-ok").addClass(Y.SUBTRA):le.children("."+Y.SUBTRA).removeClass(Y.SUBTRA).addClass("layui-icon-ok")})}.call(this,R,X)})},radio:function(K){var Y="layui-form-radio",N=["layui-icon-radio","layui-icon-circle"],K=K||w.find("input[type=radio]");K.each(function(p,x){var _=t(this),X=_.next("."+Y),B=this.disabled,R=_.attr("lay-skin");if(typeof _.attr("lay-ignore")=="string")return _.show();X[0]&&X.remove();var X=u.escape(x.title||""),J=[],ne=(_.next("[lay-radio]")[0]&&(X=(ne=_.next()).html()||"",1",'',"
      "+X+"
      ","
      "].join("")));_.after(ne),function(le){var me=t(this),Ae="layui-anim-scaleSpring";le.on("click",function(){var q=me.attr("lay-filter");me[0].disabled||(me[0].checked=!0,layui.event.call(me[0],b,"radio("+q+")",{elem:me[0],value:me[0].value,othis:le}))}),Q.syncAppearanceOnPropChanged(this,"checked",function(){var q,Z=this;Z.checked?(le.addClass(Y+"ed"),le.children(".layui-icon").addClass(Ae+" "+N[0]),q=me.parents(C).find("input[name="+Z.name.replace(/(\.|#|\[|\])/g,"\\$1")+"]"),layui.each(q,function(){Z!==this&&(this.checked=!1)})):(le.removeClass(Y+"ed"),le.children(".layui-icon").removeClass(Ae+" "+N[0]).addClass(N[1]))})}.call(this,ne)})}},z=function(){layui.each(M,function(G,Y){Y()})};return layui.type(f)==="object"?t(f).is(C)?(w=t(f),z()):f.each(function(G,Y){var N=t(Y);N.closest(C).length&&(Y.tagName==="SELECT"?M.select(N):Y.tagName==="INPUT"&&((Y=Y.type)==="checkbox"||Y==="radio"?M[Y](N):M.input(N)))}):f?M[f]?M[f]():A.error('\u4E0D\u652F\u6301\u7684 "'+f+'" \u8868\u5355\u6E32\u67D3'):z(),Q},r.prototype.syncAppearanceOnPropChanged=function(f,y,Q){var g=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,y);Object.defineProperty(f,y,lay.extend({},g,{get:function(){return g.get.call(this)},set:function(w){g.set.call(this,w),Q.call(this)}}))},r.prototype.validate=function(f){var y,Q=this.config.verify,g="layui-form-danger";return!(f=t(f))[0]||(f.attr("lay-verify")!==void 0||this.validate(f.find("*[lay-verify]"))!==!1)&&(layui.each(f,function(w,M){var z=t(this),G=(z.attr("lay-verify")||"").split("|"),Y=z.attr("lay-vertype"),N=t.trim(z.val());if(z.removeClass(g),layui.each(G,function(K,p){var x="",_=Q[p];if(_){var B=typeof _=="function"?x=_(N,M):!_[0].test(N),R=M.tagName.toLowerCase()==="select"||/^(checkbox|radio)$/.test(M.type),x=x||_[1];if(p==="required"&&(x=z.attr("lay-reqtext")||x),B)return Y==="tips"?s.tips(x,typeof z.attr("lay-ignore")!="string"&&R?z.next():z,{tips:1}):Y==="alert"?s.alert(x,{title:"\u63D0\u793A",shadeClose:!0}):/\b(string|number)\b/.test(typeof x)&&s.msg(x,{icon:5,shift:6}),setTimeout(function(){(R?z.next().find("input"):M).focus()},7),z.addClass(g),y=!0}}),y)return y}),!y)},r.prototype.submit=function(w,y){var Q={},g=t(this),w=typeof w=="string"?w:g.attr("lay-filter"),M=this.getFormElem?this.getFormElem(w):g.parents(C).eq(0),z=M.find("*[lay-verify]");return!!E.validate(z)&&(Q=E.getValue(null,M),z={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?M:g.parents("form"))[0],field:Q},typeof y=="function"&&y(z),layui.event.call(this,b,"submit("+w+")",z))}),E=new r,r=t(document),D=t(window);t(function(){E.render()}),r.on("reset",C,function(){var f=t(this).attr("lay-filter");setTimeout(function(){E.render(null,f)},50)}),r.on("submit",C,S).on("click","*[lay-submit]",S),i(b,E)}),layui.define(["lay","laytpl","laypage","form","util"],function(i){var t=layui.$,s=layui.lay,u=layui.laytpl,A=layui.laypage,b=layui.layer,C=layui.form,c=layui.util,T=layui.hint(),k=layui.device(),S={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(O){return this.config=t.extend({},this.config,O),this},on:function(O,ee){return layui.onevent.call(this,y,O,ee)}},E=function(){var O=this,ee=O.config,ie=ee.id||ee.index;return{config:ee,reload:function(ge,_e){O.reload.call(O,ge,_e)},reloadData:function(ge,_e){S.reloadData(ie,ge,_e)},setColsWidth:function(){O.setColsWidth.call(O)},resize:function(){O.resize.call(O)}}},r=function(O){var ee=E.that[O];return ee||T.error(O?"The table instance with ID '"+O+"' not found":"ID argument required"),ee||null},D=function(O){var ee=E.config[O];return ee||T.error(O?"The table instance with ID '"+O+"' not found":"ID argument required"),ee||null},f=function(O){var ee=this.config||{},ie=(O=O||{}).item3,ge=O.content;return ie.type==="numbers"&&(ge=O.tplData[S.config.numbersName]),("escape"in ie?ie:ee).escape&&(ge=c.escape(ge)),ee=O.text&&ie.exportTemplet||ie.templet||ie.toolbar,ee&&(ge=typeof ee=="function"?ee.call(ie,O.tplData,O.obj):u(function(_e){try{return s(_e).html()}catch(we){return _e}}(ee)||String(ge)).render(t.extend({LAY_COL:ie},O.tplData))),O.text?t("
      "+ge+"
      ").text():ge},y="table",Q="lay-"+y+"-id",g=".layui-table",w="layui-hide",M="layui-hide-v",z="layui-none",G="layui-table-view",Y=".layui-table-header",N=".layui-table-body",K=".layui-table-fixed-r",p=".layui-table-pageview",x=".layui-table-sort",_="layui-table-checked",B="layui-table-edit",R="layui-table-hover",X="laytable-cell-group",J="layui-table-col-special",ne="layui-table-tool-panel",le="layui-table-expanded",me="layui-table-disabled-transition",Ae="LAY_TABLE_MOVE_DICT",q=function(O){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(O=O||{}).fixed&&O.fixed!=="right"?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':O.fixed==="right"?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",`",O.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
      `,'
      ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
      ","
      "].join("")},Z=['',"","
      "].join(""),re=[,"{{# if(d.data.toolbar){ }}",'
      ','
      ','
      ',"
      ","{{# } }}",'
      ',"{{# if(d.data.loading){ }}",'
      ','
      ','{{# if(typeof d.data.loading === "string"){ }}',"{{- d.data.loading}}","{{# } else{ }}",'',"{{# } }}","
      ","
      ","{{# } }}","{{# var left, right; }}",'
      ',q(),"
      ",'
      ',Z,"
      ","{{# if(left){ }}",'
      ','
      ',q({fixed:!0}),"
      ",'
      ',Z,"
      ","
      ","{{# }; }}","{{# if(right){ }}",'
      ','
      ',q({fixed:"right"}),'
      ',"
      ",'
      ',Z,"
      ","
      ","{{# }; }}","
      ","{{# if(d.data.totalRow){ }}",'
      ','','',"
      ","
      ","{{# } }}",'
      ','
      ',"
      "].join(""),ae=t(window),oe=t(document),ue=function(O){this.index=++S.index,this.config=t.extend({},this.config,S.config,O),this.render()},Ee=(ue.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65E0\u6570\u636E"},cols:[]},ue.prototype.render=function(_e){var ee=this,ie=ee.config,we=(ie.elem=t(ie.elem),ie.where=ie.where||{},ie.id="id"in ie?ie.id:ie.elem.attr("id")||ee.index);if(E.that[we]=ee,(E.config[we]=ie).request=t.extend({pageName:"page",limitName:"limit"},ie.request),ie.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},ie.response),ie.page!==null&&typeof ie.page=="object"&&(ie.limit=ie.page.limit||ie.limit,ie.limits=ie.page.limits||ie.limits,ee.page=ie.page.curr=ie.page.curr||1,delete ie.page.elem,delete ie.page.jump),!ie.elem[0])return ee;if(ie.elem.attr("lay-filter")||ie.elem.attr("lay-filter",ie.id),_e==="reloadData")return ee.pullData(ee.page,{type:"reloadData"});ie.index=ee.index,ee.key=ie.id||ie.index,ee.setInit(),ie.height&&/^full-.+$/.test(ie.height)?(ee.fullHeightGap=ie.height.split("-")[1],ie.height=ae.height()-(parseFloat(ee.fullHeightGap)||0)):ie.height&&/^#\w+\S*-.+$/.test(ie.height)?(we=ie.height.split("-"),ee.parentHeightGap=we.pop(),ee.parentDiv=we.join("-"),ie.height=t(ee.parentDiv).height()-(parseFloat(ee.parentHeightGap)||0)):typeof ie.height=="function"&&(ee.customHeightFunc=ie.height,ie.height=ee.customHeightFunc());var ge,_e=ie.elem,we=_e.next("."+G),ke=ee.elem=t("
      ");ke.addClass((ge=[G,G+"-"+ee.index,"layui-form","layui-border-box"],ie.className&&ge.push(ie.className),ge.join(" "))).attr(((ge={"lay-filter":"LAY-TABLE-FORM-DF-"+ee.index,style:(ge=[],ie.width&&ge.push("width:"+ie.width+"px;"),ge.join(""))})[Q]=ie.id,ge)).html(u(re,{open:"{{",close:"}}"}).render({data:ie,index:ee.index})),ee.renderStyle(),we[0]&&we.remove(),_e.after(ke),ee.layTool=ke.find(".layui-table-tool"),ee.layBox=ke.find(".layui-table-box"),ee.layHeader=ke.find(Y),ee.layMain=ke.find(".layui-table-main"),ee.layBody=ke.find(N),ee.layFixed=ke.find(".layui-table-fixed"),ee.layFixLeft=ke.find(".layui-table-fixed-l"),ee.layFixRight=ke.find(K),ee.layTotal=ke.find(".layui-table-total"),ee.layPage=ke.find(".layui-table-page"),ee.renderToolbar(),ee.renderPagebar(),ee.fullSize(),ee.setColsWidth(),ee.pullData(ee.page),ee.events()},ue.prototype.initOpts=function(O){this.config,O.checkbox&&(O.type="checkbox"),O.space&&(O.type="space"),O.type||(O.type="normal"),O.type!=="normal"&&(O.unresize=!0,O.width=O.width||{checkbox:50,radio:50,space:30,numbers:60}[O.type])},ue.prototype.setInit=function(O){var ee,ie,ge=this,_e=ge.config;if(_e.clientWidth=_e.width||(ee=function(ke){var Se,Te;ke=ke||_e.elem.parent(),Te=window.getComputedStyle?(Te=ge.getElementSize(ke[0])).boxSizing!=="border-box"||s.ie?Te.width:Te.width-Te.paddingLeft-Te.paddingRight-Te.borderLeftWidth-Te.borderRightWidth:ke.width();try{Se=ke.css("display")==="none"}catch(Re){}return!ke[0]||s.isTopElem(ke[0])||Te&&!Se?Te:ee(ke.parent())})(),O==="width")return _e.clientWidth;_e.height=_e.maxHeight||_e.height,_e.css&&_e.css.indexOf(G)===-1&&(ie=_e.css.split("}"),layui.each(ie,function(ke,Se){Se&&(ie[ke]="."+G+"-"+ge.index+" "+Se)}),_e.css=ie.join("}"));var we=function(ke,Se,Te,Re){var Ne,Ye;Re?(Re.key=[_e.index,ke,Te].join("-"),Re.colspan=Re.colspan||0,Re.rowspan=Re.rowspan||0,ge.initOpts(Re),(Ne=ke+(parseInt(Re.rowspan)||1))<_e.cols.length?(Re.colGroup=!0,Ye=0,layui.each(_e.cols[Ne],function(Je,rt){rt.HAS_PARENT||1<=Ye&&Ye==(Re.colspan||1)||(rt.HAS_PARENT=!0,rt.parentKey=[_e.index,ke,Te].join("-"),Ye+=parseInt(1 td:hover > .layui-table-cell{overflow: auto;}"].concat(k.ie?[".layui-table-edit{height: "+ge+";}","td[data-edit]:hover:after{height: "+ge+";}"]:[]),function(Se,Te){Te&&ke.push(ee+" "+Te)})),_e.css&&ke.push(_e.css),s.style({target:this.elem[0],text:ke.join(""),id:"DF-table-"+we})},ue.prototype.renderToolbar=function(){var O,ee=this,ie=ee.config,ge=ie.elem.attr("lay-filter"),_e=['
      ','
      ','
      '].join(""),we=ee.layTool.find(".layui-table-tool-temp"),ke=(ie.toolbar==="default"?we.html(_e):typeof ie.toolbar=="string"&&(_e=t(ie.toolbar).html()||"")&&we.html(u(_e).render(ie)),{filter:{title:"\u7B5B\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols",onClick:function(Se){var Te,Re=Se.config;(0,Se.openPanel)({list:(Te=[],ee.eachCols(function(Ne,Ye){Ye.field&&Ye.type=="normal"&&Te.push('
    • "+(Ye.fieldTitle||Ye.title||Ye.field)+"").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">
    • ')}),Te.join("")),done:function(){C.on("checkbox(LAY_TABLE_TOOL_COLS)",function(Ve){var Ve=t(Ve.elem),Ye=this.checked,Je=Ve.data("key"),rt=ee.col(Je),We=rt.hide,Ve=Ve.data("parentkey");rt.key&&(rt.hide=!Ye,ee.elem.find('*[data-key="'+Je+'"]')[Ye?"removeClass":"addClass"](w),We!=rt.hide&&ee.setParentCol(!Ye,Ve),ee.resize(),layui.event.call(this,y,"colToggled("+ge+")",{col:rt,config:Re}))})}})}},exports:{title:"\u5BFC\u51FA",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export",onClick:function(Ye){var Te=Ye.data,Re=Ye.config,Ne=Ye.openPanel,Ye=Ye.elem;if(!Te.length)return b.tips("\u5F53\u524D\u8868\u683C\u65E0\u6570\u636E",Ye,{tips:3});k.ie?b.tips("\u5BFC\u51FA\u529F\u80FD\u4E0D\u652F\u6301 IE\uFF0C\u8BF7\u7528 Chrome \u7B49\u9AD8\u7EA7\u6D4F\u89C8\u5668\u5BFC\u51FA",Ye,{tips:3}):Ne({list:['
    • \u5BFC\u51FA CSV \u6587\u4EF6
    • '].join(""),done:function(Je,rt){rt.on("click",function(){var We=t(this).data("type");S.exportFile.call(ee,Re.id,null,We)})}})}},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print",onClick:function(Re){var Te=Re.data,Re=(Re.config,Re.elem);if(!Te.length)return b.tips("\u5F53\u524D\u8868\u683C\u65E0\u6570\u636E",Re,{tips:3});var Te=window.open("about:blank","_blank"),Re=[""].join(""),Ne=t(ee.layHeader.html());Ne.append(ee.layMain.find("table").html()),Ne.append(ee.layTotal.find("table").html()),Ne.find("th.layui-table-patch").remove(),Ne.find("thead>tr>th."+J).filter(function(Ye,Je){return!t(Je).children("."+X).length}).remove(),Ne.find("tbody>tr>td."+J).remove(),Te.document.write(Re+Ne.prop("outerHTML")),Te.document.close(),layui.device("edg").edg?(Te.onafterprint=Te.close,Te.print()):(Te.print(),Te.close())}}});typeof ie.defaultToolbar=="object"&&(O=[],ie.defaultToolbar=t.map(ie.defaultToolbar,function(Se,Te){var Re=typeof Se=="string",Ne=Re?ke[Se]:Se;return Ne&&(!(Ne=Ne.name&&ke[Ne.name]?t.extend({},ke[Ne.name],Ne):Ne).name&&Re&&(Ne.name=Se),O.push('
      ')),Ne}),ee.layTool.find(".layui-table-tool-self").html(O.join("")))},ue.prototype.renderPagebar=function(){var O,ee=this.config,ie=this.layPagebar=t('
      ');ee.pagebar&&((O=t(ee.pagebar).html()||"")&&ie.append(u(O).render(ee)),this.layPage.append(ie))},ue.prototype.setParentCol=function(O,ee){var ie=this.config,ge=this.layHeader.find('th[data-key="'+ee+'"]'),_e=parseInt(ge.attr("colspan"))||0;ge[0]&&(ee=ee.split("-"),ee=ie.cols[ee[1]][ee[2]],O?_e--:_e++,ge.attr("colspan",_e),ge[_e?"removeClass":"addClass"](w),ee.colspan2=_e,ee.hide=_e<1,ie=ge.data("parentkey"))&&this.setParentCol(O,ie)},ue.prototype.setColsPatch=function(){var O=this,ee=O.config;layui.each(ee.cols,function(ie,ge){layui.each(ge,function(_e,we){we.hide&&O.setParentCol(we.hide,we.parentKey)})})},ue.prototype.setGroupWidth=function(O){var ee,ie=this;ie.config.cols.length<=1||((ee=ie.layHeader.find((O?"th[data-key="+O.data("parentkey")+"]>":"")+"."+X)).css("width",0),layui.each(ee.get().reverse(),function(){var ge=t(this),_e=ge.parent().data("key"),we=0;ie.layHeader.eq(0).find("th[data-parentkey="+_e+"]").width(function(ke,Se){t(this).hasClass(w)||0ee.layMain.prop("clientHeight")&&(Ye.style.width=parseFloat(Ye.style.width)-Te+"px")}),ee.setGroupWidth()},ue.prototype.resize=function(){this.layMain&&(this.fullSize(),this.setColsWidth(),this.scrollPatch())},ue.prototype.reload=function(O,ee,ie){var ge=this;O=O||{},delete ge.haveInit,layui.each(O,function(_e,we){layui.type(we)==="array"&&delete ge.config[_e]}),ge.config=t.extend(ee,{},ge.config,O),ie!=="reloadData"&&(layui.each(ge.config.cols,function(_e,we){layui.each(we,function(ke,Se){delete Se.colspan2})}),delete ge.config.HAS_SET_COLS_PATCH),ge.render(ie)},ue.prototype.errorView=function(ge){var ee=this,ie=ee.layMain.find("."+z),ge=t('
      '+(ge||"Error")+"
      ");ie[0]&&(ee.layNone.remove(),ie.remove()),ee.layFixed.addClass(w),ee.layMain.find("tbody").html(""),ee.layMain.append(ee.layNone=ge),ee.layTotal.addClass(M),ee.layPage.find(p).addClass(M),S.cache[ee.key]=[],ee.syncCheckAll(),ee.renderForm(),ee.setColsWidth(),ee.loading(!1)},ue.prototype.page=1,ue.prototype.pullData=function(O,ee){var ie,ge,_e=this,we=_e.config,ke=(we.HAS_SET_COLS_PATCH||_e.setColsPatch(),we.HAS_SET_COLS_PATCH=!0,we.request),Se=we.response,Te=function(){typeof we.initSort=="object"&&_e.sort({field:we.initSort.field,type:we.initSort.type,reloadType:ee.type})},Re=function(Ne,Ye){_e.setColsWidth(),_e.loading(!1),typeof we.done=="function"&&we.done(Ne,O,Ne[Se.countName],Ye)};ee=ee||{},typeof we.before=="function"&&we.before(we),_e.startTime=new Date().getTime(),ee.renderData?((ie={})[Se.dataName]=S.cache[_e.key],ie[Se.countName]=we.url?layui.type(we.page)==="object"?we.page.count:ie[Se.dataName].length:we.data.length,typeof we.totalRow=="object"&&(ie[Se.totalRowName]=t.extend({},_e.totalRow)),_e.renderData({res:ie,curr:O,count:ie[Se.countName],type:ee.type,sort:!0}),Re(ie,"renderData")):we.url?(ge={},we.page&&(ge[ke.pageName]=O,ge[ke.limitName]=we.limit),ke=t.extend(ge,we.where),we.contentType&&we.contentType.indexOf("application/json")==0&&(ke=JSON.stringify(ke)),_e.loading(!0),t.ajax({type:we.method||"get",url:we.url,contentType:we.contentType,data:ke,dataType:we.dataType||"json",jsonpCallback:we.jsonpCallback,headers:we.headers||{},complete:typeof we.complete=="function"?we.complete:void 0,success:function(Ne){var Ye,Je;(Ne=typeof we.parseData=="function"&&we.parseData(Ne)||Ne)[Se.statusName]!=Se.statusCode?_e.errorView(Ne[Se.msgName]||'\u8FD4\u56DE\u7684\u6570\u636E\u4E0D\u7B26\u5408\u89C4\u8303\uFF0C\u6B63\u786E\u7684\u6210\u529F\u72B6\u6001\u7801\u5E94\u4E3A\uFF1A"'+Se.statusName+'": '+Se.statusCode):(Ye=Ne[Se.countName],(Je=Math.ceil(Ye/we.limit)||1)','
      "+function(){var sn,gn=t.extend(!0,{LAY_COL:Oe},Ne),kn=S.config.checkName,Yn=S.config.disabledName;switch(Oe.type){case"checkbox":return'';case"radio":return'';case"numbers":return We}return Oe.toolbar?u(t(Oe.toolbar).html()||"").render(gn):f.call(_e,{item3:Oe,content:bn,tplData:gn})}(),"
      "].join(""),Ye.push(ht),Oe.fixed&&Oe.fixed!=="right"&&Je.push(ht),Oe.fixed==="right"&&rt.push(ht))}),Re=['data-index="'+Re+'"'],Ne[S.config.checkName]&&Re.push('class="'+_+'"'),Re=Re.join(" "),ke.push(""+Ye.join("")+""),Se.push(""+Je.join("")+""),Te.push(""+rt.join("")+""))}),{trs:ke,trs_fixed:Se,trs_fixed_r:Te}},S.getTrHtml=function(O,ee){return O=r(O),O.getTrHtml(ee,null,O.page)},ue.prototype.renderData=function(O){var ee=this,ie=ee.config,Se=O.res,ge=O.curr,_e=ee.count=O.count,we=O.sort,ke=Se[ie.response.dataName]||[],Se=Se[ie.response.totalRowName],Te=[],Re=[],Ne=[],Ye=function(){if(!we&&ee.sortKey)return ee.sort({field:ee.sortKey.field,type:ee.sortKey.sort,pull:!0,reloadType:O.type});ee.getTrHtml(ke,we,ge,{trs:Te,trs_fixed:Re,trs_fixed_r:Ne}),ie.scrollPos==="fixed"&&O.type==="reloadData"||ee.layBody.scrollTop(0),ie.scrollPos==="reset"&&ee.layBody.scrollLeft(0),ee.layMain.find("."+z).remove(),ee.layMain.find("tbody").html(Te.join("")),ee.layFixLeft.find("tbody").html(Re.join("")),ee.layFixRight.find("tbody").html(Ne.join("")),ee.syncCheckAll(),ee.renderForm(),ee.fullSize(),ee.haveInit?ee.scrollPatch():setTimeout(function(){ee.scrollPatch()},50),ee.haveInit=!0,b.close(ee.tipsIndex)};return S.cache[ee.key]=ke,ee.layTotal[ke.length==0?"addClass":"removeClass"](M),ee.layPage[ie.page||ie.pagebar?"removeClass":"addClass"](w),ee.layPage.find(p)[!ie.page||_e==0||ke.length===0&&ge==1?"addClass":"removeClass"](M),ke.length===0?ee.errorView(ie.text.none):(ee.layFixLeft.removeClass(w),we?Ye():(Ye(),ee.renderTotal(ke,Se),ee.layTotal&&ee.layTotal.removeClass(w),void(ie.page&&(ie.page=t.extend({elem:"layui-table-page"+ie.index,count:_e,limit:ie.limit,limits:ie.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(Je,rt){rt||(ee.page=Je.curr,ie.limit=Je.limit,ee.pullData(Je.curr))}},ie.page),ie.page.count=_e,A.render(ie.page)))))},S.renderData=function(O){O=r(O),O&&O.pullData(O.page,{renderData:!0,type:"reloadData"})},ue.prototype.renderTotal=function(O,ee){var ie,ge=this,_e=ge.config,we={};_e.totalRow&&(layui.each(O,function(ke,Se){layui.type(Se)==="array"&&Se.length===0||ge.eachCols(function(Ne,Re){var Ne=Re.field||Ne,Ye=Se[Ne];Re.totalRow&&(we[Ne]=(we[Ne]||0)+(parseFloat(Ye)||0))})}),ge.dataTotal=[],ie=[],ge.eachCols(function(Re,Se){var Te,Re=Se.field||Re,Ne=ee&&ee[Se.field],Ye="totalRowDecimals"in Se?Se.totalRowDecimals:2,Ye=we[Re]?parseFloat(we[Re]||0).toFixed(Ye):"",Ye=(Te=Se.totalRowText||"",(Je={LAY_COL:Se})[Re]=Ye,Je=Se.totalRow&&f.call(ge,{item3:Se,content:Ye,tplData:Je})||Te,Ne||Je),Je=(Se.field&&ge.dataTotal.push({field:Se.field,total:t("
      "+Ye+"
      ").text()}),['','
      "+(typeof(Te=Se.totalRow||_e.totalRow)=="string"?u(Te).render(t.extend({TOTAL_NUMS:Ne||we[Re],TOTAL_ROW:ee||{},LAY_COL:Se},Se)):Ye),"
      "].join(""));ie.push(Je)}),O=ge.layTotal.find(".layui-table-patch"),ge.layTotal.find("tbody").html(""+ie.join("")+(O.length?O.get(0).outerHTML:"")+""))},ue.prototype.getColElem=function(O,ee){return O.eq(0).find(".laytable-cell-"+ee+":eq(0)")},ue.prototype.renderForm=function(O){this.config;var ee=this.elem.attr("lay-filter");C.render(O,ee)},ue.prototype.renderFormByElem=function(O){layui.each(["input","select"],function(ee,ie){C.render(O.find(ie))})},ue.prototype.syncCheckAll=function(){var O,ee=this,ie=ee.config,ge=ee.layHeader.find('input[name="layTableCheckbox"]'),_e=S.checkStatus(ee.key);ge[0]&&(O=_e.isAll,ee.eachCols(function(we,ke){ke.type==="checkbox"&&(ke[ie.checkName]=O)}),ge.prop({checked:_e.isAll,indeterminate:!_e.isAll&&_e.data.length}))},ue.prototype.setRowActive=function(O,ee,ie){if(this.config,O=this.layBody.find('tr[data-index="'+O+'"]'),ee=ee||"layui-table-click",ie)return O.removeClass(ee);O.addClass(ee),O.siblings("tr").removeClass(ee)},ue.prototype.setRowChecked=function(O){var ee,ie,ge,_e,we,ke,Se,Te=this,Re=Te.config,Ne=O.index==="all",Ye=layui.type(O.index)==="array",Je=Ne||Ye;Je&&(Te.layBox.addClass(me),O.type==="radio")||(Ye&&(ee={},layui.each(O.index,function(rt,We){ee[We]=!0}),O.index=ee),ie=Te.layBody.children(".layui-table").children("tbody"),Se=Je?"tr":'tr[data-index="'+O.index+'"]',Se=ie.children(Se),ie=Ne?Se:Se.filter(Ye?function(){var rt=t(this).data("index");return O.index[rt]}:'[data-index="'+O.index+'"]'),O=t.extend({type:"checkbox"},O),ge=S.cache[Te.key],_e="checked"in O,we=function(rt){return O.type==="radio"||(_e?O.checked:!rt)},ie.each(function(){var rt=t(this),We=rt.attr("data-index"),Ve=ge[We];We&&layui.type(Ve)!=="array"&&!Ve[Re.disabledName]&&(Ve=Ve[Re.checkName]=we(rt.hasClass(_)),rt.toggleClass(_,!!Ve),O.type==="radio")&&(ke=We,rt.siblings().removeClass(_))}),ke&&layui.each(ge,function(rt,We){Number(ke)!==Number(rt)&&delete We[Re.checkName]}),Se=(Ye=(Ne=ie.children("td").children(".layui-table-cell").children('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[O.type]||"checkbox")+'"]:not(:disabled)')).last()).closest(K),(O.type==="radio"&&Se.hasClass(w)?Ne.first():Ne).prop("checked",we(Ye.prop("checked"))),Te.syncCheckAll(),Je&&setTimeout(function(){Te.layBox.removeClass(me)},100))},ue.prototype.sort=function(O){var ee,ie=this,ge={},_e=ie.config,we=_e.elem.attr("lay-filter"),ke=S.cache[ie.key];typeof(O=O||{}).field=="string"&&(Se=O.field,ie.layHeader.find("th").each(function(Ne,Ye){var Je=t(this),rt=Je.data("field");if(rt===O.field)return O.field=Je,Se=rt,!1}));try{var Se=Se||O.field.data("field"),Te=O.field.data("key");if(ie.sortKey&&!O.pull&&Se===ie.sortKey.field&&O.type===ie.sortKey.sort)return;var Re=ie.layHeader.find("th .laytable-cell-"+Te).find(x);ie.layHeader.find("th").find(x).removeAttr("lay-sort"),Re.attr("lay-sort",O.type||null),ie.layFixed.find("th")}catch(Ne){T.error("Table modules: sort field '"+Se+"' not matched")}ie.sortKey={field:Se,sort:O.type},_e.autoSort&&(O.type==="asc"?ee=layui.sort(ke,Se,null,!0):O.type==="desc"?ee=layui.sort(ke,Se,!0,!0):(ee=layui.sort(ke,S.config.indexName,null,!0),delete ie.sortKey,delete _e.initSort)),ge[_e.response.dataName]=ee||ke,ie.renderData({res:ge,curr:ie.page,count:ie.count,sort:!0,type:O.reloadType}),O.fromEvent&&(_e.initSort={field:Se,type:O.type},layui.event.call(O.field,y,"sort("+we+")",t.extend({config:_e},_e.initSort)))},ue.prototype.loading=function(O){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(w,!O)},ue.prototype.cssRules=function(O,ee){var ie=this.elem.children("style")[0];s.getStyleRules(ie,function(ge){if(ge.selectorText===".laytable-cell-"+O)return ee(ge),!0})},ue.prototype.fullSize=function(){var O,ee,ie=this,ge=ie.config,_e=ge.height;ie.fullHeightGap?(_e=ae.height()-ie.fullHeightGap)<135&&(_e=135):ie.parentDiv&&ie.parentHeightGap?(_e=t(ie.parentDiv).height()-ie.parentHeightGap)<135&&(_e=135):ie.customHeightFunc&&(_e=ie.customHeightFunc())<135&&(_e=135),1
      ')).find("div").css({width:ie}),ke.find("tr").append(Se)):ke.find(".layui-table-patch").remove()};we(O.layHeader),we(O.layTotal),we=O.layMain.height()-ge,O.layFixed.find(N).css("height",ee.height()>=we?we:"auto").scrollTop(O.layMain.scrollTop()),O.layFixRight[S.cache[O.key]&&S.cache[O.key].length&&0<_e?"removeClass":"addClass"](w),O.layFixRight.css("right",ie-1)},ue.prototype.updateRow=function(_e,ee){var ie=this,ge=".layui-table-cell",_e=layui.type(_e)==="array"?_e:[_e],we=S.cache[ie.key]||[];layui.each(_e,function(ke,Se){var Te,Re,Ne,Ye,Je;Te=Se.index,Re=Se.data,Ne=Se.related,Ye=we[Te]||{},Je=ie.layBody.find('tr[data-index="'+Te+'"]'),layui.each(Re,function(rt,We){Ye[rt]=We,ee&&ee(rt,We)}),ie.eachCols(function(rt,We){var Ve,Oe=String(We.field||rt);(Oe in Re||(typeof Ne=="function"?Ne(Oe,rt):Ne)&&(We.templet||We.toolbar))&&(Oe=(rt=Je.children('td[data-field="'+Oe+'"]')).children(ge),Ve=Ye[We.field],Oe.html(f.call(ie,{item3:We,content:Ve,tplData:t.extend({LAY_COL:We},Ye)})),rt.data("content",Ve),ie.renderFormByElem(Oe))})})},S.updateRow=function(O,ee){return r(O).updateRow(ee)},ue.prototype.events=function(){var O=this,ee=O.config,ie=ee.elem.attr("lay-filter"),ge=O.layHeader.find("th"),_e=".layui-table-cell",we=t("body"),ke={},Se=(O.layTool.on("click","*[lay-event]",function(We){var Ve=t(this),Oe=Ve.attr("lay-event"),ft=S.cache[ee.id],ht=function(qt){var bn=t(qt.list),sn=t('
        ');sn.html(bn),ee.height&&sn.css("max-height",ee.height-(O.layTool.outerHeight()||50)),Ve.find("."+ne)[0]||Ve.append(sn),O.renderForm(),sn.on("click",function(gn){layui.stope(gn)}),qt.done&&qt.done(sn,bn)};layui.stope(We),oe.trigger("table.tool.panel.remove"),b.close(O.tipsIndex),layui.each(ee.defaultToolbar,function(qt,bn){if(bn.layEvent===Oe)return typeof bn.onClick=="function"&&bn.onClick({data:ft,config:ee,openPanel:ht,elem:Ve}),!0}),layui.event.call(this,y,"toolbar("+ie+")",t.extend({event:Oe,config:ee},{}))}),O.layHeader.on("click","*[lay-event]",function(We){var Oe=t(this),Ve=Oe.attr("lay-event"),Oe=Oe.closest("th").data("key"),Oe=O.col(Oe);layui.event.call(this,y,"colTool("+ie+")",t.extend({event:Ve,config:ee,col:Oe},{}))}),O.layPagebar.on("click","*[lay-event]",function(We){var Ve=t(this).attr("lay-event");layui.event.call(this,y,"pagebar("+ie+")",t.extend({event:Ve,config:ee},{}))}),ge.on("mousemove",function(ft){var Ve=t(this),Oe=Ve.offset().left,ft=ft.clientX-Oe;Ve.data("unresize")||E.eventMoveElem||(ke.allowResize=Ve.width()-ft<=10,we.css("cursor",ke.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this),E.eventMoveElem||(ke.allowResize=!1,we.css("cursor",""))}).on("mousedown",function(We){var Ve,Oe=t(this);ke.allowResize&&(Ve=Oe.data("key"),We.preventDefault(),ke.offset=[We.clientX,We.clientY],O.cssRules(Ve,function(ft){var ht=ft.style.width||Oe.outerWidth();ke.rule=ft,ke.ruleWidth=parseFloat(ht),ke.minWidth=Oe.data("minwidth")||ee.cellMinWidth,ke.maxWidth=Oe.data("maxwidth")||ee.cellMaxWidth}),Oe.data(Ae,ke),E.eventMoveElem=Oe)}),E.docEvent||oe.on("mousemove",function(We){var Ve,Oe;E.eventMoveElem&&(Ve=E.eventMoveElem.data(Ae)||{},E.eventMoveElem.data("resizing",1),We.preventDefault(),Ve.rule)&&(We=Ve.ruleWidth+We.clientX-Ve.offset[0],Oe=E.eventMoveElem.closest("."+G).attr(Q),Oe=r(Oe))&&((We=WeVe.maxWidth&&(We=Ve.maxWidth),Ve.rule.style.width=We+"px",Oe.setGroupWidth(E.eventMoveElem),b.close(O.tipsIndex))}).on("mouseup",function(We){var Ve,Oe,ft,ht,qt;E.eventMoveElem&&(ft=(Ve=E.eventMoveElem).closest("."+G).attr(Q),Oe=r(ft))&&(ft=Ve.data("key"),ht=Oe.col(ft),qt=Oe.config.elem.attr("lay-filter"),ke={},we.css("cursor",""),Oe.scrollPatch(),Ve.removeData(Ae),delete E.eventMoveElem,Oe.cssRules(ft,function(bn){ht.width=parseFloat(bn.style.width),layui.event.call(Ve[0],y,"colResized("+qt+")",{col:ht,config:Oe.config})}))}),E.docEvent=!0,ge.on("click",function(We){var Ve=t(this),Oe=Ve.find(x),ft=Oe.attr("lay-sort");if(!Oe[0]||Ve.data("resizing")===1)return Ve.removeData("resizing");O.sort({field:Ve,type:ft==="asc"?"desc":ft==="desc"?null:"asc",fromEvent:!0})}).find(x+" .layui-edge ").on("click",function(We){var Oe=t(this),Ve=Oe.index(),Oe=Oe.parents("th").eq(0).data("field");layui.stope(We),Ve===0?O.sort({field:Oe,type:"asc",fromEvent:!0}):O.sort({field:Oe,type:"desc",fromEvent:!0})}),O.commonMember=function(We){var Ve=t(this).parents("tr").eq(0).data("index"),Oe=O.layBody.find('tr[data-index="'+Ve+'"]'),ft=(S.cache[O.key]||[])[Ve]||{},ht={tr:Oe,config:ee,data:S.clearCacheKey(ft),dataCache:ft,index:Ve,del:function(){S.cache[O.key][Ve]=[],Oe.remove(),O.scrollPatch()},update:function(qt,bn){O.updateRow({index:Ve,data:qt=qt||{},related:bn},function(sn,gn){ht.data[sn]=gn})},setRowChecked:function(qt){O.setRowChecked(t.extend({index:Ve},qt))}};return t.extend(ht,We)}),Te=(O.elem.on("click",'input[name="layTableCheckbox"]+',function(We){var Oe=t(this),Ve=Oe.closest("td"),Oe=Oe.prev(),ft=(O.layBody.find('input[name="layTableCheckbox"]'),Oe.parents("tr").eq(0).data("index")),ht=Oe[0].checked,qt=Oe.attr("lay-filter")==="layTableAllChoose";Oe[0].disabled||(qt?O.setRowChecked({index:"all",checked:ht}):O.setRowChecked({index:ft,checked:ht}),layui.stope(We),layui.event.call(Oe[0],y,"checkbox("+ie+")",Se.call(Oe[0],{checked:ht,type:qt?"all":"one",getCol:function(){return O.col(Ve.data("key"))}})))}),O.elem.on("click",'input[lay-type="layTableRadio"]+',function(We){var Oe=t(this),Ve=Oe.closest("td"),Oe=Oe.prev(),ft=Oe[0].checked,ht=Oe.parents("tr").eq(0).data("index");if(layui.stope(We),Oe[0].disabled)return!1;O.setRowChecked({type:"radio",index:ht}),layui.event.call(Oe[0],y,"radio("+ie+")",Se.call(Oe[0],{checked:ft,getCol:function(){return O.col(Ve.data("key"))}}))}),O.layBody.on("mouseenter","tr",function(){var We=t(this),Ve=We.index();We.data("off")||O.layBody.find("tr:eq("+Ve+")").addClass(R)}).on("mouseleave","tr",function(){var We=t(this),Ve=We.index();We.data("off")||O.layBody.find("tr:eq("+Ve+")").removeClass(R)}).on("click","tr",function(We){Te.call(this,"row",We)}).on("dblclick","tr",function(We){Te.call(this,"rowDouble",We)}).on("contextmenu","tr",function(We){ee.defaultContextmenu||We.preventDefault(),Te.call(this,"rowContextmenu",We)}),function(We,Ve){var Oe=t(this);if(!Oe.data("off")){if(We!=="rowContextmenu"){var ft=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");if(t(Ve.target).is(ft)||t(Ve.target).closest(ft)[0])return}layui.event.call(this,y,We+"("+ie+")",Se.call(Oe.children("td")[0],{e:Ve}))}}),Re=function(We,Ve){var Oe,ft,ht;(We=t(We)).data("off")||(ht=We.data("field"),ft=We.data("key"),ft=O.col(ft),Oe=We.closest("tr").data("index"),Oe=S.cache[O.key][Oe],We.children(_e),(ft=typeof ft.edit=="function"?ft.edit(Oe):ft.edit)&&((ft=t(ft==="textarea"?'':''))[0].value=(ht=We.data("content")||Oe[ht])===void 0||ht===null?"":ht,We.find("."+B)[0]||We.append(ft),ft.focus(),Ve)&&layui.stope(Ve))},Ne=(O.layBody.on("change","."+B,function(){var ht=t(this),We=ht.parent(),Ve=this.value,Oe=ht.parent().data("field"),ht=ht.closest("tr").data("index"),ht=S.cache[O.key][ht],ft=Se.call(We[0],{value:Ve,field:Oe,oldValue:ht[Oe],td:We,reedit:function(){setTimeout(function(){Re(ft.td);var qt={};qt[Oe]=ft.oldValue,ft.update(qt)})},getCol:function(){return O.col(We.data("key"))}}),ht={};ht[Oe]=Ve,ft.update(ht),layui.event.call(We[0],y,"edit("+ie+")",ft)}).on("blur","."+B,function(){t(this).remove()}),O.layBody.on(ee.editTrigger,"td",function(We){Re(this,We)}).on("mouseenter","td",function(){Ye.call(this)}).on("mouseleave","td",function(){Ye.call(this,"hide")}),O.layTotal.on("mouseenter","td",function(){Ye.call(this)}).on("mouseleave","td",function(){Ye.call(this,"hide")}),"layui-table-grid-down"),Ye=function(We){var Ve=t(this),Oe=Ve.children(_e);Ve.data("off")||Ve.parent().hasClass(le)||(We?Ve.find(".layui-table-grid-down").remove():!(Oe.prop("scrollWidth")>Oe.prop("clientWidth")||0'))},Je=function(We,Ve){var Oe=t(this),sn=Oe.parent(),ft=sn.data("key"),ht=O.col(ft),qt=sn.parent().data("index"),bn=sn.children(_e),sn="layui-table-cell-c",gn=t('');(Ve=Ve||ht.expandedMode||ee.cellExpandedMode)==="tips"?O.tipsIndex=b.tips(['
        ',bn.html(),"
        ",''].join(""),bn[0],{tips:[3,""],time:-1,anim:-1,maxWidth:k.ios||k.android?300:O.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(kn,Yn){kn.find(".layui-table-tips-c").on("click",function(){b.close(Yn)})}}):(O.elem.find("."+sn).trigger("click"),O.cssRules(ft,function(kn){var Yn=kn.style.width,Nn=ht.expandedWidth||ee.cellExpandedWidth;Nntr").each(function(Re){ke.cols[Re]=[],t(this).children().each(function(Ne){var Je=t(this),Ye=Je.attr("lay-data"),Ye=s.options(this,{attr:Ye?"lay-data":null,errorText:ge+(Ye||Je.attr("lay-options"))}),Je=t.extend({title:Je.text(),colspan:parseInt(Je.attr("colspan"))||1,rowspan:parseInt(Je.attr("rowspan"))||1},Ye);ke.cols[Re].push(Je)})}),we.find("tbody>tr")),Te=S.render(ke);!Se.length||ee.data||Te.config.url||(_e=0,S.eachCols(Te.config.id,function(Re,Ne){Se.each(function(Ye){ke.data[Ye]=ke.data[Ye]||{};var Je=t(this),rt=Ne.field;ke.data[Ye][rt]=Je.children("td").eq(_e).html()}),_e++}),Te.reloadData({data:ke.data}))}),this},E.that={},E.config={},function(O,ee,ie,ge){var _e,we;ge.colGroup&&(_e=0,O++,ge.CHILD_COLS=[],we=ie+(parseInt(ge.rowspan)||1),layui.each(ee[we],function(ke,Se){Se.parentKey?Se.parentKey===ge.key&&(Se.PARENT_COL_INDEX=O,ge.CHILD_COLS.push(Se),Ee(O,ee,we,Se)):Se.PARENT_COL_INDEX||1<=_e&&_e==(ge.colspan||1)||(Se.PARENT_COL_INDEX=O,ge.CHILD_COLS.push(Se),_e+=parseInt(1td').filter('[data-field="'+qt+'"]')}}})).replace(/"/g,'""'),Ve.push(ht='"'+ht+'"')):ft.field&&ft.type!=="normal"&&rt==0&&(Ye[ft.field]=!0)}),Re.push(Ve.join(","))}),_e&&layui.each(_e.dataTotal,function(rt,We){Ye[We.field]||Ne.push('"'+(We.total||"")+'"')}),Te.join(",")+`\r +`+Re.join(`\r +`)+`\r +`+Ne.join(","))),Se.download=(ie.title||we.title||"table_"+(we.index||""))+"."+ge,document.body.appendChild(Se),Se.click(),document.body.removeChild(Se)},S.getOptions=D,S.hideCol=function(O,ee){var ie=r(O);ie&&(layui.type(ee)==="boolean"?ie.eachCols(function(ge,Se){var we=Se.key,ke=ie.col(we),Se=Se.parentKey;ke.hide!=ee&&(ke=ke.hide=ee,ie.elem.find('*[data-key="'+we+'"]')[ke?"addClass":"removeClass"](w),ie.setParentCol(ke,Se))}):(ee=layui.isArray(ee)?ee:[ee],layui.each(ee,function(ge,_e){ie.eachCols(function(we,ke){var Se,Te;_e.field===ke.field&&(Se=ke.key,Te=ie.col(Se),ke=ke.parentKey,"hide"in _e)&&Te.hide!=_e.hide&&(Te=Te.hide=!!_e.hide,ie.elem.find('*[data-key="'+Se+'"]')[Te?"addClass":"removeClass"](w),ie.setParentCol(Te,ke))})})),t("."+ne).remove(),ie.resize())},S.reload=function(O,ee,ie,ge){if(D(O))return(O=r(O)).reload(ee,ie,ge),E.call(O)},S.reloadData=function(){var O=t.extend([],arguments),ee=(O[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(O[1],function(ie,ge){ee.test(ie)&&delete O[1][ie]}),S.reload.apply(null,O)},S.render=function(O){return O=new ue(O),E.call(O)},S.clearCacheKey=function(O){return delete(O=t.extend({},O))[S.config.checkName],delete O[S.config.indexName],delete O[S.config.numbersName],delete O[S.config.disabledName],O},t(function(){S.init()}),i(y,S)}),layui.define(["table"],function(i){var t=layui.$,s=layui.form,u=layui.table,A=layui.hint(),b={config:{},on:u.on,eachCols:u.eachCols,index:u.index,set:function(q){var Z=this;return Z.config=t.extend({},Z.config,q),Z},resize:u.resize,getOptions:u.getOptions,hideCol:u.hideCol,renderData:u.renderData},C=function(){var q=this,Z=q.config,re=Z.id||Z.index;return{config:Z,reload:function(ae,oe){q.reload.call(q,ae,oe)},reloadData:function(ae,oe){b.reloadData(re,ae,oe)}}},c=function(q){var Z=C.that[q];return Z||A.error(q?"The treeTable instance with ID '"+q+"' not found":"ID argument required"),Z||null},T="lay-table-id",k="layui-hide",S=".layui-table-body",E=".layui-table-main",r=".layui-table-fixed-l",D=".layui-table-fixed-r",f="layui-table-checked",y="layui-table-tree",Q="LAY_DATA_INDEX",g="LAY_DATA_INDEX_HISTORY",w="LAY_PARENT_INDEX",M="LAY_CHECKBOX_HALF",z="LAY_EXPAND",G="LAY_HAS_EXPANDED",Y="LAY_ASYNC_STATUS",N=["all","parent","children","none"],K=/<[^>]+?>/,p=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],x=function(q){var Z=this;Z.index=++b.index,Z.config=t.extend(!0,{},Z.config,b.config,q),Z.init(),Z.render()},_=function(q,Z,re){var ae=u.cache[q];layui.each(re||ae,function(oe,ue){var Ee=ue[Q]||"";Ee.indexOf("-")!==-1&&(ae[Ee]=ue),ue[Z]&&_(q,Z,ue[Z])})},B=function(q,Z,re){var ae=c(q),oe=(re!=="reloadData"&&(ae.status={expand:{}}),t.extend(!0,{},ae.getOptions(),Z)),ue=oe.tree,Ee=ue.customName.children,O=ue.customName.id,ee=(delete Z.hasNumberCol,delete Z.hasChecboxCol,delete Z.hasRadioCol,u.eachCols(null,function(ge,_e){_e.type==="numbers"?Z.hasNumberCol=!0:_e.type==="checkbox"?Z.hasChecboxCol=!0:_e.type==="radio"&&(Z.hasRadioCol=!0)},oe.cols),Z.parseData),ie=Z.done;re==="reloadData"&&oe.scrollPos==="fixed"&&(ae.scrollTopCache=ae.config.elem.next().find(S).scrollTop()),oe.url?re&&(!ee||ee.mod)||(Z.parseData=function(){var ge=this,we=arguments,_e=we[0],we=(layui.type(ee)==="function"&&(_e=ee.apply(ge,we)||we[0]),ge.response.dataName);return ue.data.isSimpleData&&!ue.async.enable&&(_e[we]=ae.flatToTree(_e[we])),le(_e[we],function(ke){ke[z]=z in ke?ke[z]:ke[O]!==void 0&&ae.status.expand[ke[O]]},Ee),ge.autoSort&&ge.initSort&&ge.initSort.type&&layui.sort(_e[we],ge.initSort.field,ge.initSort.type==="desc",!0),ae.initData(_e[we]),_e},Z.parseData.mod=!0):Z.data!==void 0&&(Z.data=Z.data||[],ue.data.isSimpleData&&(Z.data=ae.flatToTree(Z.data)),ae.initData(Z.data)),re&&(!ie||ie.mod)||(Z.done=function(){var ge,_e=arguments,we=_e[3],ke=we==="renderData",Se=(ke||delete ae.isExpandAll,this.elem.next()),Te=(ae.updateStatus(null,{LAY_HAS_EXPANDED:!1}),_(q,Ee),Se.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(Te.length&&(ge=b.checkStatus(q),Te.prop({checked:ge.isAll&&ge.data.length,indeterminate:!ge.isAll&&ge.data.length})),!ke&&oe.autoSort&&oe.initSort&&oe.initSort.type&&b.sort(q),ae.renderTreeTable(Se),we==="reloadData"&&this.scrollPos==="fixed"&&Se.find(S).scrollTop(ae.scrollTopCache),layui.type(ie)==="function")return ie.apply(this,_e)},Z.done.mod=!0),Z&&Z.tree&&Z.tree.view&&layui.each(p,function(ge,_e){Z.tree.view[_e]!==void 0&&(Z.tree.view[_e]=ae.normalizedIcon(Z.tree.view[_e]))})};x.prototype.init=function(){var q=this.config,Z=q.tree.data.cascade,Z=(N.indexOf(Z)===-1&&(q.tree.data.cascade="all"),u.render(t.extend({},q,{data:[],url:"",done:null}))),re=Z.config.id;(C.that[re]=this).tableIns=Z,B(re,q)},x.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},async:{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},x.prototype.normalizedIcon=function(q){return q?K.test(q)?q:'':""},x.prototype.getOptions=function(){return this.tableIns?u.getOptions(this.tableIns.config.id):this.config},x.prototype.flatToTree=function(q){var Z,re,ae,oe,ue,Ee,O,ee,_e=this.getOptions(),ie=_e.tree,ge=ie.customName,_e=_e.id;return q=q||u.cache[_e],_e=q,Z=ge.id,re=ge.pid,ae=ge.children,oe=ie.data.rootPid,Z=Z||"id",re=re||"parentId",ae=ae||"children",O={},ee=[],layui.each(_e,function(we,ke){ue=Z+ke[Z],Ee=Z+ke[re],O[ue]||(O[ue]={},O[ue][ae]=[]);var Se={};Se[ae]=O[ue][ae],O[ue]=t.extend({},ke,Se),((oe?O[ue][re]===oe:!O[ue][re])?ee:(O[Ee]||(O[Ee]={},O[Ee][ae]=[]),O[Ee][ae])).push(O[ue])}),ee},x.prototype.treeToFlat=function(q,Z,re){var ae=this,oe=ae.getOptions().tree.customName,ue=oe.children,Ee=oe.pid,O=[];return layui.each(q,function(ge,ie){var ge=(re?re+"-":"")+ge,_e=t.extend({},ie);_e[Ee]=ie[Ee]||Z,O.push(_e),O=O.concat(ae.treeToFlat(ie[ue],ie[oe.id],ge))}),O},x.prototype.getTreeNode=function(q){var Z,re,ae=this;return q?(re=(Z=ae.getOptions()).tree,Z.id,re.customName,{data:q,dataIndex:q[Q],getParentNode:function(){return ae.getNodeByIndex(q[w])}}):A.error("\u627E\u4E0D\u5230\u8282\u70B9\u6570\u636E")},x.prototype.getNodeByIndex=function(q){var Z,re,ae=this,oe=ae.getNodeDataByIndex(q);return oe?((re=ae.getOptions()).tree.customName.parent,Z=re.id,(re={data:oe,dataIndex:oe[Q],getParentNode:function(){return ae.getNodeByIndex(oe[w])},update:function(ue){return b.updateNode(Z,q,ue)},remove:function(){return b.removeNode(Z,q)},expand:function(ue){return b.expandNode(Z,t.extend({},ue,{index:q}))},setChecked:function(ue){return b.setRowChecked(Z,t.extend({},ue,{index:q}))}}).dataIndex=q,re):A.error("\u627E\u4E0D\u5230\u8282\u70B9\u6570\u636E")},x.prototype.getNodeById=function(q){var ae=this.getOptions(),Z=ae.tree.customName.id,re="",ae=b.getData(ae.id,!0);if(layui.each(ae,function(oe,ue){if(ue[Z]===q)return re=ue[Q],!0}),re)return this.getNodeByIndex(re)},x.prototype.getNodeDataByIndex=function(q,Z,re){var oe=this.getOptions(),ae=oe.tree,oe=oe.id,oe=u.cache[oe],ue=oe[q];if(re!=="delete"&&ue)return t.extend(ue,re),Z?t.extend({},ue):ue;for(var Ee=oe,O=String(q).split("-"),ee=0,ie=ae.customName.children;ee
        '),We=function(Ln){ke[Y]="success",ke[_e.children]=Ln,ie.initData(ke[_e.children],ke[Q]),J(q,!0,!Se&&re,ae,oe)},Oe=Ne.format,layui.type(Oe)==="function"?Oe(ke,O,We):(Ve=t.extend({},Ne.where||O.where),Oe=Ne.autoParam,layui.each(Oe,function(Ln,si){si=si.split("="),Ve[si[0].trim()]=ke[(si[1]||si[0]).trim()]}),(Oe=Ne.contentType||O.contentType)&&Oe.indexOf("application/json")==0&&(Ve=JSON.stringify(Ve)),gn=Ne.method||O.method,ft=Ne.dataType||O.dataType,ht=Ne.jsonpCallback||O.jsonpCallback,qt=Ne.headers||O.headers,bn=Ne.parseData||O.parseData,sn=Ne.response||O.response,t.ajax({type:gn||"get",url:Ye,contentType:Oe,data:Ve,dataType:ft||"json",jsonpCallback:ht,headers:qt||{},success:function(Ln){(Ln=typeof bn=="function"&&bn.call(O,Ln)||Ln)[sn.statusName]!=sn.statusCode?(ke[Y]="error",Je.html('')):We(Ln[sn.dataName])},error:function(Ln,si){ke[Y]="error",typeof O.error=="function"&&O.error(Ln,si)}})),Re;ke[G]=!0,rt.length&&(!O.initSort||O.url&&!O.autoSort||((Ne=O.initSort).type?layui.sort(rt,Ne.field,Ne.type==="desc",!0):layui.sort(rt,u.config.indexName,null,!0)),ie.initData(ke[_e.children],ke[Q]),gn=u.getTrHtml(Ee,rt,null,null,ee),kn={trs:t(gn.trs.join("")),trs_fixed:t(gn.trs_fixed.join("")),trs_fixed_r:t(gn.trs_fixed_r.join(""))},Yn=(ee.split("-").length-1||0)+1,layui.each(rt,function(Ln,si){kn.trs.eq(Ln).attr({"data-index":si[Q],"lay-data-index":si[Q],"data-level":Yn}).data("index",si[Q]),kn.trs_fixed.eq(Ln).attr({"data-index":si[Q],"lay-data-index":si[Q],"data-level":Yn}).data("index",si[Q]),kn.trs_fixed_r.eq(Ln).attr({"data-index":si[Q],"lay-data-index":si[Q],"data-level":Yn}).data("index",si[Q])}),ue.find(E).find('tbody tr[lay-data-index="'+ee+'"]').after(kn.trs),ue.find(r).find('tbody tr[lay-data-index="'+ee+'"]').after(kn.trs_fixed),ue.find(D).find('tbody tr[lay-data-index="'+ee+'"]').after(kn.trs_fixed_r),ie.renderTreeTable(kn.trs,Yn),re)&&!Se&&layui.each(rt,function(Ln,si){J({dataIndex:si[Q],trElem:ue.find('tr[lay-data-index="'+si[Q]+'"]').first(),tableViewElem:ue,tableId:Ee,options:O},Z,re,ae,oe)})}else ie.isExpandAll=!1,(re&&!Se?(layui.each(rt,function(Nn,pi){J({dataIndex:pi[Q],trElem:ue.find('tr[lay-data-index="'+pi[Q]+'"]').first(),tableViewElem:ue,tableId:Ee,options:O},Z,re,ae,oe)}),ue.find(rt.map(function(Nn,pi,Ln){return'tr[lay-data-index="'+Nn[Q]+'"]'}).join(","))):(Ye=ie.treeToFlat(rt,ke[_e.id],ee),ue.find(Ye.map(function(Nn,pi,Ln){return'tr[lay-data-index="'+Nn[Q]+'"]'}).join(",")))).addClass(k);X("resize-"+Ee,function(){b.resize(Ee)},0)(),oe&&ke[Y]!=="loading"&&(Oe=ge.callback.onExpand,layui.type(Oe)==="function")&&Oe(Ee,ke,Te)}return Re},ne=(b.expandNode=function(ue,Z){var re,ae,oe,ue=c(ue);if(ue)return re=(Z=Z||{}).index,ae=Z.expandFlag,oe=Z.inherit,Z=Z.callbackFlag,ue=ue.getOptions().elem.next(),J({trElem:ue.find('tr[lay-data-index="'+re+'"]').first()},ae,oe,null,Z)},b.expandAll=function(q,Z){if(layui.type(Z)!=="boolean")return A.error("expandAll \u7684\u5C55\u5F00\u72B6\u6001\u53C2\u6570\u53EA\u63A5\u6536true/false");var re=c(q);if(re){re.isExpandAll=Z;var ae=re.getOptions(),oe=ae.tree,ue=ae.elem.next(),Ee=oe.customName.isParent,O=oe.customName.id,ee=oe.view.showFlexIconIfNotParent;if(Z){if(Z=b.getData(q,!0),oe.async.enable){var ie=!0;if(layui.each(Z,function(ke,Se){if(Se[Ee]&&!Se[Y])return!(ie=!1)}),!ie)return void layui.each(b.getData(q),function(ke,Se){b.expandNode(q,{index:Se[Q],expandFlag:!0,inherit:!0})})}var ge=!0;if(layui.each(Z,function(ke,Se){if(Se[Ee]&&!Se[G])return!(ge=!1)}),ge)re.updateStatus(null,function(ke){(ke[Ee]||ee)&&(ke[z]=!0,ke[O]!==void 0)&&(re.status.expand[ke[O]]=!0)}),ue.find('tbody tr[data-level!="0"]').removeClass(k),ue.find(".layui-table-tree-flexIcon").html(oe.view.flexIconOpen),oe.view.showIcon&&ue.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(oe.view.iconOpen);else{if(re.updateStatus(null,function(Se){(Se[Ee]||ee)&&(Se[z]=!0,Se[G]=!0,Se[O]!==void 0)&&(re.status.expand[Se[O]]=!0)}),ae.initSort&&ae.initSort.type&&ae.autoSort)return b.sort(q);var _e,ae=u.getTrHtml(q,Z),we={trs:t(ae.trs.join("")),trs_fixed:t(ae.trs_fixed.join("")),trs_fixed_r:t(ae.trs_fixed_r.join(""))};layui.each(Z,function(Se,Te){var Re=Te[Q].split("-").length-1;_e={"data-index":Te[Q],"lay-data-index":Te[Q],"data-level":Re},we.trs.eq(Se).attr(_e).data("index",Te[Q]),we.trs_fixed.eq(Se).attr(_e).data("index",Te[Q]),we.trs_fixed_r.eq(Se).attr(_e).data("index",Te[Q])}),layui.each(["main","fixed-l","fixed-r"],function(Se,Te){ue.find(".layui-table-"+Te+" tbody").html(we[["trs","trs_fixed","trs_fixed_r"][Se]])}),re.renderTreeTable(ue,0,!1)}}else re.updateStatus(null,function(ke){(ke[Ee]||ee)&&(ke[z]=!1,ke[O]!==void 0)&&(re.status.expand[ke[O]]=!1)}),ue.find('.layui-table-box tbody tr[data-level!="0"]').addClass(k),ue.find(".layui-table-tree-flexIcon").html(oe.view.flexIconClose),oe.view.showIcon&&ue.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(oe.view.iconClose);b.resize(q)}},x.prototype.updateNodeIcon=function(oe){var Z=this.getOptions().tree||{},re=oe.scopeEl,ae=oe.isExpand,oe=oe.isParent;re.find(".layui-table-tree-flexIcon").css("visibility",oe||Z.view.showFlexIconIfNotParent?"visible":"hidden").html(ae?Z.view.flexIconOpen:Z.view.flexIconClose),Z.view.showIcon&&(re=re.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),ae=oe?ae?Z.view.iconOpen:Z.view.iconClose:Z.view.iconLeaf,re.toggleClass("layui-table-tree-iconLeaf",!oe).html(ae))},x.prototype.renderTreeTable=function(q,Z,re){var ae=this,oe=ae.getOptions(),ue=oe.elem.next(),Ee=(ue.hasClass(y)||ue.addClass(y),oe.id),O=oe.tree||{},ee=(O.data,O.view||{}),ie=O.customName||{},ge=ie.isParent,_e=(ue.attr("lay-filter"),ae),we=((Z=Z||0)||(ue.find(".layui-table-body tr:not([data-level])").attr("data-level",Z),layui.each(u.cache[Ee],function(Te,Re){ue.find('.layui-table-main tbody tr[data-level="0"]:eq('+Te+")").attr("lay-data-index",Re[Q]),ue.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+Te+")").attr("lay-data-index",Re[Q]),ue.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+Te+")").attr("lay-data-index",Re[Q])})),null),ke=ie.name,Se=ee.indent||14;if(layui.each(q.find('td[data-field="'+ke+'"]'),function(Te,rt){var Ne,Ye,Je=(rt=t(rt)).closest("tr"),rt=rt.children(".layui-table-cell");rt.hasClass("layui-table-tree-item")||(Ye=Je.attr("lay-data-index"))&&(Je=ue.find('tr[lay-data-index="'+Ye+'"]'),(Ne=_e.getNodeDataByIndex(Ye))[z]&&Ne[ge]&&((we=we||{})[Ye]=!0),Ne[M]&&Je.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),Ye=rt.html(),(rt=Je.find('td[data-field="'+ke+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),rt.html(['
        ',Ne[z]?ee.flexIconOpen:ee.flexIconClose,"
        ",ee.showIcon?'
        '+(ae.normalizedIcon(Ne[ie.icon])||ee.icon||(Ne[ge]?Ne[z]?ee.iconOpen:ee.iconClose:ee.iconLeaf)||"")+"
        ":"",Ye].join("")).find(".layui-table-tree-flexIcon").on("click",function(We){layui.stope(We),J({trElem:Je},null,null,null,!0)}))}),!Z&&O.view.expandAllDefault&&ae.isExpandAll===void 0)return b.expandAll(Ee,!0);(re!==!1&&we?(layui.each(we,function(Te,Re){Te=ue.find('tr[lay-data-index="'+Te+'"]'),Te.find(".layui-table-tree-flexIcon").html(ee.flexIconOpen),J({trElem:Te.first()},!0)}),X("renderTreeTable2-"+Ee,function(){s.render(t(".layui-table-tree["+T+'="'+Ee+'"]'))},0)):X("renderTreeTable-"+Ee,function(){oe.hasNumberCol&&ne(ae),s.render(t(".layui-table-tree["+T+'="'+Ee+'"]'))},0))()},function(q){var Z=q.getOptions(),re=Z.elem.next(),ae=0,oe=re.find(".layui-table-main tbody tr"),ue=re.find(".layui-table-fixed-l tbody tr"),Ee=re.find(".layui-table-fixed-r tbody tr");layui.each(q.treeToFlat(u.cache[Z.id]),function(O,ee){ee.LAY_HIDE||(q.getNodeDataByIndex(ee[Q]).LAY_NUM=++ae,oe.eq(O).find(".laytable-cell-numbers").html(ae),ue.eq(O).find(".laytable-cell-numbers").html(ae),Ee.eq(O).find(".laytable-cell-numbers").html(ae))})}),le=(x.prototype.render=function(q){var Z=this;Z.tableIns=u[q==="reloadData"?"reloadData":"reload"](Z.tableIns.config.id,t.extend(!0,{},Z.config)),Z.config=Z.tableIns.config},x.prototype.reload=function(q,Z,re){var ae=this;q=q||{},delete ae.haveInit,layui.each(q,function(oe,ue){layui.type(ue)==="array"&&delete ae.config[oe]}),B(ae.getOptions().id,q,re||!0),ae.config=t.extend(Z,{},ae.config,q),ae.render(re)},b.reloadData=function(){var q=t.extend(!0,[],arguments);return q[3]="reloadData",b.reload.apply(null,q)},function(q,Z,re,ae){var oe=[];return layui.each(q,function(ue,Ee){layui.type(Z)==="function"?Z(Ee):t.extend(Ee,Z),oe.push(t.extend({},Ee)),ae||(oe=oe.concat(le(Ee[re],Z,re,ae)))}),oe}),me=(x.prototype.updateStatus=function(q,Z,re){var ae=this.getOptions(),oe=ae.tree;return q=q||u.cache[ae.id],le(q,Z,oe.customName.children,re)},x.prototype.getTableData=function(){var q=this.getOptions();return u.cache[q.id]},b.updateStatus=function(ae,Z,re){var ae=c(ae),oe=ae.getOptions();return re=re||(oe.url?u.cache[oe.id]:oe.data),ae.updateStatus(re,Z)},b.sort=function(q){var Z,re,ae,oe,ue,Ee=c(q);Ee&&(ue=(Z=Ee.getOptions()).tree,re=b.getData(q),ae=ue.customName.children,oe=function(O,ee,ie){layui.sort(O,ee,ie,!0),layui.each(O,function(ge,_e){oe(_e[ae]||[],ee,ie)})},Z.autoSort)&&((ue=Z.initSort).type?oe(re,ue.field,ue.type==="desc"):oe(re,u.config.indexName,null),u.cache[q]=re,Ee.initData(re),b.renderData(q))},function(q){var Z=q.config.id,re=c(Z),ae=q.data=b.getNodeDataByIndex(Z,q.index),oe=ae[Q],ue=(q.dataIndex=oe,q.update);q.update=function(){var Ee=arguments,O=(t.extend(re.getNodeDataByIndex(oe),Ee[0]),ue.apply(this,Ee)),ee=q.config.tree.customName.name;return ee in Ee[0]&&q.tr.find('td[data-field="'+ee+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),re.renderTreeTable(q.tr,q.tr.attr("data-level"),!1),O},q.del=function(){b.removeNode(Z,ae)},q.setRowChecked=function(Ee){b.setRowChecked(Z,{index:ae,checked:Ee})}}),Ae=(b.updateNode=function(q,Z,re){var ae,oe,ue,Ee,O,ee=c(q);ee&&((Ee=ee.getOptions()).tree,Ee=(ae=Ee.elem.next()).find('tr[lay-data-index="'+Z+'"]'),oe=Ee.attr("data-index"),ue=Ee.attr("data-level"),re)&&(Ee=ee.getNodeDataByIndex(Z,!1,re),O=u.getTrHtml(q,[Ee]),layui.each(["main","fixed-l","fixed-r"],function(ie,ge){ae.find(".layui-table-"+ge+' tbody tr[lay-data-index="'+Z+'"]').replaceWith(t(O[["trs","trs_fixed","trs_fixed_r"][ie]].join("")).attr({"data-index":oe,"lay-data-index":Z,"data-level":ue}).data("index",oe))}),ee.renderTreeTable(ae.find('tr[lay-data-index="'+Z+'"]'),ue))},b.removeNode=function(q,Z,re){var ae=c(q);if(ae){var oe,ue=ae.getOptions(),we=ue.tree,Ee=we.customName.isParent,O=we.customName.children,ee=ue.elem.next(),ie=[],ge=u.cache[q],Z=ae.getNodeDataByIndex(layui.type(Z)==="string"?Z:Z[Q],!1,"delete"),_e=ae.getNodeDataByIndex(Z[w]),we=(ae.updateCheckStatus(_e),ae.treeToFlat([Z],Z[we.customName.pid],Z[w])),Z=(layui.each(we,function(Se,Te){Te=Te[Q],ie.push('tr[lay-data-index="'+Te+'"]'),Te.indexOf("-")!==-1&&delete ge[Te]}),ee.find(ie.join(",")).remove(),ae.initData());for(oe in ge)oe.indexOf("-")!==-1&&oe!==ge[oe][Q]&&delete ge[oe];layui.each(ae.treeToFlat(Z),function(Se,Te){Te[g]&&Te[g]!==Te[Q]&&ee.find('tr[lay-data-index="'+Te[g]+'"]').attr({"data-index":Te[Q],"lay-data-index":Te[Q]}).data("index",Te[Q])}),layui.each(ge,function(Se,Te){ee.find('tr[data-level="0"][lay-data-index="'+Te[Q]+'"]').attr("data-index",Se).data("index",Se)}),ue.hasNumberCol&&ne(ae),_e&&(we=ee.find('tr[lay-data-index="'+_e[Q]+'"]'),re||(_e[Ee]=!(!_e[O]||!_e[O].length)),ae.updateNodeIcon({scopeEl:we,isExpand:_e[z],isParent:_e[Ee]})),b.resize(q)}},b.addNodes=function(q,Z){var re=c(q);if(re){var ae=re.getOptions(),oe=ae.tree,ue=ae.elem.next(),Ee=u.config.checkName,O=(Z=Z||{}).parentIndex,ie=Z.index,ge=Z.data,Z=Z.focus,ee=(O=layui.type(O)==="number"?O.toString():O)?re.getNodeDataByIndex(O):null,ie=layui.type(ie)==="number"?ie:-1,ge=t.extend(!0,[],layui.isArray(ge)?ge:[ge]);if(layui.each(ge,function(Ye,Je){Ee in Je||!ee||(Je[Ee]=ee[Ee])}),re.getTableData(),ee){var _e=oe.customName.isParent,ke=oe.customName.children;ee[_e]=!0;var we=(we=ee[ke])?(Se=we.splice(ie===-1?we.length:ie),ee[ke]=we.concat(ge,Se)):ee[ke]=ge,ke=(re.updateStatus(we,function(Ye){(Ye[_e]||oe.view.showFlexIconIfNotParent)&&(Ye[G]=!1)}),re.treeToFlat(we));ue.find(ke.map(function(Ye){return'tr[lay-data-index="'+Ye[Q]+'"]'}).join(",")).remove(),re.initData(),ee[G]=!1,ee[Y]="local",J({trElem:ue.find('tr[lay-data-index="'+O+'"]')},!0)}else{var Se=u.cache[q].splice(ie===-1?u.cache[q].length:ie);if(u.cache[q]=u.cache[q].concat(ge,Se),ae.url||(ae.page?(we=ae.page,ae.data.splice.apply(ae.data,[we.limit*(we.curr-1),we.limit].concat(u.cache[q]))):ae.data=u.cache[q]),re.initData(),ue.find(".layui-none").length)return u.renderData(q),ge;var Te,ke=u.getTrHtml(q,ge),Re={trs:t(ke.trs.join("")),trs_fixed:t(ke.trs_fixed.join("")),trs_fixed_r:t(ke.trs_fixed_r.join(""))},O=(layui.each(ge,function(Ve,Oe){Te={"data-index":Oe[Q],"lay-data-index":Oe[Q],"data-level":"0"},Re.trs.eq(Ve).attr(Te).data("index",Oe[Q]),Re.trs_fixed.eq(Ve).attr(Te).data("index",Oe[Q]),Re.trs_fixed_r.eq(Ve).attr(Te).data("index",Oe[Q])}),parseInt(ge[0][Q])-1),we=ue.find(E),ae=ue.find(r),ke=ue.find(D);O==-1?we.find('tr[data-level="0"][data-index="0"]')[0]?(we.find('tr[data-level="0"][data-index="0"]').before(Re.trs),ae.find('tr[data-level="0"][data-index="0"]').before(Re.trs_fixed),ke.find('tr[data-level="0"][data-index="0"]').before(Re.trs_fixed_r)):(we.find("tbody").prepend(Re.trs),ae.find("tbody").prepend(Re.trs_fixed),ke.find("tbody").prepend(Re.trs_fixed_r)):ie===-1?(we.find("tbody").append(Re.trs),ae.find("tbody").append(Re.trs_fixed),ke.find("tbody").append(Re.trs_fixed_r)):(O=Se[0][g],we.find('tr[data-level="0"][data-index="'+O+'"]').before(Re.trs),ae.find('tr[data-level="0"][data-index="'+O+'"]').before(Re.trs_fixed),ke.find('tr[data-level="0"][data-index="'+O+'"]').before(Re.trs_fixed_r)),layui.each(u.cache[q],function(Ve,Oe){ue.find('tr[data-level="0"][lay-data-index="'+Oe[Q]+'"]').attr("data-index",Ve).data("index",Ve)}),re.renderTreeTable(ue.find(ge.map(function(Ve,Oe,ft){return'tr[lay-data-index="'+Ve[Q]+'"]'}).join(",")))}return re.updateCheckStatus(ee),ee&&(ie=ue.find('tr[lay-data-index="'+ee[Q]+'"]'),re.updateNodeIcon({scopeEl:ie,isExpand:ee[z],isParent:ee[_e]})),b.resize(q),Z&&ue.find(E).find('tr[lay-data-index="'+ge[0][Q]+'"]').get(0).scrollIntoViewIfNeeded(),ge}},b.checkStatus=function(q,Z){var re,ae,oe,ue=c(q);if(ue)return ue=ue.getOptions().tree,re=u.config.checkName,ae=b.getData(q,!0).filter(function(Ee,O,ee){return Ee[re]||Z&&Ee[M]}),oe=!0,layui.each(ue.data.cascade==="all"?u.cache[q]:b.getData(q,!0),function(Ee,O){if(!O[re])return!(oe=!1)}),{data:ae,isAll:oe}},b.on("sort",function(re){var re=re.config,Z=re.elem.next(),re=re.id;Z.hasClass(y)&&b.sort(re)}),b.on("row",function(q){q.config.elem.next().hasClass(y)&&me(q)}),b.on("rowDouble",function(q){var Z=q.config,re=Z.elem.next();Z.id,re.hasClass(y)&&(me(q),(Z.tree||{}).view.dblClickExpand)&&J({trElem:q.tr.first()},null,null,null,!0)}),b.on("rowContextmenu",function(q){var Z=q.config,re=Z.elem.next();Z.id,re.hasClass(y)&&me(q)}),b.on("tool",function(q){var Z=q.config,re=Z.elem.next();Z.id,re.hasClass(y)&&me(q)}),b.on("edit",function(q){var Z=q.config,re=Z.elem.next();Z.id,re.hasClass(y)&&(me(q),q.field===Z.tree.customName.name)&&((re={})[q.field]=q.value,q.update(re))}),b.on("radio",function(q){var re=q.config,Z=re.elem.next(),re=re.id;Z.hasClass(y)&&(Z=c(re),me(q),Ae.call(Z,q.tr,q.checked))}),x.prototype.setRowCheckedClass=function(q,Z){var re=this.getOptions(),ae=(q.data("index"),re.elem.next());q[Z?"addClass":"removeClass"](f),q.each(function(){var oe=t(this).data("index");ae.find('.layui-table-fixed-r tbody tr[data-index="'+oe+'"]')[Z?"addClass":"removeClass"](f)})},x.prototype.updateCheckStatus=function(q,Z){var re,ae,oe,ue,Ee,O,ee,ie=this,ge=ie.getOptions();return!!ge.hasChecboxCol&&(re=ge.tree,ae=ge.id,oe=ge.elem.next(),ue=u.config.checkName,(Ee=re.data.cascade)!=="all"&&Ee!=="parent"||!q||(Ee=ie.updateParentCheckStatus(q,layui.type(Z)==="boolean"?Z:null),layui.each(Ee,function(_e,we){var ke=oe.find('tr[lay-data-index="'+we[Q]+'"] input[name="layTableCheckbox"]:not(:disabled)'),Se=we[ue];ie.setRowCheckedClass(ke.closest("tr"),Se),s.render(ke.prop({checked:Se,indeterminate:we[M]}))})),ee=!(O=!0),0<(q=(q=re.data.cascade==="all"?u.cache[ae]:b.getData(ae,!0)).filter(function(_e){return!_e[ge.disabledName]})).length?layui.each(q,function(_e,we){if((we[ue]||we[M])&&(ee=!0),we[ue]||(O=!1),ee&&!O)return!0}):O=!1,ee=ee&&!O,s.render(oe.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:O,indeterminate:ee})),O)},x.prototype.updateParentCheckStatus=function(q,Z){var re,ae=this.getOptions(),ue=ae.tree,ae=ae.id,oe=u.config.checkName,ue=ue.customName.children,Ee=[];return!(q[M]=!1)===Z?q[ue].length?layui.each(q[ue],function(O,ee){if(!ee[oe])return Z=!1,q[M]=!0}):Z=!1:Z===!1?layui.each(q[ue],function(O,ee){if(ee[oe]||ee[M])return q[M]=!0}):(Z=!1,re=0,layui.each(q[ue],function(O,ee){ee[oe]&&re++}),Z=q[ue].length?q[ue].length===re:q[oe],q[M]=!Z&&0')),x=(N.tree(p),K.elem=t(K.elem));if(x[0]){if(N.key=K.id||N.index,N.elem=p,N.elemNone=t('
        '+K.text.none+"
        "),x.html(N.elem),N.elem.find(".layui-tree-set").length==0)return N.elem.append(N.elemNone);K.showCheckbox&&N.renderForm("checkbox"),N.elem.find(".layui-tree-set").each(function(){var _=t(this);_.parent(".layui-tree-pack")[0]||_.addClass("layui-tree-setHide"),!_.next()[0]&&_.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&_.addClass(M),_.next()[0]||_.parents(".layui-tree-set").eq(0).next()[0]||_.addClass(M)}),N.events()}},Y.prototype.renderForm=function(N){s.render(N,"LAY-tree-"+this.index)},Y.prototype.tree=function(N,B){var p=this,x=p.config,_=x.customName,B=B||x.data;layui.each(B,function(R,X){var J,ne,le=X[_.children]&&0"),Ae=t(['
        ','
        ','
        ',x.showLine?le?'':'':'',x.showCheckbox?'':"",x.isJump&&X.href?''+(X[_.title]||X.label||x.text.defaultNodeName)+"":''+(X[_.title]||X.label||x.text.defaultNodeName)+"","
        ",x.edit?(J={add:'',update:'',del:''},ne=['
        '],x.edit===!0&&(x.edit=["update","del"]),typeof x.edit=="object"?(layui.each(x.edit,function(q,Z){ne.push(J[Z]||"")}),ne.join("")+"
        "):void 0):"","
        "].join(""));le&&(Ae.append(me),p.tree(me,X[_.children])),N.append(Ae),Ae.prev("."+S)[0]&&Ae.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),le||Ae.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),p.spread(Ae,X),x.showCheckbox&&(X.checked&&p.checkids.push(X[_.id]),p.checkClick(Ae,X)),x.edit&&p.operate(Ae,X)})},Y.prototype.spread=function(N,K){var p=this,x=p.config,X=N.children("."+f),_=X.children("."+y),B=_.find('input[same="layuiTreeCheck"]'),R=X.find("."+E),X=X.find("."+Q),J=x.onlyIconControl?R:_,ne="";J.on("click",function(le){var me=N.children("."+g),Ae=(J.children(".layui-icon")[0]?J:J.find(".layui-tree-icon")).children(".layui-icon");me[0]?N.hasClass(w)?(N.removeClass(w),me.slideUp(200),Ae.removeClass(D).addClass(r),p.updateFieldValue(K,"spread",!1)):(N.addClass(w),me.slideDown(200),Ae.addClass(D).removeClass(r),p.updateFieldValue(K,"spread",!0),x.accordion&&((me=N.siblings("."+S)).removeClass(w),me.children("."+g).slideUp(200),me.find(".layui-tree-icon").children(".layui-icon").removeClass(D).addClass(r))):ne="normal"}),X.on("click",function(){t(this).hasClass(k)||(ne=N.hasClass(w)?x.onlyIconControl?"open":"close":x.onlyIconControl?"close":"open",B[0]&&p.updateFieldValue(K,"checked",B.prop("checked")),x.click&&x.click({elem:N,state:ne,data:K}))})},Y.prototype.updateFieldValue=function(N,K,p){K in N&&(N[K]=p)},Y.prototype.setCheckbox=function(N,K,p){var x,_=this,B=_.config.customName,R=p.prop("checked");p.prop("disabled")||(typeof K[B.children]!="object"&&!N.find("."+g)[0]||N.find("."+g).find('input[same="layuiTreeCheck"]').each(function(X){this.disabled||((X=K[B.children][X])&&_.updateFieldValue(X,"checked",R),_.updateFieldValue(this,"checked",R))}),(x=function(X){var J,ne,le;X.parents("."+S)[0]&&(ne=(X=X.parent("."+g)).parent(),le=X.prev().find('input[same="layuiTreeCheck"]'),R?le.prop("checked",R):(X.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(J=!0)}),J||le.prop("checked",!1)),x(ne))})(N),_.renderForm("checkbox"))},Y.prototype.checkClick=function(N,K){var p=this,x=p.config;N.children("."+f).children("."+y).on("click",'input[same="layuiTreeCheck"]+',function(B){layui.stope(B);var B=t(this).prev(),R=B.prop("checked");B.prop("disabled")||(p.setCheckbox(N,K,B),p.updateFieldValue(K,"checked",R),x.oncheck&&x.oncheck({elem:N,checked:R,data:K}))})},Y.prototype.operate=function(N,K){var p=this,x=p.config,_=x.customName,B=N.children("."+f),R=B.children("."+y);B.children(".layui-tree-btnGroup").on("click",".layui-icon",function(ne){layui.stope(ne);var J,ne=t(this).data("type"),le=N.children("."+g),me={data:K,type:ne,elem:N};if(ne=="add"){le[0]||(x.showLine?(R.find("."+E).addClass("layui-tree-icon"),R.find("."+E).children(".layui-icon").addClass(r).removeClass("layui-icon-file")):R.find(".layui-tree-iconArrow").removeClass(T),N.append('
        '));var Ae,q=x.operate&&x.operate(me),Z={};if(Z[_.title]=x.text.defaultNodeName,Z[_.id]=q,p.tree(N.children("."+g),[Z]),x.showLine&&(le[0]?(le.hasClass(G)||le.addClass(G),N.find("."+g).each(function(){t(this).children("."+S).last().addClass(M)}),(le.children("."+S).last().prev().hasClass(M)?le.children("."+S).last().prev():le.children("."+S).last()).removeClass(M),!N.parent("."+g)[0]&&N.next()[0]&&le.children("."+S).last().removeClass(M)):(q=N.siblings("."+S),Ae=1,Z=N.parent("."+g),layui.each(q,function(re,ae){t(ae).children("."+g)[0]||(Ae=0)}),(Ae==1?(q.children("."+g).addClass(z),q.children("."+g).children("."+S).removeClass(M),N.children("."+g).addClass(z),Z.removeClass(G),Z.children("."+S).last().children("."+g).children("."+S).last()):N.children("."+g).children("."+S)).addClass(M))),!x.showCheckbox)return;R.find('input[same="layuiTreeCheck"]')[0].checked&&(N.children("."+g).children("."+S).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),p.renderForm("checkbox")}else ne=="update"?(q=R.children("."+Q).html(),R.children("."+Q).html(""),R.append(''),R.children(".layui-tree-editInput").val(A.unescape(q)).focus(),J=function(re){var ae=A.escape(re.val().trim())||x.text.defaultNodeName;re.remove(),R.children("."+Q).html(ae),me.data[_.title]=ae,x.operate&&x.operate(me)},R.children(".layui-tree-editInput").blur(function(){J(t(this))}),R.children(".layui-tree-editInput").on("keydown",function(re){re.keyCode===13&&(re.preventDefault(),J(t(this)))})):u.confirm('\u786E\u8BA4\u5220\u9664\u8BE5\u8282\u70B9 "'+(K[_.title]||"")+'" \u5417\uFF1F',function(re){var ae,oe,ue;x.operate&&x.operate(me),me.status="remove",u.close(re),N.prev("."+S)[0]||N.next("."+S)[0]||N.parent("."+g)[0]?(N.siblings("."+S).children("."+f)[0]?(x.showCheckbox&&(ae=function(Ee){var O,ee,ie,ge;Ee.parents("."+S)[0]&&(O=Ee.siblings("."+S).children("."+f),ee=(Ee=Ee.parent("."+g).prev()).find('input[same="layuiTreeCheck"]')[0],ie=1,(ge=0)==ee.checked)&&(O.each(function(_e,we){we=t(we).find('input[same="layuiTreeCheck"]')[0],we.checked!=0||we.disabled||(ie=0),we.disabled||(ge=1)}),ie==1)&&ge==1&&(ee.checked=!0,p.renderForm("checkbox"),ae(Ee.parent("."+S)))})(N),x.showLine&&(re=N.siblings("."+S),oe=1,ue=N.parent("."+g),layui.each(re,function(Ee,O){t(O).children("."+g)[0]||(oe=0)}),oe==1?(le[0]||(ue.removeClass(G),re.children("."+g).addClass(z),re.children("."+g).children("."+S).removeClass(M)),(N.next()[0]?ue.children("."+S).last():N.prev()).children("."+g).children("."+S).last().addClass(M),N.next()[0]||N.parents("."+S)[1]||N.parents("."+S).eq(0).next()[0]||N.prev("."+S).addClass(M)):!N.next()[0]&&N.hasClass(M)&&N.prev().addClass(M))):(re=N.parent("."+g).prev(),x.showLine?(re.find("."+E).removeClass("layui-tree-icon"),re.find("."+E).children(".layui-icon").removeClass(D).addClass("layui-icon-file"),(ue=re.parents("."+g).eq(0)).addClass(G),ue.children("."+S).each(function(){t(this).children("."+g).children("."+S).last().addClass(M)})):re.find(".layui-tree-iconArrow").addClass(T),N.parents("."+S).eq(0).removeClass(w),N.parent("."+g).remove()),N.remove()):(N.remove(),p.elem.append(p.elemNone))})})},Y.prototype.events=function(){var N=this,K=N.config;N.elem.find(".layui-tree-checkedFirst"),N.setChecked(N.checkids),N.elem.find(".layui-tree-search").on("keyup",function(){var x=t(this),p=x.val(),x=x.nextAll(),_=[];x.find("."+Q).each(function(){var B,R=t(this).parents("."+f);t(this).html().indexOf(p)!=-1&&(_.push(t(this).parent()),(B=function(X){X.addClass("layui-tree-searchShow"),X.parent("."+g)[0]&&B(X.parent("."+g).parent("."+S))})(R.parent("."+S)))}),x.find("."+f).each(function(){var B=t(this).parent("."+S);B.hasClass("layui-tree-searchShow")||B.addClass(T)}),x.find(".layui-tree-searchShow").length==0&&N.elem.append(N.elemNone),K.onsearch&&K.onsearch({elem:_})}),N.elem.find(".layui-tree-search").on("keydown",function(){t(this).nextAll().find("."+f).each(function(){t(this).parent("."+S).removeClass("layui-tree-searchShow "+T)}),t(".layui-tree-emptyText")[0]&&t(".layui-tree-emptyText").remove()})},Y.prototype.getChecked=function(){var N=this,K=N.config,p=K.customName,x=[],_=[],B=(N.elem.find(".layui-form-checked").each(function(){x.push(t(this).prev()[0].value)}),function(R,X){layui.each(R,function(J,ne){layui.each(x,function(le,me){if(ne[p.id]==me)return N.updateFieldValue(ne,"checked",!0),delete(me=t.extend({},ne))[p.children],X.push(me),ne[p.children]&&(me[p.children]=[],B(ne[p.children],me[p.children])),!0})})});return B(t.extend({},K.data),_),_},Y.prototype.setChecked=function(N){this.config,this.elem.find("."+S).each(function(K,p){var x=t(this).data("id"),_=t(p).children("."+f).find('input[same="layuiTreeCheck"]'),B=_.next();if(typeof N=="number"){if(x.toString()==N.toString())return _[0].checked||B.click(),!1}else typeof N=="object"&&layui.each(N,function(R,X){if(X.toString()==x.toString()&&!_[0].checked)return B.click(),!0})})},c.that={},c.config={},C.reload=function(N,K){return N=c.that[N],N.reload(K),c.call(N)},C.getChecked=function(N){return c.that[N].getChecked()},C.setChecked=function(N,K){return c.that[N].setChecked(K)},C.render=function(N){return N=new Y(N),c.call(N)},i(b,C)}),layui.define(["laytpl","form"],function(i){var t=layui.$,s=layui.laytpl,u=layui.form,A="transfer",b={config:{},index:layui[A]?layui[A].index+1e4:0,set:function(g){var w=this;return w.config=t.extend({},w.config,g),w},on:function(g,w){return layui.onevent.call(this,A,g,w)}},C=function(){var g=this,w=g.config,M=w.id||g.index;return C.that[M]=g,{config:C.config[M]=w,reload:function(z){g.reload.call(g,z)},getData:function(){return g.getData.call(g)}}},c="layui-hide",T="layui-btn-disabled",k="layui-none",S="layui-transfer-box",E="layui-transfer-header",r="layui-transfer-search",D="layui-transfer-data",f=function(g){return['
        ','
        ','`,"
        ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
          ',"
          "].join("")},y=['
          ',f({index:0,checkAllName:"layTransferLeftCheckAll"}),'
          ','",'","
          ",f({index:1,checkAllName:"layTransferRightCheckAll"}),"
          "].join(""),Q=function(g){var w=this;w.index=++b.index,w.config=t.extend({},w.config,b.config,g),w.render()};Q.prototype.config={title:["\u5217\u8868\u4E00","\u5217\u8868\u4E8C"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65E0\u6570\u636E",searchNone:"\u65E0\u5339\u914D\u6570\u636E"}},Q.prototype.reload=function(g){var w=this;w.config=t.extend({},w.config,g),w.render()},Q.prototype.render=function(){var g=this,w=g.config,M=g.elem=t(s(y,{open:"{{",close:"}}"}).render({data:w,index:g.index})),z=w.elem=t(w.elem);z[0]&&(w.data=w.data||[],w.value=w.value||[],w.id="id"in w?w.id:elem.attr("id")||g.index,g.key=w.id,z.html(g.elem),g.layBox=g.elem.find("."+S),g.layHeader=g.elem.find("."+E),g.laySearch=g.elem.find("."+r),g.layData=M.find("."+D),g.layBtn=M.find(".layui-transfer-active .layui-btn"),g.layBox.css({width:w.width,height:w.height}),g.layData.css({height:(z=w.height-g.layHeader.outerHeight(),w.showSearch&&(z-=g.laySearch.outerHeight()),z-2)}),g.renderData(),g.events())},Q.prototype.renderData=function(){var g=this,w=g.config,M=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];g.parseData(function(z){var G=z.selected?1:0,Y=["
        • ",'',"
        • "].join("");G?layui.each(w.value,function(N,K){K==z.value&&z.selected&&(M[G].views[N]=Y)}):M[G].views.push(Y),delete z.selected}),g.layData.eq(0).html(M[0].views.join("")),g.layData.eq(1).html(M[1].views.join("")),g.renderCheckBtn()},Q.prototype.renderForm=function(g){u.render(g,"LAY-transfer-"+this.index)},Q.prototype.renderCheckBtn=function(g){var w=this,M=w.config;g=g||{},w.layBox.each(function(z){var Y=t(this),G=Y.find("."+D),Y=Y.find("."+E).find('input[type="checkbox"]'),N=G.find('input[type="checkbox"]'),K=0,p=!1;N.each(function(){var x=t(this).data("hide");(this.checked||this.disabled||x)&&K++,this.checked&&!x&&(p=!0)}),Y.prop("checked",p&&K===N.length),w.layBtn.eq(z)[p?"removeClass":"addClass"](T),g.stopNone||(N=G.children("li:not(."+c+")").length,w.noneView(G,N?"":M.text.none))}),w.renderForm("checkbox")},Q.prototype.noneView=function(g,w){var M=t('

          '+(w||"")+"

          ");g.find("."+k)[0]&&g.find("."+k).remove(),w.replace(/\s/g,"")&&g.append(M)},Q.prototype.setValue=function(){var g=this.config,w=[];return this.layBox.eq(1).find("."+D+' input[type="checkbox"]').each(function(){t(this).data("hide")||w.push(this.value)}),g.value=w,this},Q.prototype.parseData=function(g){var w=this.config,M=[];return layui.each(w.data,function(z,G){G=(typeof w.parseData=="function"?w.parseData(G):G)||G,M.push(G=t.extend({},G)),layui.each(w.value,function(Y,N){N==G.value&&(G.selected=!0)}),g&&g(G)}),w.data=M,this},Q.prototype.getData=function(g){var w=this.config,M=[];return this.setValue(),layui.each(g||w.value,function(z,G){layui.each(w.data,function(Y,N){delete N.selected,G==N.value&&M.push(N)})}),M},Q.prototype.transfer=function(g,K){var M,z=this,G=z.config,Y=z.layBox.eq(g),N=[],K=(K?((M=(K=K).find('input[type="checkbox"]'))[0].checked=!1,Y.siblings("."+S).find("."+D).append(K.clone()),K.remove(),N.push(M[0].value),z.setValue()):Y.each(function(p){t(this).find("."+D).children("li").each(function(){var x=t(this),_=x.find('input[type="checkbox"]'),B=_.data("hide");_[0].checked&&!B&&(_[0].checked=!1,Y.siblings("."+S).find("."+D).append(x.clone()),x.remove(),N.push(_[0].value)),z.setValue()})}),z.renderCheckBtn(),Y.siblings("."+S).find("."+r+" input"));K.val()!==""&&K.trigger("keyup"),G.onchange&&G.onchange(z.getData(N),g)},Q.prototype.events=function(){var g=this,w=g.config;g.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var M=t(this).prev(),z=M[0].checked,G=M.parents("."+S).eq(0).find("."+D);M[0].disabled||(M.attr("lay-type")==="all"&&G.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=z)}),setTimeout(function(){g.renderCheckBtn({stopNone:!0})},0))}),g.elem.on("dblclick","."+D+">li",function(M){var z=t(this),G=z.children('input[type="checkbox"]'),Y=z.parent().parent().data("index");G[0].disabled||(typeof w.dblclick=="function"?w.dblclick({elem:z,data:g.getData([G[0].value])[0],index:Y}):null)!==!1&&g.transfer(Y,z)}),g.layBtn.on("click",function(){var M=t(this),z=M.data("index");M.hasClass(T)||g.transfer(z)}),g.laySearch.find("input").on("keyup",function(){var M=this.value,z=t(this).parents("."+r).eq(0).siblings("."+D),G=z.children("li"),G=(G.each(function(){var Y=t(this),N=Y.find('input[type="checkbox"]'),K=N[0].title,K=(w.showSearch!=="cs"&&(K=K.toLowerCase(),M=M.toLowerCase()),K.indexOf(M)!==-1);Y[K?"removeClass":"addClass"](c),N.data("hide",!K)}),g.renderCheckBtn(),G.length===z.children("li."+c).length);g.noneView(z,G?w.text.searchNone:"")})},C.that={},C.config={},b.reload=function(g,w){return g=C.that[g],g.reload(w),C.call(g)},b.getData=function(g){return C.that[g].getData()},b.render=function(g){return g=new Q(g),C.call(g)},i(A,b)}),layui.define(["jquery","lay"],function(i){var t=layui.$,s=layui.lay,u=(layui.hint(),layui.device(),{config:{},set:function(D){var f=this;return f.config=t.extend({},f.config,D),f},on:function(D,f){return layui.onevent.call(this,A,D,f)}}),A="carousel",b="layui-this",C="layui-carousel-left",c="layui-carousel-right",T="layui-carousel-prev",k="layui-carousel-next",S="layui-carousel-arrow",E="layui-carousel-ind",r=function(D){var f=this;f.config=t.extend({},f.config,u.config,D),f.render()};r.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},r.prototype.render=function(){var D=this,f=D.config,y=t(f.elem);if(1*[carousel-item]>*"),f.index<0&&(f.index=0),f.index>=D.elemItem.length&&(f.index=D.elemItem.length-1),f.interval<800&&(f.interval=800),f.full?f.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):f.elem.css({width:f.width,height:f.height}),f.elem.attr("lay-anim",f.anim),D.elemItem.eq(f.index).addClass(b),D.indicator(),D.arrow(),D.autoplay(),1=this.elemItem.length?0:D},r.prototype.addIndex=function(D){var f=this.config;f.index=f.index+(D=D||1),f.index>=this.elemItem.length&&(f.index=0)},r.prototype.subIndex=function(D){var f=this.config;f.index=f.index-(D=D||1),f.index<0&&(f.index=this.elemItem.length-1)},r.prototype.autoplay=function(){var D=this,f=D.config,y=D.elemItem.length;f.autoplay&&(clearInterval(D.timer),1',''].join(""));f.elem.attr("lay-arrow",f.arrow),f.elem.find("."+S)[0]&&f.elem.find("."+S).remove(),1y.index?f.slide("add",D-y.index):D
            ',(D=[],layui.each(f.elemItem,function(w){D.push("")}),D.join("")),"
          "].join(""));y.elem.attr("lay-indicator",y.indicator),y.elem.find("."+E)[0]&&y.elem.find("."+E).remove(),1D[f?"height":"width"]()/3)&&y.slide(0r.length&&(r.value=r.length),parseInt(r.value)===r.value||r.half||(r.value=Math.ceil(r.value)-r.value<.5?Math.ceil(r.value):Math.floor(r.value)),'
            "),y=1;y<=r.length;y++){var Q='
          • ";r.half&&parseInt(r.value)!==r.value&&y==Math.ceil(r.value)?f=f+'
          • ":f+=Q}f+="
          "+(r.text?''+r.value+"\u661F":"")+"";var g=r.elem,w=g.next(".layui-rate");w[0]&&w.remove(),E.elemTemp=t(f),r.span=E.elemTemp.next("span"),r.setText&&r.setText(r.value),g.html(E.elemTemp),g.addClass("layui-inline"),r.readonly||E.action()},S.prototype.setvalue=function(E){this.config.value=E,this.render()},S.prototype.action=function(){var E=this.config,r=this.elemTemp,D=r.find("i").width(),f=r.children("li");f.each(function(y){var Q=y+1,g=t(this);g.on("click",function(w){E.value=Q,E.half&&w.pageX-t(this).offset().left<=D/2&&(E.value=E.value-.5),E.text&&r.next("span").text(E.value+"\u661F"),E.choose&&E.choose(E.value),E.setText&&E.setText(E.value)}),g.on("mousemove",function(w){r.find("i").each(function(){t(this).addClass(b).removeClass(T)}),r.find("i:lt("+Q+")").each(function(){t(this).addClass(C).removeClass(k)}),E.half&&w.pageX-t(this).offset().left<=D/2&&g.children("i").addClass(c).removeClass(C)}),g.on("mouseleave",function(){r.find("i").each(function(){t(this).addClass(b).removeClass(T)}),r.find("i:lt("+Math.floor(E.value)+")").each(function(){t(this).addClass(C).removeClass(k)}),E.half&&parseInt(E.value)!==E.value&&r.children("li:eq("+Math.floor(E.value)+")").children("i").addClass(c).removeClass("layui-icon-rate-solid layui-icon-rate")})}),s.touchSwipe(r,{onTouchMove:function(y,Q){var g;Date.now()-Q.timeStart<=200||(Q=y.touches[0].pageX,y=r.width()/E.length,Q=(Q-r.offset().left)/y,(g=(g=(y=Q%1)<=.5&&E.half?.5+(Q-y):Math.ceil(Q))>E.length?E.length:g)<0&&(g=0),f.each(function(Y){var M=t(this).children("i"),z=Math.ceil(g)-Y==1,G=Math.ceil(g)>Y,Y=g-Y==.5;G?(M.addClass(C).removeClass(k),E.half&&Y&&M.addClass(c).removeClass(C)):M.addClass(b).removeClass(T),M.toggleClass("layui-rate-hover",z)}),E.value=g,E.text&&r.next("span").text(E.value+"\u661F"),E.setText&&E.setText(E.value))},onTouchEnd:function(y,Q){Date.now()-Q.timeStart<=200||(r.find("i").removeClass("layui-rate-hover"),E.choose&&E.choose(E.value),E.setText&&E.setText(E.value))}})},S.prototype.events=function(){},u.render=function(E){return E=new S(E),function(){var r=this;return{setvalue:function(D){r.setvalue.call(r,D)},config:r.config}}.call(E)},i(A,u)}),layui.define("jquery",function(i){var t=layui.$,s=function(u){};s.prototype.load=function(u){var A,b,C,c,T,k,S,E,r,D,f,y,Q,g,w,M=this,z=0,G=t((u=u||{}).elem);if(G[0])return T=t(u.scrollElem||document),k="mb"in u?u.mb:50,S=!("isAuto"in u)||u.isAuto,E=u.moreText||"\u52A0\u8F7D\u66F4\u591A",r=u.end||"\u6CA1\u6709\u66F4\u591A\u4E86",D=(u.direction||"bottom")==="top",M._cleanup(G,T),f=u.scrollElem&&u.scrollElem!==document,Q=t('"),G.find(".layui-flow-more")[0]||G[D?"prepend":"append"](Q),g=function(Y,N){var K=f?T.prop("scrollHeight"):document.documentElement.scrollHeight,p=T.scrollTop();Y=t(Y),Q[D?"after":"before"](Y),(N=N==0||null)?Q.html(r):Q.find("a").html(y),b=N,A=null,C&&C(),D&&(Y=f?T.prop("scrollHeight"):document.documentElement.scrollHeight,z===1?T.scrollTop(Y):1'),typeof u.done=="function"&&u.done(++z,g)})(),Q.find("a").on("click.flow",function(){t(this),b||A||w()}),u.isLazyimg&&(C=M.lazyimg({elem:u.elem+" img",scrollElem:u.scrollElem,direction:u.direction})),S&&T.on("scroll.flow",function(){var Y=t(this),N=Y.scrollTop();c&&clearTimeout(c),!b&&G.width()&&(c=setTimeout(function(){var K=(f?Y:t(window)).height(),p=f?Y.prop("scrollHeight"):document.documentElement.scrollHeight;(D?N<=k:p-N-K<=k)&&!A&&w()},100))}),M},s.prototype.lazyimg=function(u){var A,b=this,C=0,c=t((u=u||{}).scrollElem||document),T=u.elem||"img",k=(u.direction||"bottom")==="top",S=u.scrollElem&&u.scrollElem!==document,E=function(D,g){var y,Q=c.scrollTop(),g=Q+g,w=S?D.offset().top-c.offset().top+Q:D.offset().top;(k?w+D.height():w)>=Q&&w<=g&&D.attr("lay-src")&&(y=D.attr("lay-src"),layui.img(y,function(){var M=b.lazyimg.elem.eq(C);D.attr("src",y).removeAttr("lay-src"),M[0]&&r(M),C++},function(){b.lazyimg.elem.eq(C),D.removeAttr("lay-src")}))},r=function(D,f){var y=(S?f||c:t(window)).height(),Q=c.scrollTop(),g=Q+y;if(b.lazyimg.elem=t(T),D)E(D,y);else for(var w=0;w"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},T=layui.code?layui.code.index+1e4:0,k=function(S){return String(S).replace(/\s+$/,"").replace(/^\n|\n$/,"")};i("code",function(S,E){var r,D,f,y,Q,g,w,M,z,G,Y,N,K,p,x,_,B,R,X,J,ne,le={config:S=t.extend(!0,{},c,S),reload:function(Ae){layui.code(this.updateOptions(Ae))},updateOptions:function(Ae){return delete(Ae=Ae||{}).elem,t.extend(!0,S,Ae)},reloadCode:function(Ae){layui.code(this.updateOptions(Ae),"reloadCode")}},me=t(S.elem);return 1',S.ln?['
          ',s.digit(re+1)+".","
          "].join(""):"",'
          ',Z||" ","
          ",""].join("")})}},y=S.code,Q=function(Ae){return typeof S.codeParse=="function"?S.codeParse(Ae,S):Ae},E==="reloadCode"?r.children(".layui-code-wrap").html(me(Q(y)).html):(g=layui.code.index=++T,r.attr("lay-code-index",g),(J=C.CDDE_DATA_CLASS in r.data())&&r.attr("class",r.data(C.CDDE_DATA_CLASS)||""),J||r.data(C.CDDE_DATA_CLASS,r.attr("class")),w={copy:{className:"file-b",title:["\u590D\u5236\u4EE3\u7801"],event:function(Ae){var q=s.unescape(Q(S.code));lay.clipboard.writeText({text:q,done:function(){b.msg("\u5DF2\u590D\u5236",{icon:1})},error:function(){b.msg("\u590D\u5236\u5931\u8D25",{icon:2})}}),typeof S.onCopy=="function"&&S.onCopy(q)}}},function Ae(){var q=r.parent("."+C.ELEM_PREVIEW),Z=q.children("."+C.ELEM_TAB),re=q.children("."+C.ELEM_ITEM+"-preview");return Z.remove(),re.remove(),q[0]&&r.unwrap(),Ae}(),S.preview&&(J="LAY-CODE-DF-"+g,p=S.layout||["code","preview"],M=S.preview==="iframe",K=t('
          '),ne=t('
          '),z=t('
          '),X=t('
          '),G=t('
          '),S.id&&K.attr("id",S.id),K.addClass(S.className),ne.attr("lay-filter",J),layui.each(p,function(Ae,q){var Z=t('
        • ');Ae===0&&Z.addClass("layui-this"),Z.html(S.text[q]),z.append(Z)}),t.extend(w,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663E\u793A","\u8FD8\u539F\u663E\u793A"],event:function(q){var q=q.elem,Z=q.closest("."+C.ELEM_PREVIEW),re="layui-icon-"+this.className,ae="layui-icon-screen-restore",oe=this.title,ue=t("html,body"),Ee="layui-scrollbar-hide";q.hasClass(re)?(Z.addClass(C.ELEM_FULL),q.removeClass(re).addClass(ae),q.attr("title",oe[1]),ue.addClass(Ee)):(Z.removeClass(C.ELEM_FULL),q.removeClass(ae).addClass(re),q.attr("title",oe[0]),ue.removeClass(Ee))}},window:{className:"release",title:["\u5728\u65B0\u7A97\u53E3\u9884\u89C8"],event:function(Ae){s.openWin({content:Q(S.code)})}}}),S.copy&&(layui.type(S.tools)==="array"?S.tools.indexOf("copy")===-1&&S.tools.unshift("copy"):S.tools=["copy"]),G.on("click",">i",function(){var q=t(this),Ae=q.data("type"),q={elem:q,type:Ae,options:S,rawCode:S.code,finalCode:s.unescape(Q(S.code))};w[Ae]&&typeof w[Ae].event=="function"&&w[Ae].event(q),typeof S.toolsEvent=="function"&&S.toolsEvent(q)}),S.addTools&&S.tools&&(S.tools=[].concat(S.tools,S.addTools)),layui.each(S.tools,function(Ae,q){var oe=typeof q=="object",Z=oe?q:w[q]||{className:q,title:[q]},re=Z.className||Z.type,ae=Z.title||[""],oe=oe?Z.type||re:q;oe&&(w[oe]||((q={})[oe]=Z,t.extend(w,q)),G.append(''))}),r.addClass(C.ELEM_ITEM).wrap(K),ne.append(z),S.tools&&ne.append(G),r.before(ne),M&&X.html(''),Y=function(Ae){var q=Ae.children("iframe")[0];M&&q?q.srcdoc=Q(S.code):Ae.html(S.code),setTimeout(function(){typeof S.done=="function"&&S.done({container:Ae,options:S,render:function(){A.render(Ae.find(".layui-form")),u.render()}})},3)},p[0]==="preview"?(X.addClass(C.ELEM_SHOW),r.before(X),Y(X)):r.addClass(C.ELEM_SHOW).after(X),S.previewStyle=[S.style,S.previewStyle].join(""),X.attr("style",S.previewStyle),u.on("tab("+J+")",function(re){var q=t(this),Z=t(re.elem).closest("."+C.ELEM_PREVIEW).find("."+C.ELEM_ITEM),re=Z.eq(re.index);Z.removeClass(C.ELEM_SHOW),re.addClass(C.ELEM_SHOW),q.attr("lay-id")==="preview"&&Y(re),R()})),N=t(''),r.addClass((K=["layui-code-view layui-border-box"],S.wordWrap||K.push("layui-code-nowrap"),K.join(" "))),(ne=S.theme||S.skin)&&(r.removeClass("layui-code-theme-dark layui-code-theme-light"),r.addClass("layui-code-theme-"+ne)),S.highlighter&&r.addClass([S.highlighter,"language-"+S.lang,"layui-code-hl"].join(" ")),p=me(S.encode?s.escape(Q(y)):y),x=p.lines,r.html(N.html(p.html)),S.ln&&r.append('
          '),S.height&&N.css("max-height",S.height),S.codeStyle=[S.style,S.codeStyle].join(""),S.codeStyle&&N.attr("style",function(Ae,q){return(q||"")+S.codeStyle}),_=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(Ae,q){Ae.style["padding-left"]=q+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(Ae,q){Ae.style.width=q+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(Ae,q){Ae.style.width=q+"px"}}],B=lay.style({target:r[0],id:"DF-code-"+g,text:t.map(t.map(_,function(Ae){return Ae.selector}),function(Ae,q){return['.layui-code-view[lay-code-index="'+g+'"]',Ae].join(" ")}).join("")}),R=function Ae(){var q,Z;return S.ln&&(q=Math.floor(x.length/100),Z=N.children("."+C.ELEM_LINE).last().children("."+C.ELEM_LINE_NUM).outerWidth(),r.addClass(C.ELEM_LN_MODE),q)&&C.LINE_RAW_WIDTH
        • ')).html(S.title||S.text.code),r.prepend(X)),J=t('
          '),S.copy&&!S.preview&&((ne=t(['','',""].join(""))).on("click",function(){w.copy.event()}),J.append(ne)),S.langMarker&&J.append(''+S.lang+""),S.about&&J.append(S.about),r.append(J),S.preview||setTimeout(function(){typeof S.done=="function"&&S.done({})},3),S.elem.length===1+g&&typeof S.allDone=="function"&&S.allDone())),le})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss")}(du),du.exports;var x1="";function po(d,i=!0){try{const t=document.getElementById(`imou_player_icon_root_${d}`),s=document.getElementById(`imou_player_timeLine-web_${d}`),u=document.getElementById(`imou_player_timeLine-celeContainer_${d}`);if(!t){console.warn(`Control elements not found for player ${d}, retrying...`),setTimeout(()=>{po(d,i)},50);return}i?(t.style.visibility="hidden",s&&(s.style.visibility="hidden",u&&(u.style.visibility="hidden"))):(t.style.visibility="",s&&(s.style.visibility="",u&&(u.style.visibility="")))}catch(t){console.error("Error in buttonShowOrHidden:",t)}}function Im(d,i){const t=document.getElementById(`imou_player_message_root_${d}`),s=document.getElementById(`imou_player_icon_root_${d}`),u=document.getElementById(`imou_player_timeLine-web_${d}`),A=document.getElementById(`imou_player_timeLine-celeContainer_${d}`);i?(t.innerText=i,t.style.display="",i===vt.t("errMsg.codeError")||u&&(u.style.display="",A&&(A.style.display=""))):(t.style.display="none",s.style.display="",u&&(u.style.display="",A&&(A.style.display="")))}function fu({msg:d,icon:i="",type:t="active",landscape:s=!1}){let u="";i?u=`
          ${d}`:u=d,layer.msg(u,{time:2e3,skin:s?"imou-toast-landscape":""})}function $r(d,i="pc"){return{play:"icon-imou_icon_live_stop_n",volume:"icon-imou_icon_live_voice_on_n",talk:"icon-imou_icon_live_mic_n",capture:"icon-imou_icon_live_screenshot_n",resolution:"resolution",videoRecord:"icon-imou_icon_live_record_n",ptz:"icon-imou_icon_live_ptz_n",digitalZoom:"icon-imou_icon_live_fullscreen_btn_zoom_n",fullPageScreen:"icon-imou_icon_live_wangyequanping_n",fullScreen:i==="pc"?"icon-imou_icon_live_quanping_n":"icon-imou_icon_video_verical_btn_fullscreen_n",speed:"speed",recordChange:"recordChange",recordTimeLine:"recordTimeLine"}[d]||""}function ul(d,i="pc"){return{videoCapture:"icon-imou_call_btn_camera_on",audioCapture:"icon-imou_call_btn_mic_on",videoRecordTalk:"icon-imou_call_btn_video_on",ptzTalk:"icon-imou_icon_live_ptz_n",answerCall:"icon-imou_call_btn_answer_n",hangUpCall:"icon-imou_call_btn_refuse_n"}[d]||""}const ys=(d,i,t,s={})=>{let u;switch(i){case"videoRecord":u=document.getElementById(`imou_player_icon_videoRecordTalk_${d}`);var A=u==null?void 0:u.firstElementChild,b=u==null?void 0:u.nextElementSibling;t?(u==null||u.classList.remove("imou-icon-videotalk-controls-opacity"),A==null||A.classList.add("imou-icon-controls-black"),b&&(b.innerText=vt.t("videoTalk_videoRecordTalk")+vt.t("open"))):(u==null||u.classList.add("imou-icon-videotalk-controls-opacity"),A==null||A.classList.remove("imou-icon-controls-black"),b&&(b.innerText=vt.t("videoTalk_videoRecordTalk")+vt.t("close")));break;case"ptz":u=document.getElementById(`imou_player_icon_ptzTalk_${d}`);var A=u==null?void 0:u.firstElementChild,b=u.nextElementSibling;t?(u==null||u.classList.remove("imou-icon-videotalk-controls-opacity"),A==null||A.classList.add("imou-icon-controls-black"),b&&(b.innerText=vt.t("videoTalk_ptzTalk")+vt.t("open"))):(u==null||u.classList.add("imou-icon-videotalk-controls-opacity"),A==null||A.classList.remove("imou-icon-controls-black"),b&&(b.innerText=vt.t("videoTalk_ptzTalk")+vt.t("close")));break;case"callVideoTalk":case"answerVideoTalk":u=document.getElementById(`imou-controls-videotalk_${d}`);const C=document.getElementById(`imou-controls-left_${d}`),c=document.getElementById(`imou_player_icon_videoTalkStatus_${d}`);if(t){const T=document.getElementById(`imou_player_icon_root_${d}`);u.style.display="block",u.style.visibility="",C&&(C.style.visibility="hidden"),c&&i==="callVideoTalk"&&(c.style.visibility="",c.innerText=vt.t("videoTalk_answered"),c.classList.remove("calling"),c.classList.add("answered")),c&&i==="answerVideoTalk"&&(T.style.display="",c.style.visibility="",c.innerText=vt.t("videoTalk_calling"),c.classList.remove("answered"),c.classList.add("calling")),s.status.videoRecord&&ys(d,"videoRecord",s.status.videoRecord)}else u.style.display="none",C&&(C.style.visibility=""),c&&(c.style.visibility="hidden");break}};function wm(d){const i={},t=u=>(i[u]||(i[u]=document.getElementById(u)),i[u]),s=(u,A)=>{u&&typeof u.textContent!="undefined"&&(u.textContent=A)};return new Proxy(d,{set(u,A,b){var S;const C=(S=d.obj)==null?void 0:S.playerId;if(!C)return u[A]=b,!0;let c,T,k;try{switch(A){case"playing":const E=b?"icon-imou_icon_live_play_n":"icon-imou_icon_live_stop_n",r="imouPlayer-iconfont imou-icon-controls";if(c=t(`imou_player_icon_play_${C}`),c&&(c.className=`${r} ${E}`,b)){const O=t(`imou_player_icon_answerCall_${C}`);O==null||O.classList.remove("disabled")}k=t(`imou_player_icon_play_landscape_${C}`),k&&(k.className=`${r} ${E}`);break;case"volume":const D="icon-imou_icon_live_voice_on_n",f="icon-imou_icon_live_voice_off_n";c=t(`imou_player_icon_volume_${C}`),c&&(c.classList.toggle(D,b),c.classList.toggle(f,!b)),k=t(`imou_player_icon_volume_landscape_${C}`),k&&(k.classList.toggle(D,b),k.classList.toggle(f,!b));break;case"talk":const y="icon-imou_icon_live_mic_n",Q="icon-imou_icon_live_fullscreen_btn_mic_h";c=t(`imou_player_icon_talk_select-selected_${C}`),c&&(c.classList.toggle(y,!b),c.classList.toggle(Q,b),c.classList.toggle("active",b)),k=t(`imou_player_icon_talk_select-selected_landscape_${C}`),k&&(k.classList.toggle(y,!b),k.classList.toggle(Q,b),k.classList.toggle("active",b));break;case"talkProcessing":const g=t(`imou_player_icon_talk_${C}`);g&&g.classList.toggle("processing",b),k=t(`imou_player_icon_talk_landscape_${C}`),k&&k.classList.toggle("processing",b);break;case"resolution":const w="icon-imou_icon_live_hd_n",M="icon-imou_icon_live_sd_n";c=t(`imou_player_icon_resolution_${C}`),c&&(c.classList.toggle(w,!b),c.classList.toggle(M,b)),k=t(`imou_player_icon_resolution_landscape_${C}`),k&&(k.classList.toggle(w,!b),k.classList.toggle(M,b));break;case"videoRecord":ys(C,"videoRecord",b),c=t(`imou_player_icon_videoRecord_${C}`),c==null||c.classList.toggle("active",b),k=t(`imou_player_icon_videoRecord_landscape_${C}`),k&&(k==null||k.classList.toggle("active",b));break;case"message":Im(d.obj.playerId,b);break;case"ptz":if((d.obj.status.answerVideoTalk||d.obj.status.callVideoTalk)&&ys(C,"ptz",b),!d.obj.status.playing)break;d.obj.status.digitalZoom&&(d.obj.status.digitalZoom=!1),c=t(`imou_player_PTZArea_${C}`),c&&(c.style.display=b?"":"none");const z=document.getElementById(`imou_player_icon_ptz_${C}`);z==null||z.classList.toggle("active",b),k=t(`imou_player_icon_ptz_landscape_${C}`),k&&(k==null||k.classList.toggle("active",b));const G=document.getElementById(`imou_player_PTZArea_landscape_${C}`);b?G&&d.obj.status.landscape&&(G.style.display=""):G&&(G.style.display="none");break;case"recordType":const Y=t(`imou_player_icon_cloud_${C}`),N=t(`imou_player_icon_localRecord_${C}`);b==="cloud"?(Y==null||Y.classList.add("active"),N==null||N.classList.remove("active")):(Y==null||Y.classList.remove("active"),N==null||N.classList.add("active"));break;case"fullScreen":const K="icon-imou_icon_live_quanping_n",p="icon-imou_icon_live_tuichu_quanping_n";c=t(`imou_player_icon_fullScreen_${C}`),c&&(c.classList.toggle(K,!b),c.classList.toggle(p,b),b&&d.obj.fullScreen?d.obj.fullScreen():!b&&d.obj.exitFullScreen&&d.obj.exitFullScreen());break;case"fullPageScreen":if(d.fullScreen)return u[A]=b,!0;const x="icon-imou_icon_live_wangyequanping_n",_="icon-imou_icon_live_tuichu_wangyequanping_n";c=t(`imou_player_icon_fullPageScreen_${C}`),c&&(c.classList.toggle(x,!b),c.classList.toggle(_,b),b&&d.obj.fullPageScreen?d.obj.fullPageScreen():!b&&d.obj.exitFullPageScreen&&d.obj.exitFullPageScreen());break;case"recordSpeed":const B=t(`imou_player_icon_volume_${C}`),R=t(`imou_player_icon_videoRecord_${C}`),X=document.getElementById(`imou_player_icon_speed_select-selected_${C}`),J=document.getElementById(`imou_player_icon_speed_select-selected_landscape_${C}`);b==1?(B&&B.classList.remove("icon-gray"),R&&R.classList.remove("icon-gray")):(B&&B.classList.add("icon-gray"),R&&R.classList.add("icon-gray")),X&&(b===.5?X.setAttribute("class","imouPlayer-iconfont select-selected icon-a-imou_icon_video_video_windows_btn_05x"):X.setAttribute("class",`imouPlayer-iconfont select-selected icon-imou_icon_video_video_windows_btn_${b}x`)),J&&(b===.5?J.setAttribute("class","imouPlayer-iconfont select-selected icon-a-imou_icon_video_video_windows_btn_05x"):J.setAttribute("class",`imouPlayer-iconfont select-selected icon-imou_icon_video_video_windows_btn_${b}x`));break;case"videoCapture":const ne=t(`imou_player_icon_videoCapture_${C}`),le=ne==null?void 0:ne.firstElementChild,me=ne==null?void 0:ne.nextElementSibling;if(T=t(`imou_player_video_capture_${C}`),b){if(ne&&ne.classList.remove("imou-icon-videotalk-controls-opacity"),le&&(le.classList.remove("icon-imou_call_btn_camera_off"),le.classList.add("imou-icon-controls-black","icon-imou_call_btn_camera_on")),s(me,vt.t("videoTalk_videoCapture")+vt.t("open")),T){T.style.visibility="";const O=T.offsetWidth;O&&(T.style.height=`${O*(4/3)}px`)}}else ne&&ne.classList.add("imou-icon-videotalk-controls-opacity"),le&&(le.classList.remove("imou-icon-controls-black","icon-imou_call_btn_camera_on"),le.classList.add("icon-imou_call_btn_camera_off")),s(me,vt.t("videoTalk_videoCapture")+vt.t("close")),T&&(T.style.visibility="hidden");break;case"audioCapture":const Ae=t(`imou_player_icon_audioCapture_${C}`),q=Ae==null?void 0:Ae.firstElementChild,Z=Ae==null?void 0:Ae.nextElementSibling;b?(Ae&&Ae.classList.remove("imou-icon-videotalk-controls-opacity"),q&&(q.classList.remove("icon-imou_call_btn_mic_off"),q.classList.add("imou-icon-controls-black","icon-imou_call_btn_mic_on")),s(Z,vt.t("videoTalk_audioCapture")+vt.t("open"))):(Ae&&Ae.classList.add("imou-icon-videotalk-controls-opacity"),q&&(q.classList.remove("imou-icon-controls-black","icon-imou_call_btn_mic_on"),q.classList.add("icon-imou_call_btn_mic_off")),s(Z,vt.t("videoTalk_audioCapture")+vt.t("close")));break;case"answerVideoTalk":ys(C,"answerVideoTalk",b,d.obj);break;case"callVideoTalk":ys(C,"callVideoTalk",b,d.obj);break;case"videoTalking":if(T=t(`imou_player_video_capture_${C}`),c=t(`imou_player_icon_answerCall_${C}`),c&&(c.style.display="none"),b){if(T){T.style.visibility="";const ee=T.offsetWidth;ee&&(T.style.height=`${ee*(4/3)}px`)}c&&c.classList.remove("disabled");const O=document.getElementById(`imou_player_icon_videoTalkStatus_${C}`);O&&(O.style.visibility="",O.textContent=vt.t("videoTalk_answered"),O.classList.remove("calling"),O.classList.add("answered"))}else T&&(T.style.visibility="hidden"),c&&(c.style.display="flex");break;case"digitalZoom":c=t(`imou_player_digitalZoomArea_${C}`);const re=document.getElementById(`imou_player_icon_digitalZoom_${C}`);if(!d.obj.status.playing)return u[A]=b,!0;b?(d.obj.status.ptz&&(d.obj.status.ptz=!1),re&&re.classList.add("active"),c&&(c.style.display="")):(re&&re.classList.remove("active"),c&&(c.style.display="none")),k=t(`imou_player_icon_digitalZoom_landscape_${C}`),k&&(k==null||k.classList.toggle("active",b));const ae=document.getElementById(`imou_player_digitalZoomArea_landscape_${C}`);b?ae&&d.obj.status.landscape&&(ae.style.display=""):ae&&(ae.style.display="none");break;case"landscape":c=t(`imou-controls-landscape_${C}`);const oe=t(`imou-controls-container_${C}`),ue=t(`imou-title-back_${C}`);b?(c&&(c.style.display="block"),oe&&(oe.style.display="none"),ue&&(ue.style.display="block")):(c&&(c.style.display="none"),oe&&(oe.style.display="block"),ue&&(ue.style.display="none")),d.obj.status.digitalZoom=!1;const Ee=document.getElementById(`imou_player_PTZArea_landscape_${C}`);b?Ee&&d.obj.status.ptz&&(Ee.style.display=""):Ee&&(Ee.style.display="none");break;default:break}}catch(E){}return u[A]=b,!0}})}class kf{constructor({parentDomId:i="",active:t="",options:s=[],Obj:u,onConfirm:A=()=>{}}){this.parentDomId=i,this.active=t,this.options=s,this.Obj=u,this.onConfirm=A;const b=document.getElementById("imou-select");b?b.remove():this.init()}init(){const i=new DocumentFragment,t=document.createElement("div");if(t.setAttribute("class","select-options"),t.setAttribute("id","imou-select"),this.options.forEach((s,u)=>{const A=document.createElement("div");s.icon?A.innerHTML=`${s.label}`:A.innerHTML=`${s.label}`,A.setAttribute("class","select-options-item"),A.setAttribute("id",`select-options-item-${s.value}`),this.active==s.value&&A.classList.add("select-options-selected"),A.addEventListener("click",()=>{this.onConfirm(s.value),t.remove()}),t.appendChild(A)}),i.appendChild(t),this.parentDomId){const s=document.getElementById(this.parentDomId);s&&s.appendChild(t)}this.speedOptions=t,setTimeout(()=>{this.remove()})}remove(){window.addEventListener("click",i=>{const t=i.target;t instanceof HTMLElement&&t.id!==this.parentDomId&&this.speedOptions&&this.speedOptions.remove()})}}function km(d,i={}){if(!d){console.error("Draggable: Element is required");return}const{containment:t=!0,onDragStart:s,onDrag:u,onDragEnd:A}=i;let b=!1,C=0,c=0,T=0,k=0;d.style.position="absolute",d.style.cursor="move",d.addEventListener("mousedown",S);function S(D){b=!0,C=D.clientX,c=D.clientY,T=d.offsetLeft,k=d.offsetTop,typeof s=="function"&&s({element:d,startX:C,startY:c,initialLeft:T,initialTop:k}),document.addEventListener("mousemove",E),document.addEventListener("mouseup",r)}function E(D){var w;if(!b)return;const f=D.clientX-C,y=D.clientY-c;let Q=T+f,g=k+y;if(t){const M=(w=d.parentElement)==null?void 0:w.getBoundingClientRect(),z=d.getBoundingClientRect();M&&(Q=Math.max(0,Math.min(Q,M.width-z.width)),g=Math.max(0,Math.min(g,M.height-z.height)))}d.style.left=`${Q}px`,d.style.top=`${g}px`,typeof u=="function"&&u({element:d,currentX:D.clientX,currentY:D.clientY,deltaX:f,deltaY:y,newLeft:Q,newTop:g})}function r(){b=!1,document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",r),typeof A=="function"&&A({element:d,finalLeft:d.offsetLeft,finalTop:d.offsetTop})}return function(){d.removeEventListener("mousedown",S),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",r)}}function Sm(d){const i=new DocumentFragment,t=document.createElement("div");t.setAttribute("id",`imou_player_icon_root_${d.playerId}`),t.style.display="none",t.style.position="absolute",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.zIndex="99999";const s=[],u=["play","volume","talk","capture","videoRecord","ptz","digitalZoom","resolution"],A=[],b=["fullPageScreen","fullScreen"];d.status.controlsConfig.forEach((B,R)=>{u.includes(B)&&s.push({type:B,icon:$r(B)}),b.includes(B)&&A.push({type:B,icon:$r(B)})});const C=new DocumentFragment,c=document.createElement("div");c.setAttribute("class","imou-controls-container-header");const T=document.createElement("div");T.setAttribute("class","imou-controls-container-header-left"),c.appendChild(T),C.appendChild(c);const k=document.createElement("div");k.setAttribute("class","imou-title"),d.options.title||d.options.title===""?k.innerHTML=d.status.title:k.innerHTML=`${d.status.deviceId} ${vt.t("channelId")} ${d.status.channelId}`,T.appendChild(k);const S=document.createElement("div");S.setAttribute("id",`imou_player_icon_videoTalkStatus_${d.playerId}`),S.setAttribute("class","imou-video-talk-status"),S.innerText=vt.t("videoTalk_calling"),S.style.visibility="hidden",T.appendChild(S),c.appendChild(T),t.appendChild(C);const E=new DocumentFragment,r=document.createElement("div");r.setAttribute("class","imou-controls-container"),(()=>{E.appendChild(r);const B=document.createElement("div");B.setAttribute("id",`imou-controls-left_${d.playerId}`),B.setAttribute("class","imou-controls-left"),r.appendChild(B),s.forEach((X,J)=>{const ne=document.createElement("div");if(ne.setAttribute("id",`imou_player_icon_${X.type}_${d.playerId}`),X.type==="talk"){ne.setAttribute("class","imou-icon-controls-select");const le=document.createElement("div");le.setAttribute("id",`imou_player_icon_talk_select-selected_${d.playerId}`),le.setAttribute("class",`imouPlayer-iconfont select-selected ${X.icon}`),ne.appendChild(le)}else if(X.icon==="resolution"){const le=d.status.resolution=="0"?"icon-imou_icon_live_hd_n":"icon-imou_icon_live_sd_n";ne.setAttribute("class",`imouPlayer-iconfont ${le} imou-icon-controls`)}else ne.setAttribute("class",`imouPlayer-iconfont imou-icon-controls ${X.icon}`);B.appendChild(ne)});const R=document.createElement("div");R.setAttribute("class","imou-controls-right"),r.appendChild(R),A.forEach((X,J)=>{const ne=document.createElement("div");ne.setAttribute("id",`imou_player_icon_${X.type}_${d.playerId}`),ne.setAttribute("class",`imouPlayer-iconfont ${X.icon} imou-icon-controls`),R.appendChild(ne)})})(),t.appendChild(E),i.appendChild(t);const f=new DocumentFragment,y=document.createElement("div");y.setAttribute("id",`imou-controls-videotalk_${d.playerId}`),y.style.visibility="hidden";const Q=document.createElement("div");Q.setAttribute("class","imou-controls-videotalk"),(()=>{y.appendChild(Q);const B=document.createElement("div");B.setAttribute("class","imou-icon-videotalk-top"),["videoCapture","audioCapture","videoRecordTalk","ptzTalk"].forEach((Ae,q)=>{const Z=document.createElement("div");Z.setAttribute("class",`imou-icon-videotalk-controls-container imou-icon-videotalk-controls-${Ae}`);const re=document.createElement("div");re.setAttribute("id",`imou_player_icon_${Ae}_${d.playerId}`),re.setAttribute("class","imou-icon-videotalk-controls");const ae=document.createElement("div");ae.setAttribute("class",`imouPlayer-iconfont ${ul(Ae)} imou-icon-controls`);const oe=document.createElement("span");Ae==="videoCapture"||Ae==="audioCapture"?(ae.classList.add("imou-icon-controls-black"),oe.innerText=vt.t(`videoTalk_${Ae}`)+vt.t("open")):(ae.setAttribute("class",`imouPlayer-iconfont ${ul(Ae)} imou-icon-controls`),re.classList.add("imou-icon-videotalk-controls-opacity"),oe.innerText=vt.t(`videoTalk_${Ae}`)+vt.t("close")),re.appendChild(ae),Z.appendChild(re),Z.appendChild(oe),re.addEventListener("click",ue=>{switch(Ae){case"videoCapture":d.status.videoCapture?d.stopVideoCapture():d.startVideoCapture();break;case"audioCapture":d.status.audioCapture?d.stopAudioCapture():d.startAudioCapture();break;case"videoRecordTalk":d.status.videoRecord?d.stopRecord():(d.startRecord(),d.trackingLogs("record"));break;case"ptzTalk":d.status.ptz=!d.status.ptz,d.status.ptz||d.trackingLogs("ptz");break}}),B.appendChild(Z)}),Q.appendChild(B);const X=document.createElement("div");X.setAttribute("class","imou-icon-videotalk-bottom");const J=document.createElement("div");J.setAttribute("id",`imou_player_icon_answerCall_${d.playerId}`),J.setAttribute("class","imou-icon-videotalk-controls imou-icon-videotalk-controls-answer disabled");const ne=document.createElement("div");ne.setAttribute("class",`imouPlayer-iconfont ${ul("answerCall")} imou-icon-controls`),J.appendChild(ne),J.addEventListener("click",Ae=>{d.startTalk("video","answer")});const le=document.createElement("div");le.setAttribute("id",`imou_player_icon_answerCall_${d.playerId}`),le.setAttribute("class","imou-icon-videotalk-controls imou-icon-videotalk-controls-hangup");const me=document.createElement("div");me.setAttribute("class",`imouPlayer-iconfont ${ul("hangUpCall")} imou-icon-controls`),le.appendChild(me),le.addEventListener("click",Ae=>{d.stopTalk()}),X.appendChild(J),X.appendChild(le),Q.appendChild(X)})(),f.append(y),t.appendChild(f),r.addEventListener("click",B=>{const{target:R}=B;switch(R.id){case`imou_player_icon_play_${d.playerId}`:d.status.playing?(d.pause(),d.trackingLogs("pause")):d.start();break;case`imou_player_icon_capture_${d.playerId}`:d.capture(),d.trackingLogs("capture");break;case`imou_player_icon_talk_select-selected_${d.playerId}`:if(d.status.talkProcessing)return;d.status.talk?d.stopTalk():d.status.videoTalk?new kf({Obj:d,parentDomId:`imou_player_icon_talk_${d.playerId}`,active:d.status.talk,options:[{value:"video",icon:"icon-live_fullscreen_btn_voice_n",label:vt.t("videoTalk")},{value:"audio",icon:"icon-imou_icon_live_mic_n",label:vt.t("audioTalk")}],onConfirm:X=>{X==="audio"?d.talk(!d.status.talk):d.startTalk("video")}}):d.talk(!d.status.talk);break;case`imou_player_icon_volume_${d.playerId}`:d.volume(d.status.volume?0:1),d.trackingLogs("volume");break;case`imou_player_icon_videoRecord_${d.playerId}`:d.status.videoRecord?d.stopRecord():(d.startRecord(),d.trackingLogs("record"));break;case`imou_player_icon_fullScreen_${d.playerId}`:d.status.fullScreen=!d.status.fullScreen,d.trackingLogs("fullScree");break;case`imou_player_icon_fullPageScreen_${d.playerId}`:d.status.fullPageScreen=!d.status.fullPageScreen,d.trackingLogs("fullPageScreen");break;case`imou_player_icon_resolution_${d.playerId}`:d.stopRecord(),d.status.message=vt.t("changeStream"),setTimeout(()=>{d.changeImouUrl("resolution",d.status.resolution=="0"?1:0),d.trackingLogs("resolution")},0);break;case`imou_player_icon_ptz_${d.playerId}`:d.status.ptz=!d.status.ptz,d.status.ptz||d.trackingLogs("ptz");break;case`imou_player_icon_digitalZoom_${d.playerId}`:d.status.digitalZoom=!d.status.digitalZoom,d.trackingLogs("digitalZoom");break}});const w=document.createElement("div");w.setAttribute("id",`imou_player_message_root_${d.playerId}`),w.setAttribute("style","position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:16px;color:white;z-index:99999;"),w.style.display="none",i.appendChild(w);const M=document.createElement("div");M.style.display="none",M.setAttribute("id",`imou_player_PTZArea_${d.playerId}`),M.setAttribute("class","imou-player-ptzarea"),M.style.zIndex="99999";const z=document.createElement("div");z.setAttribute("class","imou-player-ptz"),["up","down","left","right"].forEach(B=>{const R=document.createElement("div"),X=document.createElement("div");R.setAttribute("class",`imou-player-ptz-quarter imou-player-ptz-quarter-${B}`),X.setAttribute("class","imou-player-ptz-arrow"),R.appendChild(X),z.appendChild(R)});const Y=document.createElement("div");Y.setAttribute("class","imou-player-ptz-center"),z.appendChild(Y),z.addEventListener("mousedown",B=>{var J;const R=(J=B==null?void 0:B.target)==null?void 0:J.className;let X="";R.includes("imou-player-ptz-quarter-right")?X="right":R.includes("imou-player-ptz-quarter-left")?X="left":R.includes("imou-player-ptz-quarter-up")?X="up":R.includes("imou-player-ptz-quarter-down")&&(X="down"),X&&d.ptzControl(X)}),z.addEventListener("mouseup",B=>{var X;((X=B==null?void 0:B.target)==null?void 0:X.className).includes("imou-player-ptz-center")||d.ptzControl("stop")}),M.appendChild(z),i.appendChild(M);const N=document.createElement("div");N.style.display="none",N.setAttribute("id",`imou_player_digitalZoomArea_${d.playerId}`),N.setAttribute("class","imou-player-digitalZoomarea"),N.style.zIndex="99999";const K=document.createElement("div");K.setAttribute("class","imou-player-zoom");const p=document.createElement("div");p.setAttribute("class","imouPlayer-iconfont icon-imou_icon_jiahao imou-player-zoom-in");const x=document.createElement("div");x.setAttribute("class","imouPlayer-iconfont icon-imou_icon_jianhao imou-player-zoom-out"),K.appendChild(p),K.appendChild(x),p.addEventListener("click",()=>{d.zoomIn()}),x.addEventListener("click",()=>{d.zoomOut()}),N.appendChild(K),i.appendChild(N);const _=document.createElement("video");return _.setAttribute("id",`imou_player_video_capture_${d.playerId}`),_.setAttribute("class","imou_player_video_capture"),_.setAttribute("autoplay",!0),_.style.width="12%",_.style.objectFit="cover",_.style.visibility="hidden",km(_,{containment:!0,onDragStart:()=>{},onDrag:B=>{},onDragEnd:B=>{}}),i.appendChild(_),i}function oi(d){return Math.round(d)+.5}function Jr(d,i,t,s,u,A,b){d.save(),d.beginPath(),d.moveTo(oi(i),oi(t)),d.lineTo(oi(s),oi(u)),d.strokeStyle=A,d.lineWidth=b,d.lineCap="round",d.closePath(),d.stroke(),d.restore()}function qa(d,i,t,s,u,A){d.save(),d.fillStyle=A,d.fillRect(oi(i),oi(t),s,u),d.restore()}function Sf(d,i,t,s,u,A,b,C,c="#000"){d.save(),d.imageSmoothingEnabled=!0,d.imageSmoothingQuality="high",d.beginPath(),d.moveTo(oi(i+A),oi(t)),d.lineTo(oi(i+s-A),oi(t)),d.quadraticCurveTo(oi(i+s),oi(t),oi(i+s),oi(t+A)),d.lineTo(oi(i+s),oi(t+u-A)),d.quadraticCurveTo(oi(i+s),oi(t+u),oi(i+s-A),oi(t+u)),d.lineTo(oi(i+A),oi(t+u)),d.quadraticCurveTo(oi(i),oi(t+u),oi(i),oi(t+u-A)),d.lineTo(oi(i),oi(t+A)),d.quadraticCurveTo(oi(i),oi(t),oi(i+A),oi(t)),d.closePath(),d.fillStyle=b,d.fill(),C&&(d.fillStyle=c,d.font="11px PingFang SC",d.textAlign="center",d.textBaseline="middle",d.fillText(C,i+s/2,t+u/2)),d.restore()}function hu(d){const i=Math.floor(d/3600),t=Math.floor((d-i*3600)/60),s=d-i*3600-t*60;return`${i>9?i:`0${i}`}:${t>9?t:`0${t}`}:${s>9?s:`0${s}`}`}function Bf(d){const i=Math.floor(d/3600),t=Math.floor((d-i*3600)/60);return`${i>9?i:`0${i}`}:${t>9?t:`0${t}`}`}class Df{constructor({elem:i,width:t,beginTime:s,height:u,Obj:A}){this.elem=i,this.ctx=i.getContext("2d"),this.dpr=window.devicePixelRatio||1,this.width=t,this.height=u,i.width=t*this.dpr,i.height=u*this.dpr,i.style.width=t+"px",i.style.height=u+"px",this.ctx.scale(this.dpr,this.dpr),this.ctx.imageSmoothingEnabled=!0,this.ctx.imageSmoothingQuality="high",this.record=[],this.beginTime=s,this.timestamp=s||0,this.elem.onmousedown=b=>{this.onmousedown(b)},this.elem.ondragstart=()=>!1,this.elem.ontouchstart=b=>{this.ontouchstart(b)},this.Obj=A,this.step=A.status.templateMode==="pc"?10:.1,this.isMoving=!1,this.throttleTimer=null,this.throttleDelay=1e3,this.pendingThrottleAction=!1}onmousedown(i){this.isMoving=!0,this.Obj.stopRecord(),this.stop(!1),this.startMoveX=i.offsetX,document.onmousemove=t=>{this.onmouseMove(t)},document.onmouseup=t=>{this.onmouseUp(t)},document.onmouseleave=t=>{this.onmouseUp(t)}}ontouchstart(i){i.preventDefault(),this.isMoving=!0,this.Obj.stopRecord(),this.stop(!1),document.ontouchmove=null,document.ontouchend=null,document.ontouchcancel=null;const t=i.touches[0],s=this.elem.getBoundingClientRect();this.startMoveX=t.clientX-s.left,this.Obj.status.landscape&&(this.startMoveX=t.clientY-s.top),this.dragSpeedMultiplier=5,document.ontouchmove=u=>{this.ontouchmove(u)},document.ontouchend=u=>{this.ontouchend(u)},document.ontouchcancel=u=>{this.ontouchend(u)}}ontouchmove(i){if(i.preventDefault(),this.startMoveX===null||this.startMoveX===void 0){console.log("Touch move - startMoveX is null/undefined, returning");return}if(this.dragSpeedMultiplier===null||this.dragSpeedMultiplier===void 0){console.log("Touch move - dragSpeedMultiplier is null/undefined, returning");return}if(!this.isMoving){console.log("Touch move - isMoving is false, returning");return}const t=i.touches[0],s=this.elem.getBoundingClientRect();let u=t.clientX-s.left;this.Obj.status.landscape&&(u=t.clientY-s.top);const A=this.startMoveX-u;this.moveTimestamp=Math.floor(this.timestamp+A*this.dragSpeedMultiplier),this.moveTimestamp<0&&(this.moveTimestamp=0),this.moveTimestamp>86399&&(this.moveTimestamp=86399),this.reDrawLine(this.width/2-this.moveTimestamp*this.step,this.record)}ontouchend(i){i.preventDefault(),document.ontouchmove=null,document.ontouchend=null,document.ontouchcancel=null,this.timestamp=this.moveTimestamp===0?0:this.moveTimestamp||this.timestamp,this.startMoveX=null,this.moveTimestamp=null,this.dragSpeedMultiplier=null,this.executeThrottledAction(),this.isMoving=!1}executeThrottledAction(){this.throttleTimer&&clearTimeout(this.throttleTimer),this.pendingThrottleAction=!0,this.throttleTimer=setTimeout(()=>{this.pendingThrottleAction&&(this.Obj.changeImouUrl("beginTime",this.timestamp),this.Obj.trackingLogs("timeLine"),this.pendingThrottleAction=!1,this.throttleTimer=null)},this.throttleDelay)}onmouseMove(i){if(this.startMoveX===null||this.startMoveX===void 0)return;let t=this.startMoveX-i.offsetX;this.Obj.status.landscape&&(t=this.startMoveX-i.offsetY),this.moveTimestamp=Math.floor(this.timestamp+t),this.moveTimestamp<0&&(this.moveTimestamp=0),this.moveTimestamp>86399&&(this.moveTimestamp=86399),this.reDrawLine(this.width/2-this.moveTimestamp*this.step,this.record)}onmouseUp(i){document.onmousemove=null,document.onmouseup=null,document.onmouseleave=null,this.timestamp=this.moveTimestamp===0?0:this.moveTimestamp||this.timestamp,this.startMoveX=null,this.moveTimestamp=null,this.executeThrottledAction(),this.isMoving=!1}start(){this.isMoving||(this.timestampTimer=setInterval(()=>{this.Obj.status.encryptMode&&this.Obj.getTimestamp()},500),this.loopLine())}loopLine(){this.reDrawLine(this.width/2-this.timestamp*this.step,this.record),this.AnimationFrameId=setTimeout(()=>{this.loopLine()},200)}stop(i=!1){if(this.AnimationFrameId){try{clearTimeout(this.AnimationFrameId)}catch(t){}this.AnimationFrameId=null}if(this.timestampTimer){try{clearInterval(this.timestampTimer)}catch(t){}this.timestampTimer=null}i&&(this.timestamp=0,this.record=[],this.reDrawLine(this.width/2,[])),this.throttleTimer&&(clearTimeout(this.throttleTimer),this.throttleTimer=null),this.pendingThrottleAction=!1}changeProp(i,t){if(i==="timestamp"){const{record:s,timestamp:u,step:A}=this;if(t<0){this.timestamp=0;return}if(!this.AnimationFrameId)return;const b=()=>{this.Obj.status.message=vt.t("playEnd"),this.Obj.stopRecord(),this.Obj.stop(!1),this.stop(),this.reDrawLine(this.width/2-s[s.length-1].endTime*A,s)};s.length>0&&u>=this.record[this.record.length-1].endTime&&b(),s.length>0&&u+2>=this.record[this.record.length-1].endTime&&setTimeout(()=>{s.length>0&&u+2>=this.record[this.record.length-1].endTime&&this.Obj.status.message!==vt.t("playEnd")&&b()},3e3)}this[i]=t,i==="width"&&(this.elem.width=t*this.dpr,this.elem.style.width=t+"px",this.ctx.scale(this.dpr,this.dpr),this.AnimationFrameId||this.reDrawLine(this.width/2-this.timestamp*this.step,this.record))}reDrawLine(i,t=[]){const{ctx:s,step:u}=this;s.clearRect(0,0,this.width,this.height),this.Obj.status.templateMode==="mobile"&&(this.Obj.status.landscape?(qa(s,0,40,this.width,60,"rgba(0,0,0,0)"),qa(s,0,62,this.width,30,"rgba(0,0,0,0.3)")):(qa(s,0,40,this.width,60,"#F6F6F6"),qa(s,0,62,this.width,30,"#ECECEC")));for(let b=0;bthis.width)break;(c>0||T>0||cthis.width)break;this.Obj.status.templateMode==="mobile"?b%600===0?(Jr(s,C,62,C,72,"#B8B8B8",1),Jr(s,C,82,C,92,"#B8B8B8",1),this.Obj.status.landscape?(s.font="11px PingFang SC",s.fillStyle="rgba(255,255,255,0.6)",s.textBaseline="top",s.fillText(Bf(b),C-15,45)):(s.font="11px PingFang SC",s.fillStyle="#8F8F8F",s.textBaseline="top",s.fillText(Bf(b),C-15,45))):b%60===0&&(Jr(s,C,62,C,67,"#B8B8B8",1),Jr(s,C,88,C,92,"#B8B8B8",1)):b%10===0?(Jr(s,C,0,C,10,"#808080",2),Jr(s,C,40,C,50,"#808080",2),s.font="15px PingFang SC",s.fillStyle="#D8D8D8",s.fillText(hu(b),C+12,20)):(Jr(s,C,45,C,50,"#808080",2),Jr(s,C,0,C,5,"#808080",2))}}this.Obj.status.templateMode==="mobile"?this.Obj.status.landscape?(Sf(s,this.width/2-40,0,80,30,15,"rgba(0,0,0,0.6)",hu(this.isMoving?this.moveTimestamp:this.timestamp),"#ffffff"),Jr(s,this.width/2,40,this.width/2,100,"#ffffff",1)):(Sf(s,this.width/2-35,0,70,28,15,"#F6F6F6",hu(this.isMoving?this.moveTimestamp:this.timestamp),"#8F8F8F"),Jr(s,this.width/2,40,this.width/2,100,this.Obj.status.controlsActiveColor,1)):Jr(s,this.width/2,0,this.width/2,50,this.Obj.status.controlsActiveColor,2)}}const Bm="zh";let Tf=null;function Dm(d){const i=new DocumentFragment,t=d.playerId,s=document.createElement("div");s.setAttribute("id",`imou_player_icon_root_${t}`),s.style.display="block",s.style.position="absolute",s.style.top="0",s.style.width="100%",s.style.height="100%",s.style.zIndex="99999";const u=[],A=["play","volume","capture","videoRecord"],b=[],C=["fullPageScreen","fullScreen"],c=d.status.controlsConfig.includes("recordTimeLine")||d.status.controlsConfig.includes("calendar");let T=[];d.status.controlsConfig.forEach((N,K)=>{A.includes(N)&&u.push({type:N,icon:$r(N)}),C.includes(N)&&b.push({type:N,icon:$r(N)}),N==="recordChange"&&(T=[{type:"cloud",icon:"icon-imou_icon_pro_fullscreen_tab_cloud_h"},{type:"localRecord",icon:"icon-imou_icon_live_video_tab_cloud_h"}])});const k=new DocumentFragment,S=document.createElement("div");S.setAttribute("class","imou-controls-container-header");const E=document.createElement("div");E.setAttribute("class","imou-controls-container-header-left"),S.appendChild(E),k.appendChild(S);const r=document.createElement("div");r.setAttribute("class","imou-title"),d.options.title||d.options.title===""?r.innerHTML=d.status.title:r.innerHTML=`${d.status.deviceId} ${vt.t("channelId")} ${d.status.channelId}`,E.appendChild(r);const D=document.createElement("div");D.setAttribute("class","imou-icon-controls-record-change"),T.forEach((N,K)=>{const p=document.createElement("div");p.setAttribute("id",`imou_player_icon_${N.type}_${t}`),p.setAttribute("class",`imouPlayer-iconfont ${N.icon} `),d.status.recordType==="localRecord"&&N.type==="localRecord"&&p.classList.add("active"),d.status.recordType!=="localRecord"&&N.type==="cloud"&&p.classList.add("active"),D.appendChild(p)}),S.appendChild(D),s.appendChild(k);const f=new DocumentFragment,y=document.createElement("div");y.setAttribute("class","imou-controls-container"),c&&y.classList.add("record-icon");const Q=document.createElement("div");if((()=>{f.appendChild(y),Q.setAttribute("class","imou-controls-left"),y.appendChild(Q),u.forEach((K,p)=>{const x=document.createElement("div");x.setAttribute("id",`imou_player_icon_${K.type}_${t}`),x.setAttribute("class",`imouPlayer-iconfont ${K.icon} imou-icon-controls`),Q.appendChild(x)});const N=document.createElement("div");N.setAttribute("class","imou-controls-right"),y.appendChild(N),b.forEach((K,p)=>{const x=document.createElement("div");x.setAttribute("id",`imou_player_icon_${K.type}_${t}`),x.setAttribute("class",`imouPlayer-iconfont ${K.icon} imou-icon-controls`),N.appendChild(x)})})(),s.appendChild(f),i.appendChild(s),d.status.controlsConfig.includes("speed")){const N=document.createElement("div");N.setAttribute("id",`imou_player_icon_speed_${t}`),N.setAttribute("class","imou-icon-controls-select");const K=document.createElement("div");K.setAttribute("id",`imou_player_icon_speed_select-selected_${t}`),K.setAttribute("class",`imouPlayer-iconfont select-selected icon-imou_icon_video_video_windows_btn_${d.status.recordSpeed}x`),N.appendChild(K),Q.appendChild(N)}i.appendChild(s),s.addEventListener("click",N=>{const{target:K}=N;switch(K.id){case`imou_player_icon_play_${t}`:d.status.playing?(d.pause(),d.trackingLogs("pause")):d.start();break;case`imou_player_icon_capture_${t}`:d.capture(),d.trackingLogs("capture");break;case`imou_player_icon_volume_${d.playerId}`:d.volume(d.status.volume?0:1),d.trackingLogs("volume");break;case`imou_player_icon_fullScreen_${t}`:d.status.fullScreen=!d.status.fullScreen,d.trackingLogs("fullScreen");break;case`imou_player_icon_fullPageScreen_${t}`:d.status.fullPageScreen=!d.status.fullPageScreen,d.trackingLogs("fullPageScreen");break;case`imou_player_icon_localRecord_${t}`:if(d.status.recordType==="localRecord")return;d.status.message=vt.t("changeLocal"),d.changeImouUrl("recordType","localRecord"),Y();break;case`imou_player_icon_cloud_${t}`:if(d.status.recordType!=="localRecord")return;d.status.message=vt.t("changeCloud"),d.changeImouUrl("recordType","cloud"),Y();break;case`imou_player_icon_videoRecord_${d.playerId}`:d.status.videoRecord?d.stopRecord():(d.startRecord(),d.trackingLogs("record"));break;case`imou_player_icon_speed_select-selected_${d.playerId}`:const p=[{label:"16x",value:16,icon:""},{label:"8x",value:8,icon:""},{label:"4x",value:4,icon:""},{label:"2x",value:2,icon:""},{label:"1x",value:1,icon:""},{label:"0.5x",value:.5,icon:""}];d.status.recordType!=="localRecord"&&p.unshift({label:"32x",value:32,icon:""}),new kf({Obj:d,parentDomId:`imou_player_icon_speed_${t}`,active:d.status.recordSpeed,options:p,onConfirm:x=>{d.setSpeed(x),d.trackingLogs("speed")}});break}});const w=document.createElement("div");w.setAttribute("id",`imou_player_message_root_${t}`),w.setAttribute("style","position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:1.2em;color:white;z-index:99999;"),w.style.display="none",i.appendChild(w);let M=null;if(M=document.createElement("canvas"),M.setAttribute("id",`imou_player_timeLine-web_${t}`),c?M.setAttribute("style","display:none;position:absolute;bottom:1px;z-index:99999;background-color:rgba(0, 0, 0, 1); height: 50px;width:100%;"):M.setAttribute("style","height:0"),i.appendChild(M),d.status.controlsConfig.includes("recordTimeLine")){const N=new Df({elem:M,width:d.status.width,height:50,Obj:d,beginTime:An(d.status.beginTime).unix()-An(d.status.beginTime).startOf("day").unix()});d.timeLine=N}let z=null,G=null;d.status.controlsConfig.includes("calendar")&&(z=document.createElement("div"),z.setAttribute("id",`imou_player_timeLine-celeContainer_${t}`),z.setAttribute("style","display:none;position:absolute;bottom:1px;padding-right:10px;right:0px;z-index:99999;width:35px;height:50px;background-color:rgba(0, 0, 0,0.7);"),G=document.createElement("div"),G.setAttribute("class","imouPlayer-iconfont icon-imou_icon_live_calendar_n record-icon-normal"),G.setAttribute("style","bottom:6px;left:5px;"),z.appendChild(G),Y(),i.appendChild(z));function Y(){if(!d.status.controlsConfig.includes("calendar"))return;const N=document.getElementById(`player_timeLine-cele_${t}`);N&&z.removeChild(N),G&&G.addEventListener("click",()=>{K.style.display==="block"?K.style.display="none":K.style.display="block"});const K=document.createElement("div");K.setAttribute("id",`player_timeLine-cele_${t}`),K.setAttribute("style","display:none;position:absolute;top:-332px;left:-274px;width:274px;height:322px;"),z.appendChild(K);const p=new Map,x=(B,R)=>Ar(this,null,function*(){const X=`${B}-${R}`;if(p.has(X))return p.get(X);const J=[],ne=yield ll($i(on({},d.status),{year:B,month:R}));J.push({year:B,month:R,bitmap:ne==null?void 0:ne.bitmap});let le=B,me=R,Ae=B,q=R;R===1?(le=B-1,me=12,q=R+1):R===12?(Ae=B+1,q=1,me=R-1):(me=R-1,q=R+1);const[Z,re]=yield Promise.all([ll($i(on({},d.status),{year:le,month:me})),ll($i(on({},d.status),{year:Ae,month:q}))]);J.push({year:le,month:me,bitmap:Z==null?void 0:Z.bitmap}),J.push({year:Ae,month:q,bitmap:re==null?void 0:re.bitmap});const ae={};return J.forEach(oe=>{const{year:ue,month:Ee,bitmap:O}=oe;O&&O.split("").forEach((ee,ie)=>{ee==="1"&&(ae[`${ue}-${Ee}-${ie+1}`]="")})}),p.set(X,ae),ae});(()=>Ar(this,null,function*(){const B=d.status.beginTime.split(" ")[0],R=An().format("YYYY-MM-DD"),X=An(d.status.beginTime).get("year"),J=An(d.status.beginTime).get("month")+1,ne=yield x(X,J);layui.use(function(){Tf=layui.laydate;const le=Tf.render({elem:`#player_timeLine-cele_${t}`,id:`player_timeLine-cele_${t}`,type:"date",position:"static",value:B,max:R,btns:[],lang:Bm,mark:ne,calendar:!0,done:function(me,Ae,q){setTimeout(()=>{K.style.display="none",d.changeImouUrl("beginTime x",me)},100)},change:(me,Ae,q)=>Ar(this,null,function*(){const Z=yield x(Ae.year,Ae.month);le.config.mark=Z})})})}))()}return i}function Tm(d){const i=new DocumentFragment,t=document.createElement("div");t.setAttribute("id",`imou_player_controls_root_${d.playerId}`),t.setAttribute("class","imou_player_controls_root_mobile");const s=[],u=["play","volume","resolution"],A=[],b=["fullScreen"],C=[],c=["capture","videoRecord","talk","ptz","digitalZoom"],T=[],k=["play","volume","resolution","capture","videoRecord","talk","ptz","digitalZoom"];d.status.controlsConfig.forEach((q,Z)=>{(Gt.detectHostEnvironment().isMiniProgramWebView||Gt.isAndroidWeChatBrowser())&&["capture","videoRecord"].includes(q)||(u.includes(q)&&s.push({type:q,icon:$r(q,d.status.templateMode)}),b.includes(q)&&A.push({type:q,icon:$r(q,d.status.templateMode)}),c.includes(q)&&C.push({type:q,icon:$r(q,d.status.templateMode)}),k.includes(q)&&T.push({type:q,icon:$r(q,d.status.templateMode)}))}),C.length?t.style.height=window.innerHeight+"px":t.style.height="100%";const S=document.createElement("div");S.setAttribute("id",`imou_player_icon_root_${d.playerId}`),S.setAttribute("class","imou_player_icon_root_mobile");const E=q=>{if(!q)return"100%";const Z=window.getComputedStyle(q).height;if(Z&&Z!=="0px"&&Z!=="auto")return Z;const re=q.clientHeight||q.offsetHeight;return re>0?`${re}px`:q.style.height||"100%"},r=()=>{S.style.height=E(d.root)};if(r(),d.root&&(!d.root.style.height||d.root.style.height==="0px")){const q=new MutationObserver(()=>{r(),q.disconnect()});q.observe(d.root,{attributes:!0,attributeFilter:["style"]}),setTimeout(()=>{q.disconnect(),r()},2e3)}const D=new DocumentFragment,f=document.createElement("div");f.setAttribute("class","imou-controls-container-header");const y=document.createElement("div");y.setAttribute("class","imou-controls-container-header-left"),f.appendChild(y),D.appendChild(f);const Q=document.createElement("div");Q.setAttribute("class","imou-title-back imouPlayer-iconfont icon-common_nav_back"),Q.setAttribute("id",`imou-title-back_${d.playerId}`),Q.style.display="none",y.appendChild(Q);const g=document.createElement("div");g.setAttribute("class","imou-title"),d.options.title||d.options.title===""?g.innerHTML=d.status.title:g.innerHTML=`${d.status.deviceId} ${vt.t("channelId")} ${d.status.channelId}`,y.appendChild(g),f.appendChild(y),S.appendChild(D);const w=new DocumentFragment,M=document.createElement("div");M.setAttribute("class","imou-controls-container"),M.setAttribute("id",`imou-controls-container_${d.playerId}`),(()=>{w.appendChild(M);const q=document.createElement("div");q.setAttribute("id",`imou-controls-left_${d.playerId}`),q.setAttribute("class","imou-controls-left"),M.appendChild(q),s.forEach((re,ae)=>{const oe=document.createElement("div");if(oe.setAttribute("id",`imou_player_icon_${re.type}_${d.playerId}`),re.icon==="resolution"){const ue=d.status.resolution=="0"?"icon-imou_icon_live_hd_n":"icon-imou_icon_live_sd_n";oe.setAttribute("class",`imouPlayer-iconfont ${ue} imou-icon-controls`)}else oe.setAttribute("class",`imouPlayer-iconfont imou-icon-controls ${re.icon}`);q.appendChild(oe)});const Z=document.createElement("div");Z.setAttribute("class","imou-controls-right"),M.appendChild(Z),A.forEach((re,ae)=>{const oe=document.createElement("div");oe.setAttribute("id",`imou_player_icon_${re.type}_${d.playerId}`),oe.setAttribute("class",`imouPlayer-iconfont ${re.icon} imou-icon-controls`),Z.appendChild(oe)})})(),S.appendChild(w),t.appendChild(S),i.appendChild(t);const G=document.createElement("div");if(C.length){G.setAttribute("class","imou-controls-bottom"),G.setAttribute("id",`imou-controls-bottom${d.playerId}`);const q=document.createElement("div");q.setAttribute("class","imou-controls-bottom-container"),G.appendChild(q),t.appendChild(G),C.forEach((Z,re)=>{const ae=document.createElement("div");if(ae.setAttribute("id",`imou_player_icon_${Z.type}_${d.playerId}`),Z.type==="talk"){ae.setAttribute("class","imou-icon-controls-select");const oe=document.createElement("div");oe.setAttribute("id",`imou_player_icon_talk_select-selected_${d.playerId}`),oe.setAttribute("class",`imouPlayer-iconfont select-selected ${Z.icon}`),ae.appendChild(oe)}else if(Z.icon==="resolution"){const oe=d.status.resolution=="0"?"icon-imou_icon_live_hd_n":"icon-imou_icon_live_sd_n";ae.setAttribute("class",`imouPlayer-iconfont ${oe} imou-icon-controls`)}else ae.setAttribute("class",`imouPlayer-iconfont ${Z.icon} imou-icon-controls`);q.appendChild(ae)}),t.appendChild(G)}const Y=document.createElement("div");Y.setAttribute("class","imou-controls-landscape"),Y.setAttribute("id",`imou-controls-landscape_${d.playerId}`);const N=document.createElement("div");N.setAttribute("class","imou-controls-landscape-container"),Y.appendChild(N),T.forEach((q,Z)=>{const re=document.createElement("div");if(re.setAttribute("id",`imou_player_icon_${q.type}_landscape_${d.playerId}`),q.type==="talk"){re.setAttribute("class","imou-icon-controls-select");const ae=document.createElement("div");ae.setAttribute("id",`imou_player_icon_talk_select-selected_landscape_${d.playerId}`),ae.setAttribute("class",`imouPlayer-iconfont select-selected ${q.icon}`),re.appendChild(ae)}else if(q.icon==="resolution"){const ae=d.status.resolution=="0"?"icon-imou_icon_live_hd_n":"icon-imou_icon_live_sd_n";re.setAttribute("class",`imouPlayer-iconfont ${ae} imou-icon-controls`)}else re.setAttribute("class",`imouPlayer-iconfont ${q.icon} imou-icon-controls`);N.appendChild(re)}),S.appendChild(Y);const K=q=>{q.addEventListener("click",Z=>{const re=Z==null?void 0:Z.target;re&&re instanceof HTMLElement&&re.id&&p(re.id)})};[M,Q,G,Y].forEach(K);const p=q=>{switch(q){case`imou_player_icon_play_${d.playerId}`:case`imou_player_icon_play_landscape_${d.playerId}`:d.status.playing?(d.pause(),d.trackingLogs("pause")):d.start();break;case`imou_player_icon_volume_${d.playerId}`:case`imou_player_icon_volume_landscape_${d.playerId}`:d.volume(d.status.volume?0:1),d.trackingLogs("volume");break;case`imou_player_icon_fullScreen_${d.playerId}`:d.status.landscape||d.enterLandscapeMode(),d.trackingLogs("fullScreen");break;case`imou-title-back_${d.playerId}`:d.exitLandscapeMode();break;case`imou_player_icon_resolution_${d.playerId}`:case`imou_player_icon_resolution_landscape_${d.playerId}`:d.stopRecord(),d.status.message=vt.t("changeStream"),setTimeout(()=>{d.changeImouUrl("resolution",d.status.resolution=="0"?1:0),d.trackingLogs("resolution")},0);break;case`imou_player_icon_capture_${d.playerId}`:case`imou_player_icon_capture_landscape_${d.playerId}`:d.capture(),d.trackingLogs("capture");break;case`imou_player_icon_talk_select-selected_${d.playerId}`:case`imou_player_icon_talk_select-selected_landscape_${d.playerId}`:if(d.status.talkProcessing)return;d.talk(!d.status.talk);break;case`imou_player_icon_videoRecord_${d.playerId}`:case`imou_player_icon_videoRecord_landscape_${d.playerId}`:d.status.videoRecord?d.stopRecord():(d.startRecord(),d.trackingLogs("record"));break;case`imou_player_icon_ptz_${d.playerId}`:case`imou_player_icon_ptz_landscape_${d.playerId}`:d.status.ptz=!d.status.ptz,d.status.ptz||d.trackingLogs("ptz");break;case`imou_player_icon_digitalZoom_${d.playerId}`:case`imou_player_icon_digitalZoom_landscape_${d.playerId}`:d.status.digitalZoom=!d.status.digitalZoom,d.trackingLogs("digitalZoom");break}},x=document.createElement("div");x.setAttribute("id",`imou_player_message_root_${d.playerId}`),x.setAttribute("style","position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:16px;color:white;z-index:99999;"),x.style.display="none",i.appendChild(x);const _=(q,Z,re)=>{const ae=document.createElement("div");if(ae.style.display="none",ae.setAttribute("id",q),ae.setAttribute("class",Z),ae.style.zIndex="99999",re){const oe=document.createElement("div");oe.setAttribute("class",`${Z}-title`),oe.innerHTML=re,ae.appendChild(oe)}return ae};if(d.status.controlsConfig.includes("ptz")){const q=_(`imou_player_PTZArea_${d.playerId}`,"imou-player-ptzarea-mobile",vt.t("ptz")),Z=document.createElement("div");Z.setAttribute("class","imou-player-ptz"),["up","down","left","right"].forEach(ue=>{const Ee=document.createElement("div"),O=document.createElement("div");Ee.setAttribute("class",`imou-player-ptz-quarter imou-player-ptz-quarter-${ue}`),O.setAttribute("class","imou-player-ptz-arrow"),Ee.appendChild(O),Z.appendChild(Ee)});const ae=document.createElement("div");ae.setAttribute("class","imou-player-ptz-center"),Z.appendChild(ae);const oe=(ue,Ee)=>{var _e;const O=ue==null?void 0:ue.target;if(!O||!(O instanceof HTMLElement))return;const ee=O.className,ge=(_e=Object.entries({"imou-player-ptz-quarter-right":"right","imou-player-ptz-quarter-left":"left","imou-player-ptz-quarter-up":"up","imou-player-ptz-quarter-down":"down"}).find(([we])=>ee.includes(we)))==null?void 0:_e[1];ge&&d.ptzControl(Ee==="mousedown"?ge:"stop")};Z.addEventListener("mousedown",ue=>oe(ue,"mousedown")),Z.addEventListener("mouseup",ue=>oe(ue,"mouseup")),q.appendChild(Z),t.appendChild(q)}if(d.status.controlsConfig.includes("digitalZoom")){const q=_(`imou_player_digitalZoomArea_${d.playerId}`,"imou-player-digitalZoomarea-mobile",vt.t("digitalZoom")),Z=document.createElement("div");Z.setAttribute("class","imou-player-zoom-mobile");const re=(ue,Ee)=>{const O=document.createElement("div");return O.setAttribute("class",`imouPlayer-iconfont ${ue}`),O.addEventListener("click",Ee),O},ae=re("icon-imou_icon_jiahao imou-player-zoom-in",()=>d.zoomIn()),oe=re("icon-imou_icon_jianhao imou-player-zoom-out",()=>d.zoomOut());Z.appendChild(oe),Z.appendChild(ae),q.appendChild(Z),t.appendChild(q)}const B=document.createElement("div");B.style.display="none",B.setAttribute("id",`imou_player_PTZArea_landscape_${d.playerId}`),B.setAttribute("class","imou-player-ptzarea"),B.style.zIndex="99999";const R=document.createElement("div");R.setAttribute("class","imou-player-ptz"),["up","down","left","right"].forEach(q=>{const Z=document.createElement("div"),re=document.createElement("div");Z.setAttribute("class",`imou-player-ptz-quarter imou-player-ptz-quarter-${q}`),re.setAttribute("class","imou-player-ptz-arrow"),Z.appendChild(re),R.appendChild(Z)});const J=document.createElement("div");J.setAttribute("class","imou-player-ptz-center"),R.appendChild(J),R.addEventListener("mousedown",q=>{var ae;const Z=(ae=q==null?void 0:q.target)==null?void 0:ae.className;let re="";Z.includes("imou-player-ptz-quarter-right")?re="right":Z.includes("imou-player-ptz-quarter-left")?re="left":Z.includes("imou-player-ptz-quarter-up")?re="up":Z.includes("imou-player-ptz-quarter-down")&&(re="down"),re&&d.ptzControl(re)}),R.addEventListener("mouseup",q=>{var re;((re=q==null?void 0:q.target)==null?void 0:re.className).includes("imou-player-ptz-center")||d.ptzControl("stop")}),B.appendChild(R),i.appendChild(B);const ne=document.createElement("div");ne.style.display="none",ne.setAttribute("id",`imou_player_digitalZoomArea_landscape_${d.playerId}`),ne.setAttribute("class","imou-player-digitalZoomarea"),ne.style.zIndex="99999";const le=document.createElement("div");le.setAttribute("class","imou-player-zoom");const me=document.createElement("div");me.setAttribute("class","imouPlayer-iconfont icon-imou_icon_jiahao imou-player-zoom-in");const Ae=document.createElement("div");return Ae.setAttribute("class","imouPlayer-iconfont icon-imou_icon_jianhao imou-player-zoom-out"),le.appendChild(me),le.appendChild(Ae),me.addEventListener("click",()=>{d.zoomIn()}),Ae.addEventListener("click",()=>{d.zoomOut()}),ne.appendChild(le),i.appendChild(ne),i}var C1="";class Lf{constructor(i={}){this.root=i.container||document.body,this.selectedDate=i.selectedDate||new Date,this.currentDate=new Date(this.selectedDate),this.eventsData=i.eventsData||{},this.onDateSelect=i.onDateSelect||this.defaultDateSelect,this.onMonthChange=i.onMonthChange||this.defaultMonthChange,this.onClose=i.onClose||this.closeCalendar,this.container=null,this.init()}init(){this.createCalendarDOM(),this.renderCalendar(),this.bindEvents()}createCalendarDOM(){this.container=this.createElement("div","imou-calendar-container");const i=this.createElement("div","imou-calendar-close-button imouPlayer-iconfont icon-imou_common_popover_cancel");i.addEventListener("click",()=>{this.yearMonthSelector?this.hideYearMonthSelector():this.closeCalendar()}),this.container.appendChild(i);const t=this.createElement("div","imou-calendar-header"),s=this.createElement("div","imou-calendar-month-year","month-year");this.monthYearSpan=this.createElement("span","","currentMonthYear"),this.monthYearSpan.textContent="2025-01";const u=this.createElement("span","imouPlayer-iconfont icon-imou_icon_message_icon_calendar_back-1","year-selector");s.addEventListener("click",()=>this.toggleYearSelector()),s.appendChild(this.monthYearSpan),s.appendChild(u);const A=this.createElement("div","imou-calendar-navigation");this.prevButton=this.createElement("div","imou-calendar-nav-button imouPlayer-iconfont icon-imou_icon_message_icon_calendar_back"),this.prevButton.addEventListener("click",()=>this.previousMonth()),this.nextButton=this.createElement("div","imou-calendar-nav-button imouPlayer-iconfont icon-imou_icon_message_icon_calendar_back-1"),this.nextButton.addEventListener("click",()=>this.nextMonth()),A.appendChild(this.prevButton),A.appendChild(this.nextButton),t.appendChild(s),t.appendChild(A),this.container.appendChild(t);const b=this.createElement("div","imou-calendar-body"),C=this.createElement("div","imou-calendar-weekdays");["S","M","T","W","T","F","S"].forEach(T=>{const k=this.createElement("div","imou-calendar-weekday");k.textContent=T,C.appendChild(k)}),b.appendChild(C),this.calendarGrid=this.createElement("div","imou-calendar-grid"),b.appendChild(this.calendarGrid),this.container.appendChild(b),this.root.appendChild(this.container)}createElement(i,t="",s=""){const u=document.createElement(i);return t&&(u.className=t),s&&(u.id=s),u}getEventsForMonth(i,t){const s=`${i}-${String(t+1).padStart(2,"0")}`;return this.eventsData[s]||[]}hasEvent(i){const t=i.getFullYear(),s=i.getMonth(),u=i.getDate();return this.getEventsForMonth(t,s).includes(u)}renderCalendar(){const i=this.currentDate.getFullYear(),t=this.currentDate.getMonth();this.monthYearSpan.textContent=this.formatMonthYear(i,t);const s=new Date(i,t,1),u=new Date(s);u.setDate(u.getDate()-s.getDay()),this.calendarGrid.innerHTML="";for(let A=0;A<6;A++)for(let b=0;b<7;b++){const C=new Date(u);C.setDate(u.getDate()+A*7+b);const c=this.createDayElement(C,t);this.calendarGrid.appendChild(c)}this.onMonthChange(i,t)}formatMonthYear(i,t){return`${i}-${String(t+1).padStart(2,"0")}`}createDayElement(i,t){const s=this.createElement("div","imou-calendar-day"),u=i.getDate(),A=i.getMonth()===t,b=this.isSameDate(i,this.selectedDate),C=this.hasEvent(i)&&A,c=this.isFutureDate(i);A||s.classList.add("imou-calendar-inactive"),b&&s.classList.add("imou-calendar-selected"),C&&s.classList.add("imou-calendar-has-event"),c&&s.classList.add("imou-calendar-future");const T=this.createElement("span");if(T.textContent=u,s.appendChild(T),C){const k=this.createElement("div","imou-calendar-event-dot");s.appendChild(k)}return A&&!c&&s.addEventListener("click",()=>{this.selectDate(i)}),s}isSameDate(i,t){return i.getFullYear()===t.getFullYear()&&i.getMonth()===t.getMonth()&&i.getDate()===t.getDate()}isFutureDate(i){const t=new Date;return t.setHours(0,0,0,0),i>t}selectDate(i){this.selectedDate=new Date(i),this.renderCalendar(),this.onDateSelect(i)}previousMonth(){const i=this.selectedDate.getDate();this.currentDate.setMonth(this.currentDate.getMonth()-1);const t=this.currentDate.getMonth(),s=this.currentDate.getFullYear(),u=new Date(s,t+1,0).getDate(),A=Math.min(i,u);this.selectedDate=new Date(s,t,A),this.renderCalendar()}nextMonth(){const i=this.selectedDate.getDate(),t=new Date(this.currentDate);t.setMonth(t.getMonth()+1);const s=new Date;if(s.setHours(0,0,0,0),new Date(t.getFullYear(),t.getMonth(),1)>s)return;this.currentDate.setMonth(this.currentDate.getMonth()+1);const A=this.currentDate.getMonth(),b=this.currentDate.getFullYear(),C=new Date(b,A+1,0).getDate(),c=Math.min(i,C),T=new Date(b,A,c);T>s?this.selectedDate=s:this.selectedDate=T,this.renderCalendar()}defaultDateSelect(i){}defaultMonthChange(i,t){}formatDate(i){return i.toLocaleDateString("zh-CN")}bindEvents(){document.addEventListener("keydown",i=>{this.handleKeydown(i)})}handleKeydown(i){switch(i.key){case"ArrowLeft":this.previousMonth();break;case"ArrowRight":this.nextMonth();break;case"Escape":this.yearMonthSelector?this.hideYearMonthSelector():this.closeCalendar();break}}closeCalendar(){this.container&&this.container.parentNode&&this.container.parentNode.removeChild(this.container),this.onClose()}toggleYearSelector(){this.yearMonthSelector?this.hideYearMonthSelector():this.showYearMonthSelector()}rotateYearSelector(i){const t=document.getElementById("year-selector");t&&(t.style.transform=i?"rotate(90deg)":"rotate(0deg)")}showYearMonthSelector(){const i=this.currentDate.getFullYear(),t=this.currentDate.getMonth(),s=new Date;let u=this.container.querySelector(".imou-calendar-year-month-selector");if(u)this.updateYearMonthSelection(u,i,t);else{u=this.createElement("div","imou-calendar-year-month-selector");const b=this.createElement("div","imou-calendar-year-month-content"),C=this.createElement("div","imou-calendar-year-picker"),c=i;for(let r=0;r<3;r++){const D=this.createElement("div","imou-calendar-year-item imou-calendar-spacer");D.style.height="40px",D.style.pointerEvents="none",C.appendChild(D)}for(let r=1970;r<=s.getFullYear();r++){const D=this.createElement("div","imou-calendar-year-item");D.textContent=r,r===c&&D.classList.add("imou-calendar-selected"),D.addEventListener("click",()=>{C.querySelectorAll(".imou-calendar-year-item:not(.imou-calendar-spacer)").forEach(f=>{f.classList.remove("imou-calendar-selected")}),D.classList.add("imou-calendar-selected"),this.tempSelectedYear=r,this.updateMonthPickerForYear(T,r,s),this.updateCurrentMonthYearDisplay(r,this.tempSelectedMonth!==void 0?this.tempSelectedMonth:t),D.scrollIntoView({behavior:"smooth",block:"center"})}),C.appendChild(D)}this.applyPickerSpacers(C,"imou-calendar-year-item");const T=this.createElement("div","imou-calendar-month-picker"),k=this.tempSelectedMonth!==void 0?this.tempSelectedMonth:t;this.createMonthPicker(T,c,k,s),b.appendChild(C),b.appendChild(T),u.appendChild(b);const S=this.createElement("div","imou-calendar-year-month-footer"),E=this.createElement("button","imou-calendar-year-month-ok");E.textContent=vt.t("confirm"),E.addEventListener("click",()=>{this.confirmYearMonthSelection()}),S.appendChild(E),u.appendChild(S),this.container.appendChild(u),C.addEventListener("scroll",()=>this.handlePickerScroll(C,"year")),T.addEventListener("scroll",()=>this.handlePickerScroll(T,"month")),this.ensureProperScrollPosition(C,T,c,k)}this.yearMonthSelector=u,this.tempSelectedYear=i,this.tempSelectedMonth=t,this.container.classList.add("imou-calendar-show-year-month"),this.rotateYearSelector(!0);const A=document.getElementById("currentMonthYear");A&&A.classList.add("imou-calendar-year-month-selecting")}handlePickerScroll(i,t){i.classList.add("imou-calendar-scrolling"),this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout(()=>{var c;const s=i.querySelectorAll(t==="year"?".imou-calendar-year-item:not(.imou-calendar-spacer)":".imou-calendar-month-item:not(.imou-calendar-spacer)"),u=i.getBoundingClientRect(),A=u.top+u.height/2;let b=null,C=1/0;if(s.forEach(T=>{const k=T.getBoundingClientRect(),S=k.top+k.height/2,E=Math.abs(S-A);E{T.classList.remove("imou-calendar-selected"),T.classList.remove("imou-calendar-scrolling")}),b.classList.add("imou-calendar-selected"),b.classList.add("imou-calendar-scrolling"),t==="year"){this.tempSelectedYear=parseInt(b.textContent||"0");const T=(c=i.parentElement)==null?void 0:c.querySelector(".imou-calendar-month-picker");if(T){const k=new Date;this.updateMonthPickerForYear(T,this.tempSelectedYear,k)}this.updateCurrentMonthYearDisplay(this.tempSelectedYear,this.tempSelectedMonth!==void 0?this.tempSelectedMonth:0)}else this.tempSelectedMonth=parseInt(b.textContent||"0")-1,this.updateCurrentMonthYearDisplay(this.tempSelectedYear||this.currentDate.getFullYear(),this.tempSelectedMonth);setTimeout(()=>{i.classList.remove("imou-calendar-scrolling"),s.forEach(T=>T.classList.remove("imou-calendar-scrolling"))},300)},100)}hideYearMonthSelector(){this.container.classList.remove("imou-calendar-show-year-month"),this.rotateYearSelector(!1);const i=document.getElementById("currentMonthYear");i&&i.classList.remove("imou-calendar-year-month-selecting"),this.updateCurrentMonthYearDisplay(this.currentDate.getFullYear(),this.currentDate.getMonth()),this.yearMonthSelector=null,this.tempSelectedYear=void 0,this.tempSelectedMonth=void 0}confirmYearMonthSelection(){if(this.tempSelectedYear!==void 0&&this.tempSelectedMonth!==void 0){const i=new Date,t=new Date(this.tempSelectedYear,this.tempSelectedMonth,1);if(t.getFullYear()>i.getFullYear()||t.getFullYear()===i.getFullYear()&&t.getMonth()>i.getMonth())return;this.goToMonth(this.tempSelectedYear,this.tempSelectedMonth),this.hideYearMonthSelector()}}setEventsData(i){this.eventsData=i,this.renderCalendar()}addEventsToMonths(i){if(!i||typeof i!="object")return;let t=!1;Object.keys(i).forEach(s=>{const u=i[s];if(Array.isArray(u)&&u.length>0){const[A,b]=s.split("-").map(Number);A&&b>=1&&b<=12&&(this.eventsData[s]||(this.eventsData[s]=[]),u.forEach(C=>{typeof C=="number"&&C>=1&&C<=31&&!this.eventsData[s].includes(C)&&(this.eventsData[s].push(C),t=!0)}))}}),t&&this.renderCalendar()}removeEventsFromMonths(i){if(!i||typeof i!="object")return;let t=!1;Object.keys(i).forEach(s=>{const u=i[s];Array.isArray(u)&&u.length>0&&this.eventsData[s]&&u.forEach(A=>{const b=this.eventsData[s].indexOf(A);b>-1&&(this.eventsData[s].splice(b,1),t=!0)})}),t&&this.renderCalendar()}setSelectedDate(i){this.selectedDate=new Date(i),this.renderCalendar()}getSelectedDate(){return new Date(this.selectedDate)}goToMonth(i,t){const s=this.selectedDate.getDate();this.currentDate=new Date(i,t,1);const u=new Date(i,t+1,0).getDate(),A=Math.min(s,u);this.selectedDate=new Date(i,t,A),this.renderCalendar()}goToToday(){this.currentDate=new Date,this.selectedDate=new Date,this.renderCalendar()}destroy(){this.container&&this.container.parentNode&&this.container.parentNode.removeChild(this.container),document.removeEventListener("keydown",this.handleKeydown)}ensureProperScrollPosition(i,t,s,u){requestAnimationFrame(()=>{requestAnimationFrame(()=>{const A=i.querySelector(".imou-calendar-year-item.imou-calendar-selected"),b=t.querySelector(".imou-calendar-month-item.imou-calendar-selected");if(A){const C=A.getBoundingClientRect(),c=i.getBoundingClientRect(),T=A.offsetTop-(c.height/2-C.height/2),k=i.scrollHeight-c.height;i.scrollTop=Math.max(0,Math.min(T,k))}if(b){const C=b.getBoundingClientRect(),c=t.getBoundingClientRect(),T=b.offsetTop-(c.height/2-C.height/2),k=t.scrollHeight-c.height;t.scrollTop=Math.max(0,Math.min(T,k))}})})}updateMonthPickerState(i,t,s,u){const A=new Date,b=this.tempSelectedMonth!==void 0?this.tempSelectedMonth:u;this.createMonthPicker(i,t,b,A)}updateYearMonthSelection(i,t,s){const u=i.querySelector(".imou-calendar-year-picker"),A=i.querySelector(".imou-calendar-month-picker");u&&u.querySelectorAll(".imou-calendar-year-item:not(.imou-calendar-spacer)").forEach(b=>{b.classList.remove("imou-calendar-selected"),parseInt(b.textContent)===t&&b.classList.add("imou-calendar-selected")}),A&&A.querySelectorAll(".imou-calendar-month-item:not(.imou-calendar-spacer)").forEach(b=>{b.classList.remove("imou-calendar-selected"),parseInt(b.textContent)-1===s&&b.classList.add("imou-calendar-selected")}),this.ensureProperScrollPosition(u,A,t,s)}createMonthPicker(i,t,s,u){i.innerHTML="";let A=11;t===u.getFullYear()&&(A=u.getMonth());for(let b=0;b<=A;b++){const C=this.createElement("div","imou-calendar-month-item");C.textContent=String(b+1).padStart(2,"0"),b===s&&C.classList.add("imou-calendar-selected"),C.addEventListener("click",()=>{i.querySelectorAll(".imou-calendar-month-item:not(.imou-calendar-spacer)").forEach(c=>{c.classList.remove("imou-calendar-selected")}),C.classList.add("imou-calendar-selected"),this.tempSelectedMonth=b,this.updateCurrentMonthYearDisplay(this.tempSelectedYear||t,b),C.scrollIntoView({behavior:"smooth",block:"center"})}),i.appendChild(C)}this.applyPickerSpacers(i,"imou-calendar-month-item")}updateMonthPickerForYear(i,t,s){const u=this.tempSelectedMonth!==void 0?this.tempSelectedMonth:0;this.createMonthPicker(i,t,u,s),this.applyPickerSpacers(i,"imou-calendar-month-item"),setTimeout(()=>{const A=i.querySelector(".imou-calendar-month-item.imou-calendar-selected");A&&A.scrollIntoView({behavior:"smooth",block:"center"})},100)}updateCurrentMonthYearDisplay(i,t){this.monthYearSpan.textContent=`${i}-${String(t+1).padStart(2,"0")}`}applyPickerSpacers(i,t,s=3){i.querySelectorAll(".imou-calendar-spacer").forEach(u=>u.remove());for(let u=0;u{const b=document.createElement("div");b.style.cssText=` + display: flex; + align-items: center; + justify-content: center; + `;const C=document.createElement("div");C.textContent=u.label,C.style.cssText=` + width:50px; + height:50px; + display: flex; + align-items: center; + justify-content: center; + border: none; + border-radius: 10px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; + background-color: ${u.value===this.options.value?"var(--imou-icon-color-active)":"#F6F6F6"}; + color: ${u.value===this.options.value?"#FFFFFF":"#2C2C2C"}; + `,b.appendChild(C),C.addEventListener("click",()=>{this.selectOption(u.value)}),C.addEventListener("mouseenter",()=>{u.value!==this.options.value&&(C.style.backgroundColor="#E8E8E8")}),C.addEventListener("mouseleave",()=>{u.value!==this.options.value&&(C.style.backgroundColor="#F5F5F5")}),t.appendChild(b)});const s=document.createElement("button");return s.textContent="\u53D6\u6D88",s.style.cssText=` + width: 100%; + padding: 10px; + line-height: 24px; + border: none; + border-radius: 24px; + font-weight: bold; + font-size: 16px; + color: #2C2C2C; + cursor: pointer; + background: #F6F6F6; + `,s.addEventListener("click",()=>{this.destroy()}),s.addEventListener("mouseenter",()=>{s.style.backgroundColor="#E8E8E8"}),s.addEventListener("mouseleave",()=>{s.style.backgroundColor="#F5F5F5"}),i.appendChild(t),i.appendChild(s),i}selectOption(i){this.options.onSelect&&typeof this.options.onSelect=="function"&&this.options.onSelect(i),this.destroy()}open(){this.popup&&this.popup.destroy(),this.popup=new pu({title:this.options.title,maskClosable:!0,onClose:()=>{this.options.onClose&&typeof this.options.onClose=="function"&&this.options.onClose()}}),this.container=this.createSelectorUI(),this.popup.open(this.container)}close(){this.popup&&this.popup.close()}destroy(){this.container&&this.container.parentNode&&this.container.parentNode.removeChild(this.container),this.popup&&(this.popup.destroy(),this.popup=null)}updateValue(i){this.options.value=i}}typeof window!="undefined"&&(window.ImouMobileSelector=Ff);class Mf{constructor(i={}){const{id:t="slide-panel",width:s="332px",height:u="100vh",backgroundColor:A="#ffffff",zIndex:b="10000",duration:C="0.3s",onShow:c=()=>{},onHide:T=()=>{},content:k="",mask:S=!0,maskColor:E="rgba(0, 0, 0, 0.5)",closeOnMaskClick:r=!0,actions:D=[],value:f="",onSelect:y=()=>{}}=i;this.options={id:t,width:s,height:u,backgroundColor:A,zIndex:b,duration:C,onShow:c,onHide:T,content:k,mask:S,maskColor:E,closeOnMaskClick:r,actions:D,value:f,onSelect:y},this.isVisible=!1,this.originalStyles=null,this.panel=null,this.maskElement=null,this.handleKeydown=null,this.init()}init(){this.createMask(),this.bindEvents()}createMask(){!this.options.mask||(this.maskElement=document.createElement("div"),this.maskElement.className="slide-panel-mask",this.maskElement.id=`${this.options.id}-mask`,Object.assign(this.maskElement.style,{position:"fixed",top:"50%",left:"50%",width:`${window.innerHeight}px`,height:"100vw",backgroundColor:this.options.maskColor,zIndex:parseInt(this.options.zIndex)-1,opacity:"0",visibility:"hidden",transform:"translate(-50%, -50%) rotate(90deg)",transformOrigin:"center center",transition:"all 0.3s"}),document.body.appendChild(this.maskElement),this.createPanel())}createPanel(){this.panel=document.createElement("div"),this.panel.id=this.options.id,this.panel.className="slide-panel",Object.assign(this.panel.style,{width:"332px",height:"100%",background:"rgba(17,17,17,0.95)",position:"absolute",right:"0",top:"0",borderRadius:"20px 0 0 20px"});const i=document.createElement("div");i.className="slide-panel-content",Object.assign(i.style,{width:"100%",height:"100%",boxSizing:"border-box",display:"flex",flexWrap:"wrap",gap:"8px",alignItems:"center",justifyContent:"center",alignContent:"center"}),this.options.actions.forEach((t,s)=>{const u=document.createElement("div");u.style.cssText=` + display: flex; + align-items: center; + justify-content: center; + `;const A=document.createElement("div");A.textContent=t.label,A.style.cssText=` + width: 143px; + height: 60px; + display: flex; + align-items: center; + justify-content: center; + border: none; + border-radius: 10px; + font-size: 16px; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; + border: 1px solid ${t.value===this.options.value?"var(--imou-icon-color-active)":"#202020"}; + background-color: #202020; + color: ${t.value===this.options.value?"var(--imou-icon-color-active)":"#FFFFFF"}; + position: relative; + `,u.appendChild(A);const b=document.createElement("div");b.style.cssText=` + position: absolute; + top: 5px; + right: 6px; + width: 20px; + height: 20px; + font-size: 20px !important; + `,b.className="imouPlayer-iconfont icon-imou_icon_live_video_tab_cloud_h1",t.value===this.options.value&&A.appendChild(b),A.addEventListener("click",()=>{this.selectOption(t.value)}),A.addEventListener("mouseenter",()=>{t.value!==this.options.value&&(A.style.backgroundColor="#E8E8E8")}),A.addEventListener("mouseleave",()=>{t.value!==this.options.value&&(A.style.backgroundColor="#F5F5F5")}),i.appendChild(u)}),this.panel.appendChild(i),this.maskElement&&this.maskElement.appendChild(this.panel)}selectOption(i){this.options.onSelect&&typeof this.options.onSelect=="function"&&this.options.onSelect(i),this.destroy()}bindEvents(){this.maskElement&&this.options.closeOnMaskClick&&this.maskElement.addEventListener("click",i=>{i.target===this.maskElement&&this.hide()}),this.handleKeydown=i=>{i.key==="Escape"&&this.isVisible&&this.hide()},document.addEventListener("keydown",this.handleKeydown)}show(){this.isVisible||(this.saveOriginalStyles(),this.maskElement&&(this.maskElement.style.visibility="visible",this.maskElement.style.opacity="1"),this.panel,this.isVisible=!0,document.body.style.overflow="hidden",this.options.onShow&&this.options.onShow())}hide(){!this.isVisible||(this.maskElement&&(this.maskElement.style.opacity="0",this.maskElement.style.visibility="hidden"),this.panel,this.isVisible=!1,document.body.style.overflow="",this.options.onHide&&this.options.onHide())}toggle(){this.isVisible?this.hide():this.show()}saveOriginalStyles(){this.originalStyles={bodyOverflow:document.body.style.overflow}}setContent(i){if(!this.panel)return;const t=this.panel.querySelector(".slide-panel-content");t&&(t.innerHTML="",typeof i=="string"?t.innerHTML=i:i instanceof HTMLElement&&t.appendChild(i))}updateStyles(i){this.panel&&Object.assign(this.panel.style,i)}destroy(){this.hide(),this.handleKeydown&&document.removeEventListener("keydown",this.handleKeydown),this.panel&&this.panel.parentNode&&this.panel.parentNode.removeChild(this.panel),this.maskElement&&this.maskElement.parentNode&&this.maskElement.parentNode.removeChild(this.maskElement),this.panel=null,this.maskElement=null}}typeof window!="undefined"&&(window.ImouLandscapeSlidePanel=Mf);function Lm(d){const i=new DocumentFragment,t=document.createElement("div");t.setAttribute("id",`imou_player_controls_root_${d.playerId}`),t.setAttribute("class","imou_player_controls_root_mobile");const s=[],u=[],A=[],b=[];let C=[];const c={left:["play","volume"],right:["fullScreen"],bottom:["capture","videoRecord"],landscape:["play","volume","capture","videoRecord"]};d.status.controlsConfig.forEach(oe=>{(Gt.detectHostEnvironment().isMiniProgramWebView||Gt.isAndroidWeChatBrowser())&&["capture","videoRecord"].includes(oe)||(c.left.includes(oe)&&s.push({type:oe,icon:$r(oe,d.status.templateMode)}),c.right.includes(oe)&&u.push({type:oe,icon:$r(oe,d.status.templateMode)}),c.bottom.includes(oe)&&A.push({type:oe,icon:$r(oe,d.status.templateMode)}),c.landscape.includes(oe)&&b.push({type:oe,icon:$r(oe,d.status.templateMode)}),oe==="recordChange"&&(C=[{type:"cloud",icon:"icon-imou_icon_pro_fullscreen_tab_cloud_h"},{type:"localRecord",icon:"icon-imou_icon_live_video_tab_cloud_h"}]))}),d.status.controlsConfig.some(oe=>["capture","videoRecord","recordChange","recordTimeLine","calendar"].includes(oe))?(t.style.height=window.innerHeight+"px",window.addEventListener("resize",()=>{t.style.height=window.innerHeight+"px"})):t.style.height="100%";const k=document.createElement("div");k.setAttribute("id",`imou_player_icon_root_${d.playerId}`),k.setAttribute("class","imou_player_icon_root_mobile");const S=oe=>{if(!oe)return"100%";const ue=window.getComputedStyle(oe).height;if(ue&&ue!=="0px"&&ue!=="auto")return ue;const Ee=oe.clientHeight||oe.offsetHeight;return Ee>0?`${Ee}px`:oe.style.height||"100%"},E=()=>{k.style.height=S(d.root)};if(E(),d.root&&(!d.root.style.height||d.root.style.height==="0px")){const oe=new MutationObserver(()=>{E(),oe.disconnect()});oe.observe(d.root,{attributes:!0,attributeFilter:["style"]}),setTimeout(()=>{oe.disconnect(),E()},2e3)}const r=new DocumentFragment,D=document.createElement("div");D.setAttribute("class","imou-controls-container-header");const f=document.createElement("div");f.setAttribute("class","imou-controls-container-header-left"),D.appendChild(f),r.appendChild(D);const y=document.createElement("div");y.setAttribute("class","imou-title-back imouPlayer-iconfont icon-common_nav_back"),y.setAttribute("id",`imou-title-back_${d.playerId}`),y.style.display="none",f.appendChild(y);const Q=document.createElement("div");Q.setAttribute("class","imou-title"),d.options.title||d.options.title===""?Q.innerHTML=d.status.title:Q.innerHTML=`${d.status.deviceId} ${vt.t("channelId")} ${d.status.channelId}`,f.appendChild(Q),D.appendChild(f),k.appendChild(r);const g=new DocumentFragment,w=document.createElement("div");w.setAttribute("class","imou-controls-container"),w.setAttribute("id",`imou-controls-container_${d.playerId}`);const M=document.createElement("div");(()=>{g.appendChild(w),M.setAttribute("id",`imou-controls-left_${d.playerId}`),M.setAttribute("class","imou-controls-left"),w.appendChild(M),s.forEach((ue,Ee)=>{const O=document.createElement("div");O.setAttribute("id",`imou_player_icon_${ue.type}_${d.playerId}`),O.setAttribute("class",`imouPlayer-iconfont imou-icon-controls ${ue.icon}`),M.appendChild(O)});const oe=document.createElement("div");oe.setAttribute("class","imou-controls-right"),w.appendChild(oe),u.forEach((ue,Ee)=>{const O=document.createElement("div");O.setAttribute("id",`imou_player_icon_${ue.type}_${d.playerId}`),O.setAttribute("class",`imouPlayer-iconfont ${ue.icon} imou-icon-controls`),oe.appendChild(O)})})(),k.appendChild(g),t.appendChild(k),i.appendChild(t);const G=document.createElement("div");A.length&&(G.setAttribute("class","imou-controls-record-bottom"),G.setAttribute("id",`imou-controls-record-bottom${d.playerId}`),A.forEach((oe,ue)=>{const Ee=document.createElement("div");Ee.setAttribute("id",`imou_player_icon_${oe.type}_${d.playerId}`),Ee.setAttribute("class",`imouPlayer-iconfont ${oe.icon} imou-icon-controls`),G.appendChild(Ee)}));const Y=document.createElement("div");Y.setAttribute("class","imou-controls-record-landscape"),Y.setAttribute("id",`imou-controls-landscape_${d.playerId}`),Y.style.display="none";const N=document.createElement("div");N.setAttribute("class","imou-controls-record-landscape-container"),Y.appendChild(N),b.forEach((oe,ue)=>{const Ee=document.createElement("div");Ee.setAttribute("id",`imou_player_icon_${oe.type}_landscape_${d.playerId}`),Ee.setAttribute("class",`imouPlayer-iconfont ${oe.icon} imou-icon-controls`),N.appendChild(Ee)});const K=document.createElement("div");if(d.status.controlsConfig.includes("recordTimeLine")&&(K.setAttribute("class","imou-controls-record-landscape-container-bottom"),Y.appendChild(K)),k.appendChild(Y),d.status.controlsConfig.includes("speed")){const oe=document.createElement("div");oe.setAttribute("id",`imou_player_icon_speed_${d.playerId}`),oe.setAttribute("class","imou-icon-controls-select");const ue=document.createElement("div");ue.setAttribute("id",`imou_player_icon_speed_select-selected_${d.playerId}`),ue.setAttribute("class",`imouPlayer-iconfont select-selected icon-imou_icon_video_video_windows_btn_${d.status.recordSpeed}x`),oe.appendChild(ue),M.appendChild(oe);const Ee=document.createElement("div");Ee.setAttribute("id",`imou_player_icon_speed_landscape_${d.playerId}`),Ee.setAttribute("class","imou-icon-controls-select");const O=document.createElement("div");O.setAttribute("id",`imou_player_icon_speed_select-selected_landscape_${d.playerId}`),O.setAttribute("class",`imouPlayer-iconfont select-selected icon-imou_icon_video_video_windows_btn_${d.status.recordSpeed}x`),Ee.appendChild(O),N.appendChild(Ee)}const p=oe=>{oe==null||oe.addEventListener("click",ue=>{const Ee=ue.target;Ee instanceof HTMLElement&&Ee.id&&x(Ee.id)})};p(w),p(y),A.length&&p(G),p(Y);const x=oe=>{var ee;const ue=d.playerId,Ee=[{label:"0.5X",value:.5},{label:"1X",value:1},{label:"2X",value:2},{label:"4X",value:4},{label:"8X",value:8},{label:"16X",value:16}],O={[`imou_player_icon_play_${ue}`]:()=>{d.status.playing?(d.pause(),d.trackingLogs("pause")):d.start()},[`imou_player_icon_play_landscape_${ue}`]:()=>{d.status.playing?(d.pause(),d.trackingLogs("pause")):d.start()},[`imou_player_icon_volume_${ue}`]:()=>{d.volume(d.status.volume?0:1),d.trackingLogs("volume")},[`imou_player_icon_volume_landscape_${ue}`]:()=>{d.volume(d.status.volume?0:1),d.trackingLogs("volume")},[`imou_player_icon_speed_select-selected_${ue}`]:()=>{new Ff({value:d.status.recordSpeed,actions:Ee,onSelect:ge=>{d.setSpeed(ge),d.trackingLogs("speed")}}).open()},[`imou_player_icon_speed_select-selected_landscape_${ue}`]:()=>{new Mf({value:d.status.recordSpeed,actions:Ee,onSelect:ge=>{d.setSpeed(ge),d.trackingLogs("speed")}}).show()},[`imou_player_icon_fullScreen_${ue}`]:()=>{d.status.landscape||(d.enterLandscapeMode(),d.status.controlsConfig.includes("recordTimeLine")&&(K.appendChild(Ae),le.innerHTML="")),d.trackingLogs("fullScreen")},[`imou-title-back_${ue}`]:()=>{d.exitLandscapeMode(),d.status.controlsConfig.includes("recordTimeLine")&&(le.appendChild(Ae),K.innerHTML="")},[`imou_player_icon_capture_${ue}`]:()=>{d.capture(),d.trackingLogs("capture")},[`imou_player_icon_capture_landscape_${ue}`]:()=>{d.capture(),d.trackingLogs("capture")},[`imou_player_icon_videoRecord_${ue}`]:()=>{d.status.videoRecord?d.stopRecord():(d.startRecord(),d.trackingLogs("record"))},[`imou_player_icon_videoRecord_landscape_${ue}`]:()=>{d.status.videoRecord?d.stopRecord():(d.startRecord(),d.trackingLogs("record"))},[`imou_player_icon_localRecord_${ue}`]:()=>{d.status.recordType!=="localRecord"&&(d.status.message=vt.t("changeLocal"),d.changeImouUrl("recordType","localRecord"))},[`imou_player_icon_cloud_${ue}`]:()=>{d.status.recordType==="localRecord"&&(d.status.message=vt.t("changeCloud"),d.changeImouUrl("recordType","cloud"))}};(ee=O[oe])==null||ee.call(O)},_=document.createElement("div");_.setAttribute("id",`imou_player_message_root_${d.playerId}`),_.setAttribute("style","position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:16px;color:white;z-index:99999;"),_.style.display="none",i.appendChild(_);const B=document.createElement("div"),R=oe=>{const ue=An().startOf("day");return An(oe).startOf("day").isAfter(ue)};let X=null;function J(){const oe=document.createElement("div");oe.className="record-time-change";const ue=document.createElement("div");ue.className="imouPlayer-iconfont icon-imou_icon_time_selector_arror_left_n",ue.addEventListener("click",()=>{const O=An(d.status.beginTime).subtract(1,"day");d.changeImouUrl("beginTime x",O.format("YYYY-MM-DD")),B.textContent=An(O).format("MM/DD"),X()}),B.className="record-time-item-date",B.textContent=An(d.status.beginTime).format("MM/DD"),B.style.cursor="pointer",B.addEventListener("click",ae);const Ee=document.createElement("div");return Ee.className="imouPlayer-iconfont icon-imou_icon_time_selector_arror_right_n",X=()=>{const ee=An(d.status.beginTime).add(1,"day");R(ee)?(Ee.style.opacity="0.5",Ee.style.cursor="not-allowed",Ee.style.pointerEvents="none"):(Ee.style.opacity="1",Ee.style.cursor="pointer",Ee.style.pointerEvents="auto")},Ee.addEventListener("click",()=>{const O=An(d.status.beginTime).add(1,"day");R(O)||(d.changeImouUrl("beginTime x",O.format("YYYY-MM-DD")),B.textContent=An(O).format("MM/DD"),X())}),X(),oe.append(ue,B,Ee),oe}function ne(){const oe=document.createElement("div");return oe.className="record-type-change",C.forEach(ue=>{const Ee=document.createElement("div");Ee.className="record-type-icon",Ee.setAttribute("id",`imou_player_icon_${ue.type}_${d.playerId}`);const O=document.createElement("div");O.className=`imouPlayer-iconfont imouPlayer-iconfont ${ue.icon}`,(d.status.recordType==="localRecord"&&ue.type==="localRecord"||d.status.recordType!=="localRecord"&&ue.type==="cloud")&&Ee.classList.add("active"),O.addEventListener("click",()=>{x(`imou_player_icon_${ue.type}_${d.playerId}`)}),Ee.appendChild(O),oe.appendChild(Ee)}),oe}const le=document.createElement("div");function me(){const oe=document.createElement("div");oe.className="imou-controls-record-time-container";const ue=document.createElement("div");return ue.className="imou-controls-record-time-container-top",d.status.controlsConfig.includes("calendar")&&ue.appendChild(J()),d.status.controlsConfig.includes("recordChange")&&ue.appendChild(ne()),oe.appendChild(ue),d.status.controlsConfig.includes("recordTimeLine")&&(le.className="imou-controls-record-time-container-bottom",q({height:100}),le.appendChild(Ae)),oe.appendChild(le),oe}let Ae=document.createElement("canvas");function q({height:oe=100}){Ae.className="imou_player_mobile_timeLine",Ae.setAttribute("id",`imou_player_mobile_timeLine__${d.playerId}`),Ae.setAttribute("style",`height: ${oe}px;width:100%;`);const ue=new Df({elem:Ae,width:d.status.width,height:oe,Obj:d,beginTime:An(d.status.beginTime).unix()-An(d.status.beginTime).startOf("day").unix()});d.timeLine=ue}const Z=me(),re=d.status.controlsConfig.some(oe=>["recordTimeLine","recordChange","calendar"].includes(oe));re&&t.appendChild(Z),A.length&&(re||G.classList.add("imou-controls-record-bottom-no-recordTimeLine"),t.appendChild(G));function ae(){const oe=new pu({title:"",maskClosable:!0,onClose:()=>{}});oe.open(` +
          + `);let ue=null;const Ee=document.getElementById("calendar-popup");if(!!Ee)try{ue=new Lf({container:Ee,selectedDate:new Date(d.status.beginTime),eventsData:{},onDateSelect:O=>{d.changeImouUrl("beginTime x",An(O).format("YYYY-MM-DD")),oe.destroy(),B.textContent=An(O).format("MM/DD"),X&&X()},onMonthChange:(O,ee)=>{let ie=ee+1;ll($i(on({},d.status),{year:O,month:ie})).then(ge=>{const _e=(ge==null?void 0:ge.bitmap)||"",we=[];_e.split("").forEach((ke,Se)=>{ke==="1"&&we.push(Se+1)}),ue.addEventsToMonths({[`${O}-${ie<=9?"0"+ie:ie}`]:we})})},onClose:()=>{oe.destroy()}}),d.calendarInstance=ue}catch(O){console.error("\u521B\u5EFA\u65E5\u5386\u7EC4\u4EF6\u5931\u8D25:",O)}}return i}var Fm=d=>d.status.templateMode==="pc"?d.options.type==1?Sm(d):Dm(d):d.options.type==1?Tm(d):Lm(d);const Xr={Opera:"Opera",Chrome:"Chrome",Firefox:"Firefox",Edge:"Edge",Edg:"Edg",IE:"IE",Safari:"Safari"};function Mm(){const{platform:d}=navigator;return d}function Qm(){const{userAgent:d}=navigator;return d.includes("Edge")?Xr.Edge:d.includes("Edg")?Xr.Edg:d.includes("Firefox")?Xr.Firefox:d.includes("Chrome")?Xr.Chrome:d.includes("Safari")?Xr.Safari:d.includes("compatible")&&d.includes("MSIE")&&d.includes("Opera")?Xr.IE:d.includes("Opera")?Xr.Opera:""}function Pm(d){const{userAgent:i}=navigator;return i.split(d)[1].split(".")[0].slice(1)}function Rm(){const d=Qm(),i=Pm(d);let t=!1,s=0;if(console.log("\u662F\u5426\u652F\u6301SharedArrayBuffer\uFF1A",typeof SharedArrayBuffer),typeof SharedArrayBuffer=="undefined")t=!1;else switch(d){case Xr.Chrome:t=i>=91,s=701;break;case Xr.Firefox:t=i>=97,s=702;break;case Xr.Edge:t=i>=91,s=703;break;case Xr.Edg:t=i>=91,s=703;break;default:t=!1}return Mm().indexOf("Win")!=0&&(t=!1),{bSupportMultiThread:t,browserType:d,errorCode:s}}const Nm=(d,i)=>{const t=document.createElement("script");t.src=d,document.head.appendChild(t);var s=!1;typeof i=="function"&&(t.onload=t.onreadystatechange=function(){!s&&(!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,s=!0,i())})};var cl={exports:{}};/*! For license information please see PlaySDKInterface.js.LICENSE.txt */cl.exports,function(d,i){(function(t,s){d.exports=s()})(self,()=>(()=>{var t={87:function(b,C,c){b.exports=function(){var T=T||function(k,S){var E;if(typeof window!="undefined"&&window.crypto&&(E=window.crypto),typeof self!="undefined"&&self.crypto&&(E=self.crypto),typeof globalThis!="undefined"&&globalThis.crypto&&(E=globalThis.crypto),!E&&typeof window!="undefined"&&window.msCrypto&&(E=window.msCrypto),!E&&typeof c.g!="undefined"&&c.g.crypto&&(E=c.g.crypto),!E)try{E=c(477)}catch(K){}var r=function(){if(E){if(typeof E.getRandomValues=="function")try{return E.getRandomValues(new Uint32Array(1))[0]}catch(K){}if(typeof E.randomBytes=="function")try{return E.randomBytes(4).readInt32LE()}catch(K){}}throw new Error("Native crypto module could not be used to get secure random number.")},D=Object.create||function(){function K(){}return function(p){var x;return K.prototype=p,x=new K,K.prototype=null,x}}(),f={},y=f.lib={},Q=y.Base={extend:function(K){var p=D(this);return K&&p.mixIn(K),p.hasOwnProperty("init")&&this.init!==p.init||(p.init=function(){p.$super.init.apply(this,arguments)}),p.init.prototype=p,p.$super=this,p},create:function(){var K=this.extend();return K.init.apply(K,arguments),K},init:function(){},mixIn:function(K){for(var p in K)K.hasOwnProperty(p)&&(this[p]=K[p]);K.hasOwnProperty("toString")&&(this.toString=K.toString)},clone:function(){return this.init.prototype.extend(this)}},g=y.WordArray=Q.extend({init:function(K,p){K=this.words=K||[],this.sigBytes=p!=S?p:4*K.length},toString:function(K){return(K||M).stringify(this)},concat:function(K){var p=this.words,x=K.words,_=this.sigBytes,B=K.sigBytes;if(this.clamp(),_%4)for(var R=0;R>>2]>>>24-R%4*8&255;p[_+R>>>2]|=X<<24-(_+R)%4*8}else for(var J=0;J>>2]=x[J>>>2];return this.sigBytes+=B,this},clamp:function(){var K=this.words,p=this.sigBytes;K[p>>>2]&=4294967295<<32-p%4*8,K.length=k.ceil(p/4)},clone:function(){var K=Q.clone.call(this);return K.words=this.words.slice(0),K},random:function(K){for(var p=[],x=0;x>>2]>>>24-B%4*8&255;_.push((R>>>4).toString(16)),_.push((15&R).toString(16))}return _.join("")},parse:function(K){for(var p=K.length,x=[],_=0;_>>3]|=parseInt(K.substr(_,2),16)<<24-_%8*4;return new g.init(x,p/2)}},z=w.Latin1={stringify:function(K){for(var p=K.words,x=K.sigBytes,_=[],B=0;B>>2]>>>24-B%4*8&255;_.push(String.fromCharCode(R))}return _.join("")},parse:function(K){for(var p=K.length,x=[],_=0;_>>2]|=(255&K.charCodeAt(_))<<24-_%4*8;return new g.init(x,p)}},G=w.Utf8={stringify:function(K){try{return decodeURIComponent(escape(z.stringify(K)))}catch(p){throw new Error("Malformed UTF-8 data")}},parse:function(K){return z.parse(unescape(encodeURIComponent(K)))}},Y=y.BufferedBlockAlgorithm=Q.extend({reset:function(){this._data=new g.init,this._nDataBytes=0},_append:function(K){typeof K=="string"&&(K=G.parse(K)),this._data.concat(K),this._nDataBytes+=K.sigBytes},_process:function(K){var p,x=this._data,_=x.words,B=x.sigBytes,R=this.blockSize,X=B/(4*R),J=(X=K?k.ceil(X):k.max((0|X)-this._minBufferSize,0))*R,ne=k.min(4*J,B);if(J){for(var le=0;le>>2]|=r[y]<<24-y%4*8;S.call(this,f,D)}else S.apply(this,arguments)};E.prototype=k}}(),function(){var k=T,S=k.lib.WordArray,E=k.enc;function r(D){return D<<8&4278255360|D>>>8&16711935}E.Utf16=E.Utf16BE={stringify:function(D){for(var f=D.words,y=D.sigBytes,Q=[],g=0;g>>2]>>>16-g%4*8&65535;Q.push(String.fromCharCode(w))}return Q.join("")},parse:function(D){for(var f=D.length,y=[],Q=0;Q>>1]|=D.charCodeAt(Q)<<16-Q%2*16;return S.create(y,2*f)}},E.Utf16LE={stringify:function(D){for(var f=D.words,y=D.sigBytes,Q=[],g=0;g>>2]>>>16-g%4*8&65535);Q.push(String.fromCharCode(w))}return Q.join("")},parse:function(D){for(var f=D.length,y=[],Q=0;Q>>1]|=r(D.charCodeAt(Q)<<16-Q%2*16);return S.create(y,2*f)}}}(),function(){var k=T,S=k.lib.WordArray;function E(r,D,f){for(var y=[],Q=0,g=0;g>>6-g%4*2;y[Q>>>2]|=w<<24-Q%4*8,Q++}return S.create(y,Q)}k.enc.Base64={stringify:function(r){var D=r.words,f=r.sigBytes,y=this._map;r.clamp();for(var Q=[],g=0;g>>2]>>>24-g%4*8&255)<<16|(D[g+1>>>2]>>>24-(g+1)%4*8&255)<<8|D[g+2>>>2]>>>24-(g+2)%4*8&255,M=0;M<4&&g+.75*M>>6*(3-M)&63));var z=y.charAt(64);if(z)for(;Q.length%4;)Q.push(z);return Q.join("")},parse:function(r){var D=r.length,f=this._map,y=this._reverseMap;if(!y){y=this._reverseMap=[];for(var Q=0;Q>>6-g%4*2;y[Q>>>2]|=w<<24-Q%4*8,Q++}return S.create(y,Q)}k.enc.Base64url={stringify:function(r,D){D===void 0&&(D=!0);var f=r.words,y=r.sigBytes,Q=D?this._safe_map:this._map;r.clamp();for(var g=[],w=0;w>>2]>>>24-w%4*8&255)<<16|(f[w+1>>>2]>>>24-(w+1)%4*8&255)<<8|f[w+2>>>2]>>>24-(w+2)%4*8&255,z=0;z<4&&w+.75*z>>6*(3-z)&63));var G=Q.charAt(64);if(G)for(;g.length%4;)g.push(G);return g.join("")},parse:function(r,D){D===void 0&&(D=!0);var f=r.length,y=D?this._safe_map:this._map,Q=this._reverseMap;if(!Q){Q=this._reverseMap=[];for(var g=0;g>>24)|4278255360&(p<<24|p>>>8)}var x=this._hash.words,_=G[Y+0],B=G[Y+1],R=G[Y+2],X=G[Y+3],J=G[Y+4],ne=G[Y+5],le=G[Y+6],me=G[Y+7],Ae=G[Y+8],q=G[Y+9],Z=G[Y+10],re=G[Y+11],ae=G[Y+12],oe=G[Y+13],ue=G[Y+14],Ee=G[Y+15],O=x[0],ee=x[1],ie=x[2],ge=x[3];O=g(O,ee,ie,ge,_,7,y[0]),ge=g(ge,O,ee,ie,B,12,y[1]),ie=g(ie,ge,O,ee,R,17,y[2]),ee=g(ee,ie,ge,O,X,22,y[3]),O=g(O,ee,ie,ge,J,7,y[4]),ge=g(ge,O,ee,ie,ne,12,y[5]),ie=g(ie,ge,O,ee,le,17,y[6]),ee=g(ee,ie,ge,O,me,22,y[7]),O=g(O,ee,ie,ge,Ae,7,y[8]),ge=g(ge,O,ee,ie,q,12,y[9]),ie=g(ie,ge,O,ee,Z,17,y[10]),ee=g(ee,ie,ge,O,re,22,y[11]),O=g(O,ee,ie,ge,ae,7,y[12]),ge=g(ge,O,ee,ie,oe,12,y[13]),ie=g(ie,ge,O,ee,ue,17,y[14]),O=w(O,ee=g(ee,ie,ge,O,Ee,22,y[15]),ie,ge,B,5,y[16]),ge=w(ge,O,ee,ie,le,9,y[17]),ie=w(ie,ge,O,ee,re,14,y[18]),ee=w(ee,ie,ge,O,_,20,y[19]),O=w(O,ee,ie,ge,ne,5,y[20]),ge=w(ge,O,ee,ie,Z,9,y[21]),ie=w(ie,ge,O,ee,Ee,14,y[22]),ee=w(ee,ie,ge,O,J,20,y[23]),O=w(O,ee,ie,ge,q,5,y[24]),ge=w(ge,O,ee,ie,ue,9,y[25]),ie=w(ie,ge,O,ee,X,14,y[26]),ee=w(ee,ie,ge,O,Ae,20,y[27]),O=w(O,ee,ie,ge,oe,5,y[28]),ge=w(ge,O,ee,ie,R,9,y[29]),ie=w(ie,ge,O,ee,me,14,y[30]),O=M(O,ee=w(ee,ie,ge,O,ae,20,y[31]),ie,ge,ne,4,y[32]),ge=M(ge,O,ee,ie,Ae,11,y[33]),ie=M(ie,ge,O,ee,re,16,y[34]),ee=M(ee,ie,ge,O,ue,23,y[35]),O=M(O,ee,ie,ge,B,4,y[36]),ge=M(ge,O,ee,ie,J,11,y[37]),ie=M(ie,ge,O,ee,me,16,y[38]),ee=M(ee,ie,ge,O,Z,23,y[39]),O=M(O,ee,ie,ge,oe,4,y[40]),ge=M(ge,O,ee,ie,_,11,y[41]),ie=M(ie,ge,O,ee,X,16,y[42]),ee=M(ee,ie,ge,O,le,23,y[43]),O=M(O,ee,ie,ge,q,4,y[44]),ge=M(ge,O,ee,ie,ae,11,y[45]),ie=M(ie,ge,O,ee,Ee,16,y[46]),O=z(O,ee=M(ee,ie,ge,O,R,23,y[47]),ie,ge,_,6,y[48]),ge=z(ge,O,ee,ie,me,10,y[49]),ie=z(ie,ge,O,ee,ue,15,y[50]),ee=z(ee,ie,ge,O,ne,21,y[51]),O=z(O,ee,ie,ge,ae,6,y[52]),ge=z(ge,O,ee,ie,X,10,y[53]),ie=z(ie,ge,O,ee,Z,15,y[54]),ee=z(ee,ie,ge,O,B,21,y[55]),O=z(O,ee,ie,ge,Ae,6,y[56]),ge=z(ge,O,ee,ie,Ee,10,y[57]),ie=z(ie,ge,O,ee,le,15,y[58]),ee=z(ee,ie,ge,O,oe,21,y[59]),O=z(O,ee,ie,ge,J,6,y[60]),ge=z(ge,O,ee,ie,re,10,y[61]),ie=z(ie,ge,O,ee,R,15,y[62]),ee=z(ee,ie,ge,O,q,21,y[63]),x[0]=x[0]+O|0,x[1]=x[1]+ee|0,x[2]=x[2]+ie|0,x[3]=x[3]+ge|0},_doFinalize:function(){var G=this._data,Y=G.words,N=8*this._nDataBytes,K=8*G.sigBytes;Y[K>>>5]|=128<<24-K%32;var p=k.floor(N/4294967296),x=N;Y[15+(K+64>>>9<<4)]=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),Y[14+(K+64>>>9<<4)]=16711935&(x<<8|x>>>24)|4278255360&(x<<24|x>>>8),G.sigBytes=4*(Y.length+1),this._process();for(var _=this._hash,B=_.words,R=0;R<4;R++){var X=B[R];B[R]=16711935&(X<<8|X>>>24)|4278255360&(X<<24|X>>>8)}return _},clone:function(){var G=D.clone.call(this);return G._hash=this._hash.clone(),G}});function g(G,Y,N,K,p,x,_){var B=G+(Y&N|~Y&K)+p+_;return(B<>>32-x)+Y}function w(G,Y,N,K,p,x,_){var B=G+(Y&K|N&~K)+p+_;return(B<>>32-x)+Y}function M(G,Y,N,K,p,x,_){var B=G+(Y^N^K)+p+_;return(B<>>32-x)+Y}function z(G,Y,N,K,p,x,_){var B=G+(N^(Y|~K))+p+_;return(B<>>32-x)+Y}S.MD5=D._createHelper(Q),S.HmacMD5=D._createHmacHelper(Q)}(Math),function(){var k=T,S=k.lib,E=S.WordArray,r=S.Hasher,D=k.algo,f=[],y=D.SHA1=r.extend({_doReset:function(){this._hash=new E.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(Q,g){for(var w=this._hash.words,M=w[0],z=w[1],G=w[2],Y=w[3],N=w[4],K=0;K<80;K++){if(K<16)f[K]=0|Q[g+K];else{var p=f[K-3]^f[K-8]^f[K-14]^f[K-16];f[K]=p<<1|p>>>31}var x=(M<<5|M>>>27)+N+f[K];x+=K<20?1518500249+(z&G|~z&Y):K<40?1859775393+(z^G^Y):K<60?(z&G|z&Y|G&Y)-1894007588:(z^G^Y)-899497514,N=Y,Y=G,G=z<<30|z>>>2,z=M,M=x}w[0]=w[0]+M|0,w[1]=w[1]+z|0,w[2]=w[2]+G|0,w[3]=w[3]+Y|0,w[4]=w[4]+N|0},_doFinalize:function(){var Q=this._data,g=Q.words,w=8*this._nDataBytes,M=8*Q.sigBytes;return g[M>>>5]|=128<<24-M%32,g[14+(M+64>>>9<<4)]=Math.floor(w/4294967296),g[15+(M+64>>>9<<4)]=w,Q.sigBytes=4*g.length,this._process(),this._hash},clone:function(){var Q=r.clone.call(this);return Q._hash=this._hash.clone(),Q}});k.SHA1=r._createHelper(y),k.HmacSHA1=r._createHmacHelper(y)}(),function(k){var S=T,E=S.lib,r=E.WordArray,D=E.Hasher,f=S.algo,y=[],Q=[];(function(){function M(N){for(var K=k.sqrt(N),p=2;p<=K;p++)if(!(N%p))return!1;return!0}function z(N){return 4294967296*(N-(0|N))|0}for(var G=2,Y=0;Y<64;)M(G)&&(Y<8&&(y[Y]=z(k.pow(G,.5))),Q[Y]=z(k.pow(G,.3333333333333333)),Y++),G++})();var g=[],w=f.SHA256=D.extend({_doReset:function(){this._hash=new r.init(y.slice(0))},_doProcessBlock:function(M,z){for(var G=this._hash.words,Y=G[0],N=G[1],K=G[2],p=G[3],x=G[4],_=G[5],B=G[6],R=G[7],X=0;X<64;X++){if(X<16)g[X]=0|M[z+X];else{var J=g[X-15],ne=(J<<25|J>>>7)^(J<<14|J>>>18)^J>>>3,le=g[X-2],me=(le<<15|le>>>17)^(le<<13|le>>>19)^le>>>10;g[X]=ne+g[X-7]+me+g[X-16]}var Ae=Y&N^Y&K^N&K,q=(Y<<30|Y>>>2)^(Y<<19|Y>>>13)^(Y<<10|Y>>>22),Z=R+((x<<26|x>>>6)^(x<<21|x>>>11)^(x<<7|x>>>25))+(x&_^~x&B)+Q[X]+g[X];R=B,B=_,_=x,x=p+Z|0,p=K,K=N,N=Y,Y=Z+(q+Ae)|0}G[0]=G[0]+Y|0,G[1]=G[1]+N|0,G[2]=G[2]+K|0,G[3]=G[3]+p|0,G[4]=G[4]+x|0,G[5]=G[5]+_|0,G[6]=G[6]+B|0,G[7]=G[7]+R|0},_doFinalize:function(){var M=this._data,z=M.words,G=8*this._nDataBytes,Y=8*M.sigBytes;return z[Y>>>5]|=128<<24-Y%32,z[14+(Y+64>>>9<<4)]=k.floor(G/4294967296),z[15+(Y+64>>>9<<4)]=G,M.sigBytes=4*z.length,this._process(),this._hash},clone:function(){var M=D.clone.call(this);return M._hash=this._hash.clone(),M}});S.SHA256=D._createHelper(w),S.HmacSHA256=D._createHmacHelper(w)}(Math),function(){var k=T,S=k.lib.WordArray,E=k.algo,r=E.SHA256,D=E.SHA224=r.extend({_doReset:function(){this._hash=new S.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var f=r._doFinalize.call(this);return f.sigBytes-=4,f}});k.SHA224=r._createHelper(D),k.HmacSHA224=r._createHmacHelper(D)}(),function(){var k=T,S=k.lib.Hasher,E=k.x64,r=E.Word,D=E.WordArray,f=k.algo;function y(){return r.create.apply(r,arguments)}var Q=[y(1116352408,3609767458),y(1899447441,602891725),y(3049323471,3964484399),y(3921009573,2173295548),y(961987163,4081628472),y(1508970993,3053834265),y(2453635748,2937671579),y(2870763221,3664609560),y(3624381080,2734883394),y(310598401,1164996542),y(607225278,1323610764),y(1426881987,3590304994),y(1925078388,4068182383),y(2162078206,991336113),y(2614888103,633803317),y(3248222580,3479774868),y(3835390401,2666613458),y(4022224774,944711139),y(264347078,2341262773),y(604807628,2007800933),y(770255983,1495990901),y(1249150122,1856431235),y(1555081692,3175218132),y(1996064986,2198950837),y(2554220882,3999719339),y(2821834349,766784016),y(2952996808,2566594879),y(3210313671,3203337956),y(3336571891,1034457026),y(3584528711,2466948901),y(113926993,3758326383),y(338241895,168717936),y(666307205,1188179964),y(773529912,1546045734),y(1294757372,1522805485),y(1396182291,2643833823),y(1695183700,2343527390),y(1986661051,1014477480),y(2177026350,1206759142),y(2456956037,344077627),y(2730485921,1290863460),y(2820302411,3158454273),y(3259730800,3505952657),y(3345764771,106217008),y(3516065817,3606008344),y(3600352804,1432725776),y(4094571909,1467031594),y(275423344,851169720),y(430227734,3100823752),y(506948616,1363258195),y(659060556,3750685593),y(883997877,3785050280),y(958139571,3318307427),y(1322822218,3812723403),y(1537002063,2003034995),y(1747873779,3602036899),y(1955562222,1575990012),y(2024104815,1125592928),y(2227730452,2716904306),y(2361852424,442776044),y(2428436474,593698344),y(2756734187,3733110249),y(3204031479,2999351573),y(3329325298,3815920427),y(3391569614,3928383900),y(3515267271,566280711),y(3940187606,3454069534),y(4118630271,4000239992),y(116418474,1914138554),y(174292421,2731055270),y(289380356,3203993006),y(460393269,320620315),y(685471733,587496836),y(852142971,1086792851),y(1017036298,365543100),y(1126000580,2618297676),y(1288033470,3409855158),y(1501505948,4234509866),y(1607167915,987167468),y(1816402316,1246189591)],g=[];(function(){for(var M=0;M<80;M++)g[M]=y()})();var w=f.SHA512=S.extend({_doReset:function(){this._hash=new D.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(M,z){for(var G=this._hash.words,Y=G[0],N=G[1],K=G[2],p=G[3],x=G[4],_=G[5],B=G[6],R=G[7],X=Y.high,J=Y.low,ne=N.high,le=N.low,me=K.high,Ae=K.low,q=p.high,Z=p.low,re=x.high,ae=x.low,oe=_.high,ue=_.low,Ee=B.high,O=B.low,ee=R.high,ie=R.low,ge=X,_e=J,we=ne,ke=le,Se=me,Te=Ae,Re=q,Ne=Z,Ye=re,Je=ae,rt=oe,We=ue,Ve=Ee,Oe=O,ft=ee,ht=ie,qt=0;qt<80;qt++){var bn,sn,gn=g[qt];if(qt<16)sn=gn.high=0|M[z+2*qt],bn=gn.low=0|M[z+2*qt+1];else{var kn=g[qt-15],Yn=kn.high,Nn=kn.low,pi=(Yn>>>1|Nn<<31)^(Yn>>>8|Nn<<24)^Yn>>>7,Ln=(Nn>>>1|Yn<<31)^(Nn>>>8|Yn<<24)^(Nn>>>7|Yn<<25),si=g[qt-2],Xi=si.high,or=si.low,jr=(Xi>>>19|or<<13)^(Xi<<3|or>>>29)^Xi>>>6,ji=(or>>>19|Xi<<13)^(or<<3|Xi>>>29)^(or>>>6|Xi<<26),br=g[qt-7],Zr=br.high,ea=br.low,Wr=g[qt-16],_r=Wr.high,$=Wr.low;sn=(sn=(sn=pi+Zr+((bn=Ln+ea)>>>0>>0?1:0))+jr+((bn+=ji)>>>0>>0?1:0))+_r+((bn+=$)>>>0<$>>>0?1:0),gn.high=sn,gn.low=bn}var F,n=Ye&rt^~Ye&Ve,v=Je&We^~Je&Oe,I=ge&we^ge&Se^we&Se,U=_e&ke^_e&Te^ke&Te,W=(ge>>>28|_e<<4)^(ge<<30|_e>>>2)^(ge<<25|_e>>>7),fe=(_e>>>28|ge<<4)^(_e<<30|ge>>>2)^(_e<<25|ge>>>7),pe=(Ye>>>14|Je<<18)^(Ye>>>18|Je<<14)^(Ye<<23|Je>>>9),ve=(Je>>>14|Ye<<18)^(Je>>>18|Ye<<14)^(Je<<23|Ye>>>9),Ue=Q[qt],ze=Ue.high,Le=Ue.low,Qe=ft+pe+((F=ht+ve)>>>0>>0?1:0),lt=fe+U;ft=Ve,ht=Oe,Ve=rt,Oe=We,rt=Ye,We=Je,Ye=Re+(Qe=(Qe=(Qe=Qe+n+((F+=v)>>>0>>0?1:0))+ze+((F+=Le)>>>0>>0?1:0))+sn+((F+=bn)>>>0>>0?1:0))+((Je=Ne+F|0)>>>0>>0?1:0)|0,Re=Se,Ne=Te,Se=we,Te=ke,we=ge,ke=_e,ge=Qe+(W+I+(lt>>>0>>0?1:0))+((_e=F+lt|0)>>>0>>0?1:0)|0}J=Y.low=J+_e,Y.high=X+ge+(J>>>0<_e>>>0?1:0),le=N.low=le+ke,N.high=ne+we+(le>>>0>>0?1:0),Ae=K.low=Ae+Te,K.high=me+Se+(Ae>>>0>>0?1:0),Z=p.low=Z+Ne,p.high=q+Re+(Z>>>0>>0?1:0),ae=x.low=ae+Je,x.high=re+Ye+(ae>>>0>>0?1:0),ue=_.low=ue+We,_.high=oe+rt+(ue>>>0>>0?1:0),O=B.low=O+Oe,B.high=Ee+Ve+(O>>>0>>0?1:0),ie=R.low=ie+ht,R.high=ee+ft+(ie>>>0>>0?1:0)},_doFinalize:function(){var M=this._data,z=M.words,G=8*this._nDataBytes,Y=8*M.sigBytes;return z[Y>>>5]|=128<<24-Y%32,z[30+(Y+128>>>10<<5)]=Math.floor(G/4294967296),z[31+(Y+128>>>10<<5)]=G,M.sigBytes=4*z.length,this._process(),this._hash.toX32()},clone:function(){var M=S.clone.call(this);return M._hash=this._hash.clone(),M},blockSize:32});k.SHA512=S._createHelper(w),k.HmacSHA512=S._createHmacHelper(w)}(),function(){var k=T,S=k.x64,E=S.Word,r=S.WordArray,D=k.algo,f=D.SHA512,y=D.SHA384=f.extend({_doReset:function(){this._hash=new r.init([new E.init(3418070365,3238371032),new E.init(1654270250,914150663),new E.init(2438529370,812702999),new E.init(355462360,4144912697),new E.init(1731405415,4290775857),new E.init(2394180231,1750603025),new E.init(3675008525,1694076839),new E.init(1203062813,3204075428)])},_doFinalize:function(){var Q=f._doFinalize.call(this);return Q.sigBytes-=16,Q}});k.SHA384=f._createHelper(y),k.HmacSHA384=f._createHmacHelper(y)}(),function(k){var S=T,E=S.lib,r=E.WordArray,D=E.Hasher,f=S.x64.Word,y=S.algo,Q=[],g=[],w=[];(function(){for(var G=1,Y=0,N=0;N<24;N++){Q[G+5*Y]=(N+1)*(N+2)/2%64;var K=(2*G+3*Y)%5;G=Y%5,Y=K}for(G=0;G<5;G++)for(Y=0;Y<5;Y++)g[G+5*Y]=Y+(2*G+3*Y)%5*5;for(var p=1,x=0;x<24;x++){for(var _=0,B=0,R=0;R<7;R++){if(1&p){var X=(1<>>24)|4278255360&(x<<24|x>>>8),_=16711935&(_<<8|_>>>24)|4278255360&(_<<24|_>>>8),(ie=N[p]).high^=_,ie.low^=x}for(var B=0;B<24;B++){for(var R=0;R<5;R++){for(var X=0,J=0,ne=0;ne<5;ne++)X^=(ie=N[R+5*ne]).high,J^=ie.low;var le=M[R];le.high=X,le.low=J}for(R=0;R<5;R++){var me=M[(R+4)%5],Ae=M[(R+1)%5],q=Ae.high,Z=Ae.low;for(X=me.high^(q<<1|Z>>>31),J=me.low^(Z<<1|q>>>31),ne=0;ne<5;ne++)(ie=N[R+5*ne]).high^=X,ie.low^=J}for(var re=1;re<25;re++){var ae=(ie=N[re]).high,oe=ie.low,ue=Q[re];ue<32?(X=ae<>>32-ue,J=oe<>>32-ue):(X=oe<>>64-ue,J=ae<>>64-ue);var Ee=M[g[re]];Ee.high=X,Ee.low=J}var O=M[0],ee=N[0];for(O.high=ee.high,O.low=ee.low,R=0;R<5;R++)for(ne=0;ne<5;ne++){var ie=N[re=R+5*ne],ge=M[re],_e=M[(R+1)%5+5*ne],we=M[(R+2)%5+5*ne];ie.high=ge.high^~_e.high&we.high,ie.low=ge.low^~_e.low&we.low}ie=N[0];var ke=w[B];ie.high^=ke.high,ie.low^=ke.low}},_doFinalize:function(){var G=this._data,Y=G.words,N=(this._nDataBytes,8*G.sigBytes),K=32*this.blockSize;Y[N>>>5]|=1<<24-N%32,Y[(k.ceil((N+1)/K)*K>>>5)-1]|=128,G.sigBytes=4*Y.length,this._process();for(var p=this._state,x=this.cfg.outputLength/8,_=x/8,B=[],R=0;R<_;R++){var X=p[R],J=X.high,ne=X.low;J=16711935&(J<<8|J>>>24)|4278255360&(J<<24|J>>>8),ne=16711935&(ne<<8|ne>>>24)|4278255360&(ne<<24|ne>>>8),B.push(ne),B.push(J)}return new r.init(B,x)},clone:function(){for(var G=D.clone.call(this),Y=G._state=this._state.slice(0),N=0;N<25;N++)Y[N]=Y[N].clone();return G}});S.SHA3=D._createHelper(z),S.HmacSHA3=D._createHmacHelper(z)}(Math),function(){var k=T,S=k.lib,E=S.WordArray,r=S.Hasher,D=k.algo,f=E.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),y=E.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),Q=E.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),g=E.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),w=E.create([0,1518500249,1859775393,2400959708,2840853838]),M=E.create([1352829926,1548603684,1836072691,2053994217,0]),z=D.RIPEMD160=r.extend({_doReset:function(){this._hash=E.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(_,B){for(var R=0;R<16;R++){var X=B+R,J=_[X];_[X]=16711935&(J<<8|J>>>24)|4278255360&(J<<24|J>>>8)}var ne,le,me,Ae,q,Z,re,ae,oe,ue,Ee,O=this._hash.words,ee=w.words,ie=M.words,ge=f.words,_e=y.words,we=Q.words,ke=g.words;for(Z=ne=O[0],re=le=O[1],ae=me=O[2],oe=Ae=O[3],ue=q=O[4],R=0;R<80;R+=1)Ee=ne+_[B+ge[R]]|0,Ee+=R<16?G(le,me,Ae)+ee[0]:R<32?Y(le,me,Ae)+ee[1]:R<48?N(le,me,Ae)+ee[2]:R<64?K(le,me,Ae)+ee[3]:p(le,me,Ae)+ee[4],Ee=(Ee=x(Ee|=0,we[R]))+q|0,ne=q,q=Ae,Ae=x(me,10),me=le,le=Ee,Ee=Z+_[B+_e[R]]|0,Ee+=R<16?p(re,ae,oe)+ie[0]:R<32?K(re,ae,oe)+ie[1]:R<48?N(re,ae,oe)+ie[2]:R<64?Y(re,ae,oe)+ie[3]:G(re,ae,oe)+ie[4],Ee=(Ee=x(Ee|=0,ke[R]))+ue|0,Z=ue,ue=oe,oe=x(ae,10),ae=re,re=Ee;Ee=O[1]+me+oe|0,O[1]=O[2]+Ae+ue|0,O[2]=O[3]+q+Z|0,O[3]=O[4]+ne+re|0,O[4]=O[0]+le+ae|0,O[0]=Ee},_doFinalize:function(){var _=this._data,B=_.words,R=8*this._nDataBytes,X=8*_.sigBytes;B[X>>>5]|=128<<24-X%32,B[14+(X+64>>>9<<4)]=16711935&(R<<8|R>>>24)|4278255360&(R<<24|R>>>8),_.sigBytes=4*(B.length+1),this._process();for(var J=this._hash,ne=J.words,le=0;le<5;le++){var me=ne[le];ne[le]=16711935&(me<<8|me>>>24)|4278255360&(me<<24|me>>>8)}return J},clone:function(){var _=r.clone.call(this);return _._hash=this._hash.clone(),_}});function G(_,B,R){return _^B^R}function Y(_,B,R){return _&B|~_&R}function N(_,B,R){return(_|~B)^R}function K(_,B,R){return _&R|B&~R}function p(_,B,R){return _^(B|~R)}function x(_,B){return _<>>32-B}k.RIPEMD160=r._createHelper(z),k.HmacRIPEMD160=r._createHmacHelper(z)}(),function(){var k=T,S=k.lib.Base,E=k.enc.Utf8;k.algo.HMAC=S.extend({init:function(r,D){r=this._hasher=new r.init,typeof D=="string"&&(D=E.parse(D));var f=r.blockSize,y=4*f;D.sigBytes>y&&(D=r.finalize(D)),D.clamp();for(var Q=this._oKey=D.clone(),g=this._iKey=D.clone(),w=Q.words,M=g.words,z=0;z>>2];B.sigBytes-=R}},N=(E.BlockCipher=w.extend({cfg:w.cfg.extend({mode:G,padding:Y}),reset:function(){var B;w.reset.call(this);var R=this.cfg,X=R.iv,J=R.mode;this._xformMode==this._ENC_XFORM_MODE?B=J.createEncryptor:(B=J.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==B?this._mode.init(this,X&&X.words):(this._mode=B.call(J,this,X&&X.words),this._mode.__creator=B)},_doProcessBlock:function(B,R){this._mode.processBlock(B,R)},_doFinalize:function(){var B,R=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(R.pad(this._data,this.blockSize),B=this._process(!0)):(B=this._process(!0),R.unpad(B)),B},blockSize:4}),E.CipherParams=r.extend({init:function(B){this.mixIn(B)},toString:function(B){return(B||this.formatter).stringify(this)}})),K=(S.format={}).OpenSSL={stringify:function(B){var R=B.ciphertext,X=B.salt;return(X?D.create([1398893684,1701076831]).concat(X).concat(R):R).toString(Q)},parse:function(B){var R,X=Q.parse(B),J=X.words;return J[0]==1398893684&&J[1]==1701076831&&(R=D.create(J.slice(2,4)),J.splice(0,4),X.sigBytes-=16),N.create({ciphertext:X,salt:R})}},p=E.SerializableCipher=r.extend({cfg:r.extend({format:K}),encrypt:function(B,R,X,J){J=this.cfg.extend(J);var ne=B.createEncryptor(X,J),le=ne.finalize(R),me=ne.cfg;return N.create({ciphertext:le,key:X,iv:me.iv,algorithm:B,mode:me.mode,padding:me.padding,blockSize:B.blockSize,formatter:J.format})},decrypt:function(B,R,X,J){return J=this.cfg.extend(J),R=this._parse(R,J.format),B.createDecryptor(X,J).finalize(R.ciphertext)},_parse:function(B,R){return typeof B=="string"?R.parse(B,this):B}}),x=(S.kdf={}).OpenSSL={execute:function(B,R,X,J,ne){if(J||(J=D.random(8)),ne)le=g.create({keySize:R+X,hasher:ne}).compute(B,J);else var le=g.create({keySize:R+X}).compute(B,J);var me=D.create(le.words.slice(R),4*X);return le.sigBytes=4*R,N.create({key:le,iv:me,salt:J})}},_=E.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:x}),encrypt:function(B,R,X,J){var ne=(J=this.cfg.extend(J)).kdf.execute(X,B.keySize,B.ivSize,J.salt,J.hasher);J.iv=ne.iv;var le=p.encrypt.call(this,B,R,ne.key,J);return le.mixIn(ne),le},decrypt:function(B,R,X,J){J=this.cfg.extend(J),R=this._parse(R,J.format);var ne=J.kdf.execute(X,B.keySize,B.ivSize,R.salt,J.hasher);return J.iv=ne.iv,p.decrypt.call(this,B,R,ne.key,J)}})}(),T.mode.CFB=function(){var k=T.lib.BlockCipherMode.extend();function S(E,r,D,f){var y,Q=this._iv;Q?(y=Q.slice(0),this._iv=void 0):y=this._prevBlock,f.encryptBlock(y,0);for(var g=0;g>24&255)===255){var f=D>>16&255,y=D>>8&255,Q=255&D;f===255?(f=0,y===255?(y=0,Q===255?Q=0:++Q):++y):++f,D=0,D+=f<<16,D+=y<<8,D+=Q}else D+=16777216;return D}function E(D){return(D[0]=S(D[0]))===0&&(D[1]=S(D[1])),D}var r=k.Encryptor=k.extend({processBlock:function(D,f){var y=this._cipher,Q=y.blockSize,g=this._iv,w=this._counter;g&&(w=this._counter=g.slice(0),this._iv=void 0),E(w);var M=w.slice(0);y.encryptBlock(M,0);for(var z=0;z>>2]|=D<<24-f%4*8,k.sigBytes+=D},unpad:function(k){var S=255&k.words[k.sigBytes-1>>>2];k.sigBytes-=S}},T.pad.Iso10126={pad:function(k,S){var E=4*S,r=E-k.sigBytes%E;k.concat(T.lib.WordArray.random(r-1)).concat(T.lib.WordArray.create([r<<24],1))},unpad:function(k){var S=255&k.words[k.sigBytes-1>>>2];k.sigBytes-=S}},T.pad.Iso97971={pad:function(k,S){k.concat(T.lib.WordArray.create([2147483648],1)),T.pad.ZeroPadding.pad(k,S)},unpad:function(k){T.pad.ZeroPadding.unpad(k),k.sigBytes--}},T.pad.ZeroPadding={pad:function(k,S){var E=4*S;k.clamp(),k.sigBytes+=E-(k.sigBytes%E||E)},unpad:function(k){var S=k.words,E=k.sigBytes-1;for(E=k.sigBytes-1;E>=0;E--)if(S[E>>>2]>>>24-E%4*8&255){k.sigBytes=E+1;break}}},T.pad.NoPadding={pad:function(){},unpad:function(){}},function(){var k=T,S=k.lib.CipherParams,E=k.enc.Hex;k.format.Hex={stringify:function(r){return r.ciphertext.toString(E)},parse:function(r){var D=E.parse(r);return S.create({ciphertext:D})}}}(),function(){var k=T,S=k.lib.BlockCipher,E=k.algo,r=[],D=[],f=[],y=[],Q=[],g=[],w=[],M=[],z=[],G=[];(function(){for(var K=[],p=0;p<256;p++)K[p]=p<128?p<<1:p<<1^283;var x=0,_=0;for(p=0;p<256;p++){var B=_^_<<1^_<<2^_<<3^_<<4;B=B>>>8^255&B^99,r[x]=B,D[B]=x;var R=K[x],X=K[R],J=K[X],ne=257*K[B]^16843008*B;f[x]=ne<<24|ne>>>8,y[x]=ne<<16|ne>>>16,Q[x]=ne<<8|ne>>>24,g[x]=ne,ne=16843009*J^65537*X^257*R^16843008*x,w[B]=ne<<24|ne>>>8,M[B]=ne<<16|ne>>>16,z[B]=ne<<8|ne>>>24,G[B]=ne,x?(x=R^K[K[K[J^R]]],_^=K[K[_]]):x=_=1}})();var Y=[0,1,2,4,8,16,32,64,128,27,54],N=E.AES=S.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var K=this._keyPriorReset=this._key,p=K.words,x=K.sigBytes/4,_=4*((this._nRounds=x+6)+1),B=this._keySchedule=[],R=0;R<_;R++)R6&&R%x==4&&(ne=r[ne>>>24]<<24|r[ne>>>16&255]<<16|r[ne>>>8&255]<<8|r[255&ne]):(ne=r[(ne=ne<<8|ne>>>24)>>>24]<<24|r[ne>>>16&255]<<16|r[ne>>>8&255]<<8|r[255&ne],ne^=Y[R/x|0]<<24),B[R]=B[R-x]^ne);for(var X=this._invKeySchedule=[],J=0;J<_;J++){if(R=_-J,J%4)var ne=B[R];else ne=B[R-4];X[J]=J<4||R<=4?ne:w[r[ne>>>24]]^M[r[ne>>>16&255]]^z[r[ne>>>8&255]]^G[r[255&ne]]}}},encryptBlock:function(K,p){this._doCryptBlock(K,p,this._keySchedule,f,y,Q,g,r)},decryptBlock:function(K,p){var x=K[p+1];K[p+1]=K[p+3],K[p+3]=x,this._doCryptBlock(K,p,this._invKeySchedule,w,M,z,G,D),x=K[p+1],K[p+1]=K[p+3],K[p+3]=x},_doCryptBlock:function(K,p,x,_,B,R,X,J){for(var ne=this._nRounds,le=K[p]^x[0],me=K[p+1]^x[1],Ae=K[p+2]^x[2],q=K[p+3]^x[3],Z=4,re=1;re>>24]^B[me>>>16&255]^R[Ae>>>8&255]^X[255&q]^x[Z++],oe=_[me>>>24]^B[Ae>>>16&255]^R[q>>>8&255]^X[255&le]^x[Z++],ue=_[Ae>>>24]^B[q>>>16&255]^R[le>>>8&255]^X[255&me]^x[Z++],Ee=_[q>>>24]^B[le>>>16&255]^R[me>>>8&255]^X[255&Ae]^x[Z++];le=ae,me=oe,Ae=ue,q=Ee}ae=(J[le>>>24]<<24|J[me>>>16&255]<<16|J[Ae>>>8&255]<<8|J[255&q])^x[Z++],oe=(J[me>>>24]<<24|J[Ae>>>16&255]<<16|J[q>>>8&255]<<8|J[255&le])^x[Z++],ue=(J[Ae>>>24]<<24|J[q>>>16&255]<<16|J[le>>>8&255]<<8|J[255&me])^x[Z++],Ee=(J[q>>>24]<<24|J[le>>>16&255]<<16|J[me>>>8&255]<<8|J[255&Ae])^x[Z++],K[p]=ae,K[p+1]=oe,K[p+2]=ue,K[p+3]=Ee},keySize:8});k.AES=S._createHelper(N)}(),function(){var k=T,S=k.lib,E=S.WordArray,r=S.BlockCipher,D=k.algo,f=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],y=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],Q=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],g=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],w=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],M=D.DES=r.extend({_doReset:function(){for(var N=this._key.words,K=[],p=0;p<56;p++){var x=f[p]-1;K[p]=N[x>>>5]>>>31-x%32&1}for(var _=this._subKeys=[],B=0;B<16;B++){var R=_[B]=[],X=Q[B];for(p=0;p<24;p++)R[p/6|0]|=K[(y[p]-1+X)%28]<<31-p%6,R[4+(p/6|0)]|=K[28+(y[p+24]-1+X)%28]<<31-p%6;for(R[0]=R[0]<<1|R[0]>>>31,p=1;p<7;p++)R[p]=R[p]>>>4*(p-1)+3;R[7]=R[7]<<5|R[7]>>>27}var J=this._invSubKeys=[];for(p=0;p<16;p++)J[p]=_[15-p]},encryptBlock:function(N,K){this._doCryptBlock(N,K,this._subKeys)},decryptBlock:function(N,K){this._doCryptBlock(N,K,this._invSubKeys)},_doCryptBlock:function(N,K,p){this._lBlock=N[K],this._rBlock=N[K+1],z.call(this,4,252645135),z.call(this,16,65535),G.call(this,2,858993459),G.call(this,8,16711935),z.call(this,1,1431655765);for(var x=0;x<16;x++){for(var _=p[x],B=this._lBlock,R=this._rBlock,X=0,J=0;J<8;J++)X|=g[J][((R^_[J])&w[J])>>>0];this._lBlock=R,this._rBlock=B^X}var ne=this._lBlock;this._lBlock=this._rBlock,this._rBlock=ne,z.call(this,1,1431655765),G.call(this,8,16711935),G.call(this,2,858993459),z.call(this,16,65535),z.call(this,4,252645135),N[K]=this._lBlock,N[K+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function z(N,K){var p=(this._lBlock>>>N^this._rBlock)&K;this._rBlock^=p,this._lBlock^=p<>>N^this._lBlock)&K;this._lBlock^=p,this._rBlock^=p<192.");var K=N.slice(0,2),p=N.length<4?N.slice(0,2):N.slice(2,4),x=N.length<6?N.slice(0,2):N.slice(4,6);this._des1=M.createEncryptor(E.create(K)),this._des2=M.createEncryptor(E.create(p)),this._des3=M.createEncryptor(E.create(x))},encryptBlock:function(N,K){this._des1.encryptBlock(N,K),this._des2.decryptBlock(N,K),this._des3.encryptBlock(N,K)},decryptBlock:function(N,K){this._des3.decryptBlock(N,K),this._des2.encryptBlock(N,K),this._des1.decryptBlock(N,K)},keySize:6,ivSize:2,blockSize:2});k.TripleDES=r._createHelper(Y)}(),function(){var k=T,S=k.lib.StreamCipher,E=k.algo,r=E.RC4=S.extend({_doReset:function(){for(var y=this._key,Q=y.words,g=y.sigBytes,w=this._S=[],M=0;M<256;M++)w[M]=M;M=0;for(var z=0;M<256;M++){var G=M%g,Y=Q[G>>>2]>>>24-G%4*8&255;z=(z+w[M]+Y)%256;var N=w[M];w[M]=w[z],w[z]=N}this._i=this._j=0},_doProcessBlock:function(y,Q){y[Q]^=D.call(this)},keySize:8,ivSize:0});function D(){for(var y=this._S,Q=this._i,g=this._j,w=0,M=0;M<4;M++){g=(g+y[Q=(Q+1)%256])%256;var z=y[Q];y[Q]=y[g],y[g]=z,w|=y[(y[Q]+y[g])%256]<<24-8*M}return this._i=Q,this._j=g,w}k.RC4=S._createHelper(r);var f=E.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var y=this.cfg.drop;y>0;y--)D.call(this)}});k.RC4Drop=S._createHelper(f)}(),function(){var k=T,S=k.lib.StreamCipher,E=k.algo,r=[],D=[],f=[],y=E.Rabbit=S.extend({_doReset:function(){for(var g=this._key.words,w=this.cfg.iv,M=0;M<4;M++)g[M]=16711935&(g[M]<<8|g[M]>>>24)|4278255360&(g[M]<<24|g[M]>>>8);var z=this._X=[g[0],g[3]<<16|g[2]>>>16,g[1],g[0]<<16|g[3]>>>16,g[2],g[1]<<16|g[0]>>>16,g[3],g[2]<<16|g[1]>>>16],G=this._C=[g[2]<<16|g[2]>>>16,4294901760&g[0]|65535&g[1],g[3]<<16|g[3]>>>16,4294901760&g[1]|65535&g[2],g[0]<<16|g[0]>>>16,4294901760&g[2]|65535&g[3],g[1]<<16|g[1]>>>16,4294901760&g[3]|65535&g[0]];for(this._b=0,M=0;M<4;M++)Q.call(this);for(M=0;M<8;M++)G[M]^=z[M+4&7];if(w){var Y=w.words,N=Y[0],K=Y[1],p=16711935&(N<<8|N>>>24)|4278255360&(N<<24|N>>>8),x=16711935&(K<<8|K>>>24)|4278255360&(K<<24|K>>>8),_=p>>>16|4294901760&x,B=x<<16|65535&p;for(G[0]^=p,G[1]^=_,G[2]^=x,G[3]^=B,G[4]^=p,G[5]^=_,G[6]^=x,G[7]^=B,M=0;M<4;M++)Q.call(this)}},_doProcessBlock:function(g,w){var M=this._X;Q.call(this),r[0]=M[0]^M[5]>>>16^M[3]<<16,r[1]=M[2]^M[7]>>>16^M[5]<<16,r[2]=M[4]^M[1]>>>16^M[7]<<16,r[3]=M[6]^M[3]>>>16^M[1]<<16;for(var z=0;z<4;z++)r[z]=16711935&(r[z]<<8|r[z]>>>24)|4278255360&(r[z]<<24|r[z]>>>8),g[w+z]^=r[z]},blockSize:4,ivSize:2});function Q(){for(var g=this._X,w=this._C,M=0;M<8;M++)D[M]=w[M];for(w[0]=w[0]+1295307597+this._b|0,w[1]=w[1]+3545052371+(w[0]>>>0>>0?1:0)|0,w[2]=w[2]+886263092+(w[1]>>>0>>0?1:0)|0,w[3]=w[3]+1295307597+(w[2]>>>0>>0?1:0)|0,w[4]=w[4]+3545052371+(w[3]>>>0>>0?1:0)|0,w[5]=w[5]+886263092+(w[4]>>>0>>0?1:0)|0,w[6]=w[6]+1295307597+(w[5]>>>0>>0?1:0)|0,w[7]=w[7]+3545052371+(w[6]>>>0>>0?1:0)|0,this._b=w[7]>>>0>>0?1:0,M=0;M<8;M++){var z=g[M]+w[M],G=65535&z,Y=z>>>16,N=((G*G>>>17)+G*Y>>>15)+Y*Y,K=((4294901760&z)*z|0)+((65535&z)*z|0);f[M]=N^K}g[0]=f[0]+(f[7]<<16|f[7]>>>16)+(f[6]<<16|f[6]>>>16)|0,g[1]=f[1]+(f[0]<<8|f[0]>>>24)+f[7]|0,g[2]=f[2]+(f[1]<<16|f[1]>>>16)+(f[0]<<16|f[0]>>>16)|0,g[3]=f[3]+(f[2]<<8|f[2]>>>24)+f[1]|0,g[4]=f[4]+(f[3]<<16|f[3]>>>16)+(f[2]<<16|f[2]>>>16)|0,g[5]=f[5]+(f[4]<<8|f[4]>>>24)+f[3]|0,g[6]=f[6]+(f[5]<<16|f[5]>>>16)+(f[4]<<16|f[4]>>>16)|0,g[7]=f[7]+(f[6]<<8|f[6]>>>24)+f[5]|0}k.Rabbit=S._createHelper(y)}(),function(){var k=T,S=k.lib.StreamCipher,E=k.algo,r=[],D=[],f=[],y=E.RabbitLegacy=S.extend({_doReset:function(){var g=this._key.words,w=this.cfg.iv,M=this._X=[g[0],g[3]<<16|g[2]>>>16,g[1],g[0]<<16|g[3]>>>16,g[2],g[1]<<16|g[0]>>>16,g[3],g[2]<<16|g[1]>>>16],z=this._C=[g[2]<<16|g[2]>>>16,4294901760&g[0]|65535&g[1],g[3]<<16|g[3]>>>16,4294901760&g[1]|65535&g[2],g[0]<<16|g[0]>>>16,4294901760&g[2]|65535&g[3],g[1]<<16|g[1]>>>16,4294901760&g[3]|65535&g[0]];this._b=0;for(var G=0;G<4;G++)Q.call(this);for(G=0;G<8;G++)z[G]^=M[G+4&7];if(w){var Y=w.words,N=Y[0],K=Y[1],p=16711935&(N<<8|N>>>24)|4278255360&(N<<24|N>>>8),x=16711935&(K<<8|K>>>24)|4278255360&(K<<24|K>>>8),_=p>>>16|4294901760&x,B=x<<16|65535&p;for(z[0]^=p,z[1]^=_,z[2]^=x,z[3]^=B,z[4]^=p,z[5]^=_,z[6]^=x,z[7]^=B,G=0;G<4;G++)Q.call(this)}},_doProcessBlock:function(g,w){var M=this._X;Q.call(this),r[0]=M[0]^M[5]>>>16^M[3]<<16,r[1]=M[2]^M[7]>>>16^M[5]<<16,r[2]=M[4]^M[1]>>>16^M[7]<<16,r[3]=M[6]^M[3]>>>16^M[1]<<16;for(var z=0;z<4;z++)r[z]=16711935&(r[z]<<8|r[z]>>>24)|4278255360&(r[z]<<24|r[z]>>>8),g[w+z]^=r[z]},blockSize:4,ivSize:2});function Q(){for(var g=this._X,w=this._C,M=0;M<8;M++)D[M]=w[M];for(w[0]=w[0]+1295307597+this._b|0,w[1]=w[1]+3545052371+(w[0]>>>0>>0?1:0)|0,w[2]=w[2]+886263092+(w[1]>>>0>>0?1:0)|0,w[3]=w[3]+1295307597+(w[2]>>>0>>0?1:0)|0,w[4]=w[4]+3545052371+(w[3]>>>0>>0?1:0)|0,w[5]=w[5]+886263092+(w[4]>>>0>>0?1:0)|0,w[6]=w[6]+1295307597+(w[5]>>>0>>0?1:0)|0,w[7]=w[7]+3545052371+(w[6]>>>0>>0?1:0)|0,this._b=w[7]>>>0>>0?1:0,M=0;M<8;M++){var z=g[M]+w[M],G=65535&z,Y=z>>>16,N=((G*G>>>17)+G*Y>>>15)+Y*Y,K=((4294901760&z)*z|0)+((65535&z)*z|0);f[M]=N^K}g[0]=f[0]+(f[7]<<16|f[7]>>>16)+(f[6]<<16|f[6]>>>16)|0,g[1]=f[1]+(f[0]<<8|f[0]>>>24)+f[7]|0,g[2]=f[2]+(f[1]<<16|f[1]>>>16)+(f[0]<<16|f[0]>>>16)|0,g[3]=f[3]+(f[2]<<8|f[2]>>>24)+f[1]|0,g[4]=f[4]+(f[3]<<16|f[3]>>>16)+(f[2]<<16|f[2]>>>16)|0,g[5]=f[5]+(f[4]<<8|f[4]>>>24)+f[3]|0,g[6]=f[6]+(f[5]<<16|f[5]>>>16)+(f[4]<<16|f[4]>>>16)|0,g[7]=f[7]+(f[6]<<8|f[6]>>>24)+f[5]|0}k.RabbitLegacy=S._createHelper(y)}(),function(){var k=T,S=k.lib.BlockCipher,E=k.algo;const r=16,D=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],f=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var y={pbox:[],sbox:[]};function Q(G,Y){let N=Y>>24&255,K=Y>>16&255,p=Y>>8&255,x=255&Y,_=G.sbox[0][N]+G.sbox[1][K];return _^=G.sbox[2][p],_+=G.sbox[3][x],_}function g(G,Y,N){let K,p=Y,x=N;for(let _=0;_1;--_)p^=G.pbox[_],x=Q(G,p)^x,K=p,p=x,x=K;return K=p,p=x,x=K,x^=G.pbox[1],p^=G.pbox[0],{left:p,right:x}}function M(G,Y,N){for(let B=0;B<4;B++){G.sbox[B]=[];for(let R=0;R<256;R++)G.sbox[B][R]=f[B][R]}let K=0;for(let B=0;B=N&&(K=0);let p=0,x=0,_=0;for(let B=0;B{}},s={};function u(b){var C=s[b];if(C!==void 0)return C.exports;var c=s[b]={exports:{}};return t[b].call(c.exports,c,c.exports,u),c.exports}u.n=b=>{var C=b&&b.__esModule?()=>b.default:()=>b;return u.d(C,{a:C}),C},u.d=(b,C)=>{for(var c in C)u.o(C,c)&&!u.o(b,c)&&Object.defineProperty(b,c,{enumerable:!0,get:C[c]})},u.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(b){if(typeof window=="object")return window}}(),u.o=(b,C)=>Object.prototype.hasOwnProperty.call(b,C);var A={};return(()=>{u.d(A,{default:()=>_r});const b=JSON.parse('{"version":"5d084c1"}');var C=function(){function $(){this.isDebug=!1,this.log_key_counter={},this.log_download_data=new Uint8Array}$.getInstance=function(){return $.instance||($.instance=new $),$.instance},$.debugSaveLogFile=function(n){$.LOG_DOWMLOAD_ENALBE=n,n?console.log("|Logger.js| \u5F00\u59CB\u7F13\u5B58\u65E5\u5FD7"):(console.log("|Logger.js| \u7ED3\u675F\u7F13\u5B58\u65E5\u5FD7\uFF0C\u89E6\u53D1\u4E0B\u8F7D\u5E76\u6E05\u7A7A\u7F13\u5B58"),$.getInstance().writeFile("jsplaysdk.log"))};var F=$.prototype;return F.setDebug=function(n){this.isDebug=n,this.downloadDataAppend($.LOGLEVEL_LOG,"",-1,"|Logger.js| git version=",b==null?void 0:b.version),n&&console.log(this.getTimestamp(),"|Logger.js| git version=",b==null?void 0:b.version)},F.getTimestamp=function(){return"["+new Date().toISOString()+"]"},F.log=function(){if(this.isDebug||$.LOG_DOWMLOAD_ENALBE){var n=this.getLogLevelStr($.LOGLEVEL_LOG),v=this.loggerArgsToString.apply(this,arguments),I=this.getTimestamp()+n+v+` +`;this.downloadDataAppendV2(I),this.isDebug&&console.log(I)}},F.error=function(){if(this.isDebug||$.LOG_DOWMLOAD_ENALBE){var n=this.getLogLevelStr($.LOGLEVEL_ERROR),v=this.loggerArgsToString.apply(this,arguments),I=this.getTimestamp()+n+v+` +`;this.downloadDataAppendV2(I),this.isDebug&&console.error(I)}},F.warn=function(){if(this.isDebug||$.LOG_DOWMLOAD_ENALBE){var n=this.getLogLevelStr($.LOGLEVEL_WARN),v=this.loggerArgsToString.apply(this,arguments),I=this.getTimestamp()+n+v+` +`;this.downloadDataAppendV2(I),this.isDebug&&console.warn(I)}},F.info=function(){if(this.isDebug||$.LOG_DOWMLOAD_ENALBE){var n=this.getLogLevelStr($.LOGLEVEL_INFO),v=this.loggerArgsToString.apply(this,arguments),I=this.getTimestamp()+n+v+` +`;this.downloadDataAppendV2(I),this.isDebug&&console.info(I)}},F.logKeyLimit=function(n,v){for(var I=arguments.length,U=new Array(I>2?I-2:0),W=2;W=1e4){W.lastTimestamp=U;for(var fe=this.getLogLevelStr(n),pe=arguments.length,ve=new Array(pe>3?pe-3:0),Ue=3;Ue1e7&&this.writeFile("jsplaysdk_auto.log");for(var U=this.getLogLevelStr(n),W=arguments.length,fe=new Array(W>3?W-3:0),pe=3;pe1e7&&this.writeFile("jsplaysdk_auto.log");var v=new TextEncoder().encode(n),I=new Uint8Array(this.log_download_data.length+v.length);I.set(this.log_download_data),I.set(v,this.log_download_data.length),this.log_download_data=I}},F.getLogLevelStr=function(n){return n===$.LOGLEVEL_LOG?"[LOG]":n===$.LOGLEVEL_INFO?"[INFO]":n===$.LOGLEVEL_WARN?"[WARN]":($.LOGLEVEL_ERROR,"[ERROR]")},F.loggerArgsToString=function(){for(var n=arguments.length,v=new Array(n),I=0;I1e3&&(U=U.slice(0,1e3),U+="(\u957F\u5EA6\u8D85\u8FC71000\u7701\u7565)"),U},F.writeFile=function(n){var v=new Blob([this.log_download_data],{type:"application/octet-stream"}),I=document.createElement("a");I.href=URL.createObjectURL(v),I.download=n,document.body.appendChild(I),I.click(),document.body.removeChild(I),URL.revokeObjectURL(I.href),I=null,this.log_download_data=new Uint8Array},$}();C.LOGLEVEL_LOG=1,C.LOGLEVEL_INFO=2,C.LOGLEVEL_WARN=3,C.LOGLEVEL_ERROR=4,C.LOG_DOWMLOAD_ENALBE=!1;const c=C.getInstance();function T(){T=function(){return F};var $,F={},n=Object.prototype,v=n.hasOwnProperty,I=Object.defineProperty||function(de,ce,xe){de[ce]=xe.value},U=typeof Symbol=="function"?Symbol:{},W=U.iterator||"@@iterator",fe=U.asyncIterator||"@@asyncIterator",pe=U.toStringTag||"@@toStringTag";function ve(de,ce,xe){return Object.defineProperty(de,ce,{value:xe,enumerable:!0,configurable:!0,writable:!0}),de[ce]}try{ve({},"")}catch(de){ve=function(ce,xe,$e){return ce[xe]=$e}}function Ue(de,ce,xe,$e){var De=ce&&ce.prototype instanceof xt?ce:xt,Ge=Object.create(De.prototype),yt=new Kt($e||[]);return I(Ge,"_invoke",{value:Xt(de,xe,yt)}),Ge}function ze(de,ce,xe){try{return{type:"normal",arg:de.call(ce,xe)}}catch($e){return{type:"throw",arg:$e}}}F.wrap=Ue;var Le="suspendedStart",Qe="suspendedYield",lt="executing",nt="completed",Ke={};function xt(){}function Lt(){}function bt(){}var un={};ve(un,W,function(){return this});var pt=Object.getPrototypeOf,et=pt&&pt(pt($t([])));et&&et!==n&&v.call(et,W)&&(un=et);var tt=bt.prototype=xt.prototype=Object.create(un);function ut(de){["next","throw","return"].forEach(function(ce){ve(de,ce,function(xe){return this._invoke(ce,xe)})})}function rn(de,ce){function xe(De,Ge,yt,Mt){var Dt=ze(de[De],de,Ge);if(Dt.type!=="throw"){var vn=Dt.arg,Vt=vn.value;return Vt&&typeof Vt=="object"&&v.call(Vt,"__await")?ce.resolve(Vt.__await).then(function(tn){xe("next",tn,yt,Mt)},function(tn){xe("throw",tn,yt,Mt)}):ce.resolve(Vt).then(function(tn){vn.value=tn,yt(vn)},function(tn){return xe("throw",tn,yt,Mt)})}Mt(Dt.arg)}var $e;I(this,"_invoke",{value:function(De,Ge){function yt(){return new ce(function(Mt,Dt){xe(De,Ge,Mt,Dt)})}return $e=$e?$e.then(yt,yt):yt()}})}function Xt(de,ce,xe){var $e=Le;return function(De,Ge){if($e===lt)throw Error("Generator is already running");if($e===nt){if(De==="throw")throw Ge;return{value:$,done:!0}}for(xe.method=De,xe.arg=Ge;;){var yt=xe.delegate;if(yt){var Mt=Ot(yt,xe);if(Mt){if(Mt===Ke)continue;return Mt}}if(xe.method==="next")xe.sent=xe._sent=xe.arg;else if(xe.method==="throw"){if($e===Le)throw $e=nt,xe.arg;xe.dispatchException(xe.arg)}else xe.method==="return"&&xe.abrupt("return",xe.arg);$e=lt;var Dt=ze(de,ce,xe);if(Dt.type==="normal"){if($e=xe.done?nt:Qe,Dt.arg===Ke)continue;return{value:Dt.arg,done:xe.done}}Dt.type==="throw"&&($e=nt,xe.method="throw",xe.arg=Dt.arg)}}}function Ot(de,ce){var xe=ce.method,$e=de.iterator[xe];if($e===$)return ce.delegate=null,xe==="throw"&&de.iterator.return&&(ce.method="return",ce.arg=$,Ot(de,ce),ce.method==="throw")||xe!=="return"&&(ce.method="throw",ce.arg=new TypeError("The iterator does not provide a '"+xe+"' method")),Ke;var De=ze($e,de.iterator,ce.arg);if(De.type==="throw")return ce.method="throw",ce.arg=De.arg,ce.delegate=null,Ke;var Ge=De.arg;return Ge?Ge.done?(ce[de.resultName]=Ge.value,ce.next=de.nextLoc,ce.method!=="return"&&(ce.method="next",ce.arg=$),ce.delegate=null,Ke):Ge:(ce.method="throw",ce.arg=new TypeError("iterator result is not an object"),ce.delegate=null,Ke)}function ot(de){var ce={tryLoc:de[0]};1 in de&&(ce.catchLoc=de[1]),2 in de&&(ce.finallyLoc=de[2],ce.afterLoc=de[3]),this.tryEntries.push(ce)}function Ut(de){var ce=de.completion||{};ce.type="normal",delete ce.arg,de.completion=ce}function Kt(de){this.tryEntries=[{tryLoc:"root"}],de.forEach(ot,this),this.reset(!0)}function $t(de){if(de||de===""){var ce=de[W];if(ce)return ce.call(de);if(typeof de.next=="function")return de;if(!isNaN(de.length)){var xe=-1,$e=function De(){for(;++xe=0;--$e){var De=this.tryEntries[$e],Ge=De.completion;if(De.tryLoc==="root")return xe("end");if(De.tryLoc<=this.prev){var yt=v.call(De,"catchLoc"),Mt=v.call(De,"finallyLoc");if(yt&&Mt){if(this.prev=0;--xe){var $e=this.tryEntries[xe];if($e.tryLoc<=this.prev&&v.call($e,"finallyLoc")&&this.prev<$e.finallyLoc){var De=$e;break}}De&&(de==="break"||de==="continue")&&De.tryLoc<=ce&&ce<=De.finallyLoc&&(De=null);var Ge=De?De.completion:{};return Ge.type=de,Ge.arg=ce,De?(this.method="next",this.next=De.finallyLoc,Ke):this.complete(Ge)},complete:function(de,ce){if(de.type==="throw")throw de.arg;return de.type==="break"||de.type==="continue"?this.next=de.arg:de.type==="return"?(this.rval=this.arg=de.arg,this.method="return",this.next="end"):de.type==="normal"&&ce&&(this.next=ce),Ke},finish:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.finallyLoc===de)return this.complete(xe.completion,xe.afterLoc),Ut(xe),Ke}},catch:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.tryLoc===de){var $e=xe.completion;if($e.type==="throw"){var De=$e.arg;Ut(xe)}return De}}throw Error("illegal catch attempt")},delegateYield:function(de,ce,xe){return this.delegate={iterator:$t(de),resultName:ce,nextLoc:xe},this.method==="next"&&(this.arg=$),Ke}},F}function k($,F,n,v,I,U,W){try{var fe=$[U](W),pe=fe.value}catch(ve){return void n(ve)}fe.done?F(pe):Promise.resolve(pe).then(v,I)}function S($,F){var n=typeof Symbol!="undefined"&&$[Symbol.iterator]||$["@@iterator"];if(n)return(n=n.call($)).next.bind(n);if(Array.isArray($)||(n=function(I,U){if(I){if(typeof I=="string")return E(I,U);var W={}.toString.call(I).slice(8,-1);return W==="Object"&&I.constructor&&(W=I.constructor.name),W==="Map"||W==="Set"?Array.from(I):W==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(W)?E(I,U):void 0}}($))||F&&$&&typeof $.length=="number"){n&&($=n);var v=0;return function(){return v>=$.length?{done:!0}:{done:!1,value:$[v++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function E($,F){(F==null||F>$.length)&&(F=$.length);for(var n=0,v=Array(F);n2?W-2:0),pe=2;pe2?W-2:0),pe=2;pe2?W-2:0),pe=2;pe5e3&&($.lastAbnormalTime=fe,$.logAudioContextManagerLog("\u5C1D\u8BD5\u91CD\u5EFA"),$.cleanup(),$.getInstance());case 14:case"end":return pe.stop()}},W,null,[[0,9]])}),function(){var W=this,fe=arguments;return new Promise(function(pe,ve){var Ue=I.apply(W,fe);function ze(Qe){k(Ue,pe,ve,ze,Le,"next",Qe)}function Le(Qe){k(Ue,pe,ve,ze,Le,"throw",Qe)}ze(void 0)})});return function(){return U.apply(this,arguments)}}(),F=$,(n=[{key:"state",get:function(){var I;return((I=$.audioContext)==null?void 0:I.state)||"closed"}},{key:"destination",get:function(){return $.audioContext.destination}},{key:"currentTime",get:function(){return $.audioContext.currentTime}}])&&r(F.prototype,n),Object.defineProperty(F,"prototype",{writable:!1}),F}();f.lastAbnormalTime=0,f.instance=null,f.audioContext=null,f.activeSources=new Set,f.activeNodes=new Set,f.stateChangeListeners=new Map;var y=f.getInstance();function Q(){Q=function(){return F};var $,F={},n=Object.prototype,v=n.hasOwnProperty,I=Object.defineProperty||function(de,ce,xe){de[ce]=xe.value},U=typeof Symbol=="function"?Symbol:{},W=U.iterator||"@@iterator",fe=U.asyncIterator||"@@asyncIterator",pe=U.toStringTag||"@@toStringTag";function ve(de,ce,xe){return Object.defineProperty(de,ce,{value:xe,enumerable:!0,configurable:!0,writable:!0}),de[ce]}try{ve({},"")}catch(de){ve=function(ce,xe,$e){return ce[xe]=$e}}function Ue(de,ce,xe,$e){var De=ce&&ce.prototype instanceof xt?ce:xt,Ge=Object.create(De.prototype),yt=new Kt($e||[]);return I(Ge,"_invoke",{value:Xt(de,xe,yt)}),Ge}function ze(de,ce,xe){try{return{type:"normal",arg:de.call(ce,xe)}}catch($e){return{type:"throw",arg:$e}}}F.wrap=Ue;var Le="suspendedStart",Qe="suspendedYield",lt="executing",nt="completed",Ke={};function xt(){}function Lt(){}function bt(){}var un={};ve(un,W,function(){return this});var pt=Object.getPrototypeOf,et=pt&&pt(pt($t([])));et&&et!==n&&v.call(et,W)&&(un=et);var tt=bt.prototype=xt.prototype=Object.create(un);function ut(de){["next","throw","return"].forEach(function(ce){ve(de,ce,function(xe){return this._invoke(ce,xe)})})}function rn(de,ce){function xe(De,Ge,yt,Mt){var Dt=ze(de[De],de,Ge);if(Dt.type!=="throw"){var vn=Dt.arg,Vt=vn.value;return Vt&&typeof Vt=="object"&&v.call(Vt,"__await")?ce.resolve(Vt.__await).then(function(tn){xe("next",tn,yt,Mt)},function(tn){xe("throw",tn,yt,Mt)}):ce.resolve(Vt).then(function(tn){vn.value=tn,yt(vn)},function(tn){return xe("throw",tn,yt,Mt)})}Mt(Dt.arg)}var $e;I(this,"_invoke",{value:function(De,Ge){function yt(){return new ce(function(Mt,Dt){xe(De,Ge,Mt,Dt)})}return $e=$e?$e.then(yt,yt):yt()}})}function Xt(de,ce,xe){var $e=Le;return function(De,Ge){if($e===lt)throw Error("Generator is already running");if($e===nt){if(De==="throw")throw Ge;return{value:$,done:!0}}for(xe.method=De,xe.arg=Ge;;){var yt=xe.delegate;if(yt){var Mt=Ot(yt,xe);if(Mt){if(Mt===Ke)continue;return Mt}}if(xe.method==="next")xe.sent=xe._sent=xe.arg;else if(xe.method==="throw"){if($e===Le)throw $e=nt,xe.arg;xe.dispatchException(xe.arg)}else xe.method==="return"&&xe.abrupt("return",xe.arg);$e=lt;var Dt=ze(de,ce,xe);if(Dt.type==="normal"){if($e=xe.done?nt:Qe,Dt.arg===Ke)continue;return{value:Dt.arg,done:xe.done}}Dt.type==="throw"&&($e=nt,xe.method="throw",xe.arg=Dt.arg)}}}function Ot(de,ce){var xe=ce.method,$e=de.iterator[xe];if($e===$)return ce.delegate=null,xe==="throw"&&de.iterator.return&&(ce.method="return",ce.arg=$,Ot(de,ce),ce.method==="throw")||xe!=="return"&&(ce.method="throw",ce.arg=new TypeError("The iterator does not provide a '"+xe+"' method")),Ke;var De=ze($e,de.iterator,ce.arg);if(De.type==="throw")return ce.method="throw",ce.arg=De.arg,ce.delegate=null,Ke;var Ge=De.arg;return Ge?Ge.done?(ce[de.resultName]=Ge.value,ce.next=de.nextLoc,ce.method!=="return"&&(ce.method="next",ce.arg=$),ce.delegate=null,Ke):Ge:(ce.method="throw",ce.arg=new TypeError("iterator result is not an object"),ce.delegate=null,Ke)}function ot(de){var ce={tryLoc:de[0]};1 in de&&(ce.catchLoc=de[1]),2 in de&&(ce.finallyLoc=de[2],ce.afterLoc=de[3]),this.tryEntries.push(ce)}function Ut(de){var ce=de.completion||{};ce.type="normal",delete ce.arg,de.completion=ce}function Kt(de){this.tryEntries=[{tryLoc:"root"}],de.forEach(ot,this),this.reset(!0)}function $t(de){if(de||de===""){var ce=de[W];if(ce)return ce.call(de);if(typeof de.next=="function")return de;if(!isNaN(de.length)){var xe=-1,$e=function De(){for(;++xe=0;--$e){var De=this.tryEntries[$e],Ge=De.completion;if(De.tryLoc==="root")return xe("end");if(De.tryLoc<=this.prev){var yt=v.call(De,"catchLoc"),Mt=v.call(De,"finallyLoc");if(yt&&Mt){if(this.prev=0;--xe){var $e=this.tryEntries[xe];if($e.tryLoc<=this.prev&&v.call($e,"finallyLoc")&&this.prev<$e.finallyLoc){var De=$e;break}}De&&(de==="break"||de==="continue")&&De.tryLoc<=ce&&ce<=De.finallyLoc&&(De=null);var Ge=De?De.completion:{};return Ge.type=de,Ge.arg=ce,De?(this.method="next",this.next=De.finallyLoc,Ke):this.complete(Ge)},complete:function(de,ce){if(de.type==="throw")throw de.arg;return de.type==="break"||de.type==="continue"?this.next=de.arg:de.type==="return"?(this.rval=this.arg=de.arg,this.method="return",this.next="end"):de.type==="normal"&&ce&&(this.next=ce),Ke},finish:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.finallyLoc===de)return this.complete(xe.completion,xe.afterLoc),Ut(xe),Ke}},catch:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.tryLoc===de){var $e=xe.completion;if($e.type==="throw"){var De=$e.arg;Ut(xe)}return De}}throw Error("illegal catch attempt")},delegateYield:function(de,ce,xe){return this.delegate={iterator:$t(de),resultName:ce,nextLoc:xe},this.method==="next"&&(this.arg=$),Ke}},F}function g($,F,n,v,I,U,W){try{var fe=$[U](W),pe=fe.value}catch(ve){return void n(ve)}fe.done?F(pe):Promise.resolve(pe).then(v,I)}var w=function(){function $(n){this.m_nPlayId=n,this.MAX_BUFFER_SIZE=8e4,this.BUFFER_SIZE=8e4,this.MAX_VOLUME=1,this.gainNode=null,this.biquadFilter=null,this.sourceNode=null,this.playBuffer=new Float32Array(this.MAX_BUFFER_SIZE),this.readLength=0,this.isRunning=!1,this.volume=0,this.sampleRates=0,this.lastBufferTime=0}var F=$.prototype;return F.init=function(){var n,v=(n=Q().mark(function I(U,W){return Q().wrap(function(fe){for(;;)switch(fe.prev=fe.next){case 0:return this.logAudioRenderLog("init() volume=",U," sample_rate=",W),this.sampleRates=W,fe.prev=2,y.state==="running"&&(this.isRunning=!0),y.addStateChangeListener(this.playId,this.handleStateChange.bind(this)),this.gainNode=y.createGain(),this.biquadFilter=y.createBiquadFilter(),this.biquadFilter.type="lowpass",this.biquadFilter.frequency.value=4e3,this.biquadFilter.gain.value=40,this.biquadFilter.connect(this.gainNode),this.gainNode.connect(y.destination),this.setVolume(U),this.lastBufferTime=y.currentTime,fe.abrupt("return",!0);case 17:return fe.prev=17,fe.t0=fe.catch(2),this.logAudioRenderError("Web Audio API is not supported in this web browser! : "+fe.t0),fe.abrupt("return",!1);case 21:case"end":return fe.stop()}},I,this,[[2,17]])}),function(){var I=this,U=arguments;return new Promise(function(W,fe){var pe=n.apply(I,U);function ve(ze){g(pe,W,fe,ve,Ue,"next",ze)}function Ue(ze){g(pe,W,fe,ve,Ue,"throw",ze)}ve(void 0)})});return function(I,U){return v.apply(this,arguments)}}(),F.handleStateChange=function(){this.logAudioRenderLog("handleStateChange",y.state),y.state==="running"?this.isRunning=!0:this.isRunning=!1},F.play=function(n){this.logAudioRenderLogWithKeyLimit("play()",5),this.isRunning&&this.render(n)},F.stop=function(){this.logAudioRenderLog("stop()"),y&&y.removeStateChangeListener(this.playId),this.isRunning=!1,this.volume=0,this.lastBufferTime=0,this.sourceNode&&(this.sourceNode.stop(),this.sourceNode.disconnect(),this.sourceNode=null),this.gainNode&&(this.gainNode.gain.value=0,this.gainNode.disconnect(),this.gainNode=null),this.biquadFilter&&(this.biquadFilter.disconnect(),this.biquadFilter=null)},F.setVolume=function(n){this.logAudioRenderLog("\u8BBE\u7F6E\u97F3\u91CF() volume=",5,n),this.volume=n,this.gainNode.gain.value=Math.max(0,Math.min(1,n/this.MAX_VOLUME)),n>0&&this.resume()},F.getVolume=function(){return this.volume},F.mute=function(n){this.logAudioRenderLog("\u9759\u97F3() mute=",5,n),n?this.gainNode.gain.value=0:(this.resume(),this.gainNode.gain.value=Math.max(0,Math.min(1,this.volume/this.MAX_VOLUME)))},F.resume=function(){},F.render=function(n){this.logAudioRenderLogWithKeyLimit("render() data.length=",5,n.length,"readLength=",this.readLength);try{if(this.lastBufferTime-y.currentTime<0&&(this.lastBufferTime=0),this.playBuffer=this.appendBufferFloat32(this.playBuffer,n,this.readLength),this.readLength+=n.length,this.readLength>0){var v=y.createBuffer(1,this.readLength,this.sampleRates);v.getChannelData(0).set(this.playBuffer.subarray(0,this.readLength)),this.sourceNode=y.createBufferSource(),this.sourceNode.buffer=v,this.sourceNode.connect(this.biquadFilter),this.lastBufferTime||(this.lastBufferTime=y.currentTime+.1),this.sourceNode.start(this.lastBufferTime),this.lastBufferTime+=v.duration,this.playBuffer=new Float32Array,this.readLength=0}}catch(I){this.logAudioRenderError("Error during rendering audio:",I)}},F.appendBufferFloat32=function(n,v,I){var U=n;return I+v.length>=U.length&&(U=new Float32Array(U.length+this.BUFFER_SIZE)).set(U,0),U.set(v,I),U},F.logAudioRenderLog=function(){for(var n=arguments.length,v=new Array(n),I=0;I2?I-2:0),W=2;W2?I-2:0),W=2;W2?I-2:0),W=2;W-1||$.indexOf("edge/")>-1?(n="ie",F==="Microsoft Internet Explorer"?($=/msie ([0-9]{1,}[\.0-9]{0,})/.exec($),n+=parseInt($[1])):$.indexOf("trident")>-1?n+=11:$.indexOf("edge/")>-1&&(n="edge")):$.indexOf("safari")>-1?n=$.indexOf("chrome")>-1?"chrome":"safari":$.indexOf("firefox")>-1&&(n="firefox"),n}function G(){return new Date().getTime()}var Y={log:function(){},error:function(){},count:function(){},info:function(){}},N=function(){function $(n,v){this.w=n,this.h=v}var F=$.prototype;return F.toString=function(){return"("+this.w+", "+this.h+")"},F.getHalfSize=function(){return new $(this.w>>>1,this.h>>>1)},F.length=function(){return this.w*this.h},$}(),K=1e-6;function p(){}function x(){}function _(){}function B(){}p.prototype={e:function($){return $<1||$>this.elements.length?null:this.elements[$-1]},dimensions:function(){return this.elements.length},modulus:function(){return Math.sqrt(this.dot(this))},eql:function($){var F=this.elements.length,n=$.elements||$;if(F!=n.length)return!1;do if(Math.abs(this.elements[F-1]-n[F-1])>K)return!1;while(--F);return!0},dup:function(){return p.create(this.elements)},map:function($){var F=[];return this.each(function(n,v){F.push($(n,v))}),p.create(F)},each:function($){var F,n=this.elements.length,v=n;do F=v-n,$(this.elements[F],F+1);while(--n)},toUnitVector:function(){var $=this.modulus();return $===0?this.dup():this.map(function(F){return F/$})},angleFrom:function($){var F=$.elements||$,n=this.elements.length;if(n!=F.length)return null;var v=0,I=0,U=0;if(this.each(function(fe,pe){v+=fe*F[pe-1],I+=fe*fe,U+=F[pe-1]*F[pe-1]}),I=Math.sqrt(I),U=Math.sqrt(U),I*U===0)return null;var W=v/(I*U);return W<-1&&(W=-1),W>1&&(W=1),Math.acos(W)},isParallelTo:function($){var F=this.angleFrom($);return F===null?null:F<=K},isAntiparallelTo:function($){var F=this.angleFrom($);return F===null?null:Math.abs(F-Math.PI)<=K},isPerpendicularTo:function($){var F=this.dot($);return F===null?null:Math.abs(F)<=K},add:function($){var F=$.elements||$;return this.elements.length!=F.length?null:this.map(function(n,v){return n+F[v-1]})},subtract:function($){var F=$.elements||$;return this.elements.length!=F.length?null:this.map(function(n,v){return n-F[v-1]})},multiply:function($){return this.map(function(F){return F*$})},x:function($){return this.multiply($)},dot:function($){var F=$.elements||$,n=0,v=this.elements.length;if(v!=F.length)return null;do n+=this.elements[v-1]*F[v-1];while(--v);return n},cross:function($){var F=$.elements||$;if(this.elements.length!=3||F.length!=3)return null;var n=this.elements;return p.create([n[1]*F[2]-n[2]*F[1],n[2]*F[0]-n[0]*F[2],n[0]*F[1]-n[1]*F[0]])},max:function(){var $,F=0,n=this.elements.length,v=n;do $=v-n,Math.abs(this.elements[$])>Math.abs(F)&&(F=this.elements[$]);while(--n);return F},indexOf:function($){var F,n=null,v=this.elements.length,I=v;do F=I-v,n===null&&this.elements[F]==$&&(n=F+1);while(--v);return n},toDiagonalMatrix:function(){return x.Diagonal(this.elements)},round:function(){return this.map(function($){return Math.round($)})},snapTo:function($){return this.map(function(F){return Math.abs(F-$)<=K?$:F})},distanceFrom:function($){if($.anchor)return $.distanceFrom(this);var F=$.elements||$;if(F.length!=this.elements.length)return null;var n,v=0;return this.each(function(I,U){n=I-F[U-1],v+=n*n}),Math.sqrt(v)},liesOn:function($){return $.contains(this)},liesIn:function($){return $.contains(this)},rotate:function($,F){var n,v,I,U,W;switch(this.elements.length){case 2:return(n=F.elements||F).length!=2?null:(v=x.Rotation($).elements,I=this.elements[0]-n[0],U=this.elements[1]-n[1],p.create([n[0]+v[0][0]*I+v[0][1]*U,n[1]+v[1][0]*I+v[1][1]*U]));case 3:if(!F.direction)return null;var fe=F.pointClosestTo(this).elements;return v=x.Rotation($,F.direction).elements,I=this.elements[0]-fe[0],U=this.elements[1]-fe[1],W=this.elements[2]-fe[2],p.create([fe[0]+v[0][0]*I+v[0][1]*U+v[0][2]*W,fe[1]+v[1][0]*I+v[1][1]*U+v[1][2]*W,fe[2]+v[2][0]*I+v[2][1]*U+v[2][2]*W]);default:return null}},reflectionIn:function($){if($.anchor){var F=this.elements.slice(),n=$.pointClosestTo(F).elements;return p.create([n[0]+(n[0]-F[0]),n[1]+(n[1]-F[1]),n[2]+(n[2]-(F[2]||0))])}var v=$.elements||$;return this.elements.length!=v.length?null:this.map(function(I,U){return v[U-1]+(v[U-1]-I)})},to3D:function(){var $=this.dup();switch($.elements.length){case 3:break;case 2:$.elements.push(0);break;default:return null}return $},inspect:function(){return"["+this.elements.join(", ")+"]"},setElements:function($){return this.elements=($.elements||$).slice(),this}},p.create=function($){return new p().setElements($)},p.i=p.create([1,0,0]),p.j=p.create([0,1,0]),p.k=p.create([0,0,1]),p.Random=function($){var F=[];do F.push(Math.random());while(--$);return p.create(F)},p.Zero=function($){var F=[];do F.push(0);while(--$);return p.create(F)},x.prototype={e:function($,F){return $<1||$>this.elements.length||F<1||F>this.elements[0].length?null:this.elements[$-1][F-1]},row:function($){return $>this.elements.length?null:p.create(this.elements[$-1])},col:function($){if($>this.elements[0].length)return null;var F,n=[],v=this.elements.length,I=v;do F=I-v,n.push(this.elements[F][$-1]);while(--v);return p.create(n)},dimensions:function(){return{rows:this.elements.length,cols:this.elements[0].length}},rows:function(){return this.elements.length},cols:function(){return this.elements[0].length},eql:function($){var F=$.elements||$;if(typeof F[0][0]=="undefined"&&(F=x.create(F).elements),this.elements.length!=F.length||this.elements[0].length!=F[0].length)return!1;var n,v,I,U=this.elements.length,W=U,fe=this.elements[0].length;do{n=W-U,v=fe;do if(I=fe-v,Math.abs(this.elements[n][I]-F[n][I])>K)return!1;while(--v)}while(--U);return!0},dup:function(){return x.create(this.elements)},map:function($){var F,n,v,I=[],U=this.elements.length,W=U,fe=this.elements[0].length;do{n=fe,I[F=W-U]=[];do v=fe-n,I[F][v]=$(this.elements[F][v],F+1,v+1);while(--n)}while(--U);return x.create(I)},isSameSizeAs:function($){var F=$.elements||$;return typeof F[0][0]=="undefined"&&(F=x.create(F).elements),this.elements.length==F.length&&this.elements[0].length==F[0].length},add:function($){var F=$.elements||$;return typeof F[0][0]=="undefined"&&(F=x.create(F).elements),this.isSameSizeAs(F)?this.map(function(n,v,I){return n+F[v-1][I-1]}):null},subtract:function($){var F=$.elements||$;return typeof F[0][0]=="undefined"&&(F=x.create(F).elements),this.isSameSizeAs(F)?this.map(function(n,v,I){return n-F[v-1][I-1]}):null},canMultiplyFromLeft:function($){var F=$.elements||$;return typeof F[0][0]=="undefined"&&(F=x.create(F).elements),this.elements[0].length==F.length},multiply:function($){if(!$.elements)return this.map(function(lt){return lt*$});var F=!!$.modulus;if(typeof(Qe=$.elements||$)[0][0]=="undefined"&&(Qe=x.create(Qe).elements),!this.canMultiplyFromLeft(Qe))return null;var n,v,I,U,W,fe,pe=this.elements.length,ve=pe,Ue=Qe[0].length,ze=this.elements[0].length,Le=[];do{Le[n=ve-pe]=[],v=Ue;do{I=Ue-v,U=0,W=ze;do fe=ze-W,U+=this.elements[n][fe]*Qe[fe][I];while(--W);Le[n][I]=U}while(--v)}while(--pe);var Qe=x.create(Le);return F?Qe.col(1):Qe},x:function($){return this.multiply($)},minor:function($,F,n,v){var I,U,W,fe=[],pe=n,ve=this.elements.length,Ue=this.elements[0].length;do{fe[I=n-pe]=[],U=v;do W=v-U,fe[I][W]=this.elements[($+I-1)%ve][(F+W-1)%Ue];while(--U)}while(--pe);return x.create(fe)},transpose:function(){var $,F,n,v=this.elements.length,I=this.elements[0].length,U=[],W=I;do{U[$=I-W]=[],F=v;do n=v-F,U[$][n]=this.elements[n][$];while(--F)}while(--W);return x.create(U)},isSquare:function(){return this.elements.length==this.elements[0].length},max:function(){var $,F,n,v=0,I=this.elements.length,U=I,W=this.elements[0].length;do{$=U-I,F=W;do n=W-F,Math.abs(this.elements[$][n])>Math.abs(v)&&(v=this.elements[$][n]);while(--F)}while(--I);return v},indexOf:function($){var F,n,v,I=this.elements.length,U=I,W=this.elements[0].length;do{F=U-I,n=W;do if(v=W-n,this.elements[F][v]==$)return{i:F+1,j:v+1};while(--n)}while(--I);return null},diagonal:function(){if(!this.isSquare)return null;var $,F=[],n=this.elements.length,v=n;do $=v-n,F.push(this.elements[$][$]);while(--n);return p.create(F)},toRightTriangular:function(){var $,F,n,v,I=this.dup(),U=this.elements.length,W=U,fe=this.elements[0].length;do{if(F=W-U,I.elements[F][F]==0){for(j=F+1;jK){I++;break}while(--F)}while(--U);return I},rk:function(){return this.rank()},augment:function($){var F=$.elements||$;typeof F[0][0]=="undefined"&&(F=x.create(F).elements);var n,v,I,U=this.dup(),W=U.elements[0].length,fe=U.elements.length,pe=fe,ve=F[0].length;if(fe!=F.length)return null;do{n=pe-fe,v=ve;do I=ve-v,U.elements[n][W+I]=F[n][I];while(--v)}while(--fe);return U},inverse:function(){if(!this.isSquare()||this.isSingular())return null;var $,F,n,v,I,U,W,fe=this.elements.length,pe=fe,ve=this.augment(x.I(fe)).toRightTriangular(),Ue=ve.elements[0].length,ze=[];do{I=[],n=Ue,ze[$=fe-1]=[],U=ve.elements[$][$];do v=Ue-n,W=ve.elements[$][v]/U,I.push(W),v>=pe&&ze[$].push(W);while(--n);for(ve.elements[$]=I,F=0;F<$;F++){I=[],n=Ue;do v=Ue-n,I.push(ve.elements[F][v]-ve.elements[$][v]*ve.elements[F][$]);while(--n);ve.elements[F]=I}}while(--fe);return x.create(ze)},inv:function(){return this.inverse()},round:function(){return this.map(function($){return Math.round($)})},snapTo:function($){return this.map(function(F){return Math.abs(F-$)<=K?$:F})},inspect:function(){var $,F=[],n=this.elements.length,v=n;do $=v-n,F.push(p.create(this.elements[$]).inspect());while(--n);return F.join(` +`)},setElements:function($){var F,n=$.elements||$;if(typeof n[0][0]!="undefined"){var v,I,U,W=n.length,fe=W;this.elements=[];do{I=v=n[F=fe-W].length,this.elements[F]=[];do U=I-v,this.elements[F][U]=n[F][U];while(--v)}while(--W);return this}var pe=n.length,ve=pe;this.elements=[];do F=ve-pe,this.elements.push([n[F]]);while(--pe);return this}},x.create=function($){return new x().setElements($)},x.I=function($){var F,n,v,I=[],U=$;do{I[F=U-$]=[],n=U;do v=U-n,I[F][v]=F==v?1:0;while(--n)}while(--$);return x.create(I)},x.Diagonal=function($){var F,n=$.length,v=n,I=x.I(n);do F=v-n,I.elements[F][F]=$[F];while(--n);return I},x.Rotation=function($,F){if(!F)return x.create([[Math.cos($),-Math.sin($)],[Math.sin($),Math.cos($)]]);var n=F.dup();if(n.elements.length!=3)return null;var v=n.modulus(),I=n.elements[0]/v,U=n.elements[1]/v,W=n.elements[2]/v,fe=Math.sin($),pe=Math.cos($),ve=1-pe;return x.create([[ve*I*I+pe,ve*I*U-fe*W,ve*I*W+fe*U],[ve*I*U+fe*W,ve*U*U+pe,ve*U*W-fe*I],[ve*I*W-fe*U,ve*U*W+fe*I,ve*W*W+pe]])},x.RotationX=function($){var F=Math.cos($),n=Math.sin($);return x.create([[1,0,0],[0,F,-n],[0,n,F]])},x.RotationY=function($){var F=Math.cos($),n=Math.sin($);return x.create([[F,0,n],[0,1,0],[-n,0,F]])},x.RotationZ=function($){var F=Math.cos($),n=Math.sin($);return x.create([[F,-n,0],[n,F,0],[0,0,1]])},x.Random=function($,F){return x.Zero($,F).map(function(){return Math.random()})},x.Zero=function($,F){var n,v,I,U=[],W=$;do{U[n=$-W]=[],v=F;do I=F-v,U[n][I]=0;while(--v)}while(--W);return x.create(U)},_.prototype={eql:function($){return this.isParallelTo($)&&this.contains($.anchor)},dup:function(){return _.create(this.anchor,this.direction)},translate:function($){var F=$.elements||$;return _.create([this.anchor.elements[0]+F[0],this.anchor.elements[1]+F[1],this.anchor.elements[2]+(F[2]||0)],this.direction)},isParallelTo:function($){if($.normal)return $.isParallelTo(this);var F=this.direction.angleFrom($.direction);return Math.abs(F)<=K||Math.abs(F-Math.PI)<=K},distanceFrom:function($){if($.normal)return $.distanceFrom(this);if($.direction){if(this.isParallelTo($))return this.distanceFrom($.anchor);var F=this.direction.cross($.direction).toUnitVector().elements,n=this.anchor.elements,v=$.anchor.elements;return Math.abs((n[0]-v[0])*F[0]+(n[1]-v[1])*F[1]+(n[2]-v[2])*F[2])}var I=$.elements||$,U=(n=this.anchor.elements,this.direction.elements),W=I[0]-n[0],fe=I[1]-n[1],pe=(I[2]||0)-n[2],ve=Math.sqrt(W*W+fe*fe+pe*pe);if(ve===0)return 0;var Ue=(W*U[0]+fe*U[1]+pe*U[2])/ve,ze=1-Ue*Ue;return Math.abs(ve*Math.sqrt(ze<0?0:ze))},contains:function($){var F=this.distanceFrom($);return F!==null&&F<=K},liesIn:function($){return $.contains(this)},intersects:function($){return $.normal?$.intersects(this):!this.isParallelTo($)&&this.distanceFrom($)<=K},intersectionWith:function($){if($.normal)return $.intersectionWith(this);if(!this.intersects($))return null;var F=this.anchor.elements,n=this.direction.elements,v=$.anchor.elements,I=$.direction.elements,U=n[0],W=n[1],fe=n[2],pe=I[0],ve=I[1],Ue=I[2],ze=F[0]-v[0],Le=F[1]-v[1],Qe=F[2]-v[2],lt=pe*pe+ve*ve+Ue*Ue,nt=U*pe+W*ve+fe*Ue,Ke=((-U*ze-W*Le-fe*Qe)*lt/(U*U+W*W+fe*fe)+nt*(pe*ze+ve*Le+Ue*Qe))/(lt-nt*nt);return p.create([F[0]+Ke*U,F[1]+Ke*W,F[2]+Ke*fe])},pointClosestTo:function($){if($.direction){if(this.intersects($))return this.intersectionWith($);if(this.isParallelTo($))return null;var F=this.direction.elements,n=$.direction.elements,v=F[0],I=F[1],U=F[2],W=n[0],fe=n[1],pe=n[2],ve=U*W-v*pe,Ue=v*fe-I*W,ze=I*pe-U*fe,Le=p.create([ve*pe-Ue*fe,Ue*W-ze*pe,ze*fe-ve*W]);return(Qe=B.create($.anchor,Le)).intersectionWith(this)}var Qe=$.elements||$;if(this.contains(Qe))return p.create(Qe);var lt=this.anchor.elements,nt=(v=(F=this.direction.elements)[0],I=F[1],U=F[2],lt[0]),Ke=lt[1],xt=lt[2],Lt=(ve=v*(Qe[1]-Ke)-I*(Qe[0]-nt),Ue=I*((Qe[2]||0)-xt)-U*(Qe[1]-Ke),ze=U*(Qe[0]-nt)-v*((Qe[2]||0)-xt),p.create([I*ve-U*ze,U*Ue-v*ve,v*ze-I*Ue])),bt=this.distanceFrom(Qe)/Lt.modulus();return p.create([Qe[0]+Lt.elements[0]*bt,Qe[1]+Lt.elements[1]*bt,(Qe[2]||0)+Lt.elements[2]*bt])},rotate:function($,F){typeof F.direction=="undefined"&&(F=_.create(F.to3D(),p.k));var n=x.Rotation($,F.direction).elements,v=F.pointClosestTo(this.anchor).elements,I=this.anchor.elements,U=this.direction.elements,W=v[0],fe=v[1],pe=v[2],ve=I[0]-W,Ue=I[1]-fe,ze=I[2]-pe;return _.create([W+n[0][0]*ve+n[0][1]*Ue+n[0][2]*ze,fe+n[1][0]*ve+n[1][1]*Ue+n[1][2]*ze,pe+n[2][0]*ve+n[2][1]*Ue+n[2][2]*ze],[n[0][0]*U[0]+n[0][1]*U[1]+n[0][2]*U[2],n[1][0]*U[0]+n[1][1]*U[1]+n[1][2]*U[2],n[2][0]*U[0]+n[2][1]*U[1]+n[2][2]*U[2]])},reflectionIn:function($){if($.normal){var F=this.anchor.elements,n=this.direction.elements,v=F[0],I=F[1],U=F[2],W=n[0],fe=n[1],pe=n[2],ve=this.anchor.reflectionIn($).elements,Ue=v+W,ze=I+fe,Le=U+pe,Qe=$.pointClosestTo([Ue,ze,Le]).elements,lt=[Qe[0]+(Qe[0]-Ue)-ve[0],Qe[1]+(Qe[1]-ze)-ve[1],Qe[2]+(Qe[2]-Le)-ve[2]];return _.create(ve,lt)}if($.direction)return this.rotate(Math.PI,$);var nt=$.elements||$;return _.create(this.anchor.reflectionIn([nt[0],nt[1],nt[2]||0]),this.direction)},setVectors:function($,F){if($=p.create($),F=p.create(F),$.elements.length==2&&$.elements.push(0),F.elements.length==2&&F.elements.push(0),$.elements.length>3||F.elements.length>3)return null;var n=F.modulus();return n===0?null:(this.anchor=$,this.direction=p.create([F.elements[0]/n,F.elements[1]/n,F.elements[2]/n]),this)}},_.create=function($,F){return new _().setVectors($,F)},_.X=_.create(p.Zero(3),p.i),_.Y=_.create(p.Zero(3),p.j),_.Z=_.create(p.Zero(3),p.k),B.prototype={eql:function($){return this.contains($.anchor)&&this.isParallelTo($)},dup:function(){return B.create(this.anchor,this.normal)},translate:function($){var F=$.elements||$;return B.create([this.anchor.elements[0]+F[0],this.anchor.elements[1]+F[1],this.anchor.elements[2]+(F[2]||0)],this.normal)},isParallelTo:function($){var F;return $.normal?(F=this.normal.angleFrom($.normal),Math.abs(F)<=K||Math.abs(Math.PI-F)<=K):$.direction?this.normal.isPerpendicularTo($.direction):null},isPerpendicularTo:function($){var F=this.normal.angleFrom($.normal);return Math.abs(Math.PI/2-F)<=K},distanceFrom:function($){if(this.intersects($)||this.contains($))return 0;if($.anchor){var F=this.anchor.elements,n=$.anchor.elements,v=this.normal.elements;return Math.abs((F[0]-n[0])*v[0]+(F[1]-n[1])*v[1]+(F[2]-n[2])*v[2])}var I=$.elements||$;return F=this.anchor.elements,v=this.normal.elements,Math.abs((F[0]-I[0])*v[0]+(F[1]-I[1])*v[1]+(F[2]-(I[2]||0))*v[2])},contains:function($){if($.normal)return null;if($.direction)return this.contains($.anchor)&&this.contains($.anchor.add($.direction));var F=$.elements||$,n=this.anchor.elements,v=this.normal.elements;return Math.abs(v[0]*(n[0]-F[0])+v[1]*(n[1]-F[1])+v[2]*(n[2]-(F[2]||0)))<=K},intersects:function($){return typeof $.direction=="undefined"&&typeof $.normal=="undefined"?null:!this.isParallelTo($)},intersectionWith:function($){if(!this.intersects($))return null;if($.direction){var F=$.anchor.elements,n=$.direction.elements,v=this.anchor.elements,I=((W=this.normal.elements)[0]*(v[0]-F[0])+W[1]*(v[1]-F[1])+W[2]*(v[2]-F[2]))/(W[0]*n[0]+W[1]*n[1]+W[2]*n[2]);return p.create([F[0]+n[0]*I,F[1]+n[1]*I,F[2]+n[2]*I])}if($.normal){for(var U=this.normal.cross($.normal).toUnitVector(),W=this.normal.elements,fe=(F=this.anchor.elements,$.normal.elements),pe=$.anchor.elements,ve=x.Zero(2,2),Ue=0;ve.isSingular();)Ue++,ve=x.create([[W[Ue%3],W[(Ue+1)%3]],[fe[Ue%3],fe[(Ue+1)%3]]]);for(var ze=ve.inverse().elements,Le=W[0]*F[0]+W[1]*F[1]+W[2]*F[2],Qe=fe[0]*pe[0]+fe[1]*pe[1]+fe[2]*pe[2],lt=[ze[0][0]*Le+ze[0][1]*Qe,ze[1][0]*Le+ze[1][1]*Qe],nt=[],Ke=1;Ke<=3;Ke++)nt.push(Ue==Ke?0:lt[(Ke+(5-Ue)%3)%3]);return _.create(nt,U)}},pointClosestTo:function($){var F=$.elements||$,n=this.anchor.elements,v=this.normal.elements,I=(n[0]-F[0])*v[0]+(n[1]-F[1])*v[1]+(n[2]-(F[2]||0))*v[2];return p.create([F[0]+v[0]*I,F[1]+v[1]*I,(F[2]||0)+v[2]*I])},rotate:function($,F){var n=x.Rotation($,F.direction).elements,v=F.pointClosestTo(this.anchor).elements,I=this.anchor.elements,U=this.normal.elements,W=v[0],fe=v[1],pe=v[2],ve=I[0]-W,Ue=I[1]-fe,ze=I[2]-pe;return B.create([W+n[0][0]*ve+n[0][1]*Ue+n[0][2]*ze,fe+n[1][0]*ve+n[1][1]*Ue+n[1][2]*ze,pe+n[2][0]*ve+n[2][1]*Ue+n[2][2]*ze],[n[0][0]*U[0]+n[0][1]*U[1]+n[0][2]*U[2],n[1][0]*U[0]+n[1][1]*U[1]+n[1][2]*U[2],n[2][0]*U[0]+n[2][1]*U[1]+n[2][2]*U[2]])},reflectionIn:function($){if($.normal){var F=this.anchor.elements,n=this.normal.elements,v=F[0],I=F[1],U=F[2],W=n[0],fe=n[1],pe=n[2],ve=this.anchor.reflectionIn($).elements,Ue=v+W,ze=I+fe,Le=U+pe,Qe=$.pointClosestTo([Ue,ze,Le]).elements,lt=[Qe[0]+(Qe[0]-Ue)-ve[0],Qe[1]+(Qe[1]-ze)-ve[1],Qe[2]+(Qe[2]-Le)-ve[2]];return B.create(ve,lt)}if($.direction)return this.rotate(Math.PI,$);var nt=$.elements||$;return B.create(this.anchor.reflectionIn([nt[0],nt[1],nt[2]||0]),this.normal)},setVectors:function($,F,n){if(($=($=p.create($)).to3D())===null||(F=(F=p.create(F)).to3D())===null)return null;if(typeof n=="undefined")n=null;else if((n=(n=p.create(n)).to3D())===null)return null;var v,I,U=$.elements[0],W=$.elements[1],fe=$.elements[2],pe=F.elements[0],ve=F.elements[1],Ue=F.elements[2];if(n!==null){var ze=n.elements[0],Le=n.elements[1],Qe=n.elements[2];if((I=(v=p.create([(ve-W)*(Qe-fe)-(Ue-fe)*(Le-W),(Ue-fe)*(ze-U)-(pe-U)*(Qe-fe),(pe-U)*(Le-W)-(ve-W)*(ze-U)])).modulus())===0)return null;v=p.create([v.elements[0]/I,v.elements[1]/I,v.elements[2]/I])}else{if((I=Math.sqrt(pe*pe+ve*ve+Ue*Ue))===0)return null;v=p.create([F.elements[0]/I,F.elements[1]/I,F.elements[2]/I])}return this.anchor=$,this.normal=v,this}},x.Translation=function($){var F;if($.elements.length===2)return(F=x.I(3)).elements[2][0]=$.elements[0],F.elements[2][1]=$.elements[1],F;if($.elements.length===3)return(F=x.I(4)).elements[0][3]=$.elements[0],F.elements[1][3]=$.elements[1],F.elements[2][3]=$.elements[2],F;throw"Invalid length for Translation"},x.prototype.flatten=function(){var $=[];if(this.elements.length===0)return[];for(var F=0;F4||this.elements[0].length>4)return null;for($=0;$=this.maxLength&&this.clear();var v=new me(n);if(this.first===null)this.first=v;else{for(var I=this.first;I.next!==null;)I=I.next;I.next=v}return this.size+=1,v},F.dequeue=function(){var n=null;return this.first!==null&&(n=this.first,this.first=this.first.next,this.size-=1),n},F.clear=function(){for(var n=null;this.first!==null;)n=this.first,this.first=this.first.next,this.size-=1,n.buffer=null,n=null;this.size=0,this.first=null},$}(),q=function(){function $(n,v,I){this.bufferQueueMaxLength=v,this.canvasElem=n,this.ivsCanvasElem=null,this.pictureName="",this.captureStart=!1,this.playback=I,this.videoRender=null,this.startTimestamp=0,this.preTimestamp=0,this.isRendering=!1,this.videoDataQueue=null,this.complementTime=0,this.nextPlayTime=0,this.playFirstFrame=!1,this.startPlay=!1,this.playSpeed=1,this.videoDataQueue=new Ae(this.bufferQueueMaxLength),this.drawingInTime=this.drawingInTime.bind(this)}var F=$.prototype;return F.capturePic=function(n,v){c.log("PlayMethod::\u6293\u56FE pictureName=",v),this.ivsCanvasElem=n,this.pictureName=v,this.captureStart=!0},F.downloadPic=function(n,v){c.log("PlayMethod::\u4E0B\u8F7D\u56FE\u7247 canvasArr.length=",n.length,"pictureName=",v);var I=document.createElement("canvas");I.width=this.canvasElem.width,I.height=this.canvasElem.height;for(var U=I.getContext("2d"),W=0;W500?1.2:pe<200?.8:1),W.nCostTime=1e3/U/this.playSpeed,W.nCostTime<20&&(W.nCostTime=20),c.logKeyLimit("PlayMethod::draw drawingInTime, frameRate:",5,U+" delayTime:"+pe+" size:"+this.videoDataQueue.size),this.videoDataQueue.enqueue(W)}},F.resize=function(n,v){c.log("PlayMethod::resize width="+n+" height="+v),this.stopRendering(),this.videoDataQueue!==null&&this.videoDataQueue.clear(),this.videoRender&&(this.videoRender=null);var I=new N(n,v);this.videoRender=new J(this.canvasElem,I),I=null,this.startRendering()},F.initStartTime=function(){c.log("PlayMethod::initStartTime"),this.startTimestamp===0&&this.startRendering()},F.startRendering=function(){c.log("PlayMethod::startRendering"),this.startTimestamp===0&&(this.isRendering=!0,window.requestAnimationFrame(this.drawingInTime))},F.pause=function(){c.log("PlayMethod::pause"),this.isRendering=!1},F.play=function(){c.log("PlayMethod::play"),this.isRendering=!0,window.requestAnimationFrame(this.drawingInTime)},F.stopRendering=function(){c.log("PlayMethod::stopRendering"),this.isRendering=!1,this.startTimestamp=0},F.setPlaySpeed=function(n){c.log("PlayMethod::setPlaySpeed speed:"+n),this.playSpeed=n},F.terminate=function(){c.log("PlayMethod::terminate"),this.isRendering=!1,this.startTimestamp=0,this.videoDataQueue!==null&&(this.videoDataQueue.clear(),this.videoDataQueue=null),this.videoRender&&(this.videoRender.clearCanvas(),this.videoRender=null)},F.getVideoBufferQueueSize=function(){return this.videoDataQueue.size},$}(),Z=function(){function $(n){this.m_nVideoEncodeType=n,this._types=[],this._dtsBase=0,this.datas={},this.init()}var F=$.prototype;return F.init=function(){for(var n in this._types={avc1:[],avcC:[],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:[],hev1:[],hvcC:[]},this._types)this._types[n]=[n.charCodeAt(0),n.charCodeAt(1),n.charCodeAt(2),n.charCodeAt(3)];this._dtsBase=0,this.m_nVideoEncodeType==1?this.datas.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]):this.m_nVideoEncodeType==2&&(this.datas.FTYP=new Uint8Array([105,115,111,109,0,0,2,0,105,115,111,109,105,115,111,50,97,118,99,49,109,112,52,49])),this.datas.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),this.datas.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),this.datas.STSC=this.datas.STCO=this.datas.STTS,this.datas.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),this.datas.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),this.datas.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),this.datas.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),this.datas.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),this.datas.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])},F.box=function(n){for(var v=8,I=Array.prototype.slice.call(arguments,1),U=0;U>>24&255,W[fe++]=v>>>16&255,W[fe++]=v>>>8&255,W[fe++]=255&v,W.set(n,fe),fe+=4;for(var pe=0;pe>8,255&n.channelcount,(65280&n.samplesize)>>8,255&n.samplesize,0,0,0,0,(65280&n.samplerate)>>8,255&n.samplerate,0,0]),this.esds(n))},F.videoSample=function(n){var v=n.vps||[],I=n.sps||[],U=n.pps||[],W=[],fe=[],pe=[],ve=0;for(ve=0;ve>>8),W.push(255&v[ve].byteLength),W=W.concat(Array.prototype.slice.call(v[ve]));for(ve=0;ve>>8),fe.push(255&I[ve].byteLength),fe=fe.concat(Array.prototype.slice.call(I[ve]));for(ve=0;ve>>8),pe.push(255&U[ve].byteLength),pe=pe.concat(Array.prototype.slice.call(U[ve]));return this.m_nVideoEncodeType==1?this.box(this._types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&n.width)>>8,255&n.width,(65280&n.height)>>8,255&n.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),this.box(this._types.avcC,new Uint8Array([1,n.profileIdc,n.profileCompatibility,n.levelIdc,255].concat([I.length]).concat(fe).concat([U.length]).concat(pe)))):this.m_nVideoEncodeType==2?this.box(this._types.hev1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&n.width)>>8,255&n.width,(65280&n.height)>>8,255&n.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),this.box(this._types.hvcC,new Uint8Array([1,n.general_profile_flag,(4278190080&n.general_profile_compatibility_flags)>>>24,(16711680&n.general_profile_compatibility_flags)>>>16,(65280&n.general_profile_compatibility_flags)>>>8,255&n.general_profile_compatibility_flags,(0xff0000000000&n.general_constraint_indicator_flags)>>>40,(0xff00000000&n.general_constraint_indicator_flags)>>>32,(4278190080&n.general_constraint_indicator_flags)>>>24,(16711680&n.general_constraint_indicator_flags)>>>16,(65280&n.general_constraint_indicator_flags)>>>8,255&n.general_constraint_indicator_flags,n.general_level_idc,240,0,252,252|n.chroma_format_idc,248|n.bitDepthLumaMinus8,248|n.bitDepthChromaMinus8,0,0,n.rate_layers_nested_length,3].concat([32,0,1]).concat(W).concat([33,0,1]).concat(fe).concat([34,0,1]).concat(pe)))):void 0},F.stsd=function(n){return n.type==="audio"?this.box(this._types.stsd,this.datas.STSD_PREFIX,this.audioSample(n)):this.box(this._types.stsd,this.datas.STSD_PREFIX,this.videoSample(n))},F.dinf=function(){return this.box(this._types.dinf,this.box(this._types.dref,this.datas.DREF))},F.stbl=function(n){return this.box(this._types.stbl,this.stsd(n),this.box(this._types.stts,this.datas.STTS),this.box(this._types.stsc,this.datas.STSC),this.box(this._types.stsz,this.datas.STSZ),this.box(this._types.stco,this.datas.STCO))},F.mdhd=function(n){var v=n.timescale,I=n.duration;return this.box(this._types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,v>>>24&255,v>>>16&255,v>>>8&255,255&v,I>>>24&255,I>>>16&255,I>>>8&255,255&I,85,196,0,0]))},F.hdlr=function(n){var v=null;return v=n.type==="audio"?this.datas.HDLR_AUDIO:this.datas.HDLR_VIDEO,this.box(this._types.hdlr,v)},F.minf=function(n){var v=null;return v=n.type==="audio"?this.box(this._types.smhd,this.datas.SMHD):this.box(this._types.vmhd,this.datas.VMHD),this.box(this._types.minf,v,this.dinf(),this.stbl(n))},F.tkhd=function(n){var v=n.id,I=n.duration,U=n.width,W=n.height;return this.box(this._types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,v>>>24&255,v>>>16&255,v>>>8&255,255&v,0,0,0,0,I>>>24&255,I>>>16&255,I>>>8&255,255&I,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,U>>>8&255,255&U,0,0,W>>>8&255,255&W,0,0]))},F.mdia=function(n){return this.box(this._types.mdia,this.mdhd(n),this.hdlr(n),this.minf(n))},F.trex=function(n){var v=n.id,I=new Uint8Array([0,0,0,0,v>>>24&255,v>>>16&255,v>>>8&255,255&v,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return this.box(this._types.trex,I)},F.mvhd=function(n,v){return this.box(this._types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,v>>>24&255,v>>>16&255,v>>>8&255,255&v,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))},F.trak=function(n){return this.box(this._types.trak,this.tkhd(n),this.mdia(n))},F.mvex=function(n){return this.box(this._types.mvex,this.trex(n))},F.moov=function(n){var v=this.mvhd(n.timescale,n.duration),I=this.trak(n),U=this.mvex(n);return this.box(this._types.moov,v,I,U)},F.sdtp=function(n){for(var v=n.samples||[],I=v.length,U=new Uint8Array(4+I),W=0;W>>24,(16711680&n.length)>>>16,(65280&n.length)>>>8,255&n.length,(4278190080&v)>>>24,(16711680&v)>>>16,(65280&v)>>>8,255&v,0,0,0,0]},F.videoTrun=function(n,v){var I,U=null,W=null,fe=0,pe=v;if((I=n.samples||[])[0].frameDuration===null)for(pe+=24+4*I.length,U=this.trunHeader1(I,pe),fe=0;fe>>24,(16711680&W.size)>>>16,(65280&W.size)>>>8,255&W.size]);else for(pe+=24+4*I.length+4*I.length,U=this.trunHeader1(I,pe),fe=0;fe>>24,(16711680&W.frameDuration)>>>16,(65280&W.frameDuration)>>>8,255&W.frameDuration,(4278190080&W.size)>>>24,(16711680&W.size)>>>16,(65280&W.size)>>>8,255&W.size]);return this.box(this._types.trun,new Uint8Array(U))},F.trun=function(n,v){return n.type==="audio"?this.audioTrun(n,v):this.videoTrun(n,v)},F.mfhd=function(n){var v=new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n]);return this.box(this._types.mfhd,v)},F.traf=function(n){var v,I,U;return v=this.box(this._types.tfhd,new Uint8Array([0,2,0,0,0,0,0,1])),I=this.box(this._types.tfdt,new Uint8Array([0,0,0,0,n.baseMediaDecodeTime>>>24&255,n.baseMediaDecodeTime>>>16&255,n.baseMediaDecodeTime>>>8&255,255&n.baseMediaDecodeTime])),U=this.trun(n,72),this.box(this._types.traf,v,I,U)},F.moof=function(n,v){return this.box(this._types.moof,this.mfhd(n),this.traf(v))},F.mdat=function(n){return this.box(this._types.mdat,n)},F.initSegment=function(n){var v=this.box(this._types.ftyp,this.datas.FTYP),I=this.moov(n),U=new Uint8Array(v.byteLength+I.byteLength);return U.set(v,0),U.set(I,v.byteLength),U},F.mediaSegment=function(n,v,I,U){var W=this.moof(n,v),fe=this.mdat(I),pe=null;return(pe=new Uint8Array(W.byteLength+fe.byteLength)).set(W),pe.set(fe,W.byteLength),pe},$}(),re=function(){function $(n){this.BITWISE0x00000007=7,this.BITWISE0x7=7,this.BITWISE2=2,this.BITWISE3=3,this.BITWISE4=4,this.BITWISE5=5,this.BITWISE6=6,this.BITWISE8=8,this.BITWISE12=12,this.BITWISE15=15,this.BITWISE16=16,this.BITWISE32=32,this.BITWISE64=64,this.BITWISE255=255,this.BITWISE256=256,this.MAX_SUB_LAYERS=6,this.vBitCount=0,this.m_nVideoEncodeType=n,this.vBitCount=0,this.spsMap=new ae}var F=$.prototype;return F.getBit=function(n,v){var I=v,U=this.vBitCount+I>>this.BITWISE3;return I=this.vBitCount+v&this.BITWISE0x00000007,n[U]>>this.BITWISE0x7-(I&this.BITWISE0x7)&1},F.setBits=function(n,v){var I=this.vBitCount>>this.BITWISE3,U=8*(I+1)-this.vBitCount;if(U<8)for(var W=0;W<3;W++){var fe=n[I+W];fe=W==0?fe>>U<>8-U|1<=0;fe--,W++)U|=this.getBit(n,W)<0)for(W=Ke;W<8;W++)this.readBits(Qe,2);for(W=0;W0&&(n.sourceBuffer.updating||(n.sourceBuffer.appendBuffer(n.segmentWaitDecode[0]),n.segmentWaitDecode.shift()))},this.onSourceError=function(){c.logKeyLimit("VideoMediaSource.js onSourceError",5),n.mseErrorCallback&&n.mseErrorCallback("SourceError")},this.onSourceBufferError=function(){c.logKeyLimit("VideoMediaSource.js onSourceBufferErrormsg",5),n.mseErrorCallback&&n.mseErrorCallback("SourceBufferError")},this.onError=function(){c.logKeyLimit("VideoMediaSource.js onError",5),n.videoElement.error&&(c.logKeyLimit("VideoMediaSource.js Media error code:",5,n.videoElement.error.code),c.logKeyLimit("VideoMediaSource.js Media error message:",5,n.videoElement.error.message)),n.videoPause(),n.errorCallback&&n.errorCallback({errorCode:101}),n.videoElement.error.code!==MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED&&n.videoElement.error.code!==MediaError.MEDIA_ERR_DECODE||n.mseErrorCallback&&n.mseErrorCallback("Error")},this.onPlaying=function(){n.isPlaying=!0,n.isPause=!1,n.hasPlayed=!0,n.playStart||(n.playStart=!0,n.beginDrawCallback?n.beginDrawCallback("this.playStart"):c.logKeyLimit("VideoMediaSource.js onPlaying beginDrawCallback is null",5))},this.onPause=function(){n.isPlaying=!1,n.isPause=!0},this.onTimeupdate=function(){var v=parseInt(n.mediaSource.duration,10),I=parseInt(n.videoElement.currentTime,10),U={timestamp:n.receiveTimeStamp.timestamp-n.speedValue*(v-I+(n.speedValue!==1?1:0)),timestamp_usec:0,timezone:n.receiveTimeStamp.timezone};I===0||isNaN(v)||(n.playbackFlag,!n.playbackFlag&&Math.abs(v-I)>4&&n.speedValue===1||n.videoElement.paused||(n.preVideoTimeStamp===null?(n.preVideoTimeStamp=U,n.startAudioCallback(0,"currentTime")):(n.preVideoTimeStamp.timestamp<=U.timestamp&&n.speedValue>=1||n.preVideoTimeStamp.timestamp>U.timestamp&&n.speedValue<1)&&(n.playbackFlag,n.preVideoTimeStamp=U,n.audioStartNum++,n.audioStartNum>4&&n.startAudioCallback(U.timestamp,"currentTime"))))},this.onDurationchange=function(){n.sourceBuffer!=null&&(n.videoPlay(),n.videoUpdatingEx())},this.onResize=function(){n.videoSizeCallback()},this.onSeeked=function(){n.videoPlay()},this.onWaiting=function(){if(n.ctrDelayFlag=!1,n.playbackFlag&&n.isPlaying,n.waitCount==0)n.firstWaitingTime=Date.now(),n.waitCount++;else{n.waitCount++;var v=Date.now()-n.firstWaitingTime;n.waitCount>=5&&v<6e4&&n.delay<=1&&(n.delay=n.delay+.1,n.waitCount=0,n.firstWaitingTime=0,Y.log("this.delay + 0.1 = "+n.delay))}},this.canplay=function(){},this.canplayThrough=function(){n.ctrDelayFlag=!0},this.initSegmentFunc=null,this.codecInfo="",this.m_nVideoEncodeType=null,this.playbackTimeStamp=null,this.videoSizeCallback=null,this.startAudioCallback=null,this.beginDrawCallback=null,this.mseErrorCallback=null,this.browserType=null,this.speedValue=1,this.receiveTimeStamp={timestamp:0,timestamp_usec:0,timezone:0},this.changeTimeStampFlag=!1,this.firstTimeStamp={timestamp:0,timestamp_usec:0,timezone:0},this.preVideoTimeStamp=null,this.playbackFlag=!1,this.bufferEventListenerArray=null,this.videoEventListenerArray=null,this.mediaSourceEventListenerArray=null,this.isPlaying=!1,this.isPause=!0,this.audioStartNum=0,this.ctrDelayFlag=!1,this.segmentWaitDecode=[],this.delay=.5,this.videoElement=null,this.mediaSource=null,this.sourceBuffer=null,this.firstWaitingTime=0,this.waitCount=0,this.playStart=!1,this.captureTimer=null,this.captureTypeFormat="png",this.captureQuality=1,this.browser=z(),this.checkTimer=null,this.preCurTime=0,this.preDuration=0,this.MAX_SAME_TIME=10,this.sameTime=0,this.MAX_DELAYTIME=8,this.errorCallback=null,this.sliderIsPause=!1,this.hasPlayed=!1,this.videoBufferQueue=[],this.curFrameInfo={},this.fps=25,this.delayPlay=.5,this.bInitFlag=!1,this.bSourceOpend=!1}var F=$.prototype;return F.addBufferEventListener=function(n){this.bufferEventListenerArray=[],this.bufferEventListenerArray.push({type:"error",function:this.onSourceBufferError}),this.bufferEventListenerArray.push({type:"updateend",function:this.onSourceUpdateend}),this.bufferEventListenerArray.push({type:"update",function:this.onSourceUpdate});for(var v=0;v0)return Y.count("1.this.segmentWaitDecode.length: "+this.segmentWaitDecode.length),this.segmentWaitDecode.push(n),void Y.count("2.this.segmentWaitDecode.length: "+this.segmentWaitDecode.length);this.sourceBuffer.updating?this.segmentWaitDecode.push(n):(this.sourceBuffer.appendBuffer(n),this.sliderIsPause&&(this.curFrameInfo.buffer=n))}catch(v){this.segmentWaitDecode.length=0,this.errorCallback&&this.errorCallback({errorCode:101})}},F.videoPlay=function(){if(this.videoElement.paused&&(this.videoSizeCallback(),!this.isPlaying&&!this.sliderIsPause))try{this.videoElement.play()}catch(n){c.error("VideoMediaSource.js ",n)}},F.videoPause=function(){if(!this.videoElement.paused&&!this.isPause)try{c.log("VideoMediaSource.js videoPause"),this.videoElement.pause()}catch(n){c.error("VideoMediaSource.js ",n)}},F.autoPlayNextMediaSegment=function(){this.videoBufferQueue.length&&this.appendNextMediaSegment(this.videoBufferQueue.shift())},F.getBase64URL=function(){var n=document.createElement("canvas");return n.width=this.videoElement.videoWidth,n.height=this.videoElement.videoHeight,n.getContext("2d").drawImage(this.videoElement,0,0,n.width,n.height),n.toDataURL()},F.checkBufferSize=function(){var n=1*this.sourceBuffer.buffered.start(this.sourceBuffer.buffered.length-1),v=1*this.sourceBuffer.buffered.end(this.sourceBuffer.buffered.length-1);v-n>60&&this.sourceBuffer.remove(n,v-10)},F.videoUpdatingEx=function(){if(this.mediaSource!==null)try{if(this.sourceBuffer&&this.sourceBuffer.buffered.length>0){if(this.checkBufferSize(),this.hasPlayed&&!this.sliderIsPause||this.videoElement.duration>this.delayPlay&&(this.videoElement.currentTime=(this.videoElement.duration-this.delayPlay).toFixed(3),this.fps<10?this.delayPlay+=.5:this.delayPlay+=.1),this.videoElement&&this.videoElement.duration-this.videoElement.currentTime>this.MAX_DELAYTIME){if(this.errorCallback&&this.errorCallback({errorCode:101}),this.sourceBuffer.updating)return;var n=this.videoElement.duration-.1;this.videoElement.currentTime=n.toFixed(3)}if(this.ctrDelayFlag&&!this.playbackFlag){var v=1*this.sourceBuffer.buffered.start(this.sourceBuffer.buffered.length-1),I=1*this.sourceBuffer.buffered.end(this.sourceBuffer.buffered.length-1);if((this.videoElement.currentTime===0?I-v:I-this.videoElement.currentTime)>=this.delay+.1){if(Y.log("\u8DF3\u79D2"),this.sourceBuffer.updating)return;var U=I-.1;this.videoElement.currentTime=U.toFixed(3)}}}}catch(W){}},F.loadedmetadata=function(){},F.init=function(n){this.browserType=z(),c.log("VideoMediaSource.js init this.browserType = "+this.browserType),this.videoElement=n,this.browserType==="safari"?(this.videoElement.autoplay=!1,c.warn("VideoMediaSource.js autoplay \u88AB\u8BBE\u7F6E\u4E3A false")):(this.videoElement.autoplay=!0,c.warn("VideoMediaSource.js autoplay \u88AB\u8BBE\u7F6E\u4E3A true")),this.videoElement.controls=!1,this.videoElement.preload="auto",this.addVideoEventListener(this.videoElement),this.appendInitSegment()},F.setInitSegmentFunc=function(n){this.initSegmentFunc=n},F.getVideoElement=function(){return this.videoElement},F.setCodecInfo=function(n){this.codecInfo=n},F.setMediaSegment=function(n){this.videoBufferQueue.push(n),this.sliderIsPause||this.autoPlayNextMediaSegment()},F.capturePic=function(n,v){this.captureTimer&&clearInterval(this.captureTimer),this.ctrDelayFlag||this.browser==="edge"?this.doCapture(n,v):this.captureTimer=setInterval(function(){this.ctrDelayFlag&&(this.doCapture(n,v),clearInterval(this.captureTimer))},200)},F.capture=function(n,v){var I=this;v===void 0&&(v={}),c.log("VideoMediaSource.js \u6293\u56FE fileName=",n," options=",v),this.captureTimer&&clearInterval(this.captureTimer);var U=document.createElement("canvas");U.width=this.videoElement.videoWidth,U.height=this.videoElement.videoHeight;var W=v.ivsCanvasArr,fe=W===void 0?[]:W;this.ctrDelayFlag||this.browser==="edge"||this.browser==="firefox"?(U.getContext("2d").drawImage(this.videoElement,0,0,U.width,U.height),this.saveCapture(U,fe,n)):this.captureTimer=setInterval(function(){I.ctrDelayFlag&&(U.getContext("2d").drawImage(I.videoElement,0,0,U.width,U.height),I.saveCapture(U,fe,n),clearInterval(I.captureTimer))},200)},F.getCapture=function(n,v,I){c.log("VideoMediaSource.js \u6293\u56FE fileName=",n," type=",v," quality=",I),this.captureTimer&&clearInterval(this.captureTimer),this.captureQuality=I||1,this.captureTypeFormat="png",v!=="jpg"&&v!=="jpeg"||(this.captureTypeFormat="jpeg");var U=document.createElement("canvas"),W=null;return U.width=this.videoElement.videoWidth,U.height=this.videoElement.videoHeight,(this.ctrDelayFlag||this.browser==="edge"||this.ctrDelayFlag)&&(U.getContext("2d").drawImage(this.videoElement,0,0,U.width,U.height),W=U.toDataURL("image/"+this.captureTypeFormat,this.captureQuality)),W},F.setInitSegment=function(){this.appendInitSegment()},F.ResetInitSegmentFlag=function(){this.bInitFlag=!1},F.setTimeStamp=function(n,v){this.playbackTimeStamp=n},F.setVideoSizeCallback=function(n){this.videoSizeCallback=n},F.setAudioStartCallback=function(n){this.startAudioCallback=n},F.setMseErrorCallback=function(n){this.mseErrorCallback=n},F.getPlaybackTimeStamp=function(){return this.playbackTimeStamp},F.setSpeedPlay=function(n){this.speedValue=n},F.setvideoTimeStamp=function(n){var v=Math.abs(this.receiveTimeStamp.timestamp-n.timestamp)>3;this.firstTimeStamp.timestamp,v===!0&&(this.audioStartNum=0,this.firstTimeStamp=n,this.startAudioCallback(this.firstTimeStamp.timestamp,"init"),this.receiveTimeStamp.timestamp!==0&&this.playbackFlag&&(this.videoElement.currentTime=this.mediaSource.duration-.1),this.preVideoTimeStamp=null),this.receiveTimeStamp=n},F.pause=function(){this.sliderIsPause=!0,this.videoPause()},F.play=function(){this.sliderIsPause=!1},F.setPlaybackFlag=function(n){this.playbackFlag=n},F.setTimeStampInit=function(){this.preVideoTimeStamp=null,this.firstTimeStamp={timestamp:0,timestamp_usec:0,timezone:0}},F.close=function(){this.removeEventListener(),this.videoPause()},F.setBeginDrawCallback=function(n){this.beginDrawCallback=n},F.setErrorCallback=function(n){this.errorCallback=n},F.terminate=function(){this.videoElement!==null&&(this.removeEventListener(),this.mediaSource.readyState==="open"&&(this.sourceBuffer&&this.mediaSource.removeSourceBuffer(this.sourceBuffer),this.mediaSource.endOfStream()),this.sourceBuffer=null,this.mediaSource=null,this.videoElement=null,this.captureTimer&&(clearInterval(this.captureTimer),this.captureTimer=null),this.checkTimer&&(clearInterval(this.checkTimer),this.checkTimer=null),this.sameTime=0,this.preDuration=0,this.preCurTime=0,this.bInitFlag=!1,this.bSourceOpend=!1)},F.getDuration=function(){return this.videoElement.duration-this.videoElement.currentTime},F.setFPS=function(n){n&&(this.fps=n)},F.setRtspOver=function(){this.videoElement.duration.toFixed(4)-0===this.videoElement.currentTime.toFixed(4)-0||(this.preCurTime=parseInt(this.videoElement.currentTime),this.preDuration=parseInt(this.videoElement.duration),this.checkTimer=setInterval(function(){this.preCurTime===parseInt(this.videoElement.currentTime)&&this.preDuration===parseInt(this.videoElement.duration)?this.sameTime++>this.MAX_SAME_TIME&&(this.checkTimer&&clearInterval(this.checkTimer),this.checkTimer=null):parseInt(this.videoElement.currentTime)>=parseInt(this.videoElement.duration)?(this.checkTimer&&clearInterval(this.checkTimer),this.checkTimer=null):(this.preCurTime=parseInt(this.videoElement.currentTime),this.preDuration=parseInt(this.videoElement.duration),this.sameTime=0)},150))},F.getVideoBufferQueueSize=function(){return this.videoBufferQueue.length},F.playNextFrame=function(){this.autoPlayNextMediaSegment()},F.getCurFrameInfo=function(){return this.curFrameInfo.src=this.getBase64URL(),this.curFrameInfo},F.setDecodeType=function(n){c.log("VideoMediaSource.js \u8BBE\u7F6E\u89E3\u7801\u7C7B\u578B nVideoDecodeType=",n),this.m_nVideoEncodeType=n},F.saveCapture=function(n,v,I){c.log("VideoMediaSource.js \u4FDD\u5B58\u6293\u56FE pictureName=",I),n.toBlob(function(U){U&&(I.toLowerCase().endsWith(".jpg")||I.toLowerCase().endsWith(".jpeg")||(I+=".jpg"),savePicture(U,I||"download.jpg"))},"image/jpeg",.9)},F.doCapture=function(n,v){c.log("VideoMediaSource.js \u6267\u884C\u6293\u56FE pictureName=",v,"canvasArr.length=",n.length);var I=document.createElement("canvas");I.width=this.videoElement.width,I.height=this.videoElement.height;var U=I.getContext("2d");U.drawImage(this.videoElement,0,0,I.width,I.height);for(var W=0;W>>24,this.inputBufferSub[1]=(16711680&v)>>>16,this.inputBufferSub[2]=(65280&v)>>>8,this.inputBufferSub[3]=255&v;var I=new Uint8Array(this.inputBufferSub.length+this.mediaFrameSize);if(this.mediaFrameSize!==0&&I.set(this.mediaFrameData),I.set(this.inputBufferSub,this.mediaFrameSize),this.mediaFrameData=I,this.mediaFrameSize=this.mediaFrameData.length,this.mediaSegmentNum%this.numBox===0&&this.mediaSegmentNum!==0){if(this.mediaInfo.samples[0].frameDuration!==null&&(this.sequenseNum===1?this.mediaInfo.baseMediaDecodeTime=0:this.mediaInfo.baseMediaDecodeTime=this.prebaseMediaDecodeTime,this.prebaseMediaDecodeTime=this.curbaseMediaDecoderTime),this.speed==1)for(var U=this.mediaInfo.samples.length,W=this.sumDuration/this.numBox,fe=0;fe=n)return $;var v=n-$.length;return new Array(v).fill(String(F)).join("")+$}function ie($,F){return $!==void 0&&$?(F=F||new Date,$=($=($=($=($=($=$.replace(/y/gi,ee(F.getFullYear()),0)).replace(/m/gi,ee(F.getMonth()+1),0)).replace(/d/gi,ee(F.getDate()),0)).replace(/h/gi,ee(F.getHours()),0)).replace(/i/gi,ee(F.getMinutes()),0)).replace(/s/gi,ee(F.getSeconds()),0)):""}function ge($,F){var n="ymd_his",v=($=$||{}).nameFormat||[n];F=F||new Date;var I="";if(O(v,"string"))v=[v,{}];else{if(!O(v,"array"))return void function(pe){throw new Error(pe)}("name format must be string or array");O(v[0],"string")||(v[0]=n),O(v[1],"object")||(v[1]={})}var U=v[0].split(/\{(?:[^{}]+)\}/),W=v[1];v[0].replace(/\{([^{}]*)\}/g,function(pe,ve,Ue){I+=ie(),I+=ve in W?W[ve]:pe});var fe=U.shift();return I+=ie(fe,F)}function _e($,F){this.name=$,this.allowUpDateName=!0,this.byteLength=0,this.options=F,this.startTime=new Date().toLocaleString()}_e.prototype.setEndTime=function(){this.endTime=new Date().toLocaleString()},_e.prototype.updateNameByStream=function($,F){if(this.allowUpDateName){var n=new Uint8Array(F),v=(n[19]<<24)+(n[18]<<16)+(n[17]<<8)+n[16]>>>0,I="20"+(v>>26)+"/"+(v>>22&15)+"/"+(v>>17&31)+" "+(v>>12&31)+":"+(v>>6&63)+":"+(63&v);this.name=ge($,new Date(I)),this.allowUpDateName=!1,n=null}F=null};var we=new function(){var $={count:0,total:0,group:[]},F=function(){};return F.prototype.add=function(n){$.count++,$.total+=n.byteLength,$.group.push(n)},F.prototype.get=function(n){return n in $?$[n]:$},new F};function ke(){var $=1048576,F=null,n=null,v=0,I=void 0,U=null,W=null,fe=!1;function pe(){this.onMessage=function(){},this.postMessage=function(ve){this.__onMessage(ve)},this.__postMessage=function(ve){this.onMessage(ve)}}return pe.prototype.__onMessage=function(ve){var Ue=ve;switch(Ue.type){case"init":c.logKeyLimit("localRecord.js onMessage init",5,Ue),this.init(Ue.options);break;case"addBuffer":c.logKeyLimit("localRecord.js onMessage addBuffer",5,Ue),this.addBuffer(Ue);break;case"close":c.logKeyLimit("localRecord.js onMessage close",5,Ue),this.close();break;default:c.logKeyLimit("localRecord.js onMessage unkown",5,ve)}},pe.prototype.init=function(ve){c.log("localRecord.js SlogConstruct::\u521D\u59CB\u5316() options=",ve),this.fullSize=ve.fullSize||1/0,this.singleSize=ve.singleSize+20*$||120*$,I="init",W=ve.recordName,this.limitOptions=Object.assign({limitBy:"fullSize"},ve.limitOptions),this.nameOptions=Object.assign({namedBy:"date",nameFormat:["ymd_his",{}]},ve.nameOptions)},pe.prototype._malloc=function(ve){if(c.logKeyLimit("localRecord.js SlogConstruct._malloc() size=",5,ve),F&&n&&(n=null,F=null),U&&(U=null),F=new ArrayBuffer(ve))if(c.log("localRecord.js ArrayBuffer \u521B\u5EFA\u6210\u529F"),n=new DataView(F)){c.log("localRecord.js DataView \u521B\u5EFA\u6210\u529F");var Ue=this.nameOptions,ze="";W!=null?ze=W:this.nameOptions.namedBy.toLowerCase()==="date"?ze=ge(Ue):ze=ge(),U=new _e(ze)}else c.error("localRecord.js DataView \u521B\u5EFA\u5931\u8D25");else c.error("localRecord.js ArrayBuffer \u521B\u5EFA\u5931\u8D25")},pe.prototype._initVideoMem=function(){!F&&this.singleSize&&(c.log("localRecord.js SlogConstruct.\u521D\u59CB\u5316\u89C6\u9891\u5185\u5B58() singleSize=",this.singleSize),this._malloc(this.singleSize))},pe.prototype.appendVideoBuf=function(ve,Ue){var ze=ve.byteLength,Le=Ue+ze;if(Le>this.singleSize-20*$&&!fe)c.logKeyLimit("localRecord.js SlogConstruct.\u8FFD\u52A0\u89C6\u9891\u6570\u636E() \u89C6\u9891\u5185\u5B58\u8FBE\u5230\u8BBE\u7F6E\u4E0A\u9650\uFF0C\u89E6\u53D1\u505C\u6B62\u5F55\u5236 \u957F\u5EA6=",5,ze," nOffset=",Ue),fe=!0,this.__postMessage({type:"stopRecord"});else{c.logKeyLimit("localRecord.js SlogConstruct.\u8FFD\u52A0\u89C6\u9891\u6570\u636E() \u957F\u5EA6=",5,ze," nOffset=",Ue);for(var Qe=Ue;Qev&&(v=Le),this.__postMessage({type:"pendding",size:v,total:this.singleSize})}},pe.prototype.addBuffer=function(ve){if(I!=="closed"){var Ue=ve.buffer,ze=ve.offset;this._initVideoMem(),I="addBuffer";var Le=ze+Ue.length;if(we.get("total")+Le>this.fullSize)return c.logKeyLimit("localRecord.js SlogConstruct.addBuffer() \u89C6\u9891\u5185\u5B58\u8FBE\u5230\u8BBE\u7F6E\u4E0A\u9650\uFF0C\u89E6\u53D1\u505C\u6B62\u5F55\u5236",5),void this.__postMessage({type:"stopRecord"});this.appendVideoBuf(Ue,ze)}},pe.prototype.inNodePlace=function(){if(c.logKeyLimit("localRecord.js \u5230\u4E86\u4E00\u4E2A\u4E0B\u8F7D\u8282\u70B9",5,I),I==="addBuffer"){I="download",U.updateNameByStream(this.nameOptions,F.slice(0,20)),U.byteLength=v,U.setEndTime(),we.add(U);var ve=F.slice(0,v);if(this.reset(),c.logKeyLimit("localRecord.js \u5230\u4E86\u4E00\u4E2A\u4E0B\u8F7D\u8282\u70B9 postMessage download status=",5,I),this.__postMessage({type:"download",data:Ee({},U,{buffer:ve})}),ve=null,this.limitOptions.limitBy==="count"){var Ue=this.limitOptions.count;if(c.logKeyLimit("localRecord.js \u5230\u4E86\u4E00\u4E2A\u4E0B\u8F7D\u8282\u70B9 \u4E2A\u6570\u9650\u5236=",5,Ue),Ue){var ze=we.get("count");c.logKeyLimit("localRecord.js \u5230\u4E86\u4E00\u4E2A\u4E0B\u8F7D\u8282\u70B9 \u5DF2\u6709\u4E2A\u6570=",5,ze),Ue===ze&&this.close()}}}},pe.prototype.reset=function(){v=0,c.log("localRecord.js SlogConstruct.reset() singleSize=",this.singleSize),this._malloc(this.singleSize)},pe.prototype.close=function(){c.log("localRecord.js SlogConstruct::\u5173\u95ED\u4E0B\u8F7D()"),this.inNodePlace(),I!=="closed"&&I!==void 0?(I="closed",c.log("localRecord.js SlogConstruct::\u5173\u95ED\u4E0B\u8F7D() \u5F53\u524D\u72B6\u6001\u4E0D\u662Fclosed"),this.__postMessage({type:"closed",message:"record was closed"}),F=null,n=null):c.log("localRecord.js SlogConstruct::\u5173\u95ED\u4E0B\u8F7D() \u5F53\u524D\u72B6\u6001\u662Fclosed")},new pe}var Se=function(){function $(){this.init_play_start_time=0,this.init_play_end_time=0,this.play_time=0,this.play_socket_start_time=0,this.input_data_first_time=0,this.input_data_last_time=0,this.stream_i_first_time=0,this.stream_i_last_time=0,this.play_socket_end_time=0,this.decode_type="",this.thread_type="",this.stream_encrypt_type="",this.stream_type="",this.talk_start_time=0,this.talk_socket_start_time=0,this.talk_input_data_first_time=0,this.talk_input_data_last_time=0,this.talk_socket_end_time=0,this.audio_frame_first_time=0,this.audio_frame_last_time=0,this.duration_audio_frame=0,this.duration_video_frame=0,this.duration_input_data=0,this.duration_play_socket=0,this.duration_talk_socket=0}var F=$.prototype;return F.getLogs=function(){this.duration_audio_frame=this.audio_frame_last_time-this.audio_frame_first_time,this.duration_video_frame=this.stream_i_last_time-this.stream_i_first_time,this.duration_input_data=this.input_data_last_time-this.input_data_first_time,this.duration_play_socket=this.play_socket_end_time-this.play_socket_start_time,this.duration_talk_socket=this.talk_socket_end_time-this.talk_socket_start_time;var n={init_play_start_time:this.init_play_start_time,init_play_end_time:this.init_play_end_time,play_time:this.play_time,play_socket_start_time:this.play_socket_start_time,input_data_first_time:this.input_data_first_time,stream_i_first_time:this.stream_i_first_time,input_data_last_time:this.input_data_last_time,stream_i_last_time:this.stream_i_last_time,play_socket_end_time:this.play_socket_end_time,decode_type:this.decode_type,thread_type:this.thread_type,stream_encrypt_type:this.stream_encrypt_type};return c.log("AnalysisData::getLogs this = ",this,"return = ",n),n},F.setLogs=function(n,v){n==="init_play_start_time"?this.init_play_start_time==0&&(this.init_play_start_time=v,c.log("AnalysisData::setLogs ",n,v)):n==="init_play_end_time"?this.init_play_end_time==0&&(this.init_play_end_time=v,c.log("AnalysisData::setLogs ",n,v)):n==="play_time"?this.play_time==0&&(this.play_time=v,c.log("AnalysisData::setLogs ",n,v)):n==="talk_start_time"?this.talk_start_time==0&&(this.talk_start_time=v,c.log("AnalysisData::setLogs ",n,v)):n==="play_socket_start_time"?this.play_socket_start_time==0&&(this.play_socket_start_time=v,c.log("AnalysisData::setLogs ",n,v)):n==="play_socket_end_time"?this.play_socket_end_time=v:n==="talk_socket_start_time"?this.talk_socket_start_time==0&&(this.talk_socket_start_time=v,c.log("AnalysisData::setLogs ",n,v)):n==="talk_socket_end_time"?this.talk_socket_end_time=v:n==="input_data_time"?(this.input_data_first_time==0&&(this.input_data_first_time=v,c.log("AnalysisData::setLogs ",n,v)),this.input_data_last_time=v):n==="talk_input_data_time"?(this.talk_input_data_first_time==0&&(this.talk_input_data_first_time=v,c.log("AnalysisData::setLogs ",n,v)),this.talk_input_data_last_time=v):n==="stream_i_time"?(this.stream_i_first_time==0&&(this.stream_i_first_time=v,c.log("AnalysisData::setLogs ",n,v)),this.stream_i_last_time=v):n==="audio_frame_time"?(this.audio_frame_first_time==0&&(this.audio_frame_first_time=v,c.log("AnalysisData::setLogs ",n,v)),this.audio_frame_last_time=v):n==="decode_type"?this.decode_type!==v&&(this.decode_type=v,c.log("AnalysisData::setLogs ",n,v)):n==="thread_type"?this.thread_type!==v&&(this.thread_type=v,c.log("AnalysisData::setLogs ",n,v)):n==="stream_encrypt_type"?this.stream_encrypt_type!==v&&(this.stream_encrypt_type=v,c.log("AnalysisData::setLogs ",n,v)):n==="stream_type"?this.stream_type!==v&&(this.stream_type=v,c.log("AnalysisData::setLogs ",n,v)):c.error("AnalysisData::setLogs unkown type ",n)},$}(),Te=function(){function $(n,v){this.nPlayId=v;var I=this;this.canvasElem=null,this.videoElem=null,this.ivsCanvasElem=null,this.playback=!1,this.supportMultiThread=n,this.playSdkWorker=null,this.port=0,this.jsPortAry=null,this.jsInputData=null,this.jsInputDataAry=null,this.playMethod=null,this.audioRender=null,this.videoRender=null,this.jsFrameBuf=null,this.jsFrameInfo=null,this.dataView=null,this.jsBuf=null,this.jsBufY=null,this.jsBufU=null,this.jsBufV=null,this.jsYuvDataY=null,this.jsYuvDataU=null,this.jsYuvDataV=null,this.timeData={timestamp:0,timestamp_usec:0},this.smartEncode=0,this.videoEncodeType=0,this.jsAudioBuf=null,this.jsAudioData=null,this.jsPreAudioDataLenth=0,this.preSamples=0,this.preBits=0,this.supportH264MSE=!0,this.supportH265MSE=!0,this.preWidth=0,this.preHeight=0,this.totalStreamLength=0,this.captureStart=!1,this.pictureName="",this.savVolume=0,this.portCallback=null,this.beginDrawCallback=null,this.decodeStartCallback=null,this.decodeStartCallbackPrivate=function(U){I.decodeStartCallback&&I.decodeStartCallback(U)},this.videoFrameInfoCallback=null,this.audioFrameInfoCallback=null,this.initSuccessCallback=null,this.errorCallback=null,this.RecordReachLimitCallback=null,this.playStart=!1,this.recordType=0,this.localRecord=null,this.hwDecoder=null,this.jsBuf=null,this.jsFrameBodyData=null,this.inputDataQueue=[],this.ack=!1,this.digitalSignCallBack=null,this.encArray=new Uint8Array,this.filter=!1,this.log_c=!1,this.log_js=!1,this.analysisData=new Se}$.printJsLogFromSubThread=function(n){$.CONFIG_LOG_printJsLogFromSubThread=n,console.log("\u662F\u5426\u8F93\u51FAjs\u65E5\u5FD7\u6765\u81EA\u5B50\u7EBF\u7A0B=",n)},$.printCppLogFromSubThread=function(n){$.CONFIG_LOG_printCppLogFromSubThread=n,console.log("\u662F\u5426\u8F93\u51FAc++\u65E5\u5FD7\u6765\u81EA\u5B50\u7EBF\u7A0B=",n)},$.debugSaveDavFile=function(n){$.CONFIG_DEBUG_debugSaveDavFile=n,console.log("\u662F\u5426\u4FDD\u5B58\u7801\u6D41\u6570\u636E\u5230\u6587\u4EF6=",n)},$.getFreePlaySdkId=function(){return++$.PLAY_SDK_IDX};var F=$.prototype;return F.initBegain=function(){this.analysisData.setLogs("init_play_start_time",G())},F.initEnd=function(){this.analysisData.setLogs("init_play_end_time",G())},F.startPullStreamBegain=function(){this.analysisData.setLogs("play_time",G())},F.startTalkBegain=function(){this.analysisData.setLogs("talk_start_time",G())},F.onDecodeStart=function(n){n.decodeMode==="video"?this.analysisData.setLogs("decode_type","2"):n.decodeMode==="canvas"&&this.analysisData.setLogs("decode_type","1")},F.onWebSocketOpen=function(n){n==="video"?this.analysisData.setLogs("play_socket_start_time",G()):this.analysisData.setLogs("talk_socket_start_time",G())},F.onWebSocketClose=function(n){n==="video"?this.analysisData.setLogs("play_socket_end_time",G()):this.analysisData.setLogs("talk_socket_end_time",G())},F.init=function(n){this.canvasElem=n.canvasElem,this.videoElem=n.videoElem,this.ivsCanvasElem=n.ivsCanvasElem,this.playback=n.bPlayBack,this.log_c=n.log_c,this.log_js=n.log_js,this.logPlaySDKApiLog("\u521D\u59CB\u5316PlaySDKImpl nPlayId=",this.nPlayId,n),this.videoElem&&("MediaSource"in window?typeof window.MediaSource=="undefined"?(c.warn("Common.js \u4E0D\u652F\u6301MSE\uFF0C\u56E0\u4E3A MediaSource API \u662F undefined"),!1):typeof window.MediaSource.isTypeSupported!="undefined"||(c.warn("Common.js \u4E0D\u652F\u6301MSE\uFF0C\u56E0\u4E3A MediaSource API \u7684 isTypeSupported \u51FD\u6570 undefined"),!1):(c.warn("Common.js \u4E0D\u652F\u6301MSE\uFF0C\u56E0\u4E3A MediaSource API \u4E0D\u5B58\u5728"),!1))||(this.supportH264MSE=!1,this.supportH265MSE=!1);var v=1;if(this.supportMultiThread){this.logPlaySDKApiLog("\u591A\u7EBF\u7A0B"),this.analysisData.setLogs("thread_type","2");var I=Module._malloc(1);this.jsPortAry=new Uint8Array(Module.HEAPU8.buffer,I,1),Module._PLAY_GetFreePort(this.jsPortAry.byteOffset),this.port=this.jsPortAry[0],this.jsPortAry=null,Module._free(I),Module._PLAY_Init(this.port,this.nPlayId),v=Module._PLAY_SetStreamOpenMode(this.port,this.playback),v=Module._PLAY_OpenStream(this.port,0,0,10485760),v=Module._PLAY_SetCacheMode(this.port,1),v=Module._PLAY_PlaySound(this.port),v=Module._PLAY_SetPrintLogLevel(this.log_c?6:0),v=Module._PLAY_SetDecodeThreadNum(this.port,2),v=Module._PLAY_SetSupportWebMSE(this.port,this.supportH264MSE,this.supportH265MSE),this.canvasElem?(Module._PLAY_ViewResolutionChanged(this.port,parseInt(this.canvasElem.width),parseInt(this.canvasElem.height),0),v=Module._PLAY_Play(this.port,1)):(Module._PLAY_ViewResolutionChanged(this.port,0,0,0),v=Module._PLAY_Play(this.port,0))}else this.logPlaySDKApiLog("\u5355\u7EBF\u7A0B"),this.analysisData.setLogs("thread_type","1"),this.playSdkWorker=new Worker(n.strDecodeFilePath+"/PlaySdkWorker.js"),this.playSdkWorker.onmessage=this.playSdkWorkerMessage.bind(this);if(v){if(this.supportMultiThread)this.jsInputData=Module._malloc(5242880),this.jsInputDataAry=new Uint8Array(Module.HEAPU8.buffer,this.jsInputData,5242880);else{var U=this.playback===!0?100:25;this.playMethod=new q(this.canvasElem,U,this.playback)}(this.supportH264MSE||this.supportH265MSE)&&this.videoElem&&(this.hwDecoder=new ue(this.supportMultiThread),this.hwDecoder.init(this.videoElem,this.canvasElem,this.ivsCanvasElem),this.hwDecoder.setMseErrorListener(this.mseErrorCallback.bind(this)))}return this.nPlayId},F.getPlayPort=function(){return this.port},F.setEncrypt=function(n){n==1||n==2||n==3?this.analysisData.setLogs("stream_encrypt_type",String(n)):this.analysisData.setLogs("stream_encrypt_type","0")},F.setStreamType=function(n){n==="rtsp"?this.analysisData.setLogs("stream_type","1"):n==="rtsv"&&this.analysisData.setLogs("stream_type","2")},F.inputData=function(n,v){if($.CONFIG_DEBUG_debugSaveDavFile){var I=new Uint8Array(this.encArray.length+n.length);I.set(this.encArray),I.set(n,this.encArray.length),this.encArray=I}var U=1;if(v==="video"?(this.logPlaySDKApiLogWithKeyLimit("\u8F93\u5165\u6570\u636E\u6D41 \u94FE\u8DEF\u6765\u6E90=video",5,"\u7801\u6D41\u6570\u636E\u957F\u5EA6=",n.length),this.analysisData.setLogs("input_data_time",G())):v==="talk"||v==="videoTalk"?(this.logPlaySDKApiLogWithKeyLimit("\u8F93\u5165\u6570\u636E\u6D41 \u94FE\u8DEF\u6765\u6E90=",5,v,"\u7801\u6D41\u6570\u636E\u957F\u5EA6=",n.length),this.analysisData.setLogs("talk_input_data_time",G())):this.logPlaySDKApiErrorWithKeyLimit("\u8F93\u5165\u6570\u636E\u6D41 \u4EE3\u7801\u903B\u8F91\u9519\u8BEF \u672A\u77E5\u94FE\u8DEF\u6765\u6E90=",5,v),this.supportMultiThread)this.jsInputDataAry&&(this.jsInputDataAry.set(n),U=Module._PLAY_InputData(this.port,this.jsInputDataAry.byteOffset,n.length));else{this.totalStreamLength+=n.length;var W={type:"InputData",data:n};this.playSdkWorker&&this.playSdkWorker.postMessage(W)}return U},F.pause=function(n){this.logPlaySDKApiLog("\u6682\u505C/\u6062\u590D\u64AD\u653E",n);var v=1;if(this.supportMultiThread)v=Module._PLAY_Pause(this.port,n);else{n?(this.playMethod.pause(),this.audioRender.mute(1)):(this.playMethod.play(),this.audioRender.mute(0));var I={type:"Pause",pause:n};this.playSdkWorker&&this.playSdkWorker.postMessage(I)}return v},F.stop=function(){var n=this;this.logPlaySDKApiLog("\u505C\u6B62\u64AD\u653E"),$.CONFIG_DEBUG_debugSaveDavFile&&this.writeFile("rawDav.dav",this.encArray),this.playStart=!1;var v=1;if(this.savVolume=0,this.supportMultiThread){if(Module._PLAY_UnInit(this.port),Module._PLAY_ResetBuffer(this.port,1),Module._PLAY_ResetBuffer(this.port,2),Module._PLAY_ResetBuffer(this.port,3),Module._PLAY_ResetBuffer(this.port,4),(v=Module._PLAY_Stop(this.port))==0)return v;setTimeout(function(){v=Module._PLAY_CloseStream(n.port)},1),this.jsInputDataAry=null,Module._free(this.jsInputData)}else this.playSdkWorker&&(this.playSdkWorker.addEventListener("message",function(I){var U=I.data.type;n.logPlaySDKApiLogWithKeyLimit("Received from worker:",5,U),U=="stopFromWorker"&&(n.logPlaySDKApiLog("Received from worker: stopFromWorker"),n.playSdkWorker.terminate(),n.playSdkWorker=null),n.supportMultiThread||(n.audioRender&&(n.audioRender.stop(),n.audioRender=null),n.playMethod&&(n.playMethod.stopRendering(),n.playMethod.terminate(),n.playMethod=null))}),this.playSdkWorker.postMessage({type:"Stop",stop:null}));return this.jsFrameBuf=null,this.jsFrameInfo=null,this.dataView=null,this.jsBufY=null,this.jsBufU=null,this.jsBufV=null,this.jsYuvDataY=null,this.jsYuvDataU=null,this.jsYuvDataV=null,this.jsAudioBuf=null,this.jsAudioData=null,this.supportMultiThread&&(this.audioRender&&(this.audioRender.stop(),this.audioRender=null),this.playMethod&&(this.playMethod.stopRendering(),this.playMethod.terminate(),this.playMethod=null)),this.videoRender&&this.videoRender.clearCanvas(),this.preWidth=0,this.preHeight=0,this.totalStreamLength=0,(this.supportH264MSE||this.supportH265MSE)&&this.videoElem&&this.hwDecoder&&this.hwDecoder.stop(),v},F.setSpeed=function(n){this.logPlaySDKApiLog("\u8BBE\u7F6E\u500D\u901F",n);var v=1;if(this.supportMultiThread)v=Module._PLAY_SetPlaySpeed(this.port,n);else{var I={type:"SetPlaySpeed",speed:n};this.playSdkWorker&&this.playSdkWorker.postMessage(I)}return this.playMethod&&this.playMethod.setPlaySpeed(n),v},F.setVolume=function(n){this.logPlaySDKApiLog("\u97F3\u91CF=",n),this.savVolume=n,this.audioRender&&this.audioRender.setVolume(n)},F.mute=function(n){this.audioRender&&this.audioRender.mute(n)},F.capturePic=function(n){this.captureStart=!0,this.pictureName=n,this.hwDecoder&&this.hwDecoder.CapturePic(n),this.playMethod&&this.playMethod.capturePic(this.ivsCanvasElem,this.pictureName)},F.setSecurityKey=function(n,v){if(this.supportMultiThread){var I=Module._malloc(n.length+1);Module.HEAPU8.set(n,I),Module.HEAPU8[I+n.length]=0,this.logPlaySDKApiLog("\u8BBE\u7F6EAES\u89E3\u5BC6\u5BC6\u94A5() call Module._PLAY_SetSecurityKey() - \u591A\u7EBF\u7A0B"),Module._PLAY_SetSecurityKey(this.port,I,v),Module._free(I)}else{var U={type:"SetSecurityKey",szKey:n,keyLen:v};this.playSdkWorker&&this.playSdkWorker.postMessage(U)}},F.setSecurityKeyByEncrytType=function(n,v,I,U,W){if(this.supportMultiThread){var fe=Module._malloc(49),pe=new Uint8Array(Module.HEAPU8.buffer),ve=0;if(n==1)v.forEach(function(Qe,lt){pe[fe+ve|0]=Qe,ve++});else if(n==2){var Ue=new Uint8Array(16);if(pe[fe+ve|0]=1,ve++,W==0){for(var ze=0;ze<16;ze++)Ue[ze]=0;W=16,U=Ue}U.forEach(function(Qe,lt){pe[fe+ve|0]=Qe,ve++}),v.forEach(function(Qe,lt){pe[fe+ve]=Qe,ve++}),I=1+I+W,Ue=null}else n==3&&v.split("").forEach(function(Qe,lt){pe[fe+ve|0]=Qe.charCodeAt(0),ve++});this.logPlaySDKApiLog("\u8BBE\u7F6EAES\u89E3\u5BC6\u5BC6\u94A52() call Module._PLAY_SetSecurityKey() - \u591A\u7EBF\u7A0B"),Module._PLAY_SetSecurityKey(this.port,fe,I)}else{var Le={type:"SetSecurityEncrytTypeKey",szKey:v,keyLen:I};this.playSdkWorker&&this.playSdkWorker.postMessage(Le)}},F.parsePlayToken=function(n,v,I){var U=new TextEncoder,W=U.encode(I),fe=new Uint8Array(W.length);fe.set(W);var pe=Module._malloc(fe.length+1);Module.HEAPU8.set(fe,pe),Module.HEAPU8[pe+W.length]=0;var ve=U.encode(n),Ue=new Uint8Array(ve.length);Ue.set(ve);var ze=Module._malloc(Ue.length+1);Module.HEAPU8.set(Ue,ze),Module.HEAPU8[ze+ve.length]=0;var Le=U.encode(v),Qe=new Uint8Array(Le.length);Qe.set(Le);var lt=Module._malloc(Qe.length+1);Module.HEAPU8.set(Qe,lt),Module.HEAPU8[lt+Le.length]=0;var nt=Module._PLAY_ParsePlayTokenEx(ze,lt,pe),Ke=Module.UTF8ToString(nt);return Module._PLAY_FreeStringPointer(nt),Module._free(pe),Module._free(ze),Module._free(lt),JSON.parse(Ke)},F.getDecryptKey=function(n,v,I,U,W){this.logPlaySDKApiLog("getDecryptKey encryptType:",n,"keyLen:",I,"keyIdLen:",W);var fe=new TextEncoder,pe=fe.encode(v),ve=new Uint8Array(pe.length);ve.set(pe);var Ue=Module._malloc(ve.length+1);Module.HEAPU8.set(ve,Ue),Module.HEAPU8[Ue+pe.length]=0;var ze=fe.encode(U),Le=new Uint8Array(ze.length);Le.set(ze);var Qe=Module._malloc(Le.length+1);Module.HEAPU8.set(Le,Qe),Module.HEAPU8[Qe+ze.length]=0;var lt=Module._PLAY_ParseDecryptKey(n,Ue,I,Qe,W),nt=null;return n==2?nt=Module.UTF8ToString(lt):n==3&&(nt=new Uint8Array(Module.HEAPU8.buffer,lt,49).slice()),Module._PLAY_FreeStringPointer(lt),Module._free(Ue),Module._free(Qe),nt},F.resetBuffer=function(){this.logPlaySDKApiLog("\u6E05\u7A7A\u6D41\u64AD\u653E\u6A21\u5F0F\u4E0B\u6E90\u7F13\u51B2\u533A\u7684\u5269\u4F59\u6570\u636E"),this.supportMultiThread&&(Module._PLAY_ResetBuffer(0),Module._PLAY_ResetBuffer(1),Module._PLAY_ResetBuffer(2))},F.frameDataCallBack=function(n,v,I,U,W,fe){this.logPlaySDKApiLogWithKeyLimit("frameDataCallBack",5," port=",n," size=",W," frameInfo=",fe);var pe={};this.jsFrameInfo||(this.jsFrameBuf=new ArrayBuffer(40),this.jsFrameInfo=new Uint8Array(this.jsFrameBuf),this.dataView=new DataView(this.jsFrameBuf)),this.jsFrameInfo.set(Module.HEAPU8.subarray(fe,fe+40)),pe.nFrameID=this.dataView.getUint32(0,!0),pe.nFrameType=this.dataView.getUint8(4),pe.nFrameSubType=this.dataView.getUint8(5),pe.nYear=this.dataView.getUint16(30,!0),pe.nMonth=this.dataView.getUint8(32),pe.nDay=this.dataView.getUint8(33),pe.nHour=this.dataView.getUint8(34),pe.nMinute=this.dataView.getUint8(35),pe.nSecond=this.dataView.getUint8(36);var ve=Date.UTC(pe.nYear,pe.nMonth,pe.nDay,pe.nHour,pe.nMinute,pe.nSecond)/1e3;if(this.timeData.timestamp=ve,this.timeData.timestamp_usec=0,pe.nFrameType==1){if(this.filter){if(pe.nFrameSubType!==0)return;this.filter=!1}if(pe.nEncodeType=this.dataView.getUint8(6),pe.nStreamType=this.dataView.getUint8(7),pe.nEncodeType==2||pe.nEncodeType==4||pe.nEncodeType==8?this.videoEncodeType=1:pe.nEncodeType==12&&(this.videoEncodeType=2),pe.nWidth=this.dataView.getUint16(16,!0),pe.nHeight=this.dataView.getUint16(18,!0),pe.nWidth==0||pe.nHeight==0)return;if(pe.nFrameRate=this.dataView.getUint8(37),pe.nStride=this.dataView.getUint16(20,!0),pe.nFrameSubType==18||pe.nFrameSubType==19||pe.nFrameSubType==20?this.smartEncode=1:pe.nFrameSubType==0&&(this.smartEncode=0),(this.videoEncodeType==1&&this.supportH264MSE==1||this.videoEncodeType==2&&this.supportH265MSE==1)&&!this.smartEncode){var Ue;this.analysisData.setLogs("decode_type","2"),this.jsBuf=new ArrayBuffer(W),this.jsFrameBodyData=new Uint8Array(this.jsBuf),this.jsFrameBodyData.set(Module.HEAPU8.subarray(v,v+W)),(Ue=this.hwDecoder)!=null&&Ue.decode&&this.hwDecoder.decode(this.jsFrameBodyData,null,null,W,pe)}else{if(this.analysisData.setLogs("decode_type","1"),pe.nWidth!=this.preWidth||pe.nHeight!=this.preHeight){this.preWidth=pe.nWidth,this.preHeight=pe.nHeight,this.supportMultiThread?this.resize(pe.nWidth,pe.nHeight):this.playMethod.resize(pe.nWidth,pe.nHeight);var ze={decodeMode:"canvas"};ze.width=pe.nWidth,ze.height=pe.nHeight,[2,4,8].includes(pe.nEncodeType)?ze.encodeMode="H264":pe.nEncodeType===12&&(ze.encodeMode="H265"),this.decodeStartCallbackPrivate(ze),this.playStart||(this.playStart=!0,this.beginDrawCallback("PlayStart")),this.jsBufY=null,this.jsBufU=null,this.jsBufV=null,this.jsYuvDataY=null,this.jsYuvDataU=null,this.jsYuvDataV=null,this.jsBufY=new ArrayBuffer(pe.nWidth*pe.nHeight),this.jsYuvDataY=new Uint8Array(this.jsBufY),this.jsBufU=new ArrayBuffer(pe.nWidth*pe.nHeight/4),this.jsYuvDataU=new Uint8Array(this.jsBufU),this.jsBufV=new ArrayBuffer(pe.nWidth*pe.nHeight/4),this.jsYuvDataV=new Uint8Array(this.jsBufV)}var Le=0;for(Le=0;Le2?I-2:0),W=2;W2?I-2:0),W=2;W2?I-2:0),W=2;W=0;--$e){var De=this.tryEntries[$e],Ge=De.completion;if(De.tryLoc==="root")return xe("end");if(De.tryLoc<=this.prev){var yt=v.call(De,"catchLoc"),Mt=v.call(De,"finallyLoc");if(yt&&Mt){if(this.prev=0;--xe){var $e=this.tryEntries[xe];if($e.tryLoc<=this.prev&&v.call($e,"finallyLoc")&&this.prev<$e.finallyLoc){var De=$e;break}}De&&(de==="break"||de==="continue")&&De.tryLoc<=ce&&ce<=De.finallyLoc&&(De=null);var Ge=De?De.completion:{};return Ge.type=de,Ge.arg=ce,De?(this.method="next",this.next=De.finallyLoc,Ke):this.complete(Ge)},complete:function(de,ce){if(de.type==="throw")throw de.arg;return de.type==="break"||de.type==="continue"?this.next=de.arg:de.type==="return"?(this.rval=this.arg=de.arg,this.method="return",this.next="end"):de.type==="normal"&&ce&&(this.next=ce),Ke},finish:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.finallyLoc===de)return this.complete(xe.completion,xe.afterLoc),Ut(xe),Ke}},catch:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.tryLoc===de){var $e=xe.completion;if($e.type==="throw"){var De=$e.arg;Ut(xe)}return De}}throw Error("illegal catch attempt")},delegateYield:function(de,ce,xe){return this.delegate={iterator:$t(de),resultName:ce,nextLoc:xe},this.method==="next"&&(this.arg=$),Ke}},F}function Ye($,F,n,v,I,U,W){try{var fe=$[U](W),pe=fe.value}catch(ve){return void n(ve)}fe.done?F(pe):Promise.resolve(pe).then(v,I)}function Je($){return function(){var F=this,n=arguments;return new Promise(function(v,I){var U=$.apply(F,n);function W(pe){Ye(U,v,I,W,fe,"next",pe)}function fe(pe){Ye(U,v,I,W,fe,"throw",pe)}W(void 0)})}}Re.INIT=0,Re.WRITING=1,Re.DONE=2,window.savePicture=Re.savePicture;var rt=function(){function $(n){this.onAudioDataCallback=n,this.audioContext=null,this.audioWorkletNode=null,this.mediaStream=null,this.mediaStreamSource=null,this.isRecording=!1,this.audioTalkErrorCallback=null,this.pcmData=[],this.audioEncoder=null}var F=$.prototype;return F.startRecording=function(){var n=Je(Ne().mark(function v(I,U,W){return Ne().wrap(function(fe){for(;;)switch(fe.prev=fe.next){case 0:return U===void 0&&(U=8e3),W===void 0&&(W=1),this.audioEncoder=I,fe.next=5,this.startRecordingInternal(U,W);case 5:case"end":return fe.stop()}},v,this)}));return function(v,I,U){return n.apply(this,arguments)}}(),F.startRecordingInternal=function(){var n=Je(Ne().mark(function v(I,U){var W,fe=this;return Ne().wrap(function(pe){for(;;)switch(pe.prev=pe.next){case 0:if(I===void 0&&(I=8e3),U===void 0&&(U=1),pe.prev=2,navigator.mediaDevices){pe.next=7;break}return c.error("navigator.mediaDevices\u4E3A\u7A7A, navigator =",navigator),this.audioTalkErrorCallback({errorCode:601}),pe.abrupt("return");case 7:if(navigator.mediaDevices.getUserMedia){pe.next=11;break}return c.error("navigator.mediaDevices.getUserMedia\u4E3A\u7A7A, navigator.mediaDevices =",navigator.mediaDevices),this.audioTalkErrorCallback({errorCode:601}),pe.abrupt("return");case 11:return pe.next=13,this.checkAudioDevices();case 13:if(pe.sent){pe.next=18;break}return this.audioTalkErrorCallback({errorCode:602}),c.error("AudioCapturer::startRecordingInternal \u6CA1\u6709\u97F3\u9891\u8F93\u5165\u8BBE\u5907"),pe.abrupt("return");case 18:return pe.next=20,this.requestMicrophoneAccess(I,U);case 20:pe.sent&&c.log("AudioCapturer::startRecordingInternal \u5F55\u97F3\u5DF2\u542F\u52A8"),pe.next=27;break;case 24:pe.prev=24,pe.t0=pe.catch(2),this.handleError(pe.t0);case 27:pe.prev=27,window.AudioContext=window.AudioContext||window.webkitAudioContext||window.mozAudioContext||window.oAudioContext||window.msAudioContext,this.audioContext=new AudioContext,this.audioEncoder.setSampleRate(this.audioContext.sampleRate),c.log("AudioCapturer::startRecordingInternal \u8BBE\u7F6EaudioContext\u7684\u91C7\u6837\u7387",this.audioContext.sampleRate),pe.next=38;break;case 34:return pe.prev=34,pe.t1=pe.catch(27),Y.error("AudioCapturer::startRecordingInternal. Web Audio API is not supported in this web browser! : "+pe.t1),pe.abrupt("return");case 38:return pe.next=40,this.audioContext.audioWorklet.addModule("WasmLib/AudioProcessor.js");case 40:return this.audioWorkletNode=new AudioWorkletNode(this.audioContext,"audio-processor"),W={audio:!0,video:!1},pe.prev=42,pe.next=45,navigator.mediaDevices.getUserMedia(W);case 45:this.mediaStream=pe.sent,c.log("AudioCapturer::startRecordingInternal \u5B9E\u9645mediaStream\u7684\u91C7\u6837\u7387",this.mediaStream.getAudioTracks()[0].getSettings().sampleRate),this.mediaStreamSource=this.audioContext.createMediaStreamSource(this.mediaStream),this.mediaStreamSource.connect(this.audioWorkletNode),this.audioWorkletNode.connect(this.audioContext.destination),this.audioWorkletNode.port.onmessage=function(ve){var Ue,ze=ve.data;(Ue=fe.pcmData).push.apply(Ue,ze),fe.onAudioDataCallback&&fe.onAudioDataCallback(ze)},this.isRecording=!0,pe.next=57;break;case 54:pe.prev=54,pe.t2=pe.catch(42),c.error("AudioCapturer::startRecordingInternal. Error accessing audio stream:",pe.t2);case 57:case"end":return pe.stop()}},v,this,[[2,24],[27,34],[42,54]])}));return function(v,I){return n.apply(this,arguments)}}(),F.requestMicrophoneAccess=function(){var n=Je(Ne().mark(function v(I,U){var W;return Ne().wrap(function(fe){for(;;)switch(fe.prev=fe.next){case 0:return fe.prev=0,fe.next=3,navigator.mediaDevices.getUserMedia({audio:!0});case 3:if(!(W=fe.sent)){fe.next=7;break}return W.getTracks().forEach(function(pe){return pe.stop()}),fe.abrupt("return",!0);case 7:fe.next=12;break;case 9:fe.prev=9,fe.t0=fe.catch(0),this.handleMicrophoneError(fe.t0);case 12:return fe.abrupt("return",!1);case 13:case"end":return fe.stop()}},v,this,[[0,9]])}));return function(v,I){return n.apply(this,arguments)}}(),F.checkAudioDevices=function(){var n=Je(Ne().mark(function v(){var I;return Ne().wrap(function(U){for(;;)switch(U.prev=U.next){case 0:return U.prev=0,U.next=3,navigator.mediaDevices.enumerateDevices();case 3:return I=U.sent,c.log("AudioCapturer::checkAudioDevices \u68C0\u67E5\u53EF\u7528\u97F3\u9891\u8F93\u5165\u8BBE\u5907\uFF1A",I),U.abrupt("return",I.some(function(W){return W.kind==="audioinput"}));case 8:return U.prev=8,U.t0=U.catch(0),c.error("AudioCapturer::checkAudioDevices \u68C0\u67E5\u97F3\u9891\u8F93\u5165\u8BBE\u5907\u65F6\u53D1\u751F\u9519\u8BEF\uFF1A",U.t0),U.abrupt("return",!1);case 12:case"end":return U.stop()}},v,null,[[0,8]])}));return function(){return n.apply(this,arguments)}}(),F.handleMicrophoneError=function(n){c.error("AudioCapturer::handleMicrophoneError \u65E0\u6CD5\u8BBF\u95EE\u9EA6\u514B\u98CE\uFF1Aerror = ",n," error.name =",n.name),n.name==="NotAllowedError"||n.name==="NotReadableError"?this.audioTalkErrorCallback({errorCode:603}):n.name==="NotFoundError"&&this.audioTalkErrorCallback({errorCode:604})},F.handleError=function(n){c.error("AudioCapturer::handleError \u9519\u8BEF\uFF1A",n),this.audioTalkErrorCallback&&this.audioTalkErrorCallback({errorCode:605,description:n.message})},F.convertFloat32ToInt16=function(n){for(var v=new Int16Array(n.length),I=0;I=8?127^v:(I<<4|n>>I+3&15)^v},F.search=function(n,v){for(var I=0,U=v.length;I=0?v=213:(v=85,n=-n-8),(I=this.search(n,this.seg_end))>=8?127^v:(U=I<>4&this.QUANT_MASK:n>>I+3&this.QUANT_MASK)^v)},$}(),Oe=function(){function $(n){this.rtpPacket=null,this.rtpInterlevedID=n,this.rtpPacketHead=[36,this.rtpInterlevedID,0,0,0,0],this.DHAV=[68,72,65,86],this.dhav=[100,104,97,118],this.frameNum=245,this.timestamp=0,this.preTime=null,this.MAX_FRAME_INTERVAL=65535,this.rtpDataHeadExtLength=16,this.rtpDataHeadLength=24+this.rtpDataHeadExtLength,this.rtpDataFootLength=8}var F=$.prototype;return F.pack=function(n){var v=n;this.rtpPacket=new Uint8Array(this.rtpPacketHead.length+this.rtpDataHeadLength+v.length+this.rtpDataFootLength);var I=0;this.rtpPacket.set(new Uint8Array([36,this.rtpInterlevedID]),I),I+=2,this.rtpPacket.set(this.getHexArrayDec(this.rtpDataHeadLength+v.length+this.rtpDataFootLength,4,!0),I),I+=4,this.rtpPacket.set(this.DHAV,I),I+=4,this.rtpPacket.set([240],I),I+=1,this.rtpPacket.set([0],I),I+=1,this.rtpPacket.set([1],I),I+=1,this.rtpPacket.set([0],I),I+=1,this.frameNum>65535&&(this.frameNum=240),this.rtpPacket.set(this.getHexArrayDec(this.frameNum),I),I+=4,this.frameNum++;var U=this.getHexArrayDec(this.rtpDataHeadLength+v.length+this.rtpDataFootLength);this.rtpPacket.set(U,I),I+=4;var W=new Date,fe=(W.getFullYear()-2e3<<26)+(W.getMonth()+1<<22)+(W.getDate()<<17)+(W.getHours()<<12)+(W.getMinutes()<<6)+W.getSeconds(),pe=W.getTime(),ve=this.preTime===null?0:pe-this.preTime;this.preTime=pe,this.timestamp=this.timestamp+ve,this.timestamp>this.MAX_FRAME_INTERVAL&&(this.timestamp=this.MAX_FRAME_INTERVAL-this.timestamp),this.rtpPacket.set(this.getHexArrayDec(fe),I),I+=4,this.rtpPacket.set(this.getHexArrayDec(this.timestamp,2),I),I+=2,this.rtpPacket.set([this.rtpDataHeadExtLength],I),I+=1;var Ue=this.getTotal(this.rtpPacket,6);this.rtpPacket.set([Ue],I),I+=1,this.rtpPacket.set([131,1,14,2],I),I+=4,this.rtpPacket.set([150,1,0,0],I),I+=4;var ze=this.sum_32_verify(v,v.length);return this.rtpPacket.set([136],I),I+=1,this.rtpPacket.set(this.getHexArrayDec(ze),I),I+=4,this.rtpPacket.set([0,0,0],I),I+=3,this.rtpPacket.set(v,I),I+=v.length,this.rtpPacket.set(this.dhav,I),I+=4,this.rtpPacket.set(U,I),this.rtpPacket},F.getHexArrayDec=function(n,v,I){var U=[],W=v||4;if(I===!0)for(var fe=0;fe>>8*(W-1-fe)&255;else for(var pe=0;pe>>8*pe&255;return U},F.sum_32_verify=function(n,v){for(var I=0,U=0;U2&&(Hn.ResponseCode=parseInt(sr[1]),Hn.ResponseMessage=sr[2]),Hn.ResponseCode===xt){for(fi=1;fi1&&(Hn.RtpInterlevedID=parseInt(mi[0]),Hn.RtcpInterlevedID=parseInt(mi[1]))}}}else if(ti[0]==="RTP-Info"){ti[1]=ni[fi].substr(9);var lr=ti[1].split(",");for(Hn.RTPInfoList=[],mn=0;mn2?jt-2:0),Gn=2;Gn2?jt-2:0),Gn=2;Gn0;)if(ct[0]!==36){var jt=String.fromCharCode.apply(null,ct);gr("ws\u63A5\u6536\u4FE1\u4EE4",500,jt);var St=null;jt.indexOf("OffLine:File Over")===-1&&jt.indexOf("OffLine: File Over")===-1&&jt.indexOf("OffLine:Internal Error")===-1||(ve.fileOver=!0),jt.indexOf("OffLine:Internal Error")!==-1&&rn({errorCode:500,description:"Internal Error"}),jt.indexOf("OffLine:KmsUnavailable")!==-1&&rn({errorCode:203}),lt===!0?(St=jt.lastIndexOf(`\r +`),lt=!1):St=jt.search(`\r +\r +`);var Gn=jt.search("RTSP");if(Gn===-1)return void(ct=new Uint8Array);if(St===-1)return void(Le=ct.length);Ue=ct.subarray(Gn,St+6),ct=ct.subarray(St+6),Pr(tn(String.fromCharCode.apply(null,Ue))),Le=ct.length}else{if(gr("ws\u63A5\u6536\u7801\u6D41",5),ze=ct.subarray(0,6),!((Qe=ze[2]<<24|ze[3]<<16|ze[4]<<8|ze[5])+6<=ct.length))return void(Le=ct.length);var Hn=ct.subarray(6,Qe+6);Ir(ze,Hn),ct=ct.subarray(Qe+6),Le=ct.length}}function Ir(Wt,ct){xe&&xe(ct,pe?"talk":"video")}function ta(Wt){var ct={};ct.Sessions=[];var Pn=null;Wt.search("Content-Type: application/sdp")!==-1?Pn=Wt.split(`\r +\r +`)[1]:Pn=Wt;var jt=Pn.split(`\r +`),St=0,Gn=!1;for(St=0;St0)switch(Hn[0]){case"a":var fi=Hn[1].split(":");if(fi.length>1){if(fi[0]==="control"){var mn=jt[St].search("control:");Gn===!0?mn!==-1&&(ct.Sessions[ct.Sessions.length-1].ControlURL=jt[St].substr(mn+8)):mn!==-1&&(ct.BaseURL=jt[St].substr(mn+8))}else if(fi[0]==="rtpmap"){var ti=fi[1].split(" ");ct.Sessions[ct.Sessions.length-1].PayloadType=ti[0];var Hi=ti[1].split("/");ct.Sessions[ct.Sessions.length-1].CodecMime=Hi[0],Hi.length>1&&(ct.Sessions[ct.Sessions.length-1].ClockFreq=Hi[1])}else if(fi[0]==="framesize"){var ni=fi[1].split(" ");if(ni.length>1){var sr=ni[1].split("-");ct.Sessions[ct.Sessions.length-1].Width=sr[0],ct.Sessions[ct.Sessions.length-1].Height=sr[1]}}else if(fi[0]==="framerate")ct.Sessions[ct.Sessions.length-1].Framerate=fi[1];else if(fi[0]==="fmtp"){var Zi=jt[St].split(" ");if(Zi.length<2)continue;for(var hi=1;hi1&&(ct.Sessions[ct.Sessions.length-1].SPS=lr[0],ct.Sessions[ct.Sessions.length-1].PPS=lr[1])}}}}}break;case"m":var qi=Hn[1].split(" "),Ct={};Ct.Type=qi[0],Ct.Port=qi[1],Ct.Payload=qi[3],ct.Sessions.push(Ct),Gn=!0;break;case"b":if(Gn===!0){var at=Hn[1].split(":");ct.Sessions[ct.Sessions.length-1].Bitrate=at[1]}}}return ct}function Fn(){for(var Wt=arguments.length,ct=new Array(Wt),Pn=0;Pn2?Pn-2:0),St=2;St>>0).toString(16);return"00000000".substr(0,8-Qe.length)+Qe}function n(Le,Qe,lt){return Le&Qe|~Le<}function v(Le,Qe,lt){return lt&Le|~lt&Qe}function I(Le,Qe,lt){return Le^Qe^lt}function U(Le,Qe,lt){return Qe^(Le|~lt)}function W(Le,Qe){return Le[Qe+3]<<24|Le[Qe+2]<<16|Le[Qe+1]<<8|Le[Qe]}function fe(Le){for(var Qe=[],lt=0;lt>>32-Kt),un=$t}var Qe=ve.length;ve.push(128);var lt=ve.length%64;if(lt>56){for(var nt=0;nt<64-lt;nt++)ve.push(0);lt=ve.length%64}for(nt=0;nt<56-lt;nt++)ve.push(0);ve=ve.concat(function(rn){for(var Xt=[],Ot=0;Ot<8;Ot++)Xt.push(255&rn),rn>>>=8;return Xt}(8*Qe));var Ke=1732584193,xt=4023233417,Lt=2562383102,bt=271733878,un=0,pt=0,et=0,tt=0;for(nt=0;nt=0;de--)Kt=255&($t=arguments[de]),Kt<<=8,Kt|=255&($t>>>=8),Kt<<=8,Kt|=255&($t>>>=8),Kt<<=8,Ut+=F(Kt|=$t>>>=8);return Ut}(bt,Lt,xt,Ke).toUpperCase()}()},bn=function($){return function(F){for(var n,v="0123456789abcdef",I="",U=0;U>>4&15)+v.charAt(15&n);return I}(function(F){return function(n){for(var v="",I=0;I<32*n.length;I+=8)v+=String.fromCharCode(n[I>>5]>>>24-I%32&255);return v}(function(n,v){n[v>>5]|=128<<24-v%32,n[15+(v+64>>9<<4)]=v;for(var I=Array(80),U=1732584193,W=-271733879,fe=-1732584194,pe=271733878,ve=-1009589776,Ue=0;Ue>2),I=0;I>5]|=(255&n.charCodeAt(I/8))<<24-I%32;return v}(F),8*F.length))}(function(F){for(var n,v,I="",U=-1;++U>>6&31,128|63&n):n<=65535?I+=String.fromCharCode(224|n>>>12&15,128|n>>>6&63,128|63&n):n<=2097151&&(I+=String.fromCharCode(240|n>>>18&7,128|n>>>12&63,128|n>>>6&63,128|63&n));return I}($)))};function sn($,F,n,v){return $<20?F&n|~F&v:$<40?F^n^v:$<60?F&n|F&v|n&v:F^n^v}function gn($){return $<20?1518500249:$<40?1859775393:$<60?-1894007588:-899497514}function kn($,F){var n=(65535&$)+(65535&F);return($>>16)+(F>>16)+(n>>16)<<16|65535&n}function Yn($,F){return $<>>32-F}function Nn(){Nn=function(){return F};var $,F={},n=Object.prototype,v=n.hasOwnProperty,I=Object.defineProperty||function(de,ce,xe){de[ce]=xe.value},U=typeof Symbol=="function"?Symbol:{},W=U.iterator||"@@iterator",fe=U.asyncIterator||"@@asyncIterator",pe=U.toStringTag||"@@toStringTag";function ve(de,ce,xe){return Object.defineProperty(de,ce,{value:xe,enumerable:!0,configurable:!0,writable:!0}),de[ce]}try{ve({},"")}catch(de){ve=function(ce,xe,$e){return ce[xe]=$e}}function Ue(de,ce,xe,$e){var De=ce&&ce.prototype instanceof xt?ce:xt,Ge=Object.create(De.prototype),yt=new Kt($e||[]);return I(Ge,"_invoke",{value:Xt(de,xe,yt)}),Ge}function ze(de,ce,xe){try{return{type:"normal",arg:de.call(ce,xe)}}catch($e){return{type:"throw",arg:$e}}}F.wrap=Ue;var Le="suspendedStart",Qe="suspendedYield",lt="executing",nt="completed",Ke={};function xt(){}function Lt(){}function bt(){}var un={};ve(un,W,function(){return this});var pt=Object.getPrototypeOf,et=pt&&pt(pt($t([])));et&&et!==n&&v.call(et,W)&&(un=et);var tt=bt.prototype=xt.prototype=Object.create(un);function ut(de){["next","throw","return"].forEach(function(ce){ve(de,ce,function(xe){return this._invoke(ce,xe)})})}function rn(de,ce){function xe(De,Ge,yt,Mt){var Dt=ze(de[De],de,Ge);if(Dt.type!=="throw"){var vn=Dt.arg,Vt=vn.value;return Vt&&typeof Vt=="object"&&v.call(Vt,"__await")?ce.resolve(Vt.__await).then(function(tn){xe("next",tn,yt,Mt)},function(tn){xe("throw",tn,yt,Mt)}):ce.resolve(Vt).then(function(tn){vn.value=tn,yt(vn)},function(tn){return xe("throw",tn,yt,Mt)})}Mt(Dt.arg)}var $e;I(this,"_invoke",{value:function(De,Ge){function yt(){return new ce(function(Mt,Dt){xe(De,Ge,Mt,Dt)})}return $e=$e?$e.then(yt,yt):yt()}})}function Xt(de,ce,xe){var $e=Le;return function(De,Ge){if($e===lt)throw Error("Generator is already running");if($e===nt){if(De==="throw")throw Ge;return{value:$,done:!0}}for(xe.method=De,xe.arg=Ge;;){var yt=xe.delegate;if(yt){var Mt=Ot(yt,xe);if(Mt){if(Mt===Ke)continue;return Mt}}if(xe.method==="next")xe.sent=xe._sent=xe.arg;else if(xe.method==="throw"){if($e===Le)throw $e=nt,xe.arg;xe.dispatchException(xe.arg)}else xe.method==="return"&&xe.abrupt("return",xe.arg);$e=lt;var Dt=ze(de,ce,xe);if(Dt.type==="normal"){if($e=xe.done?nt:Qe,Dt.arg===Ke)continue;return{value:Dt.arg,done:xe.done}}Dt.type==="throw"&&($e=nt,xe.method="throw",xe.arg=Dt.arg)}}}function Ot(de,ce){var xe=ce.method,$e=de.iterator[xe];if($e===$)return ce.delegate=null,xe==="throw"&&de.iterator.return&&(ce.method="return",ce.arg=$,Ot(de,ce),ce.method==="throw")||xe!=="return"&&(ce.method="throw",ce.arg=new TypeError("The iterator does not provide a '"+xe+"' method")),Ke;var De=ze($e,de.iterator,ce.arg);if(De.type==="throw")return ce.method="throw",ce.arg=De.arg,ce.delegate=null,Ke;var Ge=De.arg;return Ge?Ge.done?(ce[de.resultName]=Ge.value,ce.next=de.nextLoc,ce.method!=="return"&&(ce.method="next",ce.arg=$),ce.delegate=null,Ke):Ge:(ce.method="throw",ce.arg=new TypeError("iterator result is not an object"),ce.delegate=null,Ke)}function ot(de){var ce={tryLoc:de[0]};1 in de&&(ce.catchLoc=de[1]),2 in de&&(ce.finallyLoc=de[2],ce.afterLoc=de[3]),this.tryEntries.push(ce)}function Ut(de){var ce=de.completion||{};ce.type="normal",delete ce.arg,de.completion=ce}function Kt(de){this.tryEntries=[{tryLoc:"root"}],de.forEach(ot,this),this.reset(!0)}function $t(de){if(de||de===""){var ce=de[W];if(ce)return ce.call(de);if(typeof de.next=="function")return de;if(!isNaN(de.length)){var xe=-1,$e=function De(){for(;++xe=0;--$e){var De=this.tryEntries[$e],Ge=De.completion;if(De.tryLoc==="root")return xe("end");if(De.tryLoc<=this.prev){var yt=v.call(De,"catchLoc"),Mt=v.call(De,"finallyLoc");if(yt&&Mt){if(this.prev=0;--xe){var $e=this.tryEntries[xe];if($e.tryLoc<=this.prev&&v.call($e,"finallyLoc")&&this.prev<$e.finallyLoc){var De=$e;break}}De&&(de==="break"||de==="continue")&&De.tryLoc<=ce&&ce<=De.finallyLoc&&(De=null);var Ge=De?De.completion:{};return Ge.type=de,Ge.arg=ce,De?(this.method="next",this.next=De.finallyLoc,Ke):this.complete(Ge)},complete:function(de,ce){if(de.type==="throw")throw de.arg;return de.type==="break"||de.type==="continue"?this.next=de.arg:de.type==="return"?(this.rval=this.arg=de.arg,this.method="return",this.next="end"):de.type==="normal"&&ce&&(this.next=ce),Ke},finish:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.finallyLoc===de)return this.complete(xe.completion,xe.afterLoc),Ut(xe),Ke}},catch:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.tryLoc===de){var $e=xe.completion;if($e.type==="throw"){var De=$e.arg;Ut(xe)}return De}}throw Error("illegal catch attempt")},delegateYield:function(de,ce,xe){return this.delegate={iterator:$t(de),resultName:ce,nextLoc:xe},this.method==="next"&&(this.arg=$),Ke}},F}function pi($,F,n,v,I,U,W){try{var fe=$[U](W),pe=fe.value}catch(ve){return void n(ve)}fe.done?F(pe):Promise.resolve(pe).then(v,I)}function Ln($){return function(){var F=this,n=arguments;return new Promise(function(v,I){var U=$.apply(F,n);function W(pe){pi(U,v,I,W,fe,"next",pe)}function fe(pe){pi(U,v,I,W,fe,"throw",pe)}W(void 0)})}}var si=function(){function $(n){n===void 0&&(n=0),this.nPlayId=n,this.stream=null,this.encoder=null,this.reader=null,this.isEncoding=!1,this.frameCount=0,this.jsInputData=null,this.jsInputDataAry=null,this.encArr=new Uint8Array,this.visualTalkErrorCallback=null,this.isOpenVideo=!1}var F=$.prototype;return F.start=function(){var n=Ln(Nn().mark(function v(I,U){var W,fe,pe,ve,Ue,ze,Le,Qe,lt,nt=this;return Nn().wrap(function(Ke){for(;;)switch(Ke.prev=Ke.next){case 0:return Module._PLAY_StartVideoTalk(U.width,U.height,U.frameRate,225),this.jsInputData=Module._malloc(5242880),this.jsInputDataAry=new Uint8Array(Module.HEAPU8.buffer,this.jsInputData,5242880),Ke.next=5,this.checkEnvironment();case 5:if(Ke.sent){Ke.next=8;break}return Ke.abrupt("return");case 8:return Ke.next=10,navigator.mediaDevices.getUserMedia({video:{width:U.width,height:U.height}});case 10:if(this.stream=Ke.sent,this.isEncoding=!0,this.isOpenVideo=!0,I.srcObject=this.stream,W=this.stream.getVideoTracks()[0],fe=!1,"VideoEncoder"in window?(fe=!0,this.logVideoCapturerLog("VideoEncoder is support")):(fe=!1,this.logVideoCapturerError("VideoEncoder is not support")),pe=!1,!fe){Ke.next=22;break}return Ke.next=21,VideoEncoder.isConfigSupported({codec:"avc1.42001E",height:U.height,width:U.width});case 21:pe=Ke.sent;case 22:fe&&pe.supported?(this.logVideoCapturerLog("\u6D4F\u89C8\u5668\u652F\u6301\u786C\u7F16"),this.encoder=new VideoEncoder({output:this.handleEncodedData.bind(this),error:function(xt){return nt.logVideoCapturerError("\u7F16\u7801\u5668\u9519\u8BEF:",xt)}}),ve={codec:"avc1.42001E",width:U.width,height:U.height,bitrate:256e3,framerate:U.frameRate,latencyMode:"realtime",avc:{format:"annexb"}},this.encoder.configure(ve),typeof MediaStreamTrackProcessor!="undefined"?(Ue=new MediaStreamTrackProcessor({track:W}),this.reader=Ue.readable.getReader(),this.encodeFrames()):((ze=document.createElement("video")).srcObject=this.stream,ze.autoplay=!0,ze.playsInline=!0,Le=function(){var xt=Ln(Nn().mark(function Lt(){var bt,un,pt;return Nn().wrap(function(et){for(;;)switch(et.prev=et.next){case 0:if(nt.isEncoding){et.next=2;break}return et.abrupt("return");case 2:return et.prev=2,(bt=document.createElement("canvas")).width=U.width,bt.height=U.height,bt.getContext("2d").drawImage(ze,0,0,bt.width,bt.height),un=new VideoFrame(bt,{timestamp:1e3*performance.now(),duration:0}),pt=nt.frameCount%225===0,et.next=12,nt.encoder.encode(un,{keyFrame:pt});case 12:un.close(),nt.frameCount++,ze.requestVideoFrameCallback?ze.requestVideoFrameCallback(Le):nt.logVideoCapturerError("requestVideoFrameCallback is not support"),et.next=20;break;case 17:et.prev=17,et.t0=et.catch(2),nt.logVideoCapturerError("\u5904\u7406\u89C6\u9891\u5E27\u65F6\u51FA\u9519:",et.t0);case 20:case"end":return et.stop()}},Lt,null,[[2,17]])}));return function(){return xt.apply(this,arguments)}}(),ze.requestVideoFrameCallback?ze.requestVideoFrameCallback(Le):this.logVideoCapturerError("requestVideoFrameCallback is not support"))):(this.logVideoCapturerLog("\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u786C\u7F16\uFF0C\u8D70\u8F6F\u7F16"),(Qe=document.createElement("video")).srcObject=this.stream,Qe.autoplay=!0,Qe.playsInline=!0,lt=function(){var xt=Ln(Nn().mark(function Lt(){var bt,un,pt,et;return Nn().wrap(function(tt){for(;;)switch(tt.prev=tt.next){case 0:if(nt.isEncoding){tt.next=2;break}return tt.abrupt("return");case 2:try{(bt=document.createElement("canvas")).width=U.width,bt.height=U.height,(un=bt.getContext("2d")).drawImage(Qe,0,0,bt.width,bt.height),pt=un.getImageData(0,0,bt.width,bt.height),et=nt.rgb2yuv(pt.data,bt.width,bt.height),nt.jsInputDataAry.byteLength===0&&(nt.logVideoCapturerLog("ArrayBuffer is detached"),nt.jsInputDataAry=null,nt.jsInputDataAry=new Uint8Array(Module.HEAPU8.buffer,nt.jsInputData,5242880),nt.logVideoCapturerLog("enter inputdata1 new uint8array",nt.jsInputDataAry.length)),nt.jsInputDataAry.set(et),Module._PLAY_InputTalkVideoData(nt.jsInputDataAry.byteOffset,et.length,!0),Qe.requestVideoFrameCallback?Qe.requestVideoFrameCallback(lt):nt.logVideoCapturerError("requestVideoFrameCallback is not support")}catch(ut){nt.logVideoCapturerError("\u5904\u7406\u89C6\u9891\u5E27\u65F6\u51FA\u9519:",ut)}case 3:case"end":return tt.stop()}},Lt)}));return function(){return xt.apply(this,arguments)}}(),Qe.requestVideoFrameCallback?Qe.requestVideoFrameCallback(lt):this.logVideoCapturerError("requestVideoFrameCallback is not support"));case 23:case"end":return Ke.stop()}},v,this)}));return function(v,I){return n.apply(this,arguments)}}(),F.rgb2yuv=function(n,v,I){for(var U=new Uint8Array(v*I*1.5),W=0,fe=v*I,pe=fe+v*I/4,ve=0;ve2?I-2:0),W=2;W2?I-2:0),W=2;W2?I-2:0),W=2;W>2,wi=(3&Mn)<<4|(_n=en[P++])>>4,xi=(15&_n)<<2|(wn=en[P++])>>6,cr=63&wn,isNaN(_n)?xi=cr=64:isNaN(wn)&&(cr=64),l=l+mr.charAt(Bi)+mr.charAt(wi)+mr.charAt(xi)+mr.charAt(cr);return l}(function(en){var Mn,_n=en.trim(),wn=_n.substr(0,2).toLowerCase()==="0x"?_n.substr(2):_n,Bi=wn.length;if(Bi%2!==0)return"";for(var wi=[],xi=0;xi0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byTime"?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&starttime="+Et.playbackStartTime+"&endtime="+Et.playbackEndtime+"&encrypt="+Et.encrypt+"&method=0"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byFile"?Qt="GET "+U+"/"+Et.playbackFile+"?encrypt="+Et.encrypt+"&method=0"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:Qe&&!Fn?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&level=1&method=0"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:Qe&&Fn&&(Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+(Un?"&trackID="+Un:"")+"&level=1&method=0"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`),Qt+=`Accept-Sdp: Private\r +`,Qt+=ut+`\r +`,Qt+=`Connection: keep-alive\r +Cseq: `+Ot+`\r +Host: `+ur+`\r +`,Qt+=`User-Agent: Http Stream Client/1.0\r +`,On?Qt+="Range: npt="+On+`-\r +`:nt?Qt+="Range: npt="+nt+`-\r +`:Ut!=="ContinuePlay"&&(Qt+=`Range: npt=0.000000-\r +`),Qe&&(jn+=`v=0\r +`,jn+=`o=- 2208989105 2208989105 IN IP4 0.0.0.0\r +`,jn+=`s=Media Server\r +`,jn+=`c=IN IP4 0.0.0.0\r +`,jn+=`t=0 0\r +`,jn+=`a=control:*\r +`,jn+=`a=packetization-supported:DH\r +`,jn+=`a=rtppayload-supported:DH\r +`,jn+=`a=range:npt=now-\r +`,jn+=`m=audio 0 RTP/AVP 8\r +`,jn+=`a=control:trackID=5\r +`,jn+=`a=rtpmap:8 PCMA/16000\r +`,jn+=`a=sendonly\r +`,jn+=`m=video 0 RTP/AVP 96\r +`,jn+=`a=control:trackID=7\r +`,jn+=`a=framerate:15.000000\r +`,jn+=`a=rtpmap:96 H264/90000\r +`,jn+=`a=fmtp\r +`,Qt+="Private-Length: "+(jn+=`a=sendonly\r +`).length+`\r +`,Qt+=`Private-Type: application/sdp\r +`),Qt+=ut===rn?'WSSE: UsernameToken Username="'+xe.username+'", PasswordDigest="'+Zn+'", Nonce="'+nn+'", Created="'+yn+`"\r +\r +`:`\r +`,Qt+=jn;break;case"PAUSE":lt&&!Ke?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&method=1"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byTime"?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&starttime="+Et.playbackStartTime+"&endtime="+Et.playbackEndtime+"&encrypt="+Et.encrypt+"&method=1"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byFile"?Qt="GET "+U+"/"+Et.playbackFile+"?encrypt="+Et.encrypt+"&method=1"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:Qe&&!Fn?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&level=1&method=1"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:Qe&&Fn&&(Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+(Un?"&trackID="+Un:"")+"&level=1&method=1"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`),Qt+=`Connection: keep-alive\r +Cseq: `+Ot+`\r +Host: `+ur+`\r +\r +`;break;case"KEEP_LIVE":lt&&!Ke?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&method=2"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byTime"?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&starttime="+Et.playbackStartTime+"&endtime="+Et.playbackEndtime+"&encrypt="+Et.encrypt+"&method=2"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byFile"?Qt="GET "+U+"/"+Et.playbackFile+"?encrypt="+Et.encrypt+"&method=2"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:(Qe&&!Fn||Qe&&Fn)&&(Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&level=1&method=2"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`),Qt+=`Connection: keep-alive\r +Cseq: `+Ot+`\r +Host: `+ur+`\r +\r +`;break;case"STOP":case"TEARDOWN":lt&&!Ke?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&method=3"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byTime"?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&starttime="+Et.playbackStartTime+"&endtime="+Et.playbackEndtime+"&encrypt="+Et.encrypt+"&method=3"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byFile"?Qt="GET "+U+"/"+Et.playbackFile+"?encrypt="+Et.encrypt+"&method=3"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:Qe&&!Fn?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&level=1&method=3"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:Qe&&Fn&&(Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+(Un?"&trackID="+Un:"")+"&level=1&method=3"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`),Qt+=`Connection: keep-alive\r +Cseq: `+Ot+`\r +Host: `+ur+`\r +\r +`;break;case"SCALE":lt&&Ke&&Et.playbackByType==="byTime"?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&starttime="+Et.playbackStartTime+"&endtime="+Et.playbackEndtime+"&encrypt="+Et.encrypt+"&method=0"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:lt&&Ke&&Et.playbackByType==="byFile"&&(Qt="GET "+U+"/"+Et.playbackFile+"?encrypt="+Et.encrypt+"&method=0"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`),Qt+=On<4?"Speed: "+On+`\r +`:"Scale: "+On+`\r +`,Qt+=`Connection: keep-alive\r +Cseq: `+Ot+`\r +Host: `+ur+`\r +\r +`;break;case"DATA_GATHER":Qe&&Fn?Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+(Un?"&trackID="+Un:"")+"&level=1"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`:Qe&&!Fn&&(Qt="GET "+U+"?channel="+Et.playChannel+"&subtype="+Et.playSubtype+"&encrypt="+Et.encrypt+"&level=1"+(Bn||"")+(cn.length>0?"?sourceId="+cn:"")+` HTTP/1.1\r +`),Qt+=`Connection: keep-alive\r +Cseq: `+Ot+`\r +Host: `+ur+`\r +\r +`}return Qt}(Ct,at,Ft,it)}function Gn(Ct){var at,Ft=Ct.search("Cseq: ")+5;if(Ot=parseInt(Ct.slice(Ft,Ft+10))+1,(at=function(Zn){var en={},Mn=0,_n=0,wn=null,Bi=null;Zn.search("Content-Type: application/sdp")!==-1?Bi=Zn.split(`\r +\r +`)[0]:Bi=Zn;var wi=Bi.split(`\r +`),xi=wi[0].split(" ");if(xi.length>2&&(en.ResponseCode=parseInt(xi[1]),en.ResponseMessage=xi[2]),en.ResponseCode===bt){for(Mn=1;Mn1&&(en.RtpInterlevedID=parseInt(V[0]),en.RtcpInterlevedID=parseInt(V[1]))}}}else if(wn[0]==="RTP-Info"){wn[1]=wi[Mn].substr(9);var te=wn[1].split(",");for(en.RTPInfoList=[],_n=0;_n0;)if(Ft[0]!==36){var it=String.fromCharCode.apply(null,Ft);mi("ws\u63A5\u6536\u4FE1\u4EE4",500,it);var wt=null;if(it.includes("302 Moved"))return Hi(U=it.slice(it.indexOf("rtsp://"),it.indexOf(`\r +\r +`))),jt.prototype.disconnect(),void jt.prototype.connect(I,U,W,Et);(it.indexOf("OffLine:File Over")!==-1||it.indexOf("OffLine: File Over")!==-1||it.indexOf("OffLine:Internal Error")!==-1||it.includes("is_session_end: true"))&&(fe.fileOver=!0),it.indexOf("OffLine:Internal Error")!==-1&&(hi("^^^^^^^^Internal Error",it),jt.prototype.disconnect(),Vt({errorCode:500,description:"Internal Error"})),it.indexOf("OffLine:KmsUnavailable")!==-1&&Vt({errorCode:203,description:"KmsUnavailable"}),it.indexOf("Notify: stopTalk")!==-1&&(hi("^^^^^^^^\u8BBE\u5907\u6302\u65AD",it),jt.prototype.disconnect(),Vt({errorCode:207,description:"\u8BBE\u5907\u6302\u65AD"})),it.indexOf("OffLine: TalkBusyLine")!==-1&&(hi("^^^^^^^^\u5BF9\u8BB2\u5FD9\u7EBF",it),jt.prototype.disconnect(),Vt({errorCode:208,description:"\u5BF9\u8BB2\u5FD9\u7EBF"})),it.indexOf("OffLine: TalkCheckFailed")!==-1&&(hi("^^^^^^^^\u5BF9\u8BB2\u5931\u8D25",it),jt.prototype.disconnect(),Vt({errorCode:209,description:"\u5BF9\u8BB2\u5931\u8D25"})),Ut==="Describe"&&it.indexOf("a=control:trackID=")!==-1&&(Er=it.split("a=control:").filter(function(On){return On.startsWith("trackID=")}).map(function(On){return On.split(`\r +`)[0]})||[]),Ir||!ta&&it.indexOf("200 OK")!==-1?(wt=it.lastIndexOf(`\r +`),Ir=!1,ta=!0):wt=it.search(`\r +\r +`);var Un=-1;if((Un=v?it.search("RTSP"):it.search("HTTP"))===-1)return void(Ft=new Uint8Array);if(wt===-1)return void(Ue=Ft.length);pe=Ft.subarray(Un,wt+6),Ft=Ft.subarray(wt+6),mn(Gn(String.fromCharCode.apply(null,pe))),Ue=Ft.length}else{if(tn="PLAY",clearTimeout(Pr),Pr=setTimeout(function(){tn="GET_PARAMETER"},1e4),ve=Ft.subarray(0,6),!((ze=ve[2]<<24|ve[3]<<16|ve[4]<<8|ve[5])+6<=Ft.length))return void(Ue=Ft.length);var Bn=Ft.subarray(6,ze+6);sr(ve,Bn),Ft=Ft.subarray(ze+6),Ue=Ft.length}}function sr(Ct,at){var Ft;$e&&(Qe&&Fn?Ft="videoTalk":Qe&&!Fn?Ft="talk":lt?Ft="video":Xn("\u672A\u77E5type=",Ft),$e(at,Ft))}function Zi(Ct){var at={};at.Sessions=[];var Ft=null;Ct.search("Content-Type: application/sdp")!==-1||Ct.search("Private-Type: application/sdp")!==-1?Ft=Ct.split(`\r +\r +`)[1]:Ft=Ct;var it=Ft.split(`\r +`),wt=0,Un=!1;for(wt=0;wt0)switch(Bn[0]){case"a":var On=Bn[1].split(":");if(On.length>1){if(On[0]==="control"){var Qt=it[wt].search("control:");Un===!0?Qt!==-1&&(at.Sessions[at.Sessions.length-1].ControlURL=it[wt].substr(Qt+8)):Qt!==-1&&(at.BaseURL=it[wt].substr(Qt+8))}else if(On[0]==="rtpmap"){var jn=On[1].split(" ");at.Sessions[at.Sessions.length-1].PayloadType=jn[0];var wr=jn[1].split("/");at.Sessions[at.Sessions.length-1].CodecMime=wr[0],wr.length>1&&(at.Sessions[at.Sessions.length-1].ClockFreq=wr[1])}else if(On[0]==="framesize"){var ur=On[1].split(" ");if(ur.length>1){var cn=ur[1].split("-");at.Sessions[at.Sessions.length-1].Width=cn[0],at.Sessions[at.Sessions.length-1].Height=cn[1]}}else if(On[0]==="framerate")at.Sessions[at.Sessions.length-1].Framerate=On[1];else if(On[0]==="fmtp"){var nn=it[wt].split(" ");if(nn.length<2)continue;for(var yn=1;yn1&&(at.Sessions[at.Sessions.length-1].SPS=_n[0],at.Sessions[at.Sessions.length-1].PPS=_n[1])}}}}}else On.length===1&&(On[0]==="recvonly"?at.Sessions[at.Sessions.length-1].TalkTransType="recvonly":On[0]==="sendonly"&&(at.Sessions[at.Sessions.length-1].TalkTransType="sendonly"));break;case"m":var wn=Bn[1].split(" "),Bi={};Bi.Type=wn[0],Bi.Port=wn[1],Bi.Payload=wn[3],at.Sessions.push(Bi),Un=!0;break;case"b":if(Un===!0){var wi=Bn[1].split(":");at.Sessions[at.Sessions.length-1].Bitrate=wi[1]}}}if(!v&&Qe)for(var xi=0;xi2?Ft-2:0),wt=2;wt2?Ft-2:0),wt=2;wt2?Ft-2:0),wt=2;wt=0;--$e){var De=this.tryEntries[$e],Ge=De.completion;if(De.tryLoc==="root")return xe("end");if(De.tryLoc<=this.prev){var yt=v.call(De,"catchLoc"),Mt=v.call(De,"finallyLoc");if(yt&&Mt){if(this.prev=0;--xe){var $e=this.tryEntries[xe];if($e.tryLoc<=this.prev&&v.call($e,"finallyLoc")&&this.prev<$e.finallyLoc){var De=$e;break}}De&&(de==="break"||de==="continue")&&De.tryLoc<=ce&&ce<=De.finallyLoc&&(De=null);var Ge=De?De.completion:{};return Ge.type=de,Ge.arg=ce,De?(this.method="next",this.next=De.finallyLoc,Ke):this.complete(Ge)},complete:function(de,ce){if(de.type==="throw")throw de.arg;return de.type==="break"||de.type==="continue"?this.next=de.arg:de.type==="return"?(this.rval=this.arg=de.arg,this.method="return",this.next="end"):de.type==="normal"&&ce&&(this.next=ce),Ke},finish:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.finallyLoc===de)return this.complete(xe.completion,xe.afterLoc),Ut(xe),Ke}},catch:function(de){for(var ce=this.tryEntries.length-1;ce>=0;--ce){var xe=this.tryEntries[ce];if(xe.tryLoc===de){var $e=xe.completion;if($e.type==="throw"){var De=$e.arg;Ut(xe)}return De}}throw Error("illegal catch attempt")},delegateYield:function(de,ce,xe){return this.delegate={iterator:$t(de),resultName:ce,nextLoc:xe},this.method==="next"&&(this.arg=$),Ke}},F}function Zr($,F,n,v,I,U,W){try{var fe=$[U](W),pe=fe.value}catch(ve){return void n(ve)}fe.done?F(pe):Promise.resolve(pe).then(v,I)}function ea($){return function(){var F=this,n=arguments;return new Promise(function(v,I){var U=$.apply(F,n);function W(pe){Zr(U,v,I,W,fe,"next",pe)}function fe(pe){Zr(U,v,I,W,fe,"throw",pe)}W(void 0)})}}var Wr=function(){function $(n){this.nPlayId=Te.getFreePlaySdkId(),this.streamType="rtsp",this.streamTypeTalk="rtsp",this.playType="",this.playChannel="",this.playSubtype="",this.playbackByType="",this.playbackStartTime="",this.playbackEndtime="",this.playbackFile="",this.devAbility="",this.deviceId="",this.devLoginName="",this.devLoginPassword="",this.deviceCatalog="",this.deviceEncryptMode="",this.playback=!1,this.playsdkImpl=null,this.webSocket=null,this.webSocketTalk=null,this.record=!1,this.supportMultiThread=n,this.openSubThreadPrintLog=!1,this.encrypt=-1,this.userInputCode="",this.szKey="",this.szKeyLength=0,this.setSecurityKeyCompleted=!1,this.decryptKey="",this.cachedSecurityKey=null,this.initCompleted=!1,this.cachedRtpDataArr=[],this.rtpPacket=null,this.isOpenVideo=!1,this.isPause=0,this.hasStopTalk=-1,this.isStopPullStream=-1,this.lastVideoFrameTimestamp=0,this.analysisData={},this.eventsCallBack={GetPlayPort:function(){},PlayStart:function(){},DecodeStart:function(){},VideoFrameInfo:function(){},VideoFrameChangeTime:function(){},AudioFrameInfo:function(){},GetFrameRate:function(){},Error:function(){},wsPlay:function(){},RecordReachLimit:function(){},Disconnect:function(){},TalkStart:function(){},TalkError:function(){},DigitalSignCallBack:function(){},TalkWebSocketCloseCallback:function(){},WebSocketCloseCallback:function(){}}}$.printJsLogFromSubThread=function(n){Te.printJsLogFromSubThread(n)},$.printCppLogFromSubThread=function(n){Te.printCppLogFromSubThread(n)},$.debugSaveDavFile=function(n){Te.debugSaveDavFile(n)},$.debugSaveLogFile=function(n){$.LOG_DOWMLOAD_ENALBE=n,C.debugSaveLogFile(n)};var F=$.prototype;return F.getPlaySdkId=function(){return this.nPlayId},F.Init=function(n){if(c.setDebug(n.log_js),$.LOG_DOWMLOAD_ENALBE&&(n.LOG_DOWMLOAD_ENALBE=!0),this.supportMultiThread?this.logPlaySDKApiLog("\u591A\u7EBF\u7A0BPlaySDKApi\u521D\u59CB\u5316",this.nPlayId,n):this.logPlaySDKApiLog("\u5355\u7EBF\u7A0BPlaySDKApi\u521D\u59CB\u5316",this.nPlayId,n),this.playback=n.bPlayBack,this.playsdkImpl===null){this.playsdkImpl=new Te(this.supportMultiThread,this.nPlayId),this.playsdkImpl.initBegain(),this.playsdkImpl.setCallback("InitSuccessCallBack",this.initCompleteCallBack.bind(this));var v=this.playsdkImpl.init(n);if(v>0){var I=this.playsdkImpl.getPlayPort();this.supportMultiThread&&(this.eventsCallBack.GetPlayPort&&this.eventsCallBack.GetPlayPort(I),this.initCompleted=!0,this.playsdkImpl.initEnd())}return this.playsdkImpl.setCallback("GetPlayPort",this.eventsCallBack.GetPlayPort),this.playsdkImpl.setCallback("PlayStart",this.onPlayStart.bind(this)),this.playsdkImpl.setCallback("DecodeStart",this.onDecodeStart.bind(this)),this.playsdkImpl.setCallback("VideoFrameInfo",this.onVideoFrameInfo.bind(this)),this.playsdkImpl.setCallback("VideoFrameChangeTime",this.onVideoFrameChangeTime.bind(this)),this.playsdkImpl.setCallback("AudioFrameInfo",this.onAudioFrameInfo.bind(this)),this.playsdkImpl.setCallback("RecordReachLimit",this.eventsCallBack.RecordReachLimit),this.playsdkImpl.setCallback("DigitalSignCallBack",this.eventsCallBack.DigitalSignCallBack),v}this.logPlaySDKApiError("\u91CD\u590D\u521D\u59CB\u5316",this.nPlayId)},F.onPlayStart=function(n){var v;this.isStopPullStream!==1?(this.logPlaySDKApiLog("onPlayStart",n),(v=this.eventsCallBack)!=null&&v.PlayStart&&this.eventsCallBack.PlayStart()):this.logPlaySDKApiWarnWithKeyLimit("onPlayStart \u5FFD\u7565\u56E0\u4E3A\u62C9\u6D41\u5DF2\u505C\u6B62",5)},F.onTalkStart=function(n){var v;this.isStopPullStream!==1?(this.logPlaySDKApiLog("onTalkStart",n),(v=this.eventsCallBack)!=null&&v.TalkStart&&this.eventsCallBack.TalkStart()):this.logPlaySDKApiWarnWithKeyLimit("onTalkStart \u5FFD\u7565\u56E0\u4E3A\u62C9\u6D41\u5DF2\u505C\u6B62",5)},F.onTalkWebSocketCloseCallback=function(){var n;this.logPlaySDKApiLog("onTalkWebSocketCloseCallback"),(n=this.eventsCallBack)!=null&&n.TalkWebSocketCloseCallback&&this.eventsCallBack.TalkWebSocketCloseCallback()},F.onDecodeStart=function(n){var v;this.isStopPullStream!==1?this.playsdkImpl&&(this.playsdkImpl.onDecodeStart(n),(v=this.eventsCallBack)!=null&&v.DecodeStart&&this.eventsCallBack.DecodeStart(n)):this.logPlaySDKApiWarnWithKeyLimit("onDecodeStart \u5FFD\u7565\u56E0\u4E3A\u62C9\u6D41\u5DF2\u505C\u6B62",5)},F.onVideoFrameInfo=function(n){var v;this.isStopPullStream!==1&&(this.onVideoFrameChangeTime(n),(v=this.eventsCallBack)!=null&&v.VideoFrameInfo&&this.eventsCallBack.VideoFrameInfo(n))},F.onVideoFrameChangeTime=function(n){var v;if((v=this.eventsCallBack)!=null&&v.VideoFrameChangeTime){var I=n.timeStamp;if(I!==this.lastVideoFrameTimestamp){var U=I-this.lastVideoFrameTimestamp;this.lastVideoFrameTimestamp=I,this.logPlaySDKApiLog("onVideoFrameChangeTime \u5E27id=",n.nFrameID,"\u5DEE\u503C=",U,"\u89C6\u9891\u5E27\u65F6\u95F4="+n.nYear+"-"+n.nMonth+"-"+n.nDay+" "+n.nHour+":"+n.nMinute+":"+n.nSecond),this.eventsCallBack.VideoFrameChangeTime(n)}}},F.onAudioFrameInfo=function(n){var v;this.isStopPullStream!==1?(v=this.eventsCallBack)!=null&&v.AudioFrameInfo&&this.eventsCallBack.AudioFrameInfo(n):this.logPlaySDKApiWarnWithKeyLimit("onAudioFrameInfo \u5FFD\u7565\u56E0\u4E3A\u62C9\u6D41\u5DF2\u505C\u6B62",5,n)},F.onWebSocketOpen=function(n){this.logPlaySDKApiLog("onWebSocketOpen",n),this.playsdkImpl?this.playsdkImpl.onWebSocketOpen(n):this.logPlaySDKApiError("onWebSocketOpen playsdkImpl is null",this.nPlayId)},F.onWebSocketClose=function(n){this.playsdkImpl?this.playsdkImpl.onWebSocketClose(n):this.logPlaySDKApiLog("onWebSocketClose playsdkImpl is null, it is normal",this.nPlayId);var v,I,U={type:n,playId:this.nPlayId};n==="video"?this.isStopPullStream===1?this.logPlaySDKApiLog("onWebSocketClose \u5FFD\u7565\u56E0\u4E3A\u62C9\u6D41\u5DF2\u505C\u6B62",n):(this.logPlaySDKApiLog("onWebSocketClose",n),(v=this.eventsCallBack)!=null&&v.WebSocketCloseCallback&&this.eventsCallBack.WebSocketCloseCallback(U)):this.hasStopTalk===1?this.logPlaySDKApiLog("onWebSocketClose \u5FFD\u7565\u56E0\u4E3A\u5BF9\u8BB2\u5DF2\u505C\u6B62",n):(this.logPlaySDKApiLog("onWebSocketClose",n),(I=this.eventsCallBack)!=null&&I.WebSocketCloseCallback&&this.eventsCallBack.WebSocketCloseCallback(U))},F.rtpDataCallback=function(n,v){var I=this;this.isStopPullStream!==1&&(this.encrypt===-1?this.inputData(n,v):this.setSecurityKeyCompleted?(this.cachedRtpDataArr.length>0&&(this.cachedRtpDataArr.forEach(function(U){I.inputData(U,v)}),this.cachedRtpDataArr=[]),this.inputData(n,v)):this.cachedRtpDataArr.push(n))},F.initCompleteCallBack=function(n){this.logPlaySDKApiWarn("\u5355\u7EBF\u7A0B\u521D\u59CB\u5316\u5B8C\u6210\u56DE\u8C03",this.nPlayId,n),this.initCompleted=!0,this.playsdkImpl&&this.playsdkImpl.initEnd(),this.cachedSecurityKey&&this.setCachedSecurityKey()},F.setCachedSecurityKey=function(){this.logPlaySDKApiLog("\u52A0\u5BC6\u65B9\u5F0F\uFF1A",this.encrypt);var n=this.cachedSecurityKey;n!=null?(this.encrypt==1?(this.logPlaySDKApiLog("key video,audio length:",n.videoKey.length,n.audioKey.length),this.setSecurityKey(n.videoKey,n.videoKey.length),n.audioKey.length===33&&this.setSecurityKey(n.audioKey,n.audioKey.length)):this.encrypt==2?(this.logPlaySDKApiLog("key length:",n.length),this.setSecurityKeyByEncrytType(3,n,this.szKeyLength,null,0)):this.encrypt==3&&(this.logPlaySDKApiLog("key length:",n.length),this.setSecurityKey(n,n.length)),this.setSecurityKeyCompleted=!0):this.logPlaySDKApiError("cached key is null return")},F.StartPullStream=function(){var n=ea(br().mark(function v(I,U){var W,fe,pe,ve,Ue,ze,Le,Qe,lt,nt,Ke,xt,Lt,bt,un,pt,et,tt,ut,rn,Xt,Ot,ot,Ut,Kt,$t=this;return br().wrap(function(de){for(;;)switch(de.prev=de.next){case 0:if(this.logPlaySDKApiLog("\u5F00\u59CB\u62C9\u6D41\uFF1A",I),!this.playsdkImpl){de.next=5;break}this.playsdkImpl.startPullStreamBegain(),de.next=7;break;case 5:return this.logPlaySDKApiError("\u672A\u521D\u59CB\u5316"),de.abrupt("return");case 7:if(this.isStopPullStream=0,this.deviceId=I.deviceId,this.playChannel=I.channelId?String(Number(I.channelId)+1):"1",this.playType=I.playType,W=U.streamType?U.streamType:"rtsp",this.streamType=W,this.playsdkImpl.setStreamType(W),this.playSubtype=I.playSubtype?I.playSubtype:"0",this.playback&&(this.playbackByType=I.playbackByType,this.playbackByType==="byTime"?(this.playbackStartTime=I.playbackStartTime,this.playbackEndtime=I.playbackEndtime):this.playbackByType==="byFile"&&(this.playbackFile=I.playbackFile)),fe=U.playUrl,pe=U.playToken,ve=U.playTokenKey,fe){de.next=20;break}return this.logPlaySDKApiError("playUrl is null"),de.abrupt("return");case 20:if(pe&&ve&&(Ue=this.parsePlayToken(pe,ve,I.deviceId),this.logPlaySDKApiLog("\u89E3\u6790playToken\u83B7\u53D6\u7801\u6D41\u79D8\u94A5\u7ED3\u679C\uFF1A",Ue),Ue&&(this.devAbility=Ue.ability,this.devLoginName=Ue.devLoginName,this.devLoginPassword=Ue.devLoginPassword,this.deviceCatalog=Ue.deviceCatalog,this.deviceEncryptMode=Ue.encryptMode)),this.userInputCode=I.code,Qe=(Le=this.devAbility)!=null&&Le.includes("TCM")?this.devLoginPassword:this.deviceId,lt=I.code||Qe,nt=ji().enc.Utf8.parse(lt),ze=ji().enc.Base64.stringify(nt),this.playUrl=pe?fe+"&key="+ze:fe,fe.split("&").map(function(ce){return ce.split("=")}).forEach(function(ce){ce[0]==="encrypt"&&($t.encrypt=ce[1]),ce[0]==="tid"&&(Ke=ce[1])}),this.setEncryptInternal(),Ke?this.tid=Ke:this.logPlaySDKApiError("tid is null"),this.isWebGLAvailable()){de.next=35;break}return this.logPlaySDKApiError("webGl is not support"),de.abrupt("return");case 35:xt=this.playUrl.replace("rtsp://","").split("/"),Lt=xt[0],bt=location,un=bt.protocol,Lt&&(W==="rtsv"?(pt=un==="http:"&&this.playUrl.indexOf("8556")===-1?"ws":"wss",et=pt+"://"+Lt,tt=null,ut={bRtspFlag:!1,encrypt:this.encrypt,bPlayBack:this.playback,playbackByType:this.playbackByType,playChannel:this.playChannel,playSubtype:this.playSubtype,playbackStartTime:this.playbackStartTime,playbackEndtime:this.playbackEndtime,playbackFile:this.playbackFile,bTalkService:!1,bRealMonitorService:!0,nRange:"",cameraElement:null,optionsVideo:null,nEncodeType:0,isVisualtalk:!1,isRealMonitor:!0,captureConfig:tt},rn="",rn=ut.bPlayBack?"/vod/playback.xav":"/live/realmonitor.xav",Xt=this.playUrl,Ot=Xt.replace("rtsp://","").split("/")[1].replace(/&beginTime=\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}&endTime=\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/,""),this.webSocket||(this.webSocket=new or(this.nPlayId)),this.isOpenVideo=!0,this.webSocket.setCallback("WebSocketOpenCallback",this.onWebSocketOpen.bind(this)),this.webSocket.setCallback("WebSocketCloseCallback",this.onWebSocketClose.bind(this)),this.webSocket.setRtpDataCallback(this.rtpDataCallback.bind(this)),this.webSocket.setUserInfo(this.devLoginName,this.devLoginPassword),this.webSocket.setCallback("Disconnect",this.eventsCallBack.Disconnect),this.webSocket.setCallback("Error",this.eventsCallBack.Error),ot=et+"/httpprivateoverwebsocket",this.logPlaySDKApiLog("webSocket.connect ","this = ",this),this.logPlaySDKApiLog("webSocket.connect ","connectOptions = ",ut),this.webSocket.connect(ot,rn,Ot,ut)):(Ut=un==="http:"&&this.playUrl.indexOf("8556")===-1?"ws":"wss",Kt={wsURL:Ut+"://"+Lt,rtspURL:""+this.playUrl,username:"admin",password:"admin123",playback:!0},this.webSocket=ht(this.nPlayId,Kt.wsURL,Kt.rtspURL),this.webSocket.setCallback("WebSocketOpenCallback",this.onWebSocketOpen.bind(this)),this.webSocket.setCallback("WebSocketCloseCallback",this.onWebSocketClose.bind(this)),this.webSocket.setRtpDataCallback(this.rtpDataCallback.bind(this)),this.webSocket.setUserInfo(Kt.username,Kt.password),this.webSocket.setLessRate(!1),this.webSocket.setCallback("GetFrameRate",this.eventsCallBack.GetFrameRate),this.webSocket.setCallback("Error",this.eventsCallBack.Error),pe&&this.webSocket.setCallback("wsPlay",function(ce){$t.logPlaySDKApiLog("\u6536\u5230wsPlay\u56DE\u8C03",ce),$t.encrypt==1&&$t.eventsCallBack.wsPlay($t.tid)}),this.webSocket.connect()));case 38:case"end":return de.stop()}},v,this)}));return function(v,I){return n.apply(this,arguments)}}(),F.setEncryptInternal=function(){if(this.playsdkImpl?this.playsdkImpl.setEncrypt(this.encrypt):this.logPlaySDKApiError("setEncryptInternal playsdkImpl is null"),this.encrypt==3){var n,v,I=(n=this.devAbility)!=null&&n.includes("TCM")?this.devLoginPassword:this.deviceId;return this.userInputCode&&this.userInputCode.length>0?this.szKey=this.userInputCode:this.szKey=I,this.decryptKey=this.getDecryptKey(this.encrypt,this.szKey,this.szKey.length,this.deviceId,this.deviceId.length),v=this.decryptKey,this.cachedSecurityKey=v,this.setSecurityKey(v,v.length),void(this.initCompleted==1&&(this.setSecurityKeyCompleted=!0,this.logPlaySDKApiLog("0xB5\u573A\u666F\uFF0C\u79D8\u94A5\u8BBE\u7F6E\u5B8C\u6210")))}if(this.encrypt==2){var U;if(this.playType=="cloud"){var W,fe=(W=this.devAbility)!=null&&W.includes("TCM")?this.devLoginPassword:this.deviceId;this.userInputCode&&this.userInputCode.length>0?this.szKey=this.userInputCode:this.szKey=fe,this.decryptKey=this.getDecryptKey(this.encrypt,this.szKey,this.szKey.length,this.deviceId,this.deviceId.length),U=this.decryptKey,this.szKeyLength=U.length}else{var pe,ve=(pe=this.devAbility)!=null&&pe.includes("TCM")?this.devLoginPassword:this.deviceId;this.userInputCode&&this.userInputCode.length>0?(this.szKey=ji().MD5(this.userInputCode).toString(),this.szKeyLength=16):(this.szKey=ve,this.szKeyLength=ve.length),U=this.szKey,this.szKeyLength<16&&this.szKeyLength>0?(U=this.padString(this.szKey,16),this.szKeyLength=16):this.szKeyLength<24&&this.szKeyLength>16?(U=this.padString(this.szKey,24),this.szKeyLength=24):this.szKeyLength<32&&this.szKeyLength>24&&(U=this.padString(this.szKey,32),this.szKeyLength=32)}return this.cachedSecurityKey=U,this.setSecurityKeyByEncrytType(3,U,this.szKeyLength,null,0),void(this.initCompleted==1&&(this.setSecurityKeyCompleted=!0,this.logPlaySDKApiLog("\u79D8\u94A5\u8BBE\u7F6E\u5B8C\u6210 key = ",U)))}},F.setEncrypt=function(n){if(this.logPlaySDKApiLog("setEncrypt start"),this.playsdkImpl?this.playsdkImpl.setEncrypt(this.encrypt):this.logPlaySDKApiError("setEncrypt playsdkImpl is null"),this.encrypt==1){var v=n.data;if(!v)return;var I=v.audioEncryptKey,U=v.videoEncryptKey;this.logPlaySDKApiLog("\u97F3\u89C6\u9891Key\uFF1A",v);var W=ji().enc.Base64.parse(I);W=W.toString(ji().enc.Utf8);var fe,pe=ji().enc.Base64.parse(U);pe=pe.toString(ji().enc.Utf8),this.logPlaySDKApiLog("\u52A0\u5BC6\u65B9\u5F0F\uFF1A",this.encrypt),fe=function(ve,Ue){var ze=ve.trim().split(" ").slice(0,16),Le=Ue.trim().split(" ").slice(0,16);return{audioKey:[97,109,105,107,101,121,0,0,0,0,0,0,0,0,0,0,0].concat(Le),videoKey:[118,109,105,107,101,121,0,0,0,0,0,0,0,0,0,0,0].concat(ze)}}(pe,W),this.cachedSecurityKey=fe,this.setSecurityKey(fe.videoKey,fe.videoKey.length),fe.audioKey.length===33&&this.setSecurityKey(fe.audioKey,fe.audioKey.length)}else this.logPlaySDKApiWarn("\u975Emikey\u573A\u666F\u65E0\u9700\u7528\u6237\u624B\u52A8\u8BBE\u7F6E\u79D8\u94A5");this.initCompleted==1&&(this.setSecurityKeyCompleted=!0,this.logPlaySDKApiLog("\u79D8\u94A5\u8BBE\u7F6E\u5B8C\u6210"))},F.StopPullStream=function(){this.logPlaySDKApiLog("\u505C\u6B62\u62C9\u6D41"),this.isStopPullStream=1,this.webSocket&&this.webSocket.disconnect()},F.pause=function(n){this.logPlaySDKApiLog("\u6682\u505C/\u6062\u590D\u64AD\u653E 1\u6682\u505C\uFF0C0\u6062\u590D:",n),this.isPause=n,this.playsdkImpl&&(n?this.webSocket&&this.webSocket.controlPlayer({command:"PAUSE"}):this.webSocket&&this.webSocket.controlPlayer({command:"PLAY"}),this.playsdkImpl.pause(n))},F.stop=function(){this.logPlaySDKApiLog("\u505C\u6B62\u64AD\u653E"),this.StopPullStream(),this.record&&this.stopRecord(),this.playsdkImpl&&(this.playsdkImpl.stop(),this.analysisData=this.playsdkImpl.getLogs(),this.playsdkImpl=null),this.setSecurityKeyCompleted=!1,this.cachedSecurityKey=null,this.initCompleted=!1},F.setSecurityKey=function(n,v){this.logPlaySDKApiLogWithKeyLimit("\u8BBE\u7F6EAES\u89E3\u5BC6\u5BC6\u94A51"),this.playsdkImpl&&this.playsdkImpl.setSecurityKey(n,v)},F.setSecurityKeyByEncrytType=function(n,v,I,U,W){this.logPlaySDKApiLogWithKeyLimit("\u8BBE\u7F6EAES\u89E3\u5BC6\u5BC6\u94A52"),this.playsdkImpl&&this.playsdkImpl.setSecurityKeyByEncrytType(n,v,I,U,W)},F.parsePlayToken=function(n,v,I){if(this.logPlaySDKApiLogWithKeyLimit("\u89E3\u6790playToken\u83B7\u53D6\u7801\u6D41\u79D8\u94A5"),this.playsdkImpl)return this.playsdkImpl.parsePlayToken(n,v,I)},F.getDecryptKey=function(n,v,I,U,W){if(this.logPlaySDKApiLogWithKeyLimit("\u83B7\u53D6\u7801\u6D41\u89E3\u5BC6\u79D8\u94A5"),this.playsdkImpl)return this.playsdkImpl.getDecryptKey(n,v,I,U,W)},F.setSpeed=function(n){this.logPlaySDKApiLog("\u500D\u901F=",n),this.playsdkImpl&&(this.webSocket&&this.webSocket.controlPlayer({command:"SCALE",data:n}),this.playsdkImpl.setSpeed(n))},F.setVolume=function(n){this.logPlaySDKApiLog("\u97F3\u91CF=",n),this.playsdkImpl&&this.playsdkImpl.setVolume(n)},F.mute=function(n){this.logPlaySDKApiLog("\u9759\u97F3/\u6062\u590D 1\u8868\u793A\u9759\u97F3\uFF0C0\u8868\u793A\u6062\u590D=",n),this.playsdkImpl&&this.playsdkImpl.mute(n)},F.capturePic=function(n){this.logPlaySDKApiLog("\u6293\u56FE pictureName=",n),this.playsdkImpl&&this.playsdkImpl.capturePic(n)},F.startTalk=function(){var n=ea(br().mark(function v(I,U,W,fe){var pe,ve,Ue,ze,Le,Qe,lt,nt,Ke,xt,Lt,bt,un,pt,et,tt,ut,rn,Xt;return br().wrap(function(Ot){for(;;)switch(Ot.prev=Ot.next){case 0:if(U===void 0&&(U=0),fe===void 0&&(fe={}),this.logPlaySDKApiLog("\u5F00\u59CB\u5BF9\u8BB2\uFF1A",I,U,W,fe),!this.playsdkImpl){Ot.next=7;break}this.playsdkImpl.startTalkBegain(),Ot.next=9;break;case 7:return this.logPlaySDKApiError("not init"),Ot.abrupt("return");case 9:if(I.streamType!=="rtsv"&&I.streamType!=="rtsp"&&this.logPlaySDKApiWarn("startTalk\u7684\u5165\u53C2optionsAudio.streamType\u672A\u660E\u786E"),pe=I.isVisualtalk?"rtsv":"rtsp",ve=I.streamType?I.streamType:pe,this.streamTypeTalk=ve,Ue=I.url,ze=I.username,Le=I.password,Qe=I.isVisualtalk,lt=I.captureConfig,nt=lt===void 0?null:lt,Ue){Ot.next=17;break}return this.logPlaySDKApiError("startTalk\u7684\u5165\u53C2optionsAudio.url is null"),Ot.abrupt("return");case 17:Ke=location,xt=Ke.protocol,bt=(Lt=Ue).replace("rtsp://","").split("/"),(un=bt[0])&&(pt=xt==="http:"&&Lt.indexOf("8556")===-1?"ws":"wss",et=pt+"://"+un,this.logPlaySDKApiLog("url = ",Ue),this.logPlaySDKApiLog("wsIP = ",un),this.logPlaySDKApiLog("wsURL = ",et),ve==="rtsv"?(tt=Qe?"/live/visualtalk.xav":"/live/talk.xav",ut={bRtspFlag:!1,streamTypeTalk:this.streamTypeTalk,encrypt:this.encrypt,playChannel:this.playChannel,playSubtype:this.playSubtype,bPlayBack:!1,bTalkService:!0,nRange:"",cameraElement:W,optionsVideo:fe,nEncodeType:U,isVisualtalk:Qe,captureConfig:nt,isConnectFromTalk:!0},rn=Ue.replace("rtsp://","").split("/")[1].replace(/&beginTime=\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}&endTime=\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/,""),this.webSocketTalk||(this.webSocketTalk=new or(this.nPlayId)),this.webSocketTalk.setCallback("TalkError",this.eventsCallBack.TalkError),nt!=null&&nt.pureCapture?(this.webSocketTalk.openCapture(ut),this.logPlaySDKApiLog("pureCapture",nt)):(this.isOpenVideo=!0,this.webSocketTalk.setUserInfo(ze,Le),this.webSocketTalk.setCallback("WebSocketOpenCallback",this.onWebSocketOpen.bind(this)),this.webSocketTalk.setCallback("WebSocketCloseCallback",this.onWebSocketClose.bind(this)),this.webSocketTalk.setCallback("TalkStart",this.onTalkStart.bind(this)),this.webSocketTalk.setCallback("TalkWebSocketCloseCallback",this.onTalkWebSocketCloseCallback.bind(this)),this.webSocketTalk.setCallback("Disconnect",this.eventsCallBack.Disconnect),Xt=et+"/httpprivateoverwebsocket",this.logPlaySDKApiLog("webSocketTalk.connect ","privateWsURL = ",Xt,"captureConfig = ",nt,"isOpenVideo = ",this.isOpenVideo),this.webSocketTalk.connect(Xt,tt,rn,ut),this.hasStopTalk=0)):(this.webSocketTalk=new ht(this.nPlayId,et,Lt,!0,U),this.webSocketTalk.setUserInfo(ze,Le),this.webSocketTalk.setCallback("GetFrameRate",this.eventsCallBack.GetFrameRate),this.webSocketTalk.setCallback("Error",this.eventsCallBack.TalkError),this.webSocketTalk.setCallback("WebSocketOpenCallback",this.onWebSocketOpen.bind(this)),this.webSocketTalk.setCallback("WebSocketCloseCallback",this.onWebSocketClose.bind(this)),this.webSocketTalk.setCallback("TalkStart",this.onTalkStart.bind(this)),this.webSocketTalk.setCallback("TalkWebSocketCloseCallback",this.onTalkWebSocketCloseCallback.bind(this)),this.webSocketTalk.setLessRate(!1),this.webSocketTalk.connect(),this.hasStopTalk=0));case 21:case"end":return Ot.stop()}},v,this)}));return function(v,I,U,W){return n.apply(this,arguments)}}(),F.stopTalk=function(n){this.logPlaySDKApiLog("\u505C\u6B62\u5BF9\u8BB2",n),this.webSocketTalk?n!=null&&n.closeCapture?this.webSocketTalk.closeCapture&&this.webSocketTalk.closeCapture():this.hasStopTalk===0&&(this.hasStopTalk=1,this.webSocketTalk.disconnect(),this.webSocketTalk=null):this.logPlaySDKApiError("\u505C\u6B62\u5BF9\u8BB2\uFF0C\u4F46webSocketTalk is null")},F.setCallback=function(n,v){this.eventsCallBack[n]=v},F.getLogs=function(){return this.analysisData},F.inputData=function(n,v){if(this.logPlaySDKApiLogWithKeyLimit("\u8F93\u5165\u6570\u636E",5,n.length,v),this.playType!="real"||this.isPause!=1)return this.playsdkImpl?this.playsdkImpl.inputData(n,v):0},F.setFrameData=function(n,v,I,U,W,fe){this.logPlaySDKApiLogWithKeyLimit("\u89E3\u7801\u6570\u636E\u56DE\u8C03",5,n,v,I,W,fe),this.playsdkImpl&&this.playsdkImpl.frameDataCallBack(n,v,I,U,W,fe)},F.setRecordData=function(n,v,I,U){this.logPlaySDKApiLogWithKeyLimit("\u8BBE\u7F6E\u5F55\u5236\u6570\u636E",5,n,"\u6570\u636E\u957F\u5EA6=",I,"\u504F\u79FB\u91CF=",U),this.playsdkImpl&&this.playsdkImpl.recordDataCallBack(n,v,I,U)},F.setStatisticData=function(n,v,I,U){this.logPlaySDKApiLogWithKeyLimit("\u8BBE\u7F6E\u6570\u636E",5,n,v,I,U),this.playsdkImpl&&this.playsdkImpl.setStatisticData(n,v,I,U)},F.startRecord=function(n,v,I){return this.logPlaySDKApiLog("\u5F00\u59CB\u5F55\u5236() \u7C7B\u578B(5\u8868\u793AMP4)=",n,"\u5927\u5C0F(MB)=",v,"\u6587\u4EF6\u540D=",I),this.record=!0,this.playsdkImpl?this.playsdkImpl.startRecord(n,v,I):0},F.stopRecord=function(){return this.logPlaySDKApiLog("\u505C\u6B62\u5F55\u5236()"),this.record=!1,this.playsdkImpl?this.playsdkImpl.stopRecord():0},F.startAudioCapture=function(){this.logPlaySDKApiLog("\u89C6\u9891\u5BF9\u8BB2-\u5F00\u542F\u97F3\u9891\u91C7\u96C6()"),this.webSocketTalk&&this.webSocketTalk.startAudioCapture()},F.stopAudioCapture=function(){this.logPlaySDKApiLog("\u89C6\u9891\u5BF9\u8BB2-\u505C\u6B62\u97F3\u9891\u91C7\u96C6()"),this.webSocketTalk&&this.webSocketTalk.stopAudioCapture()},F.startVideoCapture=function(){this.logPlaySDKApiLog("\u89C6\u9891\u5BF9\u8BB2-\u5F00\u542F\u89C6\u9891\u91C7\u96C6()"),this.webSocketTalk&&(this.isOpenVideo=!0,this.webSocketTalk.startVideoCapture())},F.stopVideoCapture=function(){this.logPlaySDKApiLog("\u89C6\u9891\u5BF9\u8BB2-\u5173\u95ED\u89C6\u9891\u91C7\u96C6()"),this.webSocketTalk&&(this.isOpenVideo=!1,this.webSocketTalk.stopVideoCapture())},F.pushVideoData=function(n,v,I){if(this.logPlaySDKApiLogWithKeyLimit("\u53D1\u9001\u89C6\u9891\u6570\u636E",5,n,v,I),this.webSocketTalk&&this.isOpenVideo){var U=new ArrayBuffer(v),W=new Uint8Array(U);W.set(Module.HEAPU8.subarray(n,n+v)),this.rtpPacket=new Uint8Array(6+v);var fe=0;this.rtpPacket.set(new Uint8Array([36,14]),fe),fe+=2,this.rtpPacket.set(this.getHexArrayDec(v,4,!0),fe),fe+=4,this.rtpPacket.set(W,fe),this.webSocketTalk.sendRtpData(this.rtpPacket)}},F.getHexArrayDec=function(n,v,I){var U=[],W=v||4;if(I===!0)for(var fe=0;fe>>8*(W-1-fe)&255;else for(var pe=0;pe>>8*pe&255;return U},F.padString=function(n,v){return n.padEnd(v,"\0")},F.isWebGLAvailable=function(){try{var n=document.createElement("canvas");return!(!window.WebGLRenderingContext||!n.getContext("webgl")&&!n.getContext("experimental-webgl"))}catch(v){return!1}},F.logPlaySDKApiLog=function(){for(var n=arguments.length,v=new Array(n),I=0;I2?I-2:0),W=2;W2?I-2:0),W=2;W2?I-2:0),W=2;W1){const N=(Y.width-G.width)/2,K=(Y.height-G.height)/2;M=Math.max(-N,Math.min(M,N)),z=Math.max(-K,Math.min(z,K))}else M=Math.max(0,Math.min(M,G.width-Y.width)),z=Math.max(0,Math.min(z,G.height-Y.height))}i.style.left=`${M}px`,i.style.top=`${z}px`,typeof A=="function"&&A({rootElement:d,targetElement:i,currentX:Q.clientX,currentY:Q.clientY,deltaX:g,deltaY:w,newLeft:M,newTop:z})}function y(){T=!1,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",y),typeof b=="function"&&b({rootElement:d,targetElement:i,finalLeft:i.offsetLeft,finalTop:i.offsetTop})}return function(){d.removeEventListener("mousedown",D),document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",y),d.style.cursor="default"}}const Da={};function go(d){const i=document.querySelector(d);if(!i)return console.warn(`Element with selector ${d} not found`),1;if(!(i instanceof HTMLElement))return console.warn(`Element with selector ${d} is not HTMLElement`),1;const t=i.style.transform;if(!t||t==="none")return 1;const s=t.match(/scale\(([^)]+)\)/);if(s&&s[1]){const u=parseFloat(s[1]);return isNaN(u)?1:u}return 1}function Pf(d,i,t,s){if(mo(d),!(i instanceof HTMLElement)){console.warn("Player element is not HTMLElement, cannot enable drag");return}if(!s){const A=document.querySelector(`#${d}`);if(!A){console.warn(`Root element with id ${d} not found`);return}s=A}if(!(s instanceof HTMLElement)){console.warn("Root element is not HTMLElement, cannot enable drag");return}const u=Om(s,i,{containment:!0,scale:t,enableZoomDrag:t>1,onDragStart:()=>{s.style.cursor="grabbing"},onDrag:A=>{},onDragEnd:A=>{s.style.cursor="grab"}});Da[d]={destroy:u,scale:t,playerElement:i,rootElement:s}}function mo(d){Da[d]&&Da[d].destroy&&(Da[d].destroy(),Da[d].rootElement&&Da[d].rootElement.style&&(Da[d].rootElement.style.cursor="default"),delete Da[d])}function gu(d,i=!0){d&&d.style&&(i?d.style.transition="transform 0.3s ease-out, left 0.3s ease-out, top 0.3s ease-out":d.style.transition="none")}function Rf(d,i,t,s){if(!i||!s)return;gu(i,!0),i.style.transform=`scale(${t})`;const u=i.offsetWidth,A=i.offsetHeight,b=u*t,C=A*t,c=(b-u)/2,T=(C-A)/2,k=parseFloat(i.style.left)||0,S=parseFloat(i.style.top)||0;let E=Math.max(-c,Math.min(k,c)),r=Math.max(-T,Math.min(S,T));i.style.left=`${E}px`,i.style.top=`${r}px`,typeof Pf=="function"&&Pf(d,i,t,s)}function Um(d,i,t,s,u=.2,A=5){const b=t+u;return b>A?t:(i&&i.style&&Rf(d,i,b,s),b)}function $m(d,i,t,s,u=.2,A=1){const b=t-u;return b1&&!g){if(D&&!R(ne.touches[0]))return;Q=!0,g=!1,w=ne.touches[0].clientX,M=ne.touches[0].clientY,Y=parseFloat(i.style.left)||0,N=parseFloat(i.style.top)||0,C&&(w=ne.touches[0].clientY,M=ne.touches[0].clientX,Y=parseFloat(i.style.top)||0,N=parseFloat(i.style.left)||0),typeof S=="function"&&S({rootElement:d,targetElement:i,startX:ne.touches[0].clientX,startY:ne.touches[0].clientY,initialLeft:Y,initialTop:N})}}function R(ne){const le=i.getBoundingClientRect(),me=ne.clientX,Ae=ne.clientY;return me>=le.left&&me<=le.right&&Ae>=le.top&&Ae<=le.bottom}function X(ne){if(ne.touches.length===2&&g){ne.preventDefault();const me=K(ne.touches[0],ne.touches[1])/f,Ae=y*me,q=Math.max(s,Math.min(u,Ae));p(i,q),typeof T=="function"&&T({rootElement:d,targetElement:i,currentScale:q,scaleDelta:me,translateX:z,translateY:G})}else if(ne.touches.length===1&&Q&&A&&y>1&&!g){ne.preventDefault();let le=ne.touches[0].clientX-w,me=ne.touches[0].clientY-M;C&&(le=ne.touches[0].clientY-w,me=-(ne.touches[0].clientX-M));let Ae=Y+le,q=N+me;if(b){const{maxOffsetX:Z,maxOffsetY:re}=_();Ae=Math.max(-Z,Math.min(Z,Ae)),q=Math.max(-re,Math.min(re,q))}x(i,Ae,q),typeof E=="function"&&E({rootElement:d,targetElement:i,currentX:ne.touches[0].clientX,currentY:ne.touches[0].clientY,deltaX:le,deltaY:me,newLeft:Ae,newTop:q})}}function J(ne){if(i){const me=i.style.transform.match(/scale\(([^)]+)\)/);me&&(y=parseFloat(me[1])),y<=s&&(z=0,G=0,p(i,s)),g&&typeof k=="function"&&k({rootElement:d,targetElement:i,finalScale:y,translateX:z,translateY:G}),Q&&typeof r=="function"&&r({rootElement:d,targetElement:i,finalLeft:parseFloat(i.style.left)||0,finalTop:parseFloat(i.style.top)||0})}f=0,Q=!1,g=!1}return d.addEventListener("touchstart",B,{passive:!1}),d.addEventListener("touchmove",X,{passive:!1}),d.addEventListener("touchend",J,{passive:!1}),function(){d.removeEventListener("touchstart",B),d.removeEventListener("touchmove",X),d.removeEventListener("touchend",J),i&&(i.style.transform="",i.style.transformOrigin="",i.style.transition="")}}let Nf=!1;window.cPlusLogMessageCallBack=(d,i,t,s,u)=>{};let{bSupportMultiThread:mu}=Rm();function zm(d,i="WasmLib"){let t=`${i}WasmLib/MultiThread/liblcplay.js`;d||(t=`${i}WasmLib/SingleThread/liblcplay.js`),Nm(t)}const qm=d=>{for(var i=/js$/i.test(d),t=document.getElementsByTagName(i?"script":"link"),s=0;s{},this.talkStart=s.talkStart?s.talkStart:()=>{},this.talkError=s.talkError?s.talkError:()=>{},this.playFileOver=s.playFileOver?s.playFileOver:()=>{},this.captureCallback=s.captureCallback?s.captureCallback:()=>{},this.playStart=s.playStart?s.playStart:()=>{},this.recordTimeStampUpdate=s.recordTimeStampUpdate?s.recordTimeStampUpdate:()=>{},this.getEncryptKey=s.getEncryptKey?s.getEncryptKey:()=>{},this.trackingLogs=s.trackingLogs?s.trackingLogs:()=>{},this.WasmLibPath=u.WasmLibPath||"",this.init(i,t),this.sdkConfig=u,this.templateMode=t}init(i,t){return Ar(this,null,function*(){if(qm("/liblcplay.js")||zm(mu,this.WasmLibPath),!i)return;Ht[i]={},this.drawVideoDom(i,t),window.cPlusVisibleDecCallBack=(u,A,b,C,c,T,k)=>{for(let S in Cr)if(Cr[S].playerPort==A)return Ht[S].player&&Ht[S].player.setFrameData(A,b,C,c,T,k),!0},window.cPlusDataRecordCallBack=(u,A,b,C)=>{for(let c in Cr)if(Cr[c].playerPort==u)return Ht[c].player&&Ht[c].player.setRecordData(u,A,b,C),!0},window.cPlusStatisticCallBack=(u,A,b,C)=>{for(let c in Cr)if(Cr[c].playerPort==u)return Ht[c].player&&Ht[c].player.setStatisticData(u,A,b,C),!0};const s=(u,A,b)=>{for(let C in Cr)if(Cr[C].playerPort==u)return b===0&&Ht[C].isDigitalSuccess&&!Ht[C].isTalking&&(Ht[C].isDigitalSuccess=!1,window.cPlusDigitalSignCallBack=()=>{},setTimeout(()=>{this.playError(i,{errorCode:"1001"})},3e3)),!0};window.cPlusDigitalSignCallBack=s,window.cPlusVideoPackedCallback=(u,A,b)=>{for(let C in Ht)if(Ht[C].isTalking)return Ht[C].player&&Ht[C].player.pushVideoData(u,A,b),!0}})}drawVideoDom(i,t){const s=document.querySelector(`#${i}`);let u=` + + + `;s&&(s.innerHTML=u)}play(i,t){if(!!t.streamURL){if(Ht[i]&&Ht[i].player){this.close(i),setTimeout(()=>{this.startPlay(i,t)},100);return}this.startPlay(i,t)}}startPlay(i,t){if(yo[i]){console.log(`\u64AD\u653E\u5668 ${i} \u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5`);return}yo[i]=!0;const{streamURL:s,playSubtype:u,playType:A,streamType:b,startTime:C,endTime:c,deviceId:T,channelId:k,playToken:S,playTokenKey:E,code:r,tid:D}=this.parameterProcessing(t),f={canvasElem:document.querySelector(`#canvas-${i}`),videoElem:document.querySelector(`#video-${i}`),bPlayBack:t.isLive?0:1,strDecodeFilePath:`${this.WasmLibPath}WasmLib/SingleThread`,log_c:this.sdkConfig.sdklog.log_c||!1,log_js:this.sdkConfig.sdklog.log_js||!1};t.threadMode==="singleThread"&&(mu=!1),Ht[i]||(Ht[i]={}),Cr[i]||(Cr[i]={}),Ht[i].player=new Qf(mu),Ht[i].isDigitalSuccess=!0,Ht[i].isTalking=!1;const y=Ht[i].player;y.setCallback("StreamPlayOver",()=>{Ht[i].player&&setTimeout(()=>{this.close(i),this.playFileOver(i)},1)}),y.setCallback("PlayStart",()=>{const z=`#canvas-${i}`,G=`#video-${i}`,Y=document.querySelector(z),N=document.querySelector(G);Y&&Y instanceof HTMLElement&&(Y.style.visibility="visible"),N&&N instanceof HTMLElement&&(N.style.visibility="visible"),this.playStart()}),y.setCallback("CaptureChanged",z=>{this.captureCallback(i,z)}),y.setCallback("VideoFrameInfo",z=>{}),y.setCallback("VideoFrameChangeTime",z=>{const G={frameRate:z.nFrameRate,time:z.timeStamp,utcTime:z.utcTimeStamp};t.isLive||this.recordTimeStampUpdate(i,G,Ht[i].nPlayId)}),y.setCallback("AudioFrameInfo",function(z){z.nSamples,z.nBits}),y.setCallback("GetFrameRate",function(z){}),y.setCallback("DecodeStart",z=>{if(console.log("DecodeStart:",z),z.decodeMode==="video"){const G=document.querySelector(`#canvas-${i}`);G&&G instanceof HTMLElement&&(G.style.display="none");const Y=document.querySelector(`#video-${i}`);Y&&Y instanceof HTMLElement&&(Y.style.display="")}else{const G=document.querySelector(`#canvas-${i}`);G&&G instanceof HTMLElement&&(G.style.display="");const Y=document.querySelector(`#video-${i}`);Y&&Y instanceof HTMLElement&&(Y.style.display="none")}As[i]=z.decodeMode}),y.setCallback("Error",z=>{this.playError(i,z)}),y.setCallback("WebSocketCloseCallback",z=>{z.type==="video"&&this.playError(i,{errorCode:"1003"})}),y.setCallback("TalkStart",z=>{this.talkStart(i,z)}),y.setCallback("TalkError",z=>{this.talkError(i,z)}),y.setCallback("TalkWebSocketCloseCallback",z=>{this.talkError(i,{errorCode:"2009"})}),y.setCallback("GetPlayPort",z=>{Cr[i].playerPort=z}),y.setCallback("DigitalSignCallBack",(z,G,Y)=>{Y===0&&Ht[i].isDigitalSuccess&&!Ht[i].isTalking&&(Ht[i].isDigitalSuccess=!1,setTimeout(()=>{this.playError(i,{errorCode:"1001"})},3e3))}),y.setCallback("wsPlay",()=>{if(console.log("wsPlay:"),b==="rtsv"){y.setEncrypt({});return}let z=null;const G=(Y=10)=>{this.getEncryptKey(D).then(N=>{var K;if(N==="close"){z&&clearTimeout(z);return}(K=N==null?void 0:N.result)!=null&&K.data?y.setEncrypt(N==null?void 0:N.result):Y>0?z=setTimeout(()=>{G(Y-1)},1e3):this.playError(i,{errorCode:"1002"})}).catch(N=>{console.error("wsPlay Error:",N)})};G()});let Q=null;Q=setInterval(()=>{Nf&&(clearInterval(Q),M())});const g={code:r,deviceId:T,channelId:k,playType:A,playSubtype:u,playbackByType:"byTime",playbackStartTime:C,playbackEndtime:c},w={streamType:b,playToken:S,playTokenKey:E,playUrl:s},M=()=>{if(!yo[i]){console.log(`\u64AD\u653E\u5668 ${i} \u5728\u521D\u59CB\u5316\u8FC7\u7A0B\u4E2D\u88AB\u5173\u95ED\uFF0C\u505C\u6B62\u521D\u59CB\u5316`);return}try{y.Init(f),y.setVolume(0),Cr[i].playerHandle=y.StartPullStream(g,w),yo[i]=!1}catch(z){console.error(`\u64AD\u653E\u5668 ${i} \u521D\u59CB\u5316\u5931\u8D25:`,z),yo[i]=!1}}}openIVS(i){Ht[i].player&&Ht[i].player.OpenIVS()}closeIVS(i){Ht[i].player&&Ht[i].player.CloseIVS()}talk(i,t,s){var u;if((u=Ht[i])!=null&&u.player){if(s.type==="video"){const A={url:t,username:"admin",password:"admin123",streamType:s==null?void 0:s.streamType,isVisualtalk:!0,captureConfig:{video:s==null?void 0:s.video,audio:s==null?void 0:s.audio}},b=document.querySelector(`#imou_player_video_capture_${i}`);Ht[i].player.startTalk(A,0,b,{width:240,height:320,frameRate:15})}else Ht[i].player.startTalk({url:t,streamType:s==null?void 0:s.streamType,captureConfig:{video:!1,audio:!0}},0);Ht[i].isTalking=!0}}stopTalk(i,t={}){var s,u;(u=(s=Ht[i])==null?void 0:s.player)!=null&&u.stopTalk&&Ht[i].player.stopTalk(t),setTimeout(()=>{Ht[i].isTalking=!1},3e3)}openVideoTalkCapture(i){let t=null;t=setInterval(()=>{var s;if((s=Ht[i])!=null&&s.player){clearInterval(t);const u={url:"*/",username:"admin",password:"admin123",isVisualtalk:!0,streamType:"rtsv",captureConfig:{video:!0,audio:!0,pureCapture:!0}},A=document.querySelector(`#imou_player_video_capture_${i}`);Ht[i].player.startTalk(u,0,A,{width:240,height:320,frameRate:15})}})}startVideoCapture(i){Ht[i]&&Ht[i].player&&Ht[i].player.startVideoCapture()}stopVideoCapture(i){Ht[i]&&Ht[i].player&&Ht[i].player.stopVideoCapture()}startAudioCapture(i){Ht[i]&&Ht[i].player&&Ht[i].player.startAudioCapture()}stopAudioCapture(i){Ht[i]&&Ht[i].player&&Ht[i].player.stopAudioCapture()}record(i,t){!Ht[i]||!Ht[i].player||(yu[i]?(yu[i]=!1,Ht[i].player.stopRecord()):(yu[i]=!0,Ht[i].player.startRecord(5,this.templateMode==="pc"?1e3:100,t||An().format("YYYY_MM_DD_HH_mm_ss")+".mp4")))}screenshot(i){Ht[i].player&&Ht[i].player.capturePic(`${An().format("YYYY_MM_DD_HH_mm_ss")}.jpg`)}close(i){var b;if(yo[i]=!1,(b=Ht[i])!=null&&b.player)try{Ht[i].player.StopPullStream(),Ht[i].player.stop(),this.getTrackingLogs(i),Ht[i].isTalking&&(Ht[i].player.stopTalk(),Ht[i].isTalking=!1)}catch(C){console.warn(`\u64AD\u653E\u5668 ${i} \u5173\u95ED\u65F6\u51FA\u73B0\u5F02\u5E38:`,C)}const t=`#canvas-${i}`,s=`#video-${i}`,u=document.querySelector(t),A=document.querySelector(s);u&&u instanceof HTMLElement&&(u.style.visibility="hidden"),A&&A instanceof HTMLElement&&(A.style.visibility="hidden",A.style.display="none"),Ht[i]&&(Ht[i].player=null),Cr[i]&&(Cr[i].playerPort=null),this.disableDrag(i)}getTrackingLogs(i){var t,s;if(Ht[i].player&&((t=Ht[i].player)==null?void 0:t.getLogs)){const u=((s=Ht[i].player)==null?void 0:s.getLogs())||{};u&&this.trackingLogs("stream",u)}}setAudioVolume(i,t){if(Gt.detectHostEnvironment().isMiniProgramWebView){if(window.webAudioPlayer)window.webAudioPlayer.resume();else{let s=setInterval(()=>{window.webAudioPlayer&&(window.webAudioPlayer.resume(),clearInterval(s))},50)}setTimeout(()=>{Ht[i].player&&Ht[i].player.setVolume(t)},100)}else{if(window.webAudioPlayer)window.webAudioPlayer.resume();else{let s=setInterval(()=>{window.webAudioPlayer&&(window.webAudioPlayer.resume(),clearInterval(s))},50)}Ht[i].player&&Ht[i].player.setVolume(t)}}pause(i){var t,s;(t=Ht[i])!=null&&t.player&&((s=Ht[i].player)==null||s.pause(1))}start(i){var t,s;(t=Ht[i])!=null&&t.player&&((s=Ht[i].player)==null||s.pause(0))}setSpeed(i,t){var s,u;(s=Ht[i])!=null&&s.player&&((u=Ht[i].player)==null||u.setSpeed(t))}disableDrag(i){mo(i)}zoomIn(i,t){let s=null,u=1;As[i]==="video"?(s=document.querySelector(`#video-${i}`),u=go(`#video-${i}`)):(s=document.querySelector(`#canvas-${i}`),u=go(`#canvas-${i}`)),s&&s.style&&Um(i,s,u,t)}zoomOut(i,t){let s=null,u=1;As[i]==="video"?(s=document.querySelector(`#video-${i}`),u=go(`#video-${i}`)):(s=document.querySelector(`#canvas-${i}`),u=go(`#canvas-${i}`)),s&&s.style&&$m(i,s,u,t)}resetZoom(i){let t=null;As[i]==="video"?t=document.querySelector(`#video-${i}`):t=document.querySelector(`#canvas-${i}`),t&&t.style&&jm(i,t)}touchZoom(i,t,s={}){this.destroyTouchZoom&&(this.destroyTouchZoom(),this.destroyTouchZoom=null);let u=null;As[i]==="video"?(u=document.querySelector(`#video-${i}`),go(`#video-${i}`)):(u=document.querySelector(`#canvas-${i}`),go(`#canvas-${i}`)),this.destroyTouchZoom=Wm(t,u,{minScale:1,maxScale:5,enableDrag:!0,containment:!0,landscape:s.landscape,onZoomStart:()=>{}})}parameterProcessing(i){const t=i.deviceId||"",s=i.channelId||0,u=i.streamURL||!1,A=i.volume||i.volume==0?i.volume:1,b=i.playToken,C=i.playTokenKey,c=i.code||"",T=i.playSubtype||"0",k=i.isLive?"real":i.recordType==="localRecord"?"device":"cloud",S=i.streamType||"rtsp",E=i.startTime||"",r=i.endTime||"",D=i.tid||"";return{streamURL:u,deviceId:t,channelId:s,volume:A,playToken:b,playTokenKey:C,code:c,playSubtype:T,playType:k,streamType:S,startTime:E,endTime:r,tid:D}}}class Au{constructor({Obj:i,recordType:t,beginTime:s}){this.Obj=i,this.recordType=t,this.beginTime=s,this.isEnd=!1,this.record=[],this.startTimeLine(),this.getRecordList(s)}getRecordList(i){const{deviceId:t,channelId:s,token:u,domain:A=""}=this.Obj.options;let b=An(i).add(2,"hour").format("YYYY-MM-DD HH:mm:ss");An(b)>An()&&(b=An().format("YYYY-MM-DD HH:mm:ss"),this.isEnd=!0),An(b)>An(this.beginTime).endOf("day")&&(b=An(this.beginTime).endOf("day").format("YYYY-MM-DD HH:mm:ss"),this.isEnd=!0),vm({deviceId:t,channelId:s,token:u,recordType:this.recordType,beginTime:i,endTime:b,domain:A}).then(C=>{if(An(this.beginTime).format("YYYY-MM-DD")!=An(this.Obj.status.beginTime).format("YYYY-MM-DD"))return;const c=C==null?void 0:C.records;c&&(c.length?this.doRequestRecordList(c):this.isEnd||this.getRecordList(b))})}doRequestRecordList(i=[]){if(An(i[0].beginTime).format("YYYY-MM-DD")!=An(this.Obj.status.beginTime).format("YYYY-MM-DD"))return;const t=An(this.beginTime).startOf("day").unix();if(this.record=this.record.concat(i.map(s=>({beginTime:An(s.beginTime).unix()-t,endTime:An(s.endTime).unix()-t}))),!this.isEnd){const s=An(this.beginTime).startOf("day").unix(),u=An.unix(this.record[this.record.length-1].endTime+s).format("YYYY-MM-DD HH:mm:ss");this.getRecordList(u)}this.startTimeLine()}stop(){this.isEnd=!0,this.record=[],this.startTimeLine()}startTimeLine(){this.Obj.timeLine&&this.Obj.timeLine.changeProp("record",this.record)}}var dl={exports:{}},fl={exports:{}};fl.exports,function(d,i){(function(t,s){d.exports=s()})(typeof self!="undefined"?self:typeof window!="undefined"?window:Tn,function(){var t="3.7.7",s=t,u=typeof Buffer=="function",A=typeof TextDecoder=="function"?new TextDecoder:void 0,b=typeof TextEncoder=="function"?new TextEncoder:void 0,C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c=Array.prototype.slice.call(C),T=function(oe){var ue={};return oe.forEach(function(Ee,O){return ue[Ee]=O}),ue}(c),k=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,S=String.fromCharCode.bind(String),E=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):function(oe){return new Uint8Array(Array.prototype.slice.call(oe,0))},r=function(oe){return oe.replace(/=/g,"").replace(/[+\/]/g,function(ue){return ue=="+"?"-":"_"})},D=function(oe){return oe.replace(/[^A-Za-z0-9\+\/]/g,"")},f=function(oe){for(var ue,Ee,O,ee,ie="",ge=oe.length%3,_e=0;_e255||(O=oe.charCodeAt(_e++))>255||(ee=oe.charCodeAt(_e++))>255)throw new TypeError("invalid character found");ue=Ee<<16|O<<8|ee,ie+=c[ue>>18&63]+c[ue>>12&63]+c[ue>>6&63]+c[ue&63]}return ge?ie.slice(0,ge-3)+"===".substring(ge):ie},y=typeof btoa=="function"?function(oe){return btoa(oe)}:u?function(oe){return Buffer.from(oe,"binary").toString("base64")}:f,Q=u?function(oe){return Buffer.from(oe).toString("base64")}:function(oe){for(var ue=4096,Ee=[],O=0,ee=oe.length;O>>6)+S(128|ue&63):S(224|ue>>>12&15)+S(128|ue>>>6&63)+S(128|ue&63)}else{var ue=65536+(oe.charCodeAt(0)-55296)*1024+(oe.charCodeAt(1)-56320);return S(240|ue>>>18&7)+S(128|ue>>>12&63)+S(128|ue>>>6&63)+S(128|ue&63)}},M=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,z=function(oe){return oe.replace(M,w)},G=u?function(oe){return Buffer.from(oe,"utf8").toString("base64")}:b?function(oe){return Q(b.encode(oe))}:function(oe){return y(z(oe))},Y=function(oe,ue){return ue===void 0&&(ue=!1),ue?r(G(oe)):G(oe)},N=function(oe){return Y(oe,!0)},K=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,p=function(oe){switch(oe.length){case 4:var ue=(7&oe.charCodeAt(0))<<18|(63&oe.charCodeAt(1))<<12|(63&oe.charCodeAt(2))<<6|63&oe.charCodeAt(3),Ee=ue-65536;return S((Ee>>>10)+55296)+S((Ee&1023)+56320);case 3:return S((15&oe.charCodeAt(0))<<12|(63&oe.charCodeAt(1))<<6|63&oe.charCodeAt(2));default:return S((31&oe.charCodeAt(0))<<6|63&oe.charCodeAt(1))}},x=function(oe){return oe.replace(K,p)},_=function(oe){if(oe=oe.replace(/\s+/g,""),!k.test(oe))throw new TypeError("malformed base64.");oe+="==".slice(2-(oe.length&3));for(var ue,Ee="",O,ee,ie=0;ie>16&255):ee===64?S(ue>>16&255,ue>>8&255):S(ue>>16&255,ue>>8&255,ue&255);return Ee},B=typeof atob=="function"?function(oe){return atob(D(oe))}:u?function(oe){return Buffer.from(oe,"base64").toString("binary")}:_,R=u?function(oe){return E(Buffer.from(oe,"base64"))}:function(oe){return E(B(oe).split("").map(function(ue){return ue.charCodeAt(0)}))},X=function(oe){return R(ne(oe))},J=u?function(oe){return Buffer.from(oe,"base64").toString("utf8")}:A?function(oe){return A.decode(R(oe))}:function(oe){return x(B(oe))},ne=function(oe){return D(oe.replace(/[-_]/g,function(ue){return ue=="-"?"+":"/"}))},le=function(oe){return J(ne(oe))},me=function(oe){if(typeof oe!="string")return!1;var ue=oe.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(ue)||!/[^\s0-9a-zA-Z\-_]/.test(ue)},Ae=function(oe){return{value:oe,enumerable:!1,writable:!0,configurable:!0}},q=function(){var oe=function(ue,Ee){return Object.defineProperty(String.prototype,ue,Ae(Ee))};oe("fromBase64",function(){return le(this)}),oe("toBase64",function(ue){return Y(this,ue)}),oe("toBase64URI",function(){return Y(this,!0)}),oe("toBase64URL",function(){return Y(this,!0)}),oe("toUint8Array",function(){return X(this)})},Z=function(){var oe=function(ue,Ee){return Object.defineProperty(Uint8Array.prototype,ue,Ae(Ee))};oe("toBase64",function(ue){return g(this,ue)}),oe("toBase64URI",function(){return g(this,!0)}),oe("toBase64URL",function(){return g(this,!0)})},re=function(){q(),Z()},ae={version:t,VERSION:s,atob:B,atobPolyfill:_,btoa:y,btoaPolyfill:f,fromBase64:le,toBase64:Y,encode:Y,encodeURI:N,encodeURL:N,utob:z,btou:x,decode:le,isValid:me,fromUint8Array:g,toUint8Array:X,extendString:q,extendUint8Array:Z,extendBuiltins:re};return ae.Base64={},Object.keys(ae).forEach(function(oe){return ae.Base64[oe]=ae[oe]}),ae})}(fl,fl.exports);var Of=fl.exports,Ym=Ni(Of),Vm=ai({__proto__:null,default:Ym},[Of]),Km=rr(Vm);dl.exports,function(d,i){const t=Km.Base64;(function(s,u){d.exports=u()})(Tn,function(){function s(e){if(!e)return!1;var a=Object.prototype.toString.call(e);return a=="[object Function]"||a=="[object AsyncFunction]"}function u(){return Date.now&&s(Date.now)?Date.now():new Date().getTime()}function A(e){return e!=null&&Object.prototype.toString.call(e)=="[object Object]"}function b(){if(typeof Uint32Array=="function"){var e="";if(typeof crypto!="undefined"?e=crypto:typeof msCrypto!="undefined"&&(e=msCrypto),A(e)&&e.getRandomValues){var a=new Uint32Array(1),h=e.getRandomValues(a)[0],L=Math.pow(2,32);return h/L}}return Gf(1e19)/1e19}function C(e){var a=null;try{a=JSON.parse(e)}catch(h){}return a}function c(e,a){this.lockGetPrefix=e||"lock-get-prefix",this.lockSetPrefix=a||"lock-set-prefix"}function T(e){return typeof e=="function"||!(!e||typeof e!="object")&&T(e.listener)}function k(){this._events={}}function S(e){var a=e;try{a=decodeURIComponent(e)}catch(h){a=e}return a}function E(){function e(){}return typeof Object.create!="function"?(e.prototype=null,new e):Object.create(null)}function r(e){e=e||"";for(var a=E(),h=e.substring(1),L=h.split("&"),H=0;H Invalid URL");var H=h.split("#"),se=H[0],be=H.slice(1).join("#");L=this._regex.exec(se);for(var Me in this._fields)typeof L[this._fields[Me]]!="undefined"&&(this._values[Me]=L[this._fields[Me]]);this._values.Hostname=this._values.Host.replace(/:\d+$/,""),this._values.Origin=this._values.Protocol+"://"+this._values.Hostname,this._values.Fragment=be},new a(e)}function Q(e){var a={},h=function(){var se;try{return se=new URL("http://modernizr.com/"),se.href==="http://modernizr.com/"}catch(be){return!1}};if(typeof window.URL=="function"&&h())a=new URL(e),a.searchParams||(a.searchParams=function(){var se=r(a.search);return{get:function(be){return se[be]}}}());else{D(e)||(e=String(e)),e=f(e);var L=/^https?:\/\/.+/;if(L.test(e)===!1)return void tr.log("Invalid URL");var H=y(e);a.hash=H._values.Fragment,a.host=H._values.Host?H._values.Host+(H._values.Port?":"+H._values.Port:""):"",a.href=H._values.URL,a.password=H._values.Password,a.pathname=H._values.Path,a.port=H._values.Port,a.search=H._values.QueryString?"?"+H._values.QueryString:"",a.username=H._values.Username,a.hostname=H._values.Hostname,a.protocol=H._values.Protocol?H._values.Protocol+":":"",a.origin=H._values.Origin?H._values.Origin+(H._values.Port?":"+H._values.Port:""):"",a.searchParams=function(){var se=r("?"+H._values.QueryString);return{get:function(be){return se[be]}}}()}return a}function g(e){return!(!e||e.nodeType!==1)}function w(e){return e===void 0}function M(e){return Array.isArray&&s(M)?Array.isArray(e):Object.prototype.toString.call(e)==="[object Array]"}function z(e){return new Jf(e)}function G(e,a,h,L){function H(Me){return Me&&(Me.preventDefault=H.preventDefault,Me.stopPropagation=H.stopPropagation,Me._getPath=H._getPath),Me}function se(Me,st,It,Pt){var Qn=function(Rn){if(Rn=Rn||H(window.event)){Rn.target=Rn.srcElement;var Li,ar,zi=!0;return typeof It=="function"&&(Li=It(Rn)),ar=st.call(Me,Rn),Pt!=="beforeunload"?(Li!==!1&&ar!==!1||(zi=!1),zi):void 0}};return Qn}H._getPath=function(){var Me=this;return this.path||this.composedPath&&this.composedPath()||z(Me.target).getParents()},H.preventDefault=function(){this.returnValue=!1},H.stopPropagation=function(){this.cancelBubble=!0};var be=function(Me,st,It){if(L===void 0&&st==="click"&&(L=!0),Me&&Me.addEventListener)Me.addEventListener(st,function(Rn){Rn._getPath=H._getPath,It.call(this,Rn)},L);else{var Pt="on"+st,Qn=Me[Pt];Me[Pt]=se(Me,It,Qn,st)}};be.apply(null,arguments)}function Y(e){var a="pushState"in window.history?"popstate":"hashchange";G(window,a,e)}function N(e){if(e)return typeof window.XMLHttpRequest!="undefined"&&"withCredentials"in new XMLHttpRequest?new XMLHttpRequest:typeof XDomainRequest!="undefined"?new XDomainRequest:null;if(typeof window.XMLHttpRequest!="undefined")return new XMLHttpRequest;if(window.ActiveXObject)try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(a){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(h){tr.log(h)}}}function K(e,a,h){if(e==null)return!1;if(Zf&&e.forEach===Zf)e.forEach(a,h);else if(M(e))for(var L=0,H=e.length;L=200&&L.status<300||L.status==304?e.success(a(L.responseText)):e.error(a(L.responseText),L.status),L.onreadystatechange=null,L.onload=null)}catch(Me){L.onreadystatechange=null,L.onload=null}},L.open(e.type,e.url,!0);try{e.credentials&&(L.withCredentials=!0),A(e.header)&&K(e.header,function(Me,st){L.setRequestHeader&&L.setRequestHeader(st,Me)}),e.data&&(e.cors||L.setRequestHeader&&L.setRequestHeader("X-Requested-With","XMLHttpRequest"),e.contentType==="application/json"?L.setRequestHeader&&L.setRequestHeader("Content-type","application/json; charset=UTF-8"):L.setRequestHeader&&L.setRequestHeader("Content-type","application/x-www-form-urlencoded"))}catch(Me){tr.log(Me)}L.send(e.data||null)}function _(e,a){var h=[];return e==null?h:Array.prototype.map&&e.map===Array.prototype.map?e.map(a):(K(e,function(L,H,se){h.push(a(L,H,se))}),h)}function B(e){var a=[];try{a=_(atob(e).split(""),function(h){return"%"+("00"+h.charCodeAt(0).toString(16)).slice(-2)})}catch(h){a=[]}try{return decodeURIComponent(a.join(""))}catch(h){return a.join("")}}function R(e){var a="";try{a=btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,function(h,L){return String.fromCharCode("0x"+L)}))}catch(h){a=e}return a}function X(e,a){a=a||window;var h=!1,L=!0,H=a.document,se=H.documentElement,be=H.addEventListener,Me=be?"addEventListener":"attachEvent",st=be?"removeEventListener":"detachEvent",It=be?"":"on",Pt=function(Rn){Rn.type=="readystatechange"&&H.readyState!="complete"||((Rn.type=="load"?a:H)[st](It+Rn.type,Pt,!1),!h&&(h=!0)&&e.call(a,Rn.type||Rn))},Qn=function(){try{se.doScroll("left")}catch(Rn){return void setTimeout(Qn,50)}Pt("poll")};if(H.readyState=="complete")e.call(a,"lazy");else{if(!be&&se.doScroll){try{L=!a.frameElement}catch(Rn){tr.log(Rn)}L&&Qn()}H[Me](It+"DOMContentLoaded",Pt,!1),H[Me](It+"readystatechange",Pt,!1),a[Me](It+"load",Pt,!1)}}function J(e){return K(Array.prototype.slice.call(arguments,1),function(a){for(var h in a)a[h]!==void 0&&e[h]===void 0&&(e[h]=a[h])}),e}function ne(e){var a=e;try{a=decodeURI(e)}catch(h){a=e}return a}function le(e){var a="t6KJCZa5pDdQ9khoEM3Tj70fbP2eLSyc4BrsYugARqFIw1mzlGNVXOHiWvxUn8",h=a.length-1,L={},H=0;for(H=0;H=2&&!/^(\d+\.)+\d+$/.test(L)){for(var se="."+H.splice(H.length-1,1);H.length>0;)if(se="."+H.splice(H.length-1,1)+se,Ga.set(a,"true",0,null,h,"; domain="+se),document.cookie.indexOf(a+"=true")!==-1)return Ga.set(a,"true","-1s",null,h,"; domain="+se),se}return""}function Ee(e){function a(se,be){se=f(se);var Me;if(se==="body")return document.getElementsByTagName("body")[0];if(se.indexOf("#")===0)se=se.slice(1),Me=document.getElementById(se);else if(se.indexOf(":nth-of-type")>-1){var st=se.split(":nth-of-type");if(!st[0]||!st[1])return null;var It=st[0],Pt=st[1].match(/\(([0-9]+)\)/);if(!Pt||!Pt[1])return null;var Qn=Number(Pt[1]);if(!(g(be)&&be.children&&be.children.length>0))return null;for(var Rn=be.children,Li=0;Li0)return null}return Me||null}function h(se){var be,Me=L.shift();if(!Me)return se;try{be=a(Me,se)}catch(st){tr.log(st)}return be&&g(be)?h(be):null}if(!D(e))return null;var L=e.split(">"),H=null;return H=h(),H&&g(H)?H:null}function O(e,a){var h="",L="";return e.textContent?h=f(e.textContent):e.innerText&&(h=f(e.innerText)),h&&(h=h.replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)),L=h||"",a!=="input"&&a!=="INPUT"||(L=e.value||""),L}function ee(e,a){a&&typeof a=="string"||(a="hostname\u89E3\u6790\u5F02\u5E38");var h=null;try{h=Q(e).hostname}catch(L){tr.log("getHostname\u4F20\u5165\u7684url\u53C2\u6570\u4E0D\u5408\u6CD5\uFF01")}return h||a}function ie(){try{var e=navigator.appVersion.match(/OS (\d+)[._](\d+)[._]?(\d+)?/);return e&&e[1]?Number.parseInt(e[1],10):""}catch(a){return""}}function ge(e,a){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]"),e=S(e);var h="[\\?&]"+a+"=([^&#]*)",L=new RegExp(h),H=L.exec(e);return H===null||H&&typeof H[1]!="string"&&H[1].length?"":S(H[1])}function _e(e){var a={},h=e.split("?"),L=h[1]||"";return L&&(a=r("?"+L)),a}function we(){return typeof window.matchMedia!="undefined"||typeof window.msMatchMedia!="undefined"}function ke(){var e=screen.msOrientation||screen.mozOrientation||(screen.orientation||{}).type,a="\u672A\u53D6\u5230\u503C";if(e)a=e.indexOf("landscape")>-1?"landscape":"portrait";else if(we()){var h=window.matchMedia||window.msMatchMedia;h("(orientation: landscape)").matches?a="landscape":h("(orientation: portrait)").matches&&(a="portrait")}return a}function Se(){var e,a={},h=navigator.userAgent.toLowerCase();return(e=h.match(/ qq\/([\d.]+)/))?a.qqBuildinBrowser=Number(e[1].split(".")[0]):(e=h.match(/mqqbrowser\/([\d.]+)/))?a.qqBrowser=Number(e[1].split(".")[0]):(e=h.match(/opera.([\d.]+)/))?a.opera=Number(e[1].split(".")[0]):(e=h.match(/msie ([\d.]+)/))?a.ie=Number(e[1].split(".")[0]):(e=h.match(/edge.([\d.]+)/))?a.edge=Number(e[1].split(".")[0]):(e=h.match(/firefox\/([\d.]+)/))?a.firefox=Number(e[1].split(".")[0]):(e=h.match(/chrome\/([\d.]+)/))?a.chrome=Number(e[1].split(".")[0]):(e=h.match(/version\/([\d.]+).*safari/))?a.safari=Number(e[1].match(/^\d*.\d*/)):(e=h.match(/trident\/([\d.]+)/))&&(a.ie=11),a}function Te(e){return D(e)?(e=f(e),ne(e)):ne(location.href)}function Re(e){return D(e)?(e=f(e),ne(e)):ne(location.pathname)}function Ne(e,a){return e.hasAttribute?e.hasAttribute(a):e.attributes?!(!e.attributes[a]||!e.attributes[a].specified):void 0}function Ye(e,a){if(typeof a=="string")return Ne(e,a);if(M(a)){for(var h=!1,L=0;L0)for(var se=e.split(""),be=0;bea)for(H=h+H;st=L*H+Me,sta;)H=H/2+Me;H=L*H+Me}return H}function We(e,a){var h=e.indexOf;if(h)return h.call(e,a);for(var L=0;L41||a.firefox>30||a.opera>25||a.safari>12)&&(e=!0):(a.chrome>41||a.firefox>30||a.opera>25||a.safari>11.3)&&(e=!0)}else(a.chrome>38||a.edge>13||a.firefox>30||a.opera>25||a.safari>11)&&(e=!0);return e}function Yn(){return typeof window.XMLHttpRequest!="undefined"&&("withCredentials"in new XMLHttpRequest||typeof XDomainRequest!="undefined")}function Nn(e){if(!A(e)||!D(e.callbackName))return tr.log("JSONP \u8BF7\u6C42\u7F3A\u5C11 callbackName"),!1;e.success=s(e.success)?e.success:function(){},e.error=s(e.error)?e.error:function(){},e.data=e.data||"";var a=document.createElement("script"),h=document.getElementsByTagName("head")[0],L=null,H=!1;if(h.appendChild(a),gn(e.timeout)&&(L=setTimeout(function(){return!H&&(e.error("timeout"),window[e.callbackName]=function(){tr.log("call jsonp error")},L=null,h.removeChild(a),void(H=!0))},e.timeout)),window[e.callbackName]=function(){clearTimeout(L),L=null,e.success.apply(null,arguments),window[e.callbackName]=function(){tr.log("call jsonp error")},h.removeChild(a)},e.url.indexOf("?")>-1?e.url+="&callbackName="+e.callbackName:e.url+="?callbackName="+e.callbackName,A(e.data)){var se=[];K(e.data,function(be,Me){se.push(Me+"="+be)}),e.data=se.join("&"),e.url+="&"+e.data}a.onerror=function(be){return!H&&(window[e.callbackName]=function(){tr.log("call jsonp error")},clearTimeout(L),L=null,h.removeChild(a),e.error(be),void(H=!0))},a.src=e.url}function pi(e){var a={visibleHandler:s(e.visible)?e.visible:function(){},hiddenHandler:s(e.hidden)?e.hidden:function(){},visibilityChange:null,hidden:null,isSupport:function(){return typeof document[this.hidden]!="undefined"},init:function(){typeof document.hidden!="undefined"?(this.hidden="hidden",this.visibilityChange="visibilitychange"):typeof document.mozHidden!="undefined"?(this.hidden="mozHidden",this.visibilityChange="mozvisibilitychange"):typeof document.msHidden!="undefined"?(this.hidden="msHidden",this.visibilityChange="msvisibilitychange"):typeof document.webkitHidden!="undefined"&&(this.hidden="webkitHidden",this.visibilityChange="webkitvisibilitychange"),this.listen()},listen:function(){if(this.isSupport()){var h=this;G(document,this.visibilityChange,function(){document[h.hidden]?h.hiddenHandler():h.visibleHandler()},1)}else G(window,"focus",this.visibleHandler),G(window,"blur",this.hiddenHandler)}};a.init()}function Ln(e){e=p({success:function(){},error:function(){},appendCall:function(h){document.getElementsByTagName("head")[0].appendChild(h)}},e);var a=null;e.type==="css"&&(a=document.createElement("link"),a.rel="stylesheet",a.href=e.url),e.type==="js"&&(a=document.createElement("script"),a.async="async",a.setAttribute("charset","UTF-8"),a.src=e.url,a.type="text/javascript"),a.onload=a.onreadystatechange=function(){this.readyState&&this.readyState!=="loaded"&&this.readyState!=="complete"||(e.success(),a.onload=a.onreadystatechange=null)},a.onerror=function(){e.error(),a.onerror=null},e.appendCall(a)}function si(e){if(typeof e!="string")return"";for(var a=/^\s*javascript/i;a.test(e);)e=e.replace(a,"");return e}function Xi(e,a){e=String(e),a=typeof a=="number"?a:13;for(var h=126,L=e.split(""),H=0,se=L.length;Ha?(be&&(clearTimeout(be),be=null),Me=It,se=e.apply(L,H),be||(L=H=null)):be||h.trailing===!1||(be=setTimeout(st,Pt)),se}}function ea(e){var a=[];return e==null||K(e,function(h){a[a.length]=h}),a}function Wr(e){return e?e.toArray?e.toArray():M(e)||Oe(e)?Array.prototype.slice.call(e):ea(e):[]}function _r(e){for(var a,h=[],L={},H=0;H-1;if(A(h)&&L!=="$option"&&!se)try{e[L]=JSON.stringify(h)}catch(be){delete e[L],n("\u60A8\u7684\u6570\u636E-",L,h,"\u6570\u636E\u503C\u6709\u9519\u8BEF\uFF0C\u5DF2\u5C06\u5176\u5220\u9664")}else D(h)||gn(h)||me(h)||ft(h)||M(h)||s(h)||L==="$option"||se||(n("\u60A8\u7684\u6570\u636E-",L,h,"-\u683C\u5F0F\u4E0D\u6EE1\u8DB3\u8981\u6C42\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u5C06\u5176\u5220\u9664"),delete e[L])}),e}function ce(e,a){return gn(a)&&e.length>a?(n("\u5B57\u7B26\u4E32\u957F\u5EA6\u8D85\u8FC7\u9650\u5236\uFF0C\u5DF2\u7ECF\u505A\u622A\u53D6--"+e),e.slice(0,a)):e}function xe(e,a){var h=["distinct_id","user_id","id","date","datetime","event","events","first_id","original_id","device_id","properties","second_id","time","users"];A(e)&&K(h,function(L,H){L in e&&(We(a||[],L)>-1||(H<3?(delete e[L],n("\u60A8\u7684\u5C5E\u6027- "+L+"\u662F\u4FDD\u7559\u5B57\u6BB5\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u5C06\u5176\u5220\u9664")):n("\u60A8\u7684\u5C5E\u6027- "+L+"\u662F\u4FDD\u7559\u5B57\u6BB5\uFF0C\u8BF7\u907F\u514D\u5176\u4F5C\u4E3A\u5C5E\u6027\u540D")))})}function $e(e){var a=["$element_selector","$element_path"],h=["sensorsdata_app_visual_properties"];A(e)&&K(e,function(L,H){if(A(L))$e(e[H]);else if(D(L)){if(We(h,H)>-1)return;e[H]=ce(L,We(a,H)>-1?1024:Yt.max_string_length)}})}function De(e){typeof e.properties.$project!="undefined"&&(e.project=e.properties.$project,delete e.properties.$project),typeof e.properties.$token!="undefined"&&(e.token=e.properties.$token,delete e.properties.$token)}function Ge(e){if("item_type"in e){var a=e.item_type,h=function(se){return se||delete e.item_type,!0};$t({item_type:a},h)}if("item_id"in e){var L=e.item_id,H=function(se,be,Me){return se||Me!=="string"||delete e.item_id,!0};$t({item_id:L},H)}}function yt(e,a){K(e,function(h,L){var H=function(se,be,Me){return se||Me==="keyLength"||delete e[L],!0};We(a||[],L)===-1&&$t({propertyKey:L},H)})}function Mt(e){var a=e.properties;jr(e),A(a)?(de(a),xe(a),De(e),yt(a),$e(a)):"properties"in e&&(e.properties={}),Ge(e)}function Dt(e,a){var h=a.sensors;return e._track_id=Number(String(b()).slice(2,5)+String(b()).slice(2,4)+String(new Date().getTime()).slice(-4)),e._flush_time=new Date().getTime(),h.events.tempAdd("send",e),e}function vn(e,a){try{var h=a.sensors,L={};A(e)&&A(e.identities)&&!ht(e.identities)?p(L,e.identities):p(L,mt.getIdentities());var H={identities:L,distinct_id:mt.getDistinctId(),lib:{$lib:"js",$lib_method:"code",$lib_version:String(h.lib_version)},properties:{}};return A(e)&&A(e.properties)&&!ht(e.properties)&&(e.properties.$lib_detail&&(H.lib.$lib_detail=e.properties.$lib_detail,delete e.properties.$lib_detail),e.properties.$lib_method&&(H.lib.$lib_method=e.properties.$lib_method,delete e.properties.$lib_method)),Z(H,mt.getUnionId(),e),A(e.properties)&&!ht(e.properties)&&p(H.properties,e.properties),H.event==="$UnbindID"&&(H.login_id&&delete H.login_id,H.anonymous_id&&delete H.anonymous_id),e.type&&e.type.slice(0,7)==="profile"||(H.properties=p({},gi.properties(),mt.getProps(),mt.getSessionProps(),gi.currentProps,H.properties),h.para.preset_properties.latest_referrer&&!D(H.properties.$latest_referrer)&&(H.properties.$latest_referrer="\u53D6\u503C\u5F02\u5E38"),h.para.preset_properties.latest_search_keyword&&!D(H.properties.$latest_search_keyword)&&(h.para.preset_properties.search_keyword_baidu&&D(H.properties.$search_keyword_id)&&gn(H.properties.$search_keyword_id_hash)&&D(H.properties.$search_keyword_id_type)||(H.properties.$latest_search_keyword="\u53D6\u503C\u5F02\u5E38")),h.para.preset_properties.latest_traffic_source_type&&!D(H.properties.$latest_traffic_source_type)&&(H.properties.$latest_traffic_source_type="\u53D6\u503C\u5F02\u5E38"),h.para.preset_properties.latest_landing_page&&!D(H.properties.$latest_landing_page)&&(H.properties.$latest_landing_page="\u53D6\u503C\u5F02\u5E38"),h.para.preset_properties.latest_wx_ad_click_id==="not_collect"?(delete H.properties._latest_wx_ad_click_id,delete H.properties._latest_wx_ad_hash_key,delete H.properties._latest_wx_ad_callbacks):h.para.preset_properties.latest_wx_ad_click_id&&!D(H.properties._latest_wx_ad_click_id)&&(H.properties._latest_wx_ad_click_id="\u53D6\u503C\u5F02\u5E38",H.properties._latest_wx_ad_hash_key="\u53D6\u503C\u5F02\u5E38",H.properties._latest_wx_ad_callbacks="\u53D6\u503C\u5F02\u5E38"),D(H.properties._latest_wx_ad_click_id)&&(H.properties.$url=Te())),H.properties.$time&&me(H.properties.$time)?(H.time=1*H.properties.$time,delete H.properties.$time):H.time=1*new Date,function(se){if(h.bridge&&h.bridge.bridge_info.verify_success==="success"){var be=Pu.customProp.geth5Props(JSON.parse(JSON.stringify(se)));A(be)&&!ht(be)&&(se.properties=p(se.properties,be))}var Me=Pa.customProp.getVtrackProps(JSON.parse(JSON.stringify(se)));A(Me)&&!ht(Me)&&(se.properties=p(se.properties,Me))}(H),xt(H),Ds.checkIsAddSign(H),Ds.checkIsFirstTime(H),un(H),pt(H),H}catch(se){return{_debug_web_msg:String(se)}}}function Vt(e){return Ru.stage.process("basicProps",e)}function tn(e){return Ru.stage.process("formatData",e)}function di(e,a,h,L){function H(be){function Me(){st||(st=!0,location.href=se.href)}be.stopPropagation(),be.preventDefault();var st=!1;setTimeout(Me,1e3),L(a,h,Me)}e=e||{};var se=null;return e.ele&&(se=e.ele),e.event&&(se=e.target?e.target:e.event.target),h=h||{},!(!se||typeof se!="object")&&(!se.href||/^javascript/.test(se.href)||se.target||se.download||se.onclick?(L(a,h),!1):(e.event&&H(e.event),void(e.ele&&fe(e.ele,"click",function(be){H(be)}))))}function Pr(){var e=location.protocol;return e==="http:"||e==="https:"?e:"http:"}function Et(e){return Nu.stage.process("webClickEvent",e)}function Er(e){return Nu.stage.process("webStayEvent",e)}function Ir(){var e=gi.campaignParams(),a={};return K(e,function(h,L,H){(" "+Ce.source_channel_standard+" ").indexOf(" "+L+" ")!==-1?a["$"+L]=H[L]:a[L]=H[L]}),a}function ta(e,a,h){if(Ce.is_first_visitor&&h){var L={};Ce.para.preset_properties.search_keyword_baidu&&Le(document.referrer)&&pe()&&(L.$search_keyword_id=Ts.id(),L.$search_keyword_id_type=Ts.type(),L.$search_keyword_id_hash=rt(L.$search_keyword_id));var H=ze(null,a);e(p({$first_visit_time:new Date,$first_referrer:H,$first_referrer_host:H?ee(H,"\u53D6\u503C\u5F02\u5E38"):"",$first_browser_language:D(navigator.language)?navigator.language.toLowerCase():"\u53D6\u503C\u5F02\u5E38",$first_browser_charset:D(document.charset)?document.charset.toUpperCase():"\u53D6\u503C\u5F02\u5E38",$first_traffic_source_type:nt(),$first_search_keyword:Qe()},Ir(),L)),Ce.is_first_visitor=!1}}function Fn(e,a){var h=e.id,L=e.callback,H=e.name,se=mt.getFirstId(),be=mt.getOriginDistinctId();if(!$t({distinct_id:h}))return v("login id is invalid"),!1;if(h===mt.getOriginDistinctId()&&!se)return v("login id is equal to distinct_id"),!1;if(A(mt._state.identities)&&mt._state.identities.hasOwnProperty(H)&&h===mt._state.first_id)return!1;var Me=mt._state.history_login_id.name!==H||h!==mt._state.history_login_id.value;if(Me){mt._state.identities[H]=h,mt.set("history_login_id",{name:H,value:h}),se||mt.set("first_id",be),a(h,"$SignUp",{},L);var st={$identity_cookie_id:mt._state.identities.$identity_cookie_id};return st[H]=h,gr(st),!0}return!1}function gr(e){var a={};for(var h in e)a[h]=e[h];mt._state.identities=a,mt.save()}function Wt(e,a){if(!$t({unbindKey:e,bindValue:a}))return!1;if(A(mt._state.identities)&&mt._state.identities.hasOwnProperty(e)&&mt._state.identities[e]===a){var h=mt.getUnionId().login_id;h&&e+"+"+a===h&&(mt._state.distinct_id=mt._state.first_id,mt._state.first_id="",mt.set("history_login_id",{name:"",value:""})),e!=="$identity_cookie_id"&&(delete mt._state.identities[e],mt.save())}var L={};return L[e]=a,L}function ct(){Ce._t=Ce._t||1*new Date,Ce.is_first_visitor=!1,Ce.source_channel_standard=eh}function Pn(e){p(Yt,e||Ce.para||{}),Ce.para=Yt;var a={};if(A(Ce.para.is_track_latest))for(var h in Ce.para.is_track_latest)a["latest_"+h]=Ce.para.is_track_latest[h];Ce.para.preset_properties=p({},Ss.preset_properties,a,Ce.para.preset_properties||{});var L;for(L in Ss)Ce.para[L]===void 0&&(Ce.para[L]=Ss[L]);typeof Ce.para.web_url!="string"||Ce.para.web_url.slice(0,3)!=="://"&&Ce.para.web_url.slice(0,2)!=="//"||(Ce.para.web_url.slice(0,3)==="://"?Ce.para.web_url=location.protocol.slice(0,-1)+Ce.para.web_url:Ce.para.web_url=location.protocol+Ce.para.web_url),Qa.protocol.serverUrl(),Ce.bridge&&Ce.bridge.initPara();var H=["utm_source","utm_medium","utm_campaign","utm_content","utm_term"],se=["www.baidu.","m.baidu.","m.sm.cn","so.com","sogou.com","youdao.com","google.","yahoo.com/","bing.com/","ask.com/"],be=["weibo.com","renren.com","kaixin001.com","douban.com","qzone.qq.com","zhihu.com","tieba.baidu.com","weixin.qq.com"],Me={baidu:["wd","word","kw","keyword"],google:"q",bing:"q",yahoo:"p",sogou:["query","keyword"],so:"q",sm:"q"};typeof Ce.para.source_type=="object"&&(Ce.para.source_type.utm=M(Ce.para.source_type.utm)?Ce.para.source_type.utm.concat(H):H,Ce.para.source_type.search=M(Ce.para.source_type.search)?Ce.para.source_type.search.concat(se):se,Ce.para.source_type.social=M(Ce.para.source_type.social)?Ce.para.source_type.social.concat(be):be,Ce.para.source_type.keyword=A(Ce.para.source_type.keyword)?p(Me,Ce.para.source_type.keyword):Me);var st={div:!1},It=["mark","/mark","strong","b","em","i","u","abbr","ins","del","s","sup"];if(Ce.para.heatmap&&!A(Ce.para.heatmap)&&(Ce.para.heatmap={}),A(Ce.para.heatmap)){Ce.para.heatmap.clickmap=Ce.para.heatmap.clickmap||"default",Ce.para.heatmap.scroll_notice_map=Ce.para.heatmap.scroll_notice_map||"default",Ce.para.heatmap.scroll_delay_time=Ce.para.heatmap.scroll_delay_time||4e3,Ce.para.heatmap.scroll_event_duration=Ce.para.heatmap.scroll_event_duration||18e3,Ce.para.heatmap.renderRefreshTime=Ce.para.heatmap.renderRefreshTime||1e3,Ce.para.heatmap.loadTimeout=Ce.para.heatmap.loadTimeout||1e3,Ce.para.heatmap.get_vtrack_config!==!0&&(Ce.para.heatmap.get_vtrack_config=!1);var Pt=M(Ce.para.heatmap.track_attr)?re(Ce.para.heatmap.track_attr,function(Rn){return Rn&&typeof Rn=="string"}):[];if(Pt.push("data-sensors-click"),Ce.para.heatmap.track_attr=Pt,A(Ce.para.heatmap.collect_tags))if(Ce.para.heatmap.collect_tags.div===!0)Ce.para.heatmap.collect_tags.div={ignore_tags:It,max_level:1};else if(A(Ce.para.heatmap.collect_tags.div)){if(Ce.para.heatmap.collect_tags.div.ignore_tags?M(Ce.para.heatmap.collect_tags.div.ignore_tags)||(n("ignore_tags \u53C2\u6570\u5FC5\u987B\u662F\u6570\u7EC4\u683C\u5F0F"),Ce.para.heatmap.collect_tags.div.ignore_tags=It):Ce.para.heatmap.collect_tags.div.ignore_tags=It,Ce.para.heatmap.collect_tags.div.max_level){var Qn=[1,2,3];We(Qn,Ce.para.heatmap.collect_tags.div.max_level)===-1&&(Ce.para.heatmap.collect_tags.div.max_level=1)}}else Ce.para.heatmap.collect_tags.div=!1;else Ce.para.heatmap.collect_tags=st}Ce.para.server_url=Xt(Ce.para.server_url),Ce.para.noCache===!0?Ce.para.noCache="?"+new Date().getTime():Ce.para.noCache="",Ce.para.callback_timeout>Ce.para.datasend_timeout&&(Ce.para.datasend_timeout=Ce.para.callback_timeout),Ce.para.heatmap&&Ce.para.heatmap.collect_tags&&A(Ce.para.heatmap.collect_tags)&&K(Ce.para.heatmap.collect_tags,function(Rn,Li){Li!=="div"&&Rn&&Ce.heatmap.otherTags.push(Li)}),Ce.para.heatmap&&Ce.para.heatmap.clickmap==="default"&&Ce.heatmap.initUnlimitedTags()}function jt(){var e=Array.prototype.slice.call(arguments),a=e[0],h=e.slice(1);return typeof a=="string"&&_l[a]?_l[a].apply(_l,h):void(typeof a=="function"?a.apply(Ce,h):n("quick\u65B9\u6CD5\u4E2D\u6CA1\u6709\u8FD9\u4E2A\u529F\u80FD"+e[0]))}function St(e,a){function h(){return!L.plugin_is_init&&L.init(Ce,a),L.plugin_is_init=!0,Ce.modules=Ce.modules||{},Ce.modules[L.plugin_name||"unnamed_"+qy++]=L,L}if(!D(e)&&!A(e))return void v("use's first arguments must be string or object.");var L;if(A(e)){var H=Ce.modules&&Ce.modules[e.plugin_name];H&&H!==e&&n(e.name+" is conflict with builtin plugin, and sdk uses builtin plugin."),L=H||e}return D(e)&&(A(Ce.modules)&&A(Ce.modules[e])?L=Ce.modules[e]:A(window.SensorsDataWebJSSDKPlugin)&&A(window.SensorsDataWebJSSDKPlugin[e])?L=window.SensorsDataWebJSSDKPlugin[e]:window.sensorsDataAnalytic201505&&window.sensorsDataAnalytic201505.modules[e]&&(L=window.sensorsDataAnalytic201505.modules[e])),L&&s(L.init)?L.plugin_is_init?L:(L.plugin_name||n("warning: invalid plugin, plugin_name required."),L.plugin_version?L.plugin_version!==Ce.lib_version&&n("warning: plugin version not match SDK version. plugin may not work correctly. "):n("warning: invalid plugin, plugin version required."),h()):(n((e.plugin_name||e)+" is not found or it's not a standard plugin. Please check sensorsdata official documents."),L)}function Gn(e,a,h){$t({event:e,properties:a})&&dr.send({type:"track",event:e,properties:a},h)}function Hn(e,a){return!!$t({bindKey:e,bindValue:a})&&(mt._state.identities[e]=a,mt.save(),void dr.send({type:"track_id_bind",event:"$BindID",properties:{}}))}function fi(e,a){var h=Wt(e,a);h&&dr.send({identities:h,type:"track_id_unbind",event:"$UnbindID",properties:{}})}function mn(e,a,h){typeof e=="object"&&e.tagName?di({ele:e},a,h,Ce.track):typeof e=="object"&&e.target&&e.event&&di(e,a,h,Ce.track)}function ti(e,a,h){return h=h||{},!(!e||typeof e!="object")&&!(!e.href||/^javascript/.test(e.href)||e.target)&&void fe(e,"click",function(L){function H(){se||(se=!0,location.href=e.href)}L.preventDefault();var se=!1;setTimeout(H,1e3),Ce.track(a,h,H)})}function Hi(e,a,h){$t({item_type:e,item_id:a,properties:h})&&dr.sendItem({type:"item_set",item_type:e,item_id:a,properties:h||{}})}function ni(e,a){$t({item_type:e,item_id:a})&&dr.sendItem({type:"item_delete",item_type:e,item_id:a})}function sr(e,a){$t({propertiesMust:e})&&dr.send({type:"profile_set",properties:e},a)}function Zi(e,a){$t({propertiesMust:e})&&dr.send({type:"profile_set_once",properties:e},a)}function hi(e,a){$t({propertiesMust:e})&&(K(e,function(h,L){D(h)?e[L]=[h]:M(h)?e[L]=h:(delete e[L],n("appendProfile\u5C5E\u6027\u7684\u503C\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6216\u8005\u6570\u7EC4"))}),ht(e)||dr.send({type:"profile_append",properties:e},a))}function Jn(e,a){function h(H){for(var se in H)if(Object.prototype.hasOwnProperty.call(H,se)&&!/-*\d+/.test(String(H[se])))return!1;return!0}var L=e;D(e)&&(e={},e[L]=1),$t({propertiesMust:e})&&(h(e)?dr.send({type:"profile_increment",properties:e},a):v("profile_increment\u7684\u503C\u53EA\u80FD\u662F\u6570\u5B57"))}function Xn(e){dr.send({type:"profile_delete"},e),mt.set("distinct_id",Ma()),mt.set("first_id","")}function mi(e,a){var h=e,L={};D(e)&&(e=[],e.push(h)),M(e)?(K(e,function(H){D(H)?L[H]=!0:n("profile_unset\u7ED9\u7684\u6570\u7EC4\u91CC\u9762\u7684\u503C\u5FC5\u987B\u65F6string,\u5DF2\u7ECF\u8FC7\u6EE4\u6389",H)}),dr.send({type:"profile_unset",properties:L},a)):v("profile_unset\u7684\u53C2\u6570\u5FC5\u987B\u662F\u6570\u7EC4")}function lr(e){typeof e=="number"&&(e=String(e));var a=mt.getFirstId();if(typeof e=="undefined"){var h=Ma();a?mt.set("first_id",h):mt.set("distinct_id",h)}else $t({distinct_id:e})&&(a?mt.set("first_id",e):mt.set("distinct_id",e))}function qi(e){var a=mt.getFirstId();if(a)return v("resetAnonymousIdentity must be used in a logout state \uFF01"),!1;if(typeof e=="number"&&(e=String(e)),typeof e=="undefined"){var h=Ma();mt._state.identities.$identity_cookie_id=h,mt.set("distinct_id",h)}else $t({distinct_id:e})&&(mt._state.identities.$identity_cookie_id=e,mt.set("distinct_id",e))}function Ct(e,a,h,L){var H=mt.getFirstId()||mt.getDistinctId();mt.set("distinct_id",e),dr.send({original_id:H,distinct_id:mt.getDistinctId(),type:"track_signup",event:a,properties:h},L)}function at(e,a,h,L){typeof e=="number"&&(e=String(e)),$t({distinct_id:e,event:a,properties:h})&&Ct(e,a,h,L)}function Ft(e){$t({properties:e})?p(gi.currentProps,e):v("register\u8F93\u5165\u7684\u53C2\u6570\u6709\u8BEF")}function it(e){mt.clearAllProps(e)}function wt(e){var a;if(M(e)&&e.length>0)for(a=0;a-1?L:"https:",Ln({success:function(){setTimeout(function(){typeof sa_jssdk_app_define_mode!="undefined"&&window.sa_jssdk_app_define_mode(Ce,e)},0)},error:function(){},type:"js",url:L+"//static.sensorsdata.cn/sdk/"+Ce.lib_version+"/vapph5define.min.js"})}else a();else a()}function wi(e){Ce.para.is_track_single_page&&Lu.on("switch",function(a){var h=function(H){if(H=H||{},a!==location.href){gi.pageProp.referrer=Te(a);var se=p({$url:Te(),$referrer:Te(a)},H);s(e)?e(se):Ce.quick&&Ce.quick("autoTrack",se)}};if(typeof Ce.para.is_track_single_page=="boolean")h();else if(typeof Ce.para.is_track_single_page=="function"){var L=Ce.para.is_track_single_page();A(L)?h(L):L===!0&&h()}})}function xi(){Ce._q&&M(Ce._q)&&Ce._q.length>0&&K(Ce._q,function(e){Ce[e[0]].apply(Ce,Array.prototype.slice.call(e[1]))}),A(Ce.para.heatmap)&&(qr.initHeatmap(),qr.initScrollmap())}function cr(){Ce.readyState.setState(3),new Ce.SDKJSBridge("visualized").onAppNotify(function(){Bi(typeof sa_jssdk_app_define_mode!="undefined")}),Bi(!1),Ce.bridge.app_js_bridge_v1(),gi.initPage(),wi(),mt.init(),_n(),l(),Ce.readyState.setState(4),xi()}function mr(){Ra.isSeachHasKeyword()?Ra.hasKeywordHandle():window.parent!==self&&aa.isSearchHasKeyword()?aa.verifyVtrackMode():Ra.isWindowNameHasKeyword()?Ra.windowNameHasKeywordHandle():Ra.isStorageHasKeyword()?Ra.storageHasKeywordHandle():window.parent!==self&&aa.isStorageHasKeyword()?aa.verifyVtrackMode():(cr(),aa.notifyUser())}function l(){Pa.init(),Ce.bridge.bridge_info.verify_success==="success"&&Pu.init()}function P(){K(Ky,function(e){var a=Ce[e];Ce[e]=function(){return Ce.readyState.state<3?(M(Ce._q)||(Ce._q=[]),n("calling sdk api before init is deprecated."),Ce._q.push([e,arguments]),!1):s(Ce.getDisabled)&&Ce.getDisabled()?void 0:Ce.readyState.getState()?a.apply(Ce,arguments):void v("\u8BF7\u5148\u521D\u59CB\u5316\u795E\u7B56JS SDK")}})}function V(e,a){this.cancel=function(){e=!0},this.getCanceled=function(){return e||!1},this.stop=function(){a=!0},this.getStopped=function(){return a||!1}}function te(e,a,h){var L=null;try{L=JSON.parse(JSON.stringify(e||null))}catch(H){}this.getOriginalData=function(){return L},this.getPosition=function(){return a},this.cancellationToken=new V,this.sensors=h}function he(e){if(!A(e))throw"error: Stage constructor requires arguments.";this.processDef=e,this.registeredInterceptors={}}function ye(e){e&&e.buildDataStage&&sh.registerStageImplementation(e.buildDataStage),e&&e.businessStage&&uh.registerStageImplementation(e.businessStage),e&&e.sendDataStage&&lh.registerStageImplementation(e.sendDataStage),e&&e.viewStage&&ch.registerStageImplementation(e.viewStage)}function Ie(e,a){dh[e]&&dh[e](a)}function Pe(){return Ou.stage&&Ou.stage.process("getUtmData")}function je(e){return fh.stage.process("send",e)}function qe(e){e.kit=Ls,e.saEvent=dr,this.buildDataStage=Ru,this.sendDataStage=fh,this.businessStage=Ou}function gt(e){e.heatmap=qr,this.viewStage=Nu}function _t(e){if(!s(e.properties))return void v("registerPropertyPlugin arguments error, properties must be function");if(e.isMatchedWithFilter&&!s(e.isMatchedWithFilter))return void v("registerPropertyPlugin arguments error, isMatchedWithFilter must be function");var a={finalAdjustData:{priority:100,entry:function(h){try{if(s(e.isMatchedWithFilter))return e.isMatchedWithFilter(h)&&e.properties(h);e.properties(h)}catch(L){v("execute registerPropertyPlugin callback error:"+L)}}}};Ie("buildDataStage",a)}function Tt(e){e&&(Ce.events=ih,Ce.bridge=Vy,Ce.SDKJSBridge=yn,Ce.JSBridge=Mn,Ce.store=mt,Ce.unlimitedDiv=bl,Ce.customProp=ah,Ce.vtrackcollect=Pa,Ce.vapph5collect=Pu,Ce.detectMode=mr,Ce.registerFeature=ye,Ce.registerInterceptor=Ie,Ce.commonWays=_l,ye(new qe(Ce)),ye(new gt(Ce)),Ie("viewStage",tA));var a=e?Yy:Gy;for(var h in a)Ce[h]=a[h];Ce.logger=Ja,Ce.log=F,Ce._=oh,Ce.on=Ut,Ce.ee=Ui,Ce.use=St,Ce.lib_version=vl,Ce.registerPropertyPlugin=_t}function dt(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return kt(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function kt(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Dn(e,a,h){return dt(e,a,h),e.plugin_version=nA,e}function Wn(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Ei(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Ei(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Mi(e,a,h){return Wn(e,a,h),e.plugin_version=aA,e}function dn(e){return gh&&gh.call(da,JSON.stringify(e))}function zn(e){return Il.call(da)&&mh&&mh.call(da,JSON.stringify(e))}function En(e,a){return a&&typeof a[e.callType]=="function"&&a[e.callType]()}function Ci(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Rr(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Rr(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Nr(e,a,h){return Ci(e,a,h),e.plugin_version=lA,e}function Ta(){if(oa=window.SensorsData_APP_New_H5_Bridge,El=oa&&oa.sensorsdata_track,Fs=El&&oa.sensorsdata_get_server_url&&oa.sensorsdata_get_server_url(),Xa("---test---fail---",!Ii,Ii.bridge.activeBridge,!Fs),Ii&&!Ii.bridge.activeBridge&&Fs)return Ii.bridge.activeBridge=Ah,Ii.para.app_js_bridge&&!Ii.para.app_js_bridge.is_mui&&(Ii.bridge.is_verify_success=Fs&&Ii.bridge.validateAppUrl(Fs),Xa("---test---bridge-verify-",Ii.bridge.is_verify_success)),Ii.bridge.bridge_info={touch_app_bridge:!0,platform:"android",verify_success:Ii.bridge.is_verify_success?"success":"fail",support_two_way_call:!!oa.sensorsdata_js_call_app},Ii.para.app_js_bridge?void Ii.registerInterceptor("sendDataStage",{send:{priority:60,entry:na}}):void Xa("---test---app_js_bridge is not configured, data will not be sent by android bridge.")}function na(e,a){if(Xa("---test---datasend-",Ii.bridge.is_verify_success),Ii.para.app_js_bridge.is_mui||e.data.type==="item_set"||e.data.type==="item_delete")return e;var h=e.callback;return Ii.bridge.is_verify_success?(Xa("---test---bridge-verify-success---",e.data),El&&El.call(oa,JSON.stringify(Ms.extend({server_url:Ii.para.server_url},e.data))),Ms.isFunction(h)&&h(),a.cancellationToken.cancel(),e):(Xa("---test---bridge-verify-fail-----",Ii.bridge.is_verify_success),Ii.para.app_js_bridge.is_send?(Ii.debug.apph5({data:e.data,step:"4.2",output:"all"}),e):(Ms.isFunction(h)&&h(),a.cancellationToken.cancel(),e))}function zr(e){var a=e.callType;return a in yh.commands?yh.commands[a](e,oa):void(oa&&Ms.isFunction(oa.sensorsdata_js_call_app)&&oa.sensorsdata_js_call_app(JSON.stringify(e)))}function kr(e){return xh&&xh.call(fa,JSON.stringify(e))}function yr(e){return wl.call(fa)&&Ch&&Ch.call(fa,JSON.stringify(e))}function vs(e,a){return a&&typeof a[e.callType]=="function"&&a[e.callType]()}function Ya(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Sr(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Sr(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function va(e,a,h){return Ya(e,a,h),e.plugin_version=uA,e}function er(){if(Yr("ObsoleteBridge---test---init---"),Tr=window.SensorsData_APP_JS_Bridge,_o=Tr&&Tr.sensorsdata_track,Za=Tr&&Tr.sensorsdata_verify,Qs=Tr&&Tr.sensorsdata_visual_verify,Yr("ObsoleteBridge-",Ki.bridge.activeBridge,Za,_o,Qs),Ki&&!Ki.bridge.activeBridge&&(Za||_o||Qs)){Ki.bridge.activeBridge=bh;var e=Za||_o;if(Qs&&(e=!!Qs.call(Tr,JSON.stringify({server_url:Ki.para.server_url})),Yr("ObsoleteBridge---called-return",e)),Ki.bridge.bridge_info={touch_app_bridge:!0,platform:"android",verify_success:e?"success":"fail"},!Ki.para.app_js_bridge)return void Yr("app_js_bridge is not configured, data will not be sent by android obsolete bridge.");Ki.registerInterceptor("sendDataStage",{send:{priority:80,entry:Br}}),Yr("Android obsolete bridge inits succeed.")}}function Br(e,a){if(Yr("ObsoleteBridge---senddata"),Ki.para.app_js_bridge.is_mui||e.data.type==="item_set"||e.data.type==="item_delete")return e;var h=e.callback;if(Za){var L=Za&&Za.call(Tr,JSON.stringify(eo.extend({server_url:Ki.para.server_url},e.data)));return Yr("ObsoleteBridge---anVerify-success",L),L?(eo.isFunction(h)&&h(),a.cancellationToken.cancel(),e):Ki.para.app_js_bridge.is_send?(Ki.debug.apph5({data:e.data,step:"3.1",output:"all"}),e):(eo.isFunction(h)&&h(),a.cancellationToken.cancel(),e)}return Yr("ObsoleteBridge---is-send-old-way",Ki.para.app_js_bridge.is_send),_o&&_o.call(Tr,JSON.stringify(eo.extend({server_url:Ki.para.server_url},e.data))),eo.isFunction(h)&&h(),a.cancellationToken.cancel(),e}function ri(e){Yr("ObsoleteBridge---handleCommadn");var a=e.callType;return a in ju.commands?(Yr("ObsoleteBridge---",a,ju.commands),ju.commands[a](e,Tr)):Tr&&eo.isFunction(Tr.sensorsdata_js_call_app)?(Yr("ObsoleteBridge---handleCommadn-abridge"),Tr.sensorsdata_js_call_app(JSON.stringify(e))):void 0}function Yi(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return hl(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function hl(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function xs(e,a,h){return Yi(e,a,h),e.plugin_version=cA,e}function xu(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Ao(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Ao(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Cu(e,a,h){return xu(e,a,h),e.plugin_version=fA,e}function pl(){return typeof Ps!="undefined"&&document[Ps]}function bu(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return _u(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function _u(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function gl(e,a,h){return bu(e,a,h),e.plugin_version=xA,e}function vo(){if(Wu=window.SensorsData_iOS_JS_Bridge&&window.SensorsData_iOS_JS_Bridge.sensorsdata_app_server_url,to=function(){return window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.sensorsdataNativeTracker},Pi&&!Pi.bridge.activeBridge&&to()&&to().postMessage){if(Pi.bridge.activeBridge=wh,Pi.para.app_js_bridge&&!Pi.para.app_js_bridge.is_mui&&(Pi.bridge.is_verify_success=Wu&&Pi.bridge.validateAppUrl(Wu)),Pi.bridge.bridge_info={touch_app_bridge:!0,platform:"ios",verify_success:Pi.bridge.is_verify_success?"success":"fail",support_two_way_call:!0},!Pi.para.app_js_bridge)return void zu("app_js_bridge is not configured, data will not be sent by iOS bridge.");Pi.registerInterceptor("sendDataStage",{send:{priority:70,entry:Eu}}),zu("IOS bridge inits succeed.")}}function Eu(e,a){if(Pi.para.app_js_bridge.is_mui||e.data.type==="item_set"||e.data.type==="item_delete")return e;var h=e.callback;return Pi.bridge.is_verify_success?(to()&&to().postMessage(JSON.stringify({callType:"app_h5_track",data:Rs.extend({server_url:Pi.para.server_url},e.data)})),Rs.isFunction(h)&&h(),a.cancellationToken.cancel(),e):Pi.para.app_js_bridge.is_send?(Pi.debug.apph5({data:e.data,step:"4.1",output:"all"}),e):(Rs.isFunction(h)&&h(),a.cancellationToken.cancel(),e)}function Iu(e){var a=e.callType;return a!=="page_info"&&a!=="visualized_track"||Pi.bridge.hasVisualModeBridge()?a==="sensorsdata_get_app_visual_config"?Rs.isObject(window.SensorsData_APP_New_H5_Bridge)&&window.SensorsData_APP_New_H5_Bridge[a]:to()&&to().postMessage(JSON.stringify(e)):null}function Va(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return wu(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function wu(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Cs(e,a,h){return Va(e,a,h),e.plugin_version=CA,e}function ku(){if(Gi&&!Gi.bridge.activeBridge&&ia()){if(Gi.bridge.activeBridge=Sh,Gi.bridge.bridge_info={touch_app_bridge:!0,platform:"ios",verify_success:ra()?"success":"fail"},!Gi.para.app_js_bridge)return void qu("app_js_bridge is not configured, data will not be sent by iOS obsolete bridge.");Gi.registerInterceptor("sendDataStage",{send:{priority:90,entry:ml}}),qu("IOS obsolete bridge inits succeed.")}}function ia(){return(/sensors-verify/.test(navigator.userAgent)||/sa-sdk-ios/.test(navigator.userAgent))&&!window.MSStream}function ra(){if(/sensors-verify/.test(navigator.userAgent)){var e=navigator.userAgent.match(/sensors-verify\/([^\s]+)/);if(e&&e[0]&&typeof e[1]=="string"&&e[1].split("?").length===2){e=e[1].split("?");var a=null,h=null;try{a=Eo.URL(Gi.para.server_url).hostname,h=Eo.URL(Gi.para.server_url).searchParams.get("project")||"default"}catch(L){Gi.log(L)}return!(!a||a!==e[0]||!h||h!==e[1])}return!1}return!!/sa-sdk-ios/.test(navigator.userAgent)}function ml(e,a){function h(be){var Me=JSON.stringify(Eo.extend({server_url:Gi.para.server_url},be));return Me=Me.replace(/\r\n/g,""),Me=encodeURIComponent(Me),"sensorsanalytics://trackEvent?event="+Me}if(Gi.para.app_js_bridge.is_mui||e.data.type==="item_set"||e.data.type==="item_delete")return e;var L=e.callback;if(Gi.bridge.bridge_info.verify_success){var H=document.createElement("iframe"),se=h(e.data);return H.setAttribute("src",se),document.documentElement.appendChild(H),H.parentNode.removeChild(H),H=null,Eo.isFunction(L)&&L(),a.cancellationToken.cancel(),!0}return Gi.para.app_js_bridge.is_send?(Gi.debug.apph5({data:e.data,step:"3.2",output:"all"}),e):(Eo.isFunction(L)&&L(),a.cancellationToken.cancel(),e)}function yi(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return bs(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function bs(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Hr(e,a,h){return yi(e,a,h),e.plugin_version=bA,e}function ui(){this.sd=null,this.start_time=+new Date,this.page_show_status=!0,this.page_hidden_status=!1,this._={},this.timer=null,this.current_page_url=document.referrer,this.url=location.href,this.title=document.title||"",this.option={},this.heartbeat_interval_time=5e3,this.heartbeat_interval_timer=null,this.page_id=null,this.storage_name="sawebjssdkpageleave",this.max_duration=EA}function _s(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return yl(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function yl(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function xa(e,a,h){return _s(e,a,h),e.plugin_version=kA,e}function Es(e,a){if(e.type!=="track")return e;var h=a.sd,L=h._,H=h.saEvent.check,se=L.extend2Lev({properties:{}},e),be=a.customRegister,Me=se.properties,st=se.event,It={};return L.each(be,function(Pt){if(L.isObject(Pt))L.indexOf(Pt.events,st)>-1&&H({properties:Pt.properties})&&(It=L.extend(It,Pt.properties));else if(L.isFunction(Pt)){var Qn=Pt({event:st,properties:Me,data:se});L.isObject(Qn)&&!L.isEmptyObject(Qn)&&H({properties:Qn})&&(It=L.extend(It,Qn))}}),e.properties=L.extend(Me,It),e}function La(){this.sd=null,this.log=window.console&&window.console.log||function(){},this.customRegister=[]}function xo(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Is(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Is(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function ws(e,a,h){return xo(e,a,h),e.plugin_version=DA,e}function Co(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return ks(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function ks(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Be(e,a,h){return Co(e,a,h),e.plugin_version=FA,e}function He(e){try{if(e.event!=="$pageview"&&(!e.type||e.type.slice(0,7)!=="profile")){var a=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0,h=document.documentElement.scrollHeight||0,L={$page_height:Math.max(a,h)||0};e.properties=no._.extend(e.properties||{},L)}}catch(H){Hs("\u9875\u9762\u9AD8\u5EA6\u83B7\u53D6\u5F02\u5E38\u3002")}return Th.call(no.kit,e)}function Fe(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Xe(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Xe(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function At(e,a,h){return Fe(e,a,h),e.plugin_version=PA,e}function Jt(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Rt(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Rt(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function fn(e,a,h){return Jt(e,a,h),e.plugin_version=HA,e}function xn(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Kn(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Kn(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function $n(e,a,h){return xn(e,a,h),e.plugin_version=UA,e}function Vn(){Ku=!0}function qn(){Ku=!1}function bi(){return Ku}function Sn(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return ci(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function ci(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function ki(e,a,h){return Sn(e,a,h),e.plugin_version=jA,e}function Oi(e){var a=e,h="";h=Ti.para.debug_mode_url.indexOf("?")!==-1?Ti.para.debug_mode_url+"&"+Ti.kit.encodeTrackData(e):Ti.para.debug_mode_url+"?"+Ti.kit.encodeTrackData(e),io.ajax({url:h,type:"GET",cors:!0,header:{"Dry-Run":String(Ti.para.debug_mode_upload)},success:function(L){io.isEmptyObject(L)===!0?alert("debug\u6570\u636E\u53D1\u9001\u6210\u529F"+a):alert("debug\u5931\u8D25 \u9519\u8BEF\u539F\u56E0"+JSON.stringify(L))}})}function li(e,a){if(Ti.para.debug_mode===!0){var h=e.data;e.callback,Oi(JSON.stringify(h)),a.cancellationToken.stop()}return e}function Si(){Ti.para.debug_mode===!0&&(Ti.para.debug_mode_upload=Ti.para.debug_mode_upload||!1,io.isString(Ti.para.debug_mode_url)||(io.isString(Ti.para.server_url)?Ti.para.debug_mode_url=Ti.para.server_url.replace("sa.gif","debug"):io.isArray(Ti.para.server_url)&&io.isString(Ti.para.server_url[0])?Ti.para.debug_mode_url=Ti.para.server_url[0].replace("sa.gif","debug"):Ti.para.debug_mode=!1))}function Wi(){Ti.on("sdkInitPara",function(){Si()}),Ti.on("sdkAfterInitPara",function(){Ti.registerInterceptor("sendDataStage",{send:{priority:30,entry:li}})})}function Di(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return Vi(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function Vi(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Dr(e,a,h){return Di(e,a,h),e.plugin_version=zA,e}function Fa(e,a){if(ro.isObject(fr.para.jsapp)&&!fr.para.jsapp.isOnline&&typeof fr.para.jsapp.setData=="function"){var h=e;delete h.callback,h=JSON.stringify(h),fr.para.jsapp.setData(h),a.cancellationToken.stop()}return e}function Ka(){fr.on("sdkAfterInitAPI",function(){ro.isObject(fr.commonWays)&&(fr.commonWays.setOnlineState=Su),fr.registerInterceptor("sendDataStage",{send:{priority:40,entry:Fa}})})}function Su(e){if(e===!0&&ro.isObject(fr.para.jsapp)&&typeof fr.para.jsapp.getData=="function"){fr.para.jsapp.isOnline=!0;var a=fr.para.jsapp.getData();ro.isArray(a)&&a.length>0&&ro.each(a,function(h){ro.isJSONString(h)&&fr.kit.sendData(JSON.parse(h))})}else fr.para.jsapp.isOnline=!1}function ty(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return ny(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function ny(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function iy(e,a,h){return ty(e,a,h),e.plugin_version=YA,e}function ry(e,a){return!hr.para.app_js_bridge&&hr.para.batch_send&&Na.localStorage.isSupport()&&localStorage.length=3||!H.on?be():void H.on(h,be)}}return e}function ly(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function uy(e,a,h){return sy(e,a,h),e.plugin_version=KA,e}function jf(e){var a=new Ha.BeaconSend(e);a.start()}function cy(e,a){var h=null,L=null;Ha.isObject(e.config)&&(h=e.config.send_type,L=Ha.optimizeServerUrl(e.config.server_url));var H=h==="beacon"||!h&&pa.para.send_type==="beacon";if(H&&Ha.isSupportBeaconSend()){var se=L||e.server_url;e.server_url=se,e.data=pa.kit.encodeTrackData(e.data),Ha.isArray(se)&&se.length?Ha.each(se,function(be){e.callback=null,e.server_url=be,jf(e)}):typeof se=="string"&&se!==""?jf(e):pa.log("\u5F53\u524D server_url \u4E3A\u7A7A\u6216\u4E0D\u6B63\u786E\uFF0C\u53EA\u5728\u63A7\u5236\u53F0\u6253\u5370\u65E5\u5FD7\uFF0Cnetwork \u4E2D\u4E0D\u4F1A\u53D1\u6570\u636E\uFF0C\u8BF7\u914D\u7F6E\u6B63\u786E\u7684 server_url\uFF01"),a.cancellationToken.stop()}return e}function dy(){pa.para.send_type!=="beacon"||Ha.isSupportBeaconSend()||(pa.para.send_type="image")}function fy(){pa.on("sdkInitPara",function(){dy()}),pa.on("sdkAfterInitPara",function(){pa.registerInterceptor("sendDataStage",{send:{priority:110,entry:cy}})})}function hy(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return py(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function py(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function gy(e,a,h){return hy(e,a,h),e.plugin_version=JA,e}function Wf(e){var a=new Oa.AjaxSend(e);a.start()}function my(e,a){var h=null,L=null;Oa.isObject(e.config)&&(h=e.config.send_type,L=Oa.optimizeServerUrl(e.config.server_url));var H=h==="ajax"||!h&&ga.para.send_type==="ajax";if(H&&Oa.isSupportCors()){var se=L||e.server_url;e.server_url=se,e.data=ga.kit.encodeTrackData(e.data),Oa.isArray(se)&&se.length?Oa.each(se,function(be){e.callback=null,e.server_url=be,Wf(e)}):typeof se=="string"&&se!==""?Wf(e):ga.log("\u5F53\u524D server_url \u4E3A\u7A7A\u6216\u4E0D\u6B63\u786E\uFF0C\u53EA\u5728\u63A7\u5236\u53F0\u6253\u5370\u65E5\u5FD7\uFF0Cnetwork \u4E2D\u4E0D\u4F1A\u53D1\u6570\u636E\uFF0C\u8BF7\u914D\u7F6E\u6B63\u786E\u7684 server_url\uFF01"),a.cancellationToken.stop()}return e}function yy(){ga.para.send_type!=="ajax"||Oa.isSupportCors()||(ga.para.send_type="image")}function Ay(){ga.on("sdkInitPara",function(){yy()}),ga.on("sdkAfterInitPara",function(){ga.registerInterceptor("sendDataStage",{send:{priority:120,entry:my}})})}function vy(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return xy(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function xy(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function Cy(e,a,h){return vy(e,a,h),e.plugin_version=ZA,e}function zf(e,a){var h=Vr.kit.encodeTrackData(a);return e.indexOf("?")!==-1?e+"&"+h:e+"?"+h}function qf(e){var a=new Io.ImageSend(e);a.start()}function by(e,a){var h=null;Io.isObject(e.config)&&(h=Io.optimizeServerUrl(e.config.server_url));var L=h||e.server_url,H=e.data;e.server_url=L,Io.isArray(L)&&L.length?Io.each(L,function(se){se&&(e.data=zf(se,H),e.callback=null,e.server_url=se,qf(e))}):typeof L=="string"&&L!==""?(e.data=zf(L,H),qf(e)):Vr.logger&&Vr.logger.msg("\u5F53\u524D server_url \u4E3A\u7A7A\u6216\u4E0D\u6B63\u786E\uFF0C\u53EA\u5728\u63A7\u5236\u53F0\u6253\u5370\u65E5\u5FD7\uFF0Cnetwork \u4E2D\u4E0D\u4F1A\u53D1\u6570\u636E\uFF0C\u8BF7\u914D\u7F6E\u6B63\u786E\u7684 server_url\uFF01").level("warn").log(),a.cancellationToken.stop()}function _y(){Vr.para.send_type!=="image"&&Vr.para.send_type!=="ajax"&&Vr.para.send_type!=="beacon"&&(Vr.para.send_type="image")}function Ey(){Vr.on("sdkInitPara",function(){_y()}),Vr.on("sdkAfterInitPara",function(){Vr.registerInterceptor("sendDataStage",{send:{priority:130,entry:by}})})}function Iy(e,a,h){if(a&&(e.plugin_name=a),h&&e.init){var L=e.init;e.init=function(H,se){function be(){L.call(e,H,se)}return wy(H,e,a),H.readyState&&H.readyState.state>=3||!H.on?be():void H.on(h,be)}}return e}function wy(e,a,h){function L(H,se){e.logger?e.logger.msg.apply(e.logger,se).module(h+""||"").level(H).log():e.log&&e.log.apply(e,se)}a.log=function(){L("log",arguments)},a.warn=function(){L("warn",arguments)},a.error=function(){L("error",arguments)}}function ky(e,a,h){return Iy(e,a,h),e.plugin_version=vl,e}function Sy(e){return Os===null?void Yf(e):void Os.push(e)}function Yf(e){try{if(e.level==="log"&&Vf()||e.level==="warn"&&By()||e.level==="error"&&Dy())return void Bu(e)}catch(a){}}function Vf(){return!!Du()||nr.para.show_log===!0||Kr.isObject(nr.para.show_log)&&nr.para.show_log.level==="log"}function By(){return!!Du()||Vf()||Kr.isObject(nr.para.show_log)&&nr.para.show_log.level==="warn"}function Dy(){return!!Du()||!Kr.isObject(nr.para.show_log)||nr.para.show_log.level!=="none"}function Bu(e){var a=e.content,h=Kr.isObject(a[0])?Kr.formatJsonString(a[0]):a[0],L=Ty(e);a[0]=L+(L.length>0?": ":"")+h}function Ty(e){var a="",h="",L=nr.para.show_log;return Kr.isObject(L)&&L.show_brand===!1||(a+=e.brand),Kr.isObject(L)&&L.show_level===!1||(a+=(a.length>0?"-":"")+e.level),a.length>0&&(a="["+a+"]"),Kr.isObject(L)&&L.show_module===!1||(h=e.module),a+h}function Ly(){Kr.sessionStorage.isSupport()&&sessionStorage.setItem(Gu,"true")}function Fy(){Kr.sessionStorage.isSupport()&&sessionStorage.removeItem(Gu)}function Du(){return Kr.sessionStorage.isSupport()&&sessionStorage.getItem(Gu)==="true"}var Ce={};(function(){function e(Me,st){function It(zt,ln){try{zt()}catch(Bt){ln&&ln()}}function Pt(zt){if(Pt[zt]!=null)return Pt[zt];var ln;if(zt=="bug-string-char-index")ln="a"[0]!="a";else if(zt=="json")ln=Pt("json-stringify")&&Pt("date-serialization")&&Pt("json-parse");else if(zt=="date-serialization"){if(ln=Pt("json-stringify")&&ma){var Bt=st.stringify;It(function(){ln=Bt(new zi(-864e13))=='"-271821-04-20T00:00:00.000Z"'&&Bt(new zi(864e13))=='"+275760-09-13T00:00:00.000Z"'&&Bt(new zi(-621987552e5))=='"-000001-01-01T00:00:00.000Z"'&&Bt(new zi(-1))=='"1969-12-31T23:59:59.999Z"'})}}else{var hn,Nt='{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';if(zt=="json-stringify"){var Bt=st.stringify,pn=typeof Bt=="function";pn&&((hn=function(){return 1}).toJSON=hn,It(function(){pn=Bt(0)==="0"&&Bt(new Rn)==="0"&&Bt(new Li)=='""'&&Bt(Gr)===sa&&Bt(sa)===sa&&Bt()===sa&&Bt(hn)==="1"&&Bt([hn])=="[1]"&&Bt([sa])=="[null]"&&Bt(null)=="null"&&Bt([sa,Gr,null])=="[null,null,null]"&&Bt({a:[hn,!0,!1,null,`\0\b +\f\r `]})==Nt&&Bt(null,hn)==="1"&&Bt([1,2],null,1)==`[ + 1, + 2 +]`},function(){pn=!1})),ln=pn}if(zt=="json-parse"){var Cn,an=st.parse;typeof an=="function"&&It(function(){an("0")!==0||an(!1)||(hn=an(Nt),Cn=hn.a.length==5&&hn.a[0]===1,Cn&&(It(function(){Cn=!an('" "')}),Cn&&It(function(){Cn=an("01")!==1}),Cn&&It(function(){Cn=an("1.")!==1})))},function(){Cn=!1}),ln=Cn}}return Pt[zt]=!!ln}function Qn(zt){return Zu(this)}Me||(Me=h.Object()),st||(st=h.Object());var Rn=Me.Number||h.Number,Li=Me.String||h.String,ar=Me.Object||h.Object,zi=Me.Date||h.Date,ba=Me.SyntaxError||h.SyntaxError,Bl=Me.TypeError||h.TypeError,i1=Me.Math||h.Math,Dl=Me.JSON||h.JSON;if(typeof Dl=="object"&&Dl)return st.stringify=Dl.stringify,st.parse=Dl.parse,st.runInContext=e,st;var sa,Wh=ar.prototype,Gr=Wh.toString,Tl=Wh.hasOwnProperty,ma=new zi(-0xc782b5b800cec);if(It(function(){ma=ma.getUTCFullYear()==-109252&&ma.getUTCMonth()===0&&ma.getUTCDate()===1&&ma.getUTCHours()==10&&ma.getUTCMinutes()==37&&ma.getUTCSeconds()==6&&ma.getUTCMilliseconds()==708}),Pt["bug-string-char-index"]=Pt["date-serialization"]=Pt.json=Pt["json-stringify"]=Pt["json-parse"]=null,!Pt("json")){var Ll="[object Function]",r1="[object Date]",zh="[object Number]",qh="[object String]",Ju="[object Array]",a1="[object Boolean]",Xu=Pt("bug-string-char-index"),ko=function(zt,ln){var Bt,hn,Nt,pn=0;(Bt=function(){this.valueOf=0}).prototype.valueOf=0,hn=new Bt;for(Nt in hn)Tl.call(hn,Nt)&&pn++;return Bt=hn=null,pn?ko=function(Cn,an){var _i,pr,Fi=Gr.call(Cn)==Ll;for(_i in Cn)Fi&&_i=="prototype"||!Tl.call(Cn,_i)||(pr=_i==="constructor")||an(_i);(pr||Tl.call(Cn,_i="constructor"))&&an(_i)}:(hn=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"],ko=function(Cn,an){var _i,pr,Fi=Gr.call(Cn)==Ll,$a=!Fi&&typeof Cn.constructor!="function"&&a[typeof Cn.hasOwnProperty]&&Cn.hasOwnProperty||Tl;for(_i in Cn)Fi&&_i=="prototype"||!$a.call(Cn,_i)||an(_i);for(pr=hn.length;_i=hn[--pr];)$a.call(Cn,_i)&&an(_i)}),ko(zt,ln)};if(!Pt("json-stringify")&&!Pt("date-serialization")){var o1={92:"\\\\",34:'\\"',8:"\\b",12:"\\f",10:"\\n",13:"\\r",9:"\\t"},s1="000000",_a=function(zt,ln){return(s1+(ln||0)).slice(-zt)},Zu=function(zt){var ln,Bt,hn,Nt,pn,Cn,an,_i,pr;if(ma)ln=function(vi){Bt=vi.getUTCFullYear(),hn=vi.getUTCMonth(),Nt=vi.getUTCDate(),Cn=vi.getUTCHours(),an=vi.getUTCMinutes(),_i=vi.getUTCSeconds(),pr=vi.getUTCMilliseconds()};else{var Fi=i1.floor,$a=[0,31,59,90,120,151,181,212,243,273,304,334],Ea=function(vi,Ia){return $a[Ia]+365*(vi-1970)+Fi((vi-1969+(Ia=+(Ia>1)))/4)-Fi((vi-1901+Ia)/100)+Fi((vi-1601+Ia)/400)};ln=function(vi){for(Nt=Fi(vi/864e5),Bt=Fi(Nt/365.2425)+1970-1;Ea(Bt+1,0)<=Nt;Bt++);for(hn=Fi((Nt-Ea(Bt,0))/30.42);Ea(Bt,hn+1)<=Nt;hn++);Nt=1+Nt-Ea(Bt,hn),pn=(vi%864e5+864e5)%864e5,Cn=Fi(pn/36e5)%24,an=Fi(pn/6e4)%60,_i=Fi(pn/1e3)%60,pr=pn%1e3}}return(Zu=function(vi){return vi>-1/0&&vi<1/0?(ln(vi),vi=(Bt<=0||Bt>=1e4?(Bt<0?"-":"+")+_a(6,Bt<0?-Bt:Bt):_a(4,Bt))+"-"+_a(2,hn+1)+"-"+_a(2,Nt)+"T"+_a(2,Cn)+":"+_a(2,an)+":"+_a(2,_i)+"."+_a(3,pr)+"Z",Bt=hn=Nt=Cn=an=_i=pr=null):vi=null,vi})(zt)};if(Pt("json-stringify")&&!Pt("date-serialization")){var l1=st.stringify;st.stringify=function(zt,ln,Bt){var hn=zi.prototype.toJSON;zi.prototype.toJSON=Qn;var Nt=l1(zt,ln,Bt);return zi.prototype.toJSON=hn,Nt}}else{var u1="\\u00",c1=function(zt){var ln=zt.charCodeAt(0),Bt=o1[ln];return Bt||u1+_a(2,ln.toString(16))},ec=/[\x00-\x1f\x22\x5c]/g,Yh=function(zt){return ec.lastIndex=0,'"'+(ec.test(zt)?zt.replace(ec,c1):zt)+'"'},tc=function(zt,ln,Bt,hn,Nt,pn,Cn){var an,_i,pr,Fi,$a,Ea,vi,Ia,ic;if(It(function(){an=ln[zt]}),typeof an=="object"&&an&&(an.getUTCFullYear&&Gr.call(an)==r1&&an.toJSON===zi.prototype.toJSON?an=Zu(an):typeof an.toJSON=="function"&&(an=an.toJSON(zt))),Bt&&(an=Bt.call(ln,zt,an)),an==sa)return an===sa?an:"null";switch(_i=typeof an,_i=="object"&&(pr=Gr.call(an)),pr||_i){case"boolean":case a1:return""+an;case"number":case zh:return an>-1/0&&an<1/0?""+an:"null";case"string":case qh:return Yh(""+an)}if(typeof an=="object"){for(vi=Cn.length;vi--;)if(Cn[vi]===an)throw Bl();if(Cn.push(an),Fi=[],Ia=pn,pn+=Nt,pr==Ju){for(Ea=0,vi=an.length;Ea0)for(Bt>10&&(Bt=10),hn="";hn.length=48&&Nt<=57||Nt>=97&&Nt<=102||Nt>=65&&Nt<=70||ir();zt+=d1("0x"+pn.slice(ln,In));break;default:ir()}else{if(Nt==34)break;for(Nt=pn.charCodeAt(In),ln=In;Nt>=32&&Nt!=92&&Nt!=34;)Nt=pn.charCodeAt(++In);zt+=pn.slice(ln,In)}if(pn.charCodeAt(In)==34)return In++,zt;ir();default:if(ln=In,Nt==45&&(hn=!0,Nt=pn.charCodeAt(++In)),Nt>=48&&Nt<=57){for(Nt==48&&(Nt=pn.charCodeAt(In+1),Nt>=48&&Nt<=57)&&ir(),hn=!1;In=48&&Nt<=57);In++);if(pn.charCodeAt(In)==46){for(Bt=++In;Bt57));Bt++);Bt==In&&ir(),In=Bt}if(Nt=pn.charCodeAt(In),Nt==101||Nt==69){for(Nt=pn.charCodeAt(++In),Nt!=43&&Nt!=45||In++,Bt=In;Bt57));Bt++);Bt==In&&ir(),In=Bt}return+pn.slice(ln,In)}hn&&ir();var an=pn.slice(In,In+4);if(an=="true")return In+=4,!0;if(an=="fals"&&pn.charCodeAt(In+4)==101)return In+=5,!1;if(an=="null")return In+=4,null;ir()}return"$"},nc=function(zt){var ln,Bt;if(zt=="$"&&ir(),typeof zt=="string"){if((Xu?zt.charAt(0):zt[0])=="@")return zt.slice(1);if(zt=="["){for(ln=[];zt=Ua(),zt!="]";)Bt?zt==","?(zt=Ua(),zt=="]"&&ir()):ir():Bt=!0,zt==","&&ir(),ln.push(nc(zt));return ln}if(zt=="{"){for(ln={};zt=Ua(),zt!="}";)Bt?zt==","?(zt=Ua(),zt=="}"&&ir()):ir():Bt=!0,zt!=","&&typeof zt=="string"&&(Xu?zt.charAt(0):zt[0])=="@"&&Ua()==":"||ir(),ln[zt.slice(1)]=nc(Ua());return ln}ir()}return zt},Vh=function(zt,ln,Bt){var hn=Kh(zt,ln,Bt);hn===sa?delete zt[ln]:zt[ln]=hn},Kh=function(zt,ln,Bt){var hn,Nt=zt[ln];if(typeof Nt=="object"&&Nt)if(Gr.call(Nt)==Ju)for(hn=Nt.length;hn--;)Vh(Gr,ko,Nt,hn,Bt);else ko(Nt,function(pn){Vh(Nt,pn,Bt)});return Bt.call(zt,ln,Nt)};st.parse=function(zt,ln){var Bt,hn;return In=0,Fl=""+zt,Bt=nc(Ua()),Ua()!="$"&&ir(),In=Fl=null,ln&&Gr.call(ln)==Ll?Kh((hn={},hn[""]=Bt,hn),"",ln):Bt}}}return st.runInContext=e,st}var a={function:!0,object:!0},h=a[typeof window]&&window||this,L=h.JSON,H=h.JSON3,se=!1,be=e(h,h.JSON3={noConflict:function(){return se||(se=!0,h.JSON=L,h.JSON3=H,L=H=null),be}});h.JSON?(h.JSON.parse=be.parse,h.JSON.stringify=be.stringify):h.JSON={parse:be.parse,stringify:be.stringify}}).call(window),function(e,a){a(e)}(window,function(e){if(e.atob)try{e.atob(" ")}catch(L){e.atob=function(H){var se=function(be){return H(String(be).replace(/[\t\n\f\r ]+/g,""))};return se.original=H,se}(e.atob)}else{var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;e.btoa=function(L){L=String(L);for(var H,se,be,Me,st="",It=0,Pt=L.length%3;It255||(be=L.charCodeAt(It++))>255||(Me=L.charCodeAt(It++))>255)return"";H=se<<16|be<<8|Me,st+=a.charAt(H>>18&63)+a.charAt(H>>12&63)+a.charAt(H>>6&63)+a.charAt(63&H)}return Pt?st.slice(0,Pt-3)+"===".substring(Pt):st},e.atob=function(L){if(L=String(L).replace(/[\t\n\f\r ]+/g,""),!h.test(L))return"";L+="==".slice(2-(3&L.length));for(var H,se,be,Me="",st=0;st>16&255):be===64?String.fromCharCode(H>>16&255,H>>8&255):String.fromCharCode(H>>16&255,H>>8&255,255&H);return Me}}});var Kf,tr={setup:function(e){Kf=e},log:function(){(Kf||console&&console.log||function(){}).apply(null,arguments)}},ii={get:function(e){return window.localStorage.getItem(e)},parse:function(e){var a;try{a=JSON.parse(ii.get(e))||null}catch(h){tr.log(h)}return a},set:function(e,a){try{window.localStorage.setItem(e,a)}catch(h){tr.log(h)}},remove:function(e){window.localStorage.removeItem(e)},isSupport:function(){var e=!0;try{var a="__local_store_support__",h="testIsSupportStorage";ii.set(a,h),ii.get(a)!==h&&(e=!1),ii.remove(a)}catch(L){e=!1}return e}},Gf=function(){function e(){return h=(9301*h+49297)%233280,h/233280}var a=new Date,h=a.getTime();return function(L){return Math.ceil(e()*L)}}();c.prototype.get=function(e,a,h,L){if(!e)throw new Error("key is must");a=a||1e4,h=h||1e3,L=L||function(){};var H=this.lockGetPrefix+e,se=ii.get(H),be=String(b());return se&&(se=C(se)||{randomNum:0,expireTime:0},se.expireTime>u())?L(null):(ii.set(H,JSON.stringify({randomNum:be,expireTime:u()+a})),void setTimeout(function(){se=C(ii.get(H))||{randomNum:0,expireTime:0},se&&se.randomNum===be?(L(ii.get(e)),ii.remove(e),ii.remove(H)):L(null)},h))},c.prototype.set=function(e,a,h,L,H){if(!e||!a)throw new Error("key and val is must");h=h||1e4,L=L||1e3,H=H||function(){};var se=this.lockSetPrefix+e,be=ii.get(se),Me=String(b());return be&&(be=C(be)||{randomNum:0,expireTime:0},be.expireTime>u())?H({status:"fail",reason:"This key is locked"}):(ii.set(se,JSON.stringify({randomNum:Me,expireTime:u()+h})),void setTimeout(function(){be=C(ii.get(se))||{randomNum:0,expireTime:0},be.randomNum===Me?ii.set(e,a)&&H({status:"success"}):H({status:"fail",reason:"This key is locked"})},L))},k.prototype.on=function(e,a){if(!e||!a)return!1;if(!T(a))throw new Error("listener must be a function");this._events[e]=this._events[e]||[];var h=typeof a=="object";return this._events[e].push(h?a:{listener:a,once:!1}),this},k.prototype.prepend=function(e,a){if(!e||!a)return!1;if(!T(a))throw new Error("listener must be a function");this._events[e]=this._events[e]||[];var h=typeof a=="object";return this._events[e].unshift(h?a:{listener:a,once:!1}),this},k.prototype.prependOnce=function(e,a){return this.prepend(e,{listener:a,once:!0})},k.prototype.once=function(e,a){return this.on(e,{listener:a,once:!0})},k.prototype.off=function(e,a){var h=this._events[e];if(!h)return!1;if(typeof a=="number")h.splice(a,1);else if(typeof a=="function")for(var L=0,H=h.length;L=4&&(st=L(st,Me),Me=[]);return Me.length>0&&(st=L(st,Me)),st.toString(16)};return function(){var L=String(screen.height*screen.width);L=L&&/\d{5,}/.test(L)?L.toString(16):String(31242*b()).replace(".","").slice(0,8);var H=e()+"-"+a()+"-"+h()+"-"+L+"-"+e();return H||(String(b())+String(b())+String(b())).slice(2,15)}}(),Jf=function(e){this.ele=e},Xf=function(e,a){for(var h=[];e;e=e.nextSibling)e.nodeType===1&&e!==a&&h.push(e);return h};Jf.prototype={addClass:function(e){var a=" "+this.ele.className+" ";return a.indexOf(" "+e+" ")===-1&&(this.ele.className=this.ele.className+(this.ele.className===""?"":" ")+e),this},removeClass:function(e){var a=" "+this.ele.className+" ";return a.indexOf(" "+e+" ")!==-1&&(this.ele.className=a.replace(" "+e+" "," ").slice(1,-1)),this},hasClass:function(e){var a=" "+this.ele.className+" ";return a.indexOf(" "+e+" ")!==-1},attr:function(e,a){return typeof e=="string"&&w(a)?this.ele.getAttribute(e):(typeof e=="string"&&(a=String(a),this.ele.setAttribute(e,a)),this)},offset:function(){var e=this.ele.getBoundingClientRect();if(e.width||e.height){var a=this.ele.ownerDocument,h=a.documentElement;return{top:e.top+window.pageYOffset-h.clientTop,left:e.left+window.pageXOffset-h.clientLeft}}return{top:0,left:0}},getSize:function(){if(!window.getComputedStyle)return{width:this.ele.offsetWidth,height:this.ele.offsetHeight};try{var e=this.ele.getBoundingClientRect();return{width:e.width,height:e.height}}catch(a){return{width:0,height:0}}},getStyle:function(e){return this.ele.currentStyle?this.ele.currentStyle[e]:this.ele.ownerDocument.defaultView.getComputedStyle(this.ele,null).getPropertyValue(e)},wrap:function(e){var a=document.createElement(e);return this.ele.parentNode.insertBefore(a,this.ele),a.appendChild(this.ele),z(a)},getCssStyle:function(e){var a=this.ele.style.getPropertyValue(e);if(a)return a;var h=null;if(typeof window.getMatchedCSSRules=="function"&&(h=window.getMatchedCSSRules(this.ele)),!h||!M(h))return null;for(var L=h.length-1;L>=0;L--){var H=h[L];if(a=H.style.getPropertyValue(e))return a}},sibling:function(e,a){for(;(e=e[a])&&e.nodeType!==1;);return e},next:function(){return this.sibling(this.ele,"nextSibling")},prev:function(){return this.sibling(this.ele,"previousSibling")},siblings:function(){return Xf((this.ele.parentNode||{}).firstChild,this.ele)},children:function(){return Xf(this.ele.firstChild)},parent:function(){var e=this.ele.parentNode;return e=e&&e.nodeType!==11?e:null,z(e)},previousElementSibling:function(){var e=this.ele;if("previousElementSibling"in document.documentElement)return z(e.previousElementSibling);for(;e=e.previousSibling;)if(e.nodeType===1)return z(e);return z(null)},getSameTypeSiblings:function(){for(var e=this.ele,a=e.parentNode,h=e.tagName.toLowerCase(),L=[],H=0;H{}};Ss.white_list={},Ss.white_list[location.host]=Q(location.href).hostname;var eh="utm_source utm_medium utm_campaign utm_content utm_term",vl="1.26.12",th="sensorsdata_domain_test",Bs={EMAIL:"$identity_email",MOBILE:"$identity_mobile",LOGIN:"$identity_login_id"},Or={get:function(e){return Ga.get(e)},set:function(e,a,h,L){var H="";if(L=w(L)?Yt.cross_subdomain:L){var se=I(location.href);se==="url\u89E3\u6790\u5931\u8D25"&&(se=""),H=se?"; domain="+se:""}return Ga.set(e,a,h,Yt.set_cookie_samesite,Yt.is_secure_cookie,H)},remove:function(e,a){return a=w(a)?Yt.cross_subdomain:a,Ga.remove(e,a)},isSupport:function(e,a){return e=e||"sajssdk_2015_cookie_access_test",a=a||"1",Ga.isSupport(e,a,0,null,Yt.is_secure_cookie)}};Or.getNewUser=W;var xl={data:{},get:function(e){var a=this.data[e];return a===void 0?null:a._expirationTimestamp_!==void 0?new Date().getTime()>a._expirationTimestamp_?null:a.value:a},set:function(e,a,h){if(h){var L,H=new Date;L=String(h).slice(-1)==="s"?H.getTime()+1e3*Number(String(h).slice(0,-1)):H.getTime()+24*h*60*60*1e3,a={value:a,_expirationTimestamp_:L}}this.data[e]=a},getNewUserFlagMemoryKey:function(e){return"sajssdk_2015_"+Yt.sdk_id+e}},Ds={checkIsAddSign:function(e){e.type==="track"&&(W()?e.properties.$is_first_day=!0:e.properties.$is_first_day=!1)},is_first_visit_time:!1,is_page_first_visited:!1,checkIsFirstTime:function(e){e.type==="track"&&e.event==="$pageview"&&(this.is_first_visit_time?(e.properties.$is_first_time=!0,this.is_first_visit_time=!1):e.properties.$is_first_time=!1)},setDeviceId:function(){},storeInitCheck:function(){if(Ce.is_first_visitor){var e=new Date,a={h:23-e.getHours(),m:59-e.getMinutes(),s:59-e.getSeconds()};Or.isSupport()?Or.set(U("new_user"),"1",3600*a.h+60*a.m+a.s+"s"):xl.set(xl.getNewUserFlagMemoryKey("new_user"),"1",3600*a.h+60*a.m+a.s+"s"),this.is_first_visit_time=!0,this.is_page_first_visited=!0}else W()||(this.checkIsAddSign=function(h){h.type==="track"&&(h.properties.$is_first_day=!1)}),this.checkIsFirstTime=function(h){h.type==="track"&&h.event==="$pageview"&&(h.properties.$is_first_time=!1)}}},Tu=function(){this._events=[],this.pendingEvents=[]};Tu.prototype={emit:function(e){var a=[].slice.call(arguments,1);K(this._events,function(h){h.type===e&&h.callback.apply(h.context,a)}),this.pendingEvents.push({type:e,data:a}),this.pendingEvents.length>20&&this.pendingEvents.shift()},on:function(e,a,h,L){s(a)&&(this._events.push({type:e,callback:a,context:h||this}),L=L!==!1,this.pendingEvents.length>0&&L&&K(this.pendingEvents,function(H){H.type===e&&a.apply(h,H.data)}))},tempAdd:function(e,a){if(a&&e)return this.emit(e,a)},isReady:function(){}};var Ts={data:{},id:function(){return this.data.id?this.data.id:(this.data.id=Ue(),this.data.id)},type:function(){return this.data.type?this.data.type:(this.data.type=ve(),this.data.type)}},Qa={distinct_id:function(){},jssdkDebug:function(){},_sendDebug:function(e){},apph5:function(e){var a="app_h5\u6253\u901A\u5931\u8D25-",h={1:a+"use_app_track\u4E3Afalse",2:a+"Android\u6216\u8005iOS\uFF0C\u6CA1\u6709\u66B4\u9732\u76F8\u5E94\u65B9\u6CD5",3.1:a+"Android\u6821\u9A8Cserver_url\u5931\u8D25",3.2:a+"iOS\u6821\u9A8Cserver_url\u5931\u8D25",4.1:a+"H5 \u6821\u9A8C iOS server_url \u5931\u8D25",4.2:a+"H5 \u6821\u9A8C Android server_url \u5931\u8D25"},L=e.output,H=e.step,se=e.data||"";L!=="all"&&L!=="console"||F(h[H]),(L==="all"||L==="code")&&A(Yt.is_debug)&&Yt.is_debug.apph5&&(se.type&&se.type.slice(0,7)==="profile"||(se.properties._jssdk_debug_info="apph5-"+String(H)))},defineMode:function(e){var a={1:{title:"\u5F53\u524D\u9875\u9762\u65E0\u6CD5\u8FDB\u884C\u53EF\u89C6\u5316\u5168\u57CB\u70B9",message:"App SDK \u4E0E Web JS SDK \u6CA1\u6709\u8FDB\u884C\u6253\u901A\uFF0C\u8BF7\u8054\u7CFB\u8D35\u65B9\u6280\u672F\u4EBA\u5458\u4FEE\u6B63 App SDK \u7684\u914D\u7F6E\uFF0C\u8BE6\u7EC6\u4FE1\u606F\u8BF7\u67E5\u770B\u6587\u6863\u3002",link_text:"",link_url:""},2:{title:"\u5F53\u524D\u9875\u9762\u65E0\u6CD5\u8FDB\u884C\u53EF\u89C6\u5316\u5168\u57CB\u70B9",message:"App SDK \u4E0E Web JS SDK \u6CA1\u6709\u8FDB\u884C\u6253\u901A\uFF0C\u8BF7\u8054\u7CFB\u8D35\u65B9\u6280\u672F\u4EBA\u5458\u4FEE\u6B63 Web JS SDK \u7684\u914D\u7F6E\uFF0C\u8BE6\u7EC6\u4FE1\u606F\u8BF7\u67E5\u770B\u6587\u6863\u3002",link_text:"",link_url:""},3:{title:"\u5F53\u524D\u9875\u9762\u65E0\u6CD5\u8FDB\u884C\u53EF\u89C6\u5316\u5168\u57CB\u70B9",message:"Web JS SDK \u6CA1\u6709\u5F00\u542F\u5168\u57CB\u70B9\u914D\u7F6E\uFF0C\u8BF7\u8054\u7CFB\u8D35\u65B9\u5DE5\u4F5C\u4EBA\u5458\u4FEE\u6B63 SDK \u7684\u914D\u7F6E\uFF0C\u8BE6\u7EC6\u4FE1\u606F\u8BF7\u67E5\u770B\u6587\u6863\u3002",link_text:"",link_url:""},4:{title:"\u5F53\u524D\u9875\u9762\u65E0\u6CD5\u8FDB\u884C\u53EF\u89C6\u5316\u5168\u57CB\u70B9",message:"Web JS SDK \u914D\u7F6E\u7684\u6570\u636E\u6821\u9A8C\u5730\u5740\u4E0E App SDK \u914D\u7F6E\u7684\u6570\u636E\u6821\u9A8C\u5730\u5740\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u8054\u7CFB\u8D35\u65B9\u5DE5\u4F5C\u4EBA\u5458\u4FEE\u6B63 SDK \u7684\u914D\u7F6E\uFF0C\u8BE6\u7EC6\u4FE1\u606F\u8BF7\u67E5\u770B\u6587\u6863\u3002",link_text:"",link_url:""}};return!(!e||!a[e])&&a[e]},protocol:{protocolIsSame:function(e,a){try{if(Q(e).protocol!==Q(a).protocol)return!1}catch(h){return n("\u4E0D\u652F\u6301 _.URL \u65B9\u6CD5"),!1}return!0},serverUrl:function(){D(Yt.server_url)&&Yt.server_url!==""&&!this.protocolIsSame(Yt.server_url,location.href)&&n(`SDK \u68C0\u6D4B\u5230\u60A8\u7684\u6570\u636E\u53D1\u9001\u5730\u5740\u548C\u5F53\u524D\u9875\u9762\u5730\u5740\u7684\u534F\u8BAE\u4E0D\u4E00\u81F4\uFF0C\u5EFA\u8BAE\u60A8\u4FEE\u6539\u6210\u4E00\u81F4\u7684\u534F\u8BAE\u3002 +\u56E0\u4E3A\uFF1A1\u3001https \u4E0B\u9762\u53D1\u9001 http \u7684\u56FE\u7247\u8BF7\u6C42\u4F1A\u5931\u8D25\u30022\u3001http \u9875\u9762\u4F7F\u7528 https + ajax \u65B9\u5F0F\u53D1\u6570\u636E\uFF0C\u5728 ie9 \u53CA\u4EE5\u4E0B\u4F1A\u4E22\u5931\u6570\u636E\u3002`)},ajax:function(e){return e!==Yt.server_url&&void(D(e)&&e!==""&&!this.protocolIsSame(e,location.href)&&n("SDK \u68C0\u6D4B\u5230\u60A8\u7684\u6570\u636E\u53D1\u9001\u5730\u5740\u548C\u5F53\u524D\u9875\u9762\u5730\u5740\u7684\u534F\u8BAE\u4E0D\u4E00\u81F4\uFF0C\u5EFA\u8BAE\u60A8\u4FEE\u6539\u6210\u4E00\u81F4\u7684\u534F\u8BAE\u3002\u56E0\u4E3A http \u9875\u9762\u4F7F\u7528 https + ajax \u65B9\u5F0F\u53D1\u6570\u636E\uFF0C\u5728 ie9 \u53CA\u4EE5\u4E0B\u4F1A\u4E22\u5931\u6570\u636E\u3002"))}}},gi={initPage:function(){var e=ze(),a=Te(),h=I(a);h||Qa.jssdkDebug("url_domain\u5F02\u5E38_"+a+"_"+h),this.pageProp={referrer:e,referrer_host:e?ee(e):"",url:a,url_host:ee(a,"url_host\u53D6\u503C\u5F02\u5E38"),url_domain:h}},pageProp:{},campaignParams:function(){return Ce.kit.getUtmData()},campaignParamsStandard:function(e,a){e=e||"",a=a||"";var h=gi.campaignParams(),L={},H={};return K(h,function(se,be,Me){(" "+eh+" ").indexOf(" "+be+" ")!==-1?L[e+be]=Me[be]:H[a+be]=Me[be]}),{$utms:L,otherUtms:H}},properties:function(){var e=window.innerHeight||document.documentElement.clientHeight||document.body&&document.body.clientHeight||0,a=window.innerWidth||document.documentElement.clientWidth||document.body&&document.body.clientWidth||0,h={$timezone_offset:new Date().getTimezoneOffset(),$screen_height:Number(screen.height)||0,$screen_width:Number(screen.width)||0,$viewport_height:e,$viewport_width:a,$lib:"js",$lib_version:vl};return h},currentProps:{},register:function(e){p(gi.currentProps,e)}},Ui={},Lu=new k;Ui.spa=Lu,Ui.sdk=new k,Ui.data=new k,Ui.initSystemEvent=function(){ot(function(e){Lu.emit("switch",e)})},Ui.EVENT_LIST={spaSwitch:["spa","switch"],sdkBeforeInit:["sdk","beforeInit"],sdkInitPara:["sdk","initPara"],sdkAfterInitPara:["sdk","afterInitPara"],sdkInitAPI:["sdk","initAPI"],sdkAfterInitAPI:["sdk","afterInitAPI"],sdkAfterInit:["sdk","afterInit"],sdkReady:["sdk","ready"],dataSendSuccess:["data","sendSuccess"],dataSendFail:["data","sendFail"]};var Fu=function(e){this.callback=e.callback,this.server_url=e.server_url,this.data=e.data,this.origin_data=e.origin_data};Fu.prototype.start=function(){var e=this,a=new Date;rn({url:this.server_url,type:"POST",data:e.data,credentials:!1,timeout:Yt.datasend_timeout,cors:!0,success:function(h,L){Ui.data.emit("sendSuccess",{status:String(L),resText:h,type:"ajax_single",timeout_config:Yt.datasend_timeout,request_timeout:new Date-a,data:e.origin_data}),e.end()},error:function(h,L){Ui.data.emit("sendFail",{status:String(L),resText:h,type:"ajax_single",timeout_config:Yt.datasend_timeout,request_timeout:new Date-a,data:e.origin_data}),e.end()}})},Fu.prototype.end=function(){if(this.callback){if(F("warning: sdk callback is deprecated."),!s(this.callback))return void F("error: sdk callback must be function.");this.callback()}};var nh="sawebjssdk-",Mu="tab-sawebjssdk-";Kt.prototype={batchInterval:function(){this.serverUrl===""&&this.getServerUrl(),this.hasTabStorage||(this.generateTabStorage(),this.hasTabStorage=!0);var e=this;e.timer=setTimeout(function(){e.updateExpireTime(),e.recycle(),e.send(),clearTimeout(e.timer),e.batchInterval()},Yt.batch_send.send_interval)},getServerUrl:function(){return D(Yt.server_url)&&Yt.server_url!==""||M(Yt.server_url)&&Yt.server_url.length?void(this.serverUrl=M(Yt.server_url)?Yt.server_url[0]:Yt.server_url):v("\u5F53\u524D server_url \u4E3A\u7A7A\u6216\u4E0D\u6B63\u786E\uFF0C\u53EA\u5728\u63A7\u5236\u53F0\u6253\u5370\u65E5\u5FD7\uFF0Cnetwork \u4E2D\u4E0D\u4F1A\u53D1\u6570\u636E\uFF0C\u8BF7\u914D\u7F6E\u6B63\u786E\u7684 server_url\uFF01")},send:function(){if(this.sendTimeStamp&&u()-this.sendTimeStamp{L.push(t.encode(JSON.stringify(be)))});const H=(be,Me)=>{h.remove(a),h.sendTimeStamp=0},se=(be,Me)=>{h.sendTimeStamp=0};Ce.para.imouRequest(L,H,se)},remove:function(e){var a=ii.get(this.tabKey);if(a){for(var h=(C(a)||this.generateTabStorageVal()).data,L=0;L-1&&h.splice(H,1),ii.remove(e[L])}h=_r(h),ii.set(this.tabKey,JSON.stringify(this.generateTabStorageVal(h)))}},add:function(e){var a=nh+String(b()),h=ii.get(this.tabKey);h===null?(this.tabKey=Mu+String(b()),h=this.generateTabStorageVal()):h=C(h)||this.generateTabStorageVal(),h.data.push(a),h.expireTime=u()+2*Yt.batch_send.send_interval,ii.set(this.tabKey,JSON.stringify(h)),Ce.store.saveObjectVal(a,e),e.type!=="track_signup"&&e.event!=="$pageview"||this.sendImmediately()},generateTabStorage:function(){this.tabKey=Mu+String(b()),ii.set(this.tabKey,JSON.stringify(this.generateTabStorageVal()))},generateTabStorageVal:function(e){return e=e||[],{data:e,expireTime:u()+2*Yt.batch_send.send_interval,serverUrl:this.serverUrl}},sendImmediately:function(){this.send()},recycle:function(){for(var e={},a=1e4,h="sajssdk-lock-get-",L=0;Lbe.expireTime&&this.serverUrl===be.serverUrl){var st=new c(h);st.get(H,a,1e3,function(Rn){if(Rn){ii.get(se.tabKey)===null&&se.generateTabStorage();var Li=C(Rn)||se.generateTabStorageVal(),ar=C(ii.get(se.tabKey))||se.generateTabStorageVal();ar.data=_r(ar.data.concat(Li.data)),ii.set(se.tabKey,JSON.stringify(ar))}})}}else if(H.indexOf(h)===0){var It=C(ii.get(H))||{expireTime:0};u()-It.expireTime>a&&ii.remove(H)}}for(var Pt=0;Pt0)for(a=0;aYt.max_id_length)},keyLength:function(e){return!(!D(e)||e.length>Yt.max_key_length)},stringLength:function(e){return!(!D(e)||e.length>Yt.max_string_length)},voidZero:function(e){return e!==void 0},reservedLoginId:function(e){return!(We(this.loginIDReservedNames,e)>-1)},reservedUnbind:function(e){return!(We(this.unbindReservedNames,e)>-1)},reservedBind:function(e){var a=mt._state.history_login_id;return!(a&&a.name&&a.name===e||We(this.bindReservedNames,e)>-1)}},$y={distinct_id:{rules:["string","emptyString","idLength"],onComplete:function(e,a,h){return!e&&(h==="emptyString"&&(a="Id"),s(Qi[h])&&Qi[h](a),h==="idLength")||e}},event:{rules:["string","emptyString","keyLength","regexTest"],onComplete:function(e,a,h){return e||(h==="emptyString"&&(a="eventName"),s(Qi[h])&&Qi[h](a)),!0}},propertyKey:{rules:["string","emptyString","keyLength","regexTest"],onComplete:function(e,a,h){return e||(h==="emptyString"&&(a="Property key"),s(Qi[h])&&Qi[h](a)),!0}},propertyValue:{rules:["voidZero"],onComplete:function(e,a,h){return e||(a="Property Value",s(Qi[h])&&Qi[h](a)),!0}},properties:function(e){return A(e)?K(e,function(a,h){$t({propertyKey:h});var L=function(H,se,be){return H||(se=h+"'s Value",s(Qi[be])&&Qi[be](se)),!0};$t({propertyValue:a},L)}):rh.voidZero(e)&&n("properties\u53EF\u4EE5\u6CA1\u6709\uFF0C\u4F46\u6709\u7684\u8BDD\u5FC5\u987B\u662F\u5BF9\u8C61"),!0},propertiesMust:function(e){return e!==void 0&&A(e)&&!ht(e)?this.properties.call(this,e):n("properties\u5FC5\u987B\u662F\u5BF9\u8C61"),!0},item_type:{rules:["string","emptyString","keyLength","regexTest"],onComplete:function(e,a,h){return e||(h==="emptyString"&&(a="item_type"),s(Qi[h])&&Qi[h](a)),!0}},item_id:{rules:["string","emptyString","stringLength"],onComplete:function(e,a,h){return e||(h==="emptyString"&&(a="item_id"),s(Qi[h])&&Qi[h](a)),!0}},loginIdKey:{rules:["string","emptyString","keyLength","regexTest","reservedLoginId"],onComplete:function(e,a,h){return!e&&(h==="emptyString"&&(a="login_id_key"),s(Qi[h])&&Qi[h](a),h==="keyLength")||e}},bindKey:{rules:["string","emptyString","keyLength","regexTest","reservedBind"],onComplete:function(e,a,h){return!e&&(h==="emptyString"&&(a="Key"),s(Qi[h])&&Qi[h](a),h==="keyLength")||e}},unbindKey:{rules:["string","emptyString","keyLength","regexTest","reservedUnbind"],onComplete:function(e,a,h){return!e&&(h==="emptyString"&&(a="Key"),s(Qi[h])&&Qi[h](a),h==="keyLength")||e}},bindValue:{rules:["string","emptyString","idLength"],onComplete:function(e,a,h){return!e&&(h==="emptyString"&&(a="Value"),s(Qi[h])&&Qi[h](a),h==="idLength")||e}},check:function(e,a,h){var L=this[e];if(s(L))return L.call(this,a);if(!L)return!1;for(var H=0;H"),h=f(a.pop());if(h.slice(0,3)!=="div")return!1}return!0},Ai.configIsMatchNew=function(e,a){if(D(e.$element_selector)&&D(a.element_selector)){if(a.element_field==="element_selector"&&a.function==="equal")return e.$element_selector===a.element_selector;if(a.element_field==="element_selector"&&a.function==="contain")return e.$element_selector.indexOf(a.element_selector)>-1}if(D(e.$element_path)&&D(a.element_path)){if(a.element_field==="element_path"&&a.function==="equal")return e.$element_path===a.element_path;if(a.element_field==="element_path"&&a.function==="contain")return e.$element_path.indexOf(a.element_path)>-1}return!1},Ai.configIsMatch=function(e,a){return(!a.limit_element_content||a.element_content===e.$element_content)&&(!a.limit_element_position||a.element_position===String(e.$element_position))&&(a.element_field&&a.function?Ai.configIsMatchNew(e,a):Ai.configIsMatchOldVersion(e,a))},Ai.configIsMatchOldVersion=function(e,a){if(!a.element_path)return!1;if(e.$element_position!==void 0){if(a.element_path!==e.$element_path)return!1}else if(Ai.isDiv({element_path:a.element_path})){if(e.$element_path.indexOf(a.element_path)<0)return!1}else if(a.element_path!==e.$element_path)return!1;return!0},Ai.filterConfig=function(e,a,h){var L=[];if(!h){var H=Ai.initUrl();if(!H)return[];h=H.page_url}return e.event==="$WebClick"&&K(a,function(se){A(se)&&(se.event_type==="webclick"||se.event_type==="appclick")&&A(se.event)&&se.event.url_host===h.host&&se.event.url_path===h.pathname&&Ai.configIsMatch(e.properties,se.event)&&L.push(se)}),L},Ai.getPropElInLi=function(e,a){if(!(e&&g(e)&&D(a))||e.tagName.toLowerCase()!=="li")return null;var h,L=Ce.heatmap.getDomSelector(e);if(L){h=L+a;var H=Ee(h);return H||null}return n("----custom---\u83B7\u53D6\u540C\u7EA7\u5C5E\u6027\u5143\u7D20\u5931\u8D25\uFF0Cselector\u4FE1\u606F\u5F02\u5E38",L,a),null},Ai.getProp=function(e,a){if(!A(e))return!1;if(!(D(e.name)&&e.name.length>0))return n("----vcustom----\u5C5E\u6027\u540D\u4E0D\u5408\u6CD5,\u5C5E\u6027\u629B\u5F03",e.name),!1;var h,L,H={};if(e.method==="content"){var se;if(D(e.element_selector)&&e.element_selector.length>0)se=Ee(e.element_selector);else{if(!a||!D(e.list_selector))return n("----vcustom----\u5C5E\u6027\u914D\u7F6E\u5F02\u5E38\uFF0C\u5C5E\u6027\u629B\u5F03",e.name),!1;var be=Ee(a.properties.$element_selector);if(!be)return n("----vcustom----\u70B9\u51FB\u5143\u7D20\u83B7\u53D6\u5F02\u5E38\uFF0C\u5C5E\u6027\u629B\u5F03",e.name),!1;var Me=Ce.heatmap.getClosestLi(be);se=Ai.getPropElInLi(Me,e.list_selector)}if(!se||!g(se))return n("----vcustom----\u5C5E\u6027\u5143\u7D20\u83B7\u53D6\u5931\u8D25\uFF0C\u5C5E\u6027\u629B\u5F03",e.name),!1;if(se.tagName.toLowerCase()==="input")h=se.value||"";else if(se.tagName.toLowerCase()==="select"){var st=se.selectedIndex;gn(st)&&g(se[st])&&(h=ut(se[st],"select"))}else h=ut(se,se.tagName.toLowerCase());if(e.regular){try{L=new RegExp(e.regular).exec(h)}catch(It){return n("----vcustom----\u6B63\u5219\u5904\u7406\u5931\u8D25\uFF0C\u5C5E\u6027\u629B\u5F03",e.name),!1}if(L===null)return n("----vcustom----\u5C5E\u6027\u89C4\u5219\u5904\u7406\uFF0C\u672A\u5339\u914D\u5230\u7ED3\u679C,\u5C5E\u6027\u629B\u5F03",e.name),!1;if(!M(L)||!D(L[0]))return n("----vcustom----\u6B63\u5219\u5904\u7406\u5F02\u5E38\uFF0C\u5C5E\u6027\u629B\u5F03",e.name,L),!1;h=L[0]}if(e.type==="STRING")H[e.name]=h;else if(e.type==="NUMBER"){if(h.length<1)return n("----vcustom----\u672A\u83B7\u53D6\u5230\u6570\u5B57\u5185\u5BB9\uFF0C\u5C5E\u6027\u629B\u5F03",e.name,h),!1;if(isNaN(Number(h)))return n("----vcustom----\u6570\u5B57\u7C7B\u578B\u5C5E\u6027\u8F6C\u6362\u5931\u8D25\uFF0C\u5C5E\u6027\u629B\u5F03",e.name,h),!1;H[e.name]=Number(h)}return H}return v("----vcustom----\u5C5E\u6027\u4E0D\u652F\u6301\u6B64\u83B7\u53D6\u65B9\u5F0F",e.name,e.method),!1},Ai.getAssignConfigs=function(e,a){var h=Ai.initUrl();if(!h||!h.page_url)return[];if(!A(a))return[];var L=[];return a.events=a.events||a.eventList,M(a.events)&&a.events.length>0?(K(a.events,function(H){A(H)&&A(H.event)&&H.event.url_host===h.page_url.host&&H.event.url_path===h.page_url.pathname&&e(H)&&L.push(H)}),L):[]};var jy={events:[],getAssignConfigs:Ai.getAssignConfigs,filterConfig:Ai.filterConfig,getProp:Ai.getProp,initUrl:Ai.initUrl,updateEvents:function(e){M(e)&&(this.events=e)},init:function(){this.initAppGetPropsBridge()},geth5Props:function(e){var a={},h=[],L=this;if(!this.events.length)return{};if(e.event==="$WebClick"){var H=this.filterConfig(e,this.events);if(!H.length)return{};K(H,function(se){A(se)&&(M(se.properties)&&se.properties.length>0&&K(se.properties,function(be){if(A(be))if(be.h5===!1)M(a.sensorsdata_app_visual_properties)||(a.sensorsdata_app_visual_properties=[]),a.sensorsdata_app_visual_properties.push(be);else{var Me=L.getProp(be,e);A(Me)&&(a=p(a,Me))}}),D(se.event_name)&&h.push(se.event_name))}),Ce.bridge.hasVisualModeBridge()&&(a.sensorsdata_web_visual_eventName=h)}return a.sensorsdata_app_visual_properties&&(a.sensorsdata_app_visual_properties=R(JSON.stringify(a.sensorsdata_app_visual_properties))),a},initAppGetPropsBridge:function(){var e=this,a=new Ce.SDKJSBridge("getJSVisualProperties");return a.onAppNotify(function(h){var L={};try{h=JSON.parse(B(h))}catch(Me){v("getJSVisualProperties data parse error!")}if(A(h)){var H=h.sensorsdata_js_visual_properties,se=e.initUrl();se&&(se=se.page_url,M(H)&&H.length>0&&K(H,function(Me){if(A(Me)&&Me.url_host===se.host&&Me.url_path===se.pathname&&Me.h5){var st=e.getProp(Me);A(st)&&(L=p(L,st))}}))}var be=Ce.bridge.bridge_info.platform;return be==="android"&&a.notifyApp({data:L},h.message_id),L}),a}},Pu={events:[],customProp:jy,getAssignConfigs:Ai.getAssignConfigs,initUrl:Ai.initUrl,init:function(){if(this.initUrl()){var e=this.getConfigFromApp();e&&this.updateConfigs(e),this.customProp.init(),this.initAppUpdateConfigBridge()}},initAppUpdateConfigBridge:function(){var e=this;return new Ce.SDKJSBridge("updateH5VisualConfig").onAppNotify(function(a){if(a){try{a=JSON.parse(B(a))}catch(h){return void v("updateH5VisualConfig result parse error\uFF01")}e.updateConfigs(a)}})},getConfigFromApp:function(){var e=new Ce.SDKJSBridge("sensorsdata_get_app_visual_config").notifyApp();if(e)try{e=JSON.parse(B(e))}catch(a){e=null,v("getAppVisualConfig result parse error\uFF01")}return e},updateConfigs:function(e){this.events=this.filterConfigs(e),this.customProp.updateEvents(this.events)},filterConfigs:function(e){return this.getAssignConfigs(function(a){return!(!A(a)||a.h5===!1)},e)}},bl={events:[],init:function(e){this.filterWebClickEvents(e)},filterWebClickEvents:function(e){this.events=Pa.getAssignConfigs(function(a){return!(!A(a)||a.event.unlimited_div!==!0||a.event_type!=="webclick")},e)},isTargetEle:function(e){var a=Ce.heatmap.getEleDetail(e);if(!A(a)||!D(a.$element_path))return!1;for(var h=0;h0)},e),this.events.length?this.configSwitch=!0:this.configSwitch=!1},getVtrackProps:function(e){var a={};return this.collectAble()?(e.event==="$WebClick"&&(a=this.clickCustomPropMaker(e,this.events)),a):{}},clickCustomPropMaker:function(e,a,h){var L=this;h=h||this.filterConfig(e,a,Pa.url_info.page_url);var H={};return h.length?(K(h,function(se){M(se.properties)&&se.properties.length>0&&K(se.properties,function(be){var Me=L.getProp(be,e);A(Me)&&p(H,Me)})}),H):{}},getProp:Ai.getProp,getPropElInLi:Ai.getPropElInLi,filterConfig:Ai.filterConfig},Pa={unlimitedDiv:bl,config:{},storageEnable:!0,storage_name:"webjssdkvtrackcollect",para:{session_time:18e5,timeout:5e3,update_interval:18e5},url_info:{},timer:null,update_time:null,customProp:ah,initUrl:function(){var e=Ai.initUrl();if(e){var a;try{a=new y(Ce.para.server_url),a._values.Path="/config/visualized/Web.conf",e.api_url=a.getUrl()}catch(h){return v("----vtrackcollect---API\u5730\u5740\u89E3\u6790\u5F02\u5E38",h),!1}this.url_info=e}return e},init:function(){if(!A(Ce.para.heatmap)||!Ce.para.heatmap.get_vtrack_config)return!1;if(ii.isSupport()||(this.storageEnable=!1),!this.initUrl())return v("----vtrackcustom----\u521D\u59CB\u5316\u5931\u8D25\uFF0Curl\u4FE1\u606F\u89E3\u6790\u5931\u8D25"),!1;if(this.storageEnable){var e=mt.readObjectVal(this.storage_name);if(A(e)&&A(e.data))if(this.serverUrlIsSame(e.serverUrl)){this.config=e.data,this.update_time=e.updateTime,this.updateConfig(e.data);var a=new Date().getTime(),h=a-this.update_time;if(gn(h)&&h>0&&h0&&h-1)return L;if(H==="area"&&se.tagName.toLowerCase()==="map"&&z(se).prev().tagName&&z(se).prev().tagName.toLowerCase()==="img")return z(se).prev();if(H==="div"&&Ce.para.heatmap.collect_tags.div&&h.isDivLevelValid(L)){var Me=Ce.para.heatmap&&Ce.para.heatmap.collect_tags&&Ce.para.heatmap.collect_tags.div&&Ce.para.heatmap.collect_tags.div.max_level||1;if(Me>1||h.isCollectableDiv(L))return L}if(h.isStyleTag(H)&&Ce.para.heatmap.collect_tags.div){var st=h.getCollectableParent(L);if(st&&h.isDivLevelValid(st))return st}var It=h.hasElement({event:a&&a.originalEvent||a,element:e},function(Pt){return h.isUnlimitedTag(Pt)});return It||null},getDivLevels:function(e,a){var h=qr.getElementPath(e,!0,a),L=h.split(" > "),H=0;return K(L,function(se){se==="div"&&H++}),H},isDivLevelValid:function(e){for(var a=Ce.para.heatmap&&Ce.para.heatmap.collect_tags&&Ce.para.heatmap.collect_tags.div&&Ce.para.heatmap.collect_tags.div.max_level||1,h=e.getElementsByTagName("div"),L=h.length-1;L>=0;L--)if(qr.getDivLevels(h[L],e)>a)return!1;return!0},getElementPath:function(e,a,h){for(var L=[];e.parentNode&&g(e);){if(!D(e.tagName))return"unknown";if(e.id&&!a&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(e.id)){L.unshift(e.tagName.toLowerCase()+"#"+e.id);break}if(h&&e===h){L.unshift(e.tagName.toLowerCase());break}if(e===document.body){L.unshift("body");break}L.unshift(e.tagName.toLowerCase()),e=e.parentNode}return L.join(" > ")},getClosestLi:function(e){var a=function(h,L){for(;h&&h!==document&&h.nodeType===1;h=h.parentNode)if(h.tagName&&D(h.tagName)&&h.tagName.toLowerCase()===L)return h;return null};return a(e,"li")},getElementPosition:function(e,a,h){function L(Qn){var Rn=Qn.parentNode;if(!Rn)return"";var Li=z(Qn).getSameTypeSiblings(),ar=Li.length;if(ar===1)return 0;for(var zi=0,ba=Qn;z(ba).previousElementSibling().ele;ba=z(ba).previousElementSibling().ele,zi++);return zi}var H=Ce.heatmap.getClosestLi(e);if(!H||!g(e)||!D(e.tagName))return null;var se=e.tagName.toLowerCase(),be=H.getElementsByTagName(se),Me=be.length,st=[];if(Me>1){for(var It=0;It1)return We(st,e)}return L(H)},setNotice:function(e){Ce.is_heatmap_render_mode=!0,Ce.para.heatmap||(Ce.errorMsg="\u60A8SDK\u6CA1\u6709\u914D\u7F6E\u5F00\u542F\u70B9\u51FB\u56FE\uFF0C\u53EF\u80FD\u6CA1\u6709\u6570\u636E\uFF01"),e&&e.slice(0,5)==="http:"&&location.protocol==="https:"&&(Ce.errorMsg="\u60A8\u7684\u5F53\u524D\u9875\u9762\u662Fhttps\u7684\u5730\u5740\uFF0C\u795E\u7B56\u5206\u6790\u73AF\u5883\u4E5F\u5FC5\u987B\u662Fhttps\uFF01"),Ce.para.heatmap_url||(Ce.para.heatmap_url=Pr()+"//static.sensorsdata.cn/sdk/"+Ce.lib_version+"/heatmap.min.js")},getDomIndex:function(e){if(!e.parentNode)return-1;for(var a=0,h=e.tagName,L=e.parentNode.children,H=0;H "):this.getDomSelector(e.parentNode,a,h)):(a.unshift("body"),a.join(" > "))},na:function(){var e=document.documentElement.scrollLeft||window.pageXOffset;return parseInt(isNaN(e)?0:e,10)},i:function(){var e=0;try{e=o.documentElement&&o.documentElement.scrollTop||m.pageYOffset,e=isNaN(e)?0:e}catch(a){e=0}return parseInt(e,10)},getBrowserWidth:function(){var e=window.innerWidth||document.body.clientWidth;return isNaN(e)?0:parseInt(e,10)},getBrowserHeight:function(){var e=window.innerHeight||document.body.clientHeight;return isNaN(e)?0:parseInt(e,10)},getScrollWidth:function(){var e=parseInt(document.body.scrollWidth,10);return isNaN(e)?0:e},getEleDetail:function(e){var a=this.getDomSelector(e),h=et({target:e});h.$element_selector=a||"",h.$element_path=Ce.heatmap.getElementPath(e,Ce.para.heatmap&&Ce.para.heatmap.element_selector==="not_use_id");var L=Ce.heatmap.getElementPosition(e,h.$element_path,Ce.para.heatmap&&Ce.para.heatmap.element_selector==="not_use_id");return gn(L)&&(h.$element_position=L),h},getPointerEventProp:function(e,a){function h(){var be=document.body.scrollLeft||document.documentElement.scrollLeft||0,Me=document.body.scrollTop||document.documentElement.scrollTop||0;return{scrollLeft:be,scrollTop:Me}}function L(be){if(document.documentElement.getBoundingClientRect){var Me=be.getBoundingClientRect();return{targetEleX:Me.left+h().scrollLeft||0,targetEleY:Me.top+h().scrollTop||0}}}function H(be){return Number(Number(be).toFixed(3))}function se(be){var Me=be.pageX||be.clientX+h().scrollLeft||be.offsetX+L(a).targetEleX||0,st=be.pageY||be.clientY+h().scrollTop||be.offsetY+L(a).targetEleY||0;return{$page_x:H(Me),$page_y:H(st)}}return e?se(e):{}},start:function(e,a,h,L,H){if(A(Ce.para.heatmap)&&s(Ce.para.heatmap.collect_element)&&!Ce.para.heatmap.collect_element(a))return!1;var se=qr.getBasicEleInfo(e,a,h,L,H);Et(se)},getBasicEleInfo:function(e,a,h,L,H){var se=A(L)?L:{},be=s(H)?H:s(L)?L:void 0,Me=this.getEleDetail(a);if(Ce.para.heatmap&&Ce.para.heatmap.custom_property){var st=Ce.para.heatmap.custom_property(a);A(st)&&(Me=p(Me,st))}return Me=p(Me,this.getPointerEventProp(e,a),se),{event:e,target:a,props:Me,tagName:h,callback:be}},hasElement:function(e,a){var h;if(e.event){var L=e.event;h=L.path||L._getPath&&L._getPath()}else e.element&&(h=z(e.element).getParents());if(h&&M(h)&&h.length>0){for(var H=0;H-1)&&(!a||Ce.para.heatmap&&Ce.para.heatmap.collect_tags&&Ce.para.heatmap.collect_tags.div?!!(A(Ce.para.heatmap)&&A(Ce.para.heatmap.collect_tags)&&A(Ce.para.heatmap.collect_tags.div)&&M(Ce.para.heatmap.collect_tags.div.ignore_tags)&&We(Ce.para.heatmap.collect_tags.div.ignore_tags,e)>-1):We(L,e)>-1)},isCollectableDiv:function(e,a){try{if(e.children.length===0)return!0;for(var h=0;h1||this.isStyleTag(L,a))||!this.isCollectableDiv(e.children[h],a))return!1}return!0}catch(se){v("isCollectableDiv:"+se)}return!1},getCollectableParent:function(e,a){try{var h=e.parentNode,L=h?h.tagName.toLowerCase():"";if(L==="body")return!1;var H=Ce.para&&Ce.para.heatmap&&Ce.para.heatmap.collect_tags&&Ce.para.heatmap.collect_tags.div&&Ce.para.heatmap.collect_tags.div.max_level;if(L&&L==="div"&&(H>1||this.isCollectableDiv(h,a)))return h;if(h&&this.isStyleTag(L,a))return this.getCollectableParent(h,a)}catch(se){v("getCollectableParent:"+se)}return!1},listenUrlChange:function(e){e(),Ce.ee.spa.on("switch",function(){e()})},initScrollmap:function(){if(!A(Ce.para.heatmap)||Ce.para.heatmap.scroll_notice_map!=="default")return!1;var e=!0;Ce.para.scrollmap&&s(Ce.para.scrollmap.collect_url)&&this.listenUrlChange(function(){e=!!Ce.para.scrollmap.collect_url()});var a=function(L){var H={};return H.timeout=L.timeout||1e3,H.func=L.func,H.hasInit=!1,H.inter=null,H.main=function(se,be){this.func(se,be),this.inter=null},H.go=function(se){var be={};this.inter||(be.$viewport_position=document.documentElement&&document.documentElement.scrollTop||window.pageYOffset||document.body.scrollTop||0,be.$viewport_position=Math.round(be.$viewport_position)||0,se?H.main(be,!0):this.inter=setTimeout(function(){H.main(be)},this.timeout))},H},h=a({timeout:1e3,func:function(L,H){var se=document.documentElement&&document.documentElement.scrollTop||window.pageYOffset||document.body.scrollTop||0,be=new Date,Me=be-this.current_time;(Me>Ce.para.heatmap.scroll_delay_time&&se-L.$viewport_position!==0||H)&&(L.$url=Te(),L.$title=document.title,L.$url_path=Re(),L.event_duration=Math.min(Ce.para.heatmap.scroll_event_duration,parseInt(Me)/1e3),L.event_duration=L.event_duration<0?0:L.event_duration,Er(L)),this.current_time=be}});h.current_time=new Date,fe(window,"scroll",function(){return!!e&&void h.go()}),fe(window,"beforeunload",function(){return!!e&&void h.go("notime")})},initHeatmap:function(){var e=this,a=!0;return!(!A(Ce.para.heatmap)||Ce.para.heatmap.clickmap!=="default")&&(s(Ce.para.heatmap.collect_url)&&this.listenUrlChange(function(){a=!!Ce.para.heatmap.collect_url()}),Ce.para.heatmap.collect_elements==="all"?Ce.para.heatmap.collect_elements="all":Ce.para.heatmap.collect_elements="interact",void(Ce.para.heatmap.collect_elements==="all"?fe(document,"click",function(h){if(!a)return!1;var L=h||window.event;if(!L)return!1;var H=L.target||L.srcElement;if(typeof H!="object"||typeof H.tagName!="string")return!1;var se=H.tagName.toLowerCase();if(se==="body"||se==="html"||!H||!H.parentNode||!H.parentNode.children)return!1;var be=D(H.parentNode.tagName)?H.parentNode.tagName.toLowerCase():"unknown";be==="a"||be==="button"?e.start(L,H.parentNode,be):e.start(L,H,se)}):fe(document,"click",function(h){if(!a)return!1;var L=h||window.event;if(!L)return!1;var H=L.target||L.srcElement,se=Ce.heatmap.getTargetElement(H,h);return!(!g(se)&&!D(H.tagName))&&void(g(se)&&D(se.tagName)?e.start(L,se,se.tagName.toLowerCase()):g(H)&&H.tagName.toLowerCase()==="div"&&A(Ce.para.heatmap)&&Ce.para.heatmap.get_vtrack_config&&bl.events.length>0&&bl.isTargetEle(H)&&e.start(L,H,H.tagName.toLowerCase(),{$lib_method:"vtrack"}))})))}},_l={autoTrackIsUsed:!1,isReady:function(e){return s(e)?void e():void Ce.log("error: isReady callback must be function")},getUtm:function(){return gi.campaignParams()},getStayTime:function(){return(new Date-Ce._t)/1e3},setProfileLocal:function(e){if(!ii.isSupport())return Ce.setProfile(e),!1;if(!A(e)||ht(e))return!1;var a=mt.readObjectVal("sensorsdata_2015_jssdk_profile"),h=!1;if(A(a)&&!ht(a)){for(var L in e)!(L in a&&a[L]!==e[L])&&L in a||(a[L]=e[L],h=!0);h&&(mt.saveObjectVal("sensorsdata_2015_jssdk_profile",a),Ce.setProfile(e))}else mt.saveObjectVal("sensorsdata_2015_jssdk_profile",e),Ce.setProfile(e)},setInitReferrer:function(){var e=ze();Ce.setOnceProfile({_init_referrer:e,_init_referrer_host:gi.pageProp.referrer_host})},setSessionReferrer:function(){var e=ze();mt.setSessionPropsOnce({_session_referrer:e,_session_referrer_host:gi.pageProp.referrer_host})},setDefaultAttr:function(){gi.register({_current_url:location.href,_referrer:ze(),_referring_host:gi.pageProp.referrer_host})},trackHeatMap:function(e,a,h){if(typeof e=="object"&&e.tagName&&g(e.parentNode)){var L=e.tagName.toLowerCase(),H=e.parentNode.tagName.toLowerCase(),se=Ce.para.heatmap&&Ce.para.heatmap.track_attr?Ce.para.heatmap.track_attr:["data-sensors-click"];L==="button"||L==="a"||H==="a"||H==="button"||L==="input"||L==="textarea"||Ye(e,se)||qr.start(null,e,L,a,h)}},trackAllHeatMap:function(e,a,h){if(typeof e=="object"&&e.tagName){var L=e.tagName.toLowerCase();qr.start(null,e,L,a,h)}},autoTrackSinglePage:function(e,a){function h(se,be){Ce.track("$pageview",p({$referrer:L,$url:Te(),$url_path:Re(),$title:document.title},se,Ir()),be),L=Te()}var L;L=this.autoTrackIsUsed?gi.pageProp.url:gi.pageProp.referrer,e=A(e)?e:{};var H=!e.not_set_profile;e.not_set_profile&&delete e.not_set_profile,h(e,a),this.autoTrackSinglePage=h,ta(Ce.setOnceProfile,!1,H)},autoTrackWithoutProfile:function(e,a){e=A(e)?e:{},this.autoTrack(p(e,{not_set_profile:!0}),a)},autoTrack:function(e,a){e=A(e)?e:{};var h=Ir(),L=!e.not_set_profile;e.not_set_profile&&delete e.not_set_profile;var H=location.href;Ce.para.is_single_page&&Y(function(){var se=ze(H,!0);Ce.track("$pageview",p({$referrer:se,$url:Te(),$url_path:Re(),$title:document.title},h,e),a),H=Te()}),Ce.track("$pageview",p({$referrer:ze(null,!0),$url:Te(),$url_path:Re(),$title:document.title},h,e),a),ta(Ce.setOnceProfile,!0,L),this.autoTrackIsUsed=!0},getAnonymousID:function(){return ht(mt._state)?"SDK is not initialized.":mt.getAnonymousId()},setPlugin:function(e){return!!A(e)&&void K(e,function(a,h){s(a)&&(A(window.SensorsDataWebJSSDKPlugin)&&window.SensorsDataWebJSSDKPlugin[h]||A(Ce.modules)&&Ce.modules[h]?a(window.SensorsDataWebJSSDKPlugin[h]):n(h+"is not found,please check sensorsdata documents."))})},useModulePlugin:function(){Ce.use.apply(Ce,arguments)},useAppPlugin:function(){this.setPlugin.apply(this,arguments)}},zy={state:0,historyState:[],stateType:{1:"1-init\u672A\u5F00\u59CB",2:"2-init\u5F00\u59CB",3:"3-store\u5B8C\u6210"},getState:function(){return this.historyState.join(` +`)},setState:function(e){String(e)in this.stateType&&(this.state=e),this.historyState.push(this.stateType[e])}},qy=1,Yy={__proto__:null,setInitVar:ct,initPara:Pn,quick:jt,use:St,track:Gn,bind:Hn,unbind:fi,trackLink:mn,trackLinks:ti,setItem:Hi,deleteItem:ni,setProfile:sr,setOnceProfile:Zi,appendProfile:hi,incrementProfile:Jn,deleteProfile:Xn,unsetProfile:mi,identify:lr,resetAnonymousIdentity:qi,trackSignup:at,registerPage:Ft,clearAllRegister:it,clearPageRegister:wt,register:Un,registerOnce:Bn,registerSession:On,registerSessionOnce:Qt,login:jn,loginWithKey:wr,logout:ur,getPresetProperties:cn,readyState:zy,debug:Qa,on:Ut,log:F};tr.setup(F);var oh=p({},Oy,Uy),Vy={bridge_info:{touch_app_bridge:!1,verify_success:!1,platform:"",support_two_way_call:!1},is_verify_success:!1,initPara:function(){var e={is_send:Ce.para.use_app_track_is_send!==!1&&Ce.para.use_app_track!=="only",white_list:[],is_mui:Ce.para.use_app_track==="mui"};typeof Ce.para.app_js_bridge=="object"?Ce.para.app_js_bridge=p({},e,Ce.para.app_js_bridge):Ce.para.use_app_track!==!0&&Ce.para.app_js_bridge!==!0&&Ce.para.use_app_track!=="only"&&Ce.para.use_app_track!=="mui"||(Ce.para.app_js_bridge=p({},e)),Ce.para.app_js_bridge.is_send===!1&&n("\u8BBE\u7F6E\u4E86 is_send:false,\u5982\u679C\u6253\u901A\u5931\u8D25\uFF0C\u6570\u636E\u5C06\u88AB\u4E22\u5F03!")},app_js_bridge_v1:function(){function e(se){L=se,sn(L)&&(L=JSON.parse(L)),H&&(H(L),H=null,L=null)}function a(){typeof window.SensorsData_APP_JS_Bridge=="object"&&window.SensorsData_APP_JS_Bridge.sensorsdata_call_app&&(L=window.SensorsData_APP_JS_Bridge.sensorsdata_call_app(),sn(L)&&(L=JSON.parse(L)))}function h(){if(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream){var se=document.createElement("iframe");se.setAttribute("src","sensorsanalytics://getAppInfo"),document.documentElement.appendChild(se),se.parentNode.removeChild(se),se=null}}var L=null,H=null;window.sensorsdata_app_js_bridge_call_js=function(se){e(se)},Ce.getAppStatus=function(se){return h(),a(),se?void(L===null?H=se:(se(L),L=null)):L}},hasVisualModeBridge:function(){var e=window.SensorsData_App_Visual_Bridge,a="sensorsdata_visualized_mode";return A(e)&&e[a]&&(e[a]===!0||e[a]())},validateAppUrl:en};yn.prototype.call=function(e,a){var h=this,L=new Date().getTime().toString(16)+String(b()).replace(".","").slice(1,8);this.resultCbs[L]=h.resultCbs[L]||{result:null,callbacks:[]},this.timeoutCbs[L]=h.timeoutCbs[L]||{isTimeout:!1,callbacks:[]},e=e.data?e:{data:e},e.data.message_id=L;var H=p({callType:this.type},e);return a&&(this.timerId=setTimeout(function(){h.timeoutCbs[L].isTimeout=!0;for(var se in h.timeoutCbs[L].callbacks)h.timeoutCbs[L].callbacks[se].call(null),h.timeoutCbs[L].callbacks.splice(se,1)},a)),Zn(H),{onResult:function(se){return h.resultCbs[L].result?(se(h.resultCbs[L].result),this):(!h.timeoutCbs[L].isTimeout&&h.resultCbs[L].callbacks.push(se),this)},onTimeout:function(se){return h.timeoutCbs[L].isTimeout?(se(),this):(!h.resultCbs[L].result&&h.timeoutCbs[L].callbacks.push(se),this)}}},yn.prototype.onAppNotify=function(e){this.appCallJsCallback=e},yn.prototype.notifyApp=function(e,a){var h=p({callType:this.type},e);return a&&(h.message_id=a),Zn(h)},Mn.prototype={double:function(){},getAppData:function(){},hasAppBridge:function(){return Ce.bridge.bridge_info.support_two_way_call},init:function(){},jsCallApp:function(){},requestToApp:function(e){this.bridge.call(e,e.timeout.time).onResult(function(a){s(e.callback)&&e.callback(a)}).onTimeout(function(){s(e.timeout.callback)&&e.timeout.callback()})}};var Ra={isSeachHasKeyword:function(){return ge(location.href,"sa-request-id")!==""&&(typeof sessionStorage.getItem("sensors-visual-mode")=="string"&&sessionStorage.removeItem("sensors-visual-mode"),!0)},hasKeywordHandle:function(){var e=location.href,a=ge(e,"sa-request-id")||null,h=ge(e,"sa-request-type")||null,L=ge(e,"sa-request-url")||null;if(qr.setNotice(L),bo.isSupport())if(L!==null&&sessionStorage.setItem("sensors_heatmap_url",L),sessionStorage.setItem("sensors_heatmap_id",a),h!==null)h==="1"||h==="2"||h==="3"?sessionStorage.setItem("sensors_heatmap_type",h):h=null;else{var H=sessionStorage.getItem("sensors_heatmap_type");h=H!==null?H:null}this.isReady(a,h)},isReady:function(e,a,h){Ce.para.heatmap_url?Ln({success:function(){setTimeout(function(){typeof sa_jssdk_heatmap_render!="undefined"&&(sa_jssdk_heatmap_render(Ce,e,a,h),typeof console=="object"&&typeof console.log=="function"&&(Ce.heatmap_version&&Ce.heatmap_version===Ce.lib_version||n("heatmap.js\u4E0Esensorsdata.js\u7248\u672C\u53F7\u4E0D\u4E00\u81F4\uFF0C\u53EF\u80FD\u5B58\u5728\u98CE\u9669!")))},0)},error:function(){},type:"js",url:Ce.para.heatmap_url}):v("\u6CA1\u6709\u6307\u5B9Aheatmap_url\u7684\u8DEF\u5F84")},isStorageHasKeyword:function(){return bo.isSupport()&&typeof sessionStorage.getItem("sensors_heatmap_id")=="string"},storageHasKeywordHandle:function(){qr.setNotice(),Ra.isReady(sessionStorage.getItem("sensors_heatmap_id"),sessionStorage.getItem("sensors_heatmap_type"),location.href)},isWindowNameHasKeyword:function(){try{var e=JSON.parse(window.name),a=D(e["sa-request-page-url"])?S(e["sa-request-page-url"]):null;return e["sa-request-id"]&&D(e["sa-request-id"])&&a===location.href}catch(h){return!1}},windowNameHasKeywordHandle:function(){function e(se){var be=a[se];return D(be)?S(be):null}var a=JSON.parse(window.name),h=e("sa-request-id"),L=e("sa-request-type"),H=e("sa-request-url");qr.setNotice(H),bo.isSupport()&&(H!==null&&sessionStorage.setItem("sensors_heatmap_url",H),sessionStorage.setItem("sensors_heatmap_id",h),L!==null?L==="1"||L==="2"||L==="3"?sessionStorage.setItem("sensors_heatmap_type",L):L=null:L=sessionStorage.getItem("sensors_heatmap_type")!==null?sessionStorage.getItem("sensors_heatmap_type"):null),Ra.isReady(h,L)}},aa={isStorageHasKeyword:function(){return bo.isSupport()&&typeof sessionStorage.getItem("sensors-visual-mode")=="string"},isSearchHasKeyword:function(){return(wn("sa-visual-mode")===!0||wn("sa-visual-mode")==="true")&&(typeof sessionStorage.getItem("sensors_heatmap_id")=="string"&&sessionStorage.removeItem("sensors_heatmap_id"),!0)},loadVtrack:function(){Ln({success:function(){},error:function(){},type:"js",url:Ce.para.vtrack_url?Ce.para.vtrack_url:Pr()+"//static.sensorsdata.cn/sdk/"+Ce.lib_version+"/vtrack.min.js"})},messageListener:function(e){if(!e||!e.data||e.data.source!=="sa-fe")return!1;if(e.data.type==="v-track-mode"){if(e.data.data&&e.data.data.isVtrack)if(bo.isSupport()&&sessionStorage.setItem("sensors-visual-mode","true"),e.data.data.userURL&&location.href.match(/sa-visual-mode=true/)){var a=e.data.data.userURL;D(a)&&($(a,"http://")||$(a,"https://"))&&(window.location.href=encodeURI(a))}else aa.loadVtrack();window.removeEventListener("message",aa.messageListener,!1)}},removeMessageHandle:function(){window.removeEventListener&&window.removeEventListener("message",aa.messageListener,!1)},verifyVtrackMode:function(){window.addEventListener&&window.addEventListener("message",aa.messageListener,!1),aa.postMessage()},postMessage:function(){try{window.parent&&window.parent.postMessage&&window.parent.postMessage({source:"sa-web-sdk",type:"v-is-vtrack",data:{sdkversion:vl}},"*")}catch(e){v("\u6D4F\u89C8\u5668\u7248\u672C\u8FC7\u4F4E\uFF0C\u4E0D\u652F\u6301 postMessage API")}},notifyUser:function(){var e=function(a){return!(!a||!a.data||a.data.source!=="sa-fe")&&void(a.data.type==="v-track-mode"&&(a.data.data&&a.data.data.isVtrack&&alert("\u5F53\u524D\u7248\u672C\u4E0D\u652F\u6301\uFF0C\u8BF7\u5347\u7EA7\u90E8\u7F72\u795E\u7B56\u6570\u636E\u6CBB\u7406"),window.removeEventListener("message",e,!1)))};window.addEventListener&&window.addEventListener("message",e,!1),aa.postMessage()}},Ky=["setItem","deleteItem","getAppStatus","track","quick","register","registerPage","registerOnce","trackSignup","setProfile","setOnceProfile","appendProfile","incrementProfile","deleteProfile","unsetProfile","identify","resetAnonymousIdentity","login","logout","trackLink","clearAllRegister","clearPageRegister","bind","unbind","loginWithKey"],Gy={track:function(e,a,h){},quick:function(e,a,h,L){},register:function(e){},registerPage:function(e){},registerOnce:function(e){},clearAllRegister:function(e){},trackSignup:function(e,a,h,L){},setProfile:function(e,a){},setOnceProfile:function(e,a){},appendProfile:function(e,a){},incrementProfile:function(e,a){},deleteProfile:function(e){},unsetProfile:function(e,a){},identify:function(e,a){},resetAnonymousIdentity:function(e){},login:function(e,a){},logout:function(e){},trackLink:function(e,a,h){},deleteItem:function(e,a){},setItem:function(e,a,h){},getAppStatus:function(e){},clearPageRegister:function(e){}};he.prototype.process=function(e,a){if(!(e&&e in this.processDef))return void v("process ["+e+"] is not supported");var h=this.registeredInterceptors[e];if(h&&M(h)&&h.length>0)for(var L={current:0,total:h.length},H=new te(a,L,Ce),se=0;se=2)&&(ph&&(Tt(!0),P()),Ui.initSystemEvent(),Ce.setInitVar(),Ce.readyState.setState(2),Ce.initPara(e),Ui.sdk.emit("initPara"),Ui.sdk.emit("afterInitPara"),Ui.sdk.emit("initAPI"),Ui.sdk.emit("afterInitAPI"),Ce.detectMode(),nn(),Ui.sdk.emit("afterInit"),void Ui.sdk.emit("ready"))},ph?Tt(!1):(Tt(!0),P());var oa,El,Fs,Ii,Ms,Xa,Tr,_o,Za,Qs,Ki,eo,Yr,Lr,Fr,Uu,$u,Ps,nA="1.26.12",iA={init:function(e){var a=e._.isString,h=e._.rot13defs,L=e._.dfmapping,H="data:enc;",se="dfm-enc-";e.ee.sdk.on("afterInitPara",function(){e.kit.userEncrypt=function(be){return se+L(be)},e.kit.userDecrypt=function(be){return be.indexOf(H)===0?(be=be.substring(H.length),be=h(be)):be.indexOf(se)===0&&(be=be.substring(se.length),be=L(be)),be},e.kit.userDecryptIfNeeded=function(be){return!a(be)||be.indexOf(H)!==0&&be.indexOf(se)!==0||(be=e.kit.userDecrypt(be)),be}})},plugin_name:"UserEncryptDefault"},rA=Dn(iA),aA="1.26.12",oA={sd:null,init:function(e){if(this.sd||(this.sd=e,!this.sd||!this.sd._))return!1;var a=this.sd._.cookie.get("sensors_amp_id"),h=this.sd.store._state.distinct_id;if(a&&a.length>0){var L=a.slice(0,4)==="amp-";if(a!==h){if(!L)return!1;this.sd.store._state.first_id?(this.sd.identify(a,!0),this.sd.saEvent.send({original_id:a,distinct_id:h,type:"track_signup",event:"$SignUp",properties:{}},null),this.setAmpId(h)):this.sd.identify(a,!0)}}else this.setAmpId(h);this.addListener()},addListener:function(){var e=this;this.sd.events.on("changeDistinctId",function(a){e.setAmpId(a)}),this.sd.events.isReady()},setAmpId:function(e){this.sd._.cookie.set("sensors_amp_id",e)}},sA=Mi(oA,"Amp","sdkReady"),da=window.SensorsData_App_Visual_Bridge,Il=da&&da.sensorsdata_visualized_mode,gh=da&&da.sensorsdata_visualized_alert_info,mh=da&&da.sensorsdata_hover_web_nodes,yh={isVerify:function(){return Il&&(Il===!0||Il.call(da))},commands:{app_alert:dn,visualized_track:zn,page_info:zn,sensorsdata_get_app_visual_config:En}},lA="1.26.12",Ah={init:function(e){Ii=e,Ms=Ii&&Ii._,Xa=Ii&&Ii.log||console&&console.log||function(){},Ta()},handleCommand:zr},vh=Nr(Ah,"AndroidBridge","sdkAfterInitPara"),fa=window.SensorsData_App_Visual_Bridge,wl=fa&&fa.sensorsdata_visualized_mode,xh=fa&&fa.sensorsdata_visualized_alert_info,Ch=fa&&fa.sensorsdata_hover_web_nodes,ju={isVerify:function(){return wl&&(wl===!0||wl.call(fa))},commands:{app_alert:kr,visualized_track:yr,page_info:yr,sensorsdata_get_app_visual_config:vs}},uA="1.26.12",bh={init:function(e){Ki=e,eo=Ki&&Ki._,Yr=Ki&&Ki.log||console&&console.log||function(){},er()},handleCommand:ri},_h=va(bh,"AndroidObsoleteBridge","sdkAfterInitPara"),cA="1.26.12",Ur={event_list:[],latest_event_initial_time:null,max_save_time:2592e6,init:function(e,a){function h(){return Lr=Fr._,Uu=Fr.store,!!Lr.localStorage.isSupport()&&(Fr.para.max_string_length=1024,L.eventList.init(),L.addLatestChannelUrl(),void L.addIsChannelCallbackEvent())}if(Fr||!e)return!1;a=a||{},$u=a.cookie_name||"sensorsdata2015jssdkchannel",Fr=e;var L=this;h()},addIsChannelCallbackEvent:function(){Fr.registerPage({$is_channel_callback_event:function(e){if(Lr.isObject(e)&&e.event&&e.event!=="$WebClick"&&e.event!=="$pageview"&&e.event!=="$WebStay"&&e.event!=="$SignUp")return!Ur.eventList.hasEvent(e.event)&&(Ur.eventList.add(e.event),!0)}})},addLatestChannelUrl:function(){var e=this.getUrlDomain(),a=this.cookie.getChannel();if(e==="url\u89E3\u6790\u5931\u8D25")this.registerAndSave({_sa_channel_landing_url:"",_sa_channel_landing_url_error:"url\u7684domain\u89E3\u6790\u5931\u8D25"});else if(Lr.isReferralTraffic(document.referrer)){var h=Lr.getQueryParam(location.href,"sat_cf");Lr.isString(h)&&h.length>0?(this.registerAndSave({_sa_channel_landing_url:location.href}),Ur.channelLinkHandler()):this.registerAndSave({_sa_channel_landing_url:""})}else a?Fr.registerPage(a):Fr.registerPage({_sa_channel_landing_url:"",_sa_channel_landing_url_error:"\u53D6\u503C\u5F02\u5E38"})},registerAndSave:function(e){Fr.registerPage(e),this.cookie.saveChannel(e)},cookie:{getChannel:function(){var e=Fr.kit.userDecryptIfNeeded(Lr.cookie.get($u));return e=Lr.safeJSONParse(e),!(!Lr.isObject(e)||!e.prop)&&e.prop},saveChannel:function(e){var a={prop:e},h=JSON.stringify(a);Fr.para.encrypt_cookie&&(h=Fr.kit.userEncrypt(h)),Lr.cookie.set($u,h)}},channelLinkHandler:function(){this.eventList.reset(),Fr.track("$ChannelLinkReaching")},getUrlDomain:function(){var e=Lr.info.pageProp.url_domain;return e===""&&(e="url\u89E3\u6790\u5931\u8D25"),e},eventList:{init:function(){var e=this.get(),a=new Date().getTime();if(e&&Lr.isNumber(e.latest_event_initial_time)&&Lr.isArray(e.eventList)){var h=a-e.latest_event_initial_time;h>0&&h0&&(arguments.length===1&&Vu(arguments[0])?a=arguments[0]:arguments.length>=2&&Vu(arguments[1])&&(a=arguments[1])),!pA())return this.log("\u4E0D\u652F\u6301\u5F53\u524D\u7CFB\u7EDF\uFF0C\u76EE\u524D\u53EA\u652F\u6301Android\u548CiOS"),!1;if(Vu(a)&&this.sd._.isNumber(a.timeout)&&a.timeout>=2500&&(this.timeout=a.timeout),!this.sd.para.server_url)return this.log("\u795E\u7B56JS SDK\u914D\u7F6E\u9879server_url\u672A\u6B63\u786E\u914D\u7F6E"),!1;var h=mA(this.sd);this.apiURL=this.apiURL.replace("{origin}",h.origin).replace("{project}",h.project);var L=this.sd._.getQueryParam(window.location.href,"deeplink");if(!L)return this.log("\u5F53\u524D\u9875\u9762\u7F3A\u5C11deeplink\u53C2\u6570"),!1;L=window.decodeURIComponent(L);var H=gA(L);return H?(this.key=H[2],this.apiURL=this.apiURL.replace("{key}",window.encodeURIComponent(H[2])),this.sd._.ajax({url:this.apiURL,type:"GET",cors:!0,credentials:!1,success:function(se){return se.errorMsg?(Ns.log("API\u62A5\u9519\uFF1A"+se.errorMsg),!1):(Ns.data=se,Ns.log("API\u67E5\u8BE2\u6210\u529F\uFF0C\u6570\u636E\uFF1A"+JSON.stringify(se,null," ")),void(this.data.app_key&&(this.data.android_info&&this.data.android_info.url_schemes&&(this.data.android_info.url_schemes+="://sensorsdata/sd/"+this.data.app_key+"/"+this.key),this.data.ios_info&&this.data.ios_info.url_schemes&&(this.data.ios_info.url_schemes+="://sensorsdata/sd/"+this.data.app_key+"/"+this.key))))}.bind(this),error:function(){Ns.log("API\u67E5\u8BE2\u51FA\u9519")}}),void this.addListeners()):(this.log("\u5F53\u524D\u9875\u9762\u7684deeplink\u53C2\u6570\u65E0\u6548"),!1)},openDeepLink:function(){if(this.log("openDeeplink()"),!this.data)return this.log("\u6CA1\u6709Deep link\u6570\u636E!"),!1;if(Ih==="iOS"){this.log("\u5F53\u524D\u7CFB\u7EDF\u662FiOS");var e=this.sd&&this.sd._&&this.sd._.getIOSVersion()>=9&&this.data.ios_info.ios_wake_url?this.data.ios_info.ios_wake_url:this.data.ios_info.url_schemes;this.log("\u5524\u8D77APP\u7684\u5730\u5740\uFF1A"+e),AA(this,e,this.data.ios_info.download_url)}else this.log("\u5F53\u524D\u7CFB\u7EDF\u662F android"),yA(this,this.data.android_info.url_schemes,this.data.android_info.download_url)},log:function(e){this.sd&&this.sd.log(e)},addListeners:function(){var e=Eh().visibilityChange,a=this;e&&document.addEventListener(e,function(){clearTimeout(a.timer),a.log("visibilitychange, clear timeout:"+a.timer)},!1),window.addEventListener("pagehide",function(){a.log("page hide, clear timeout:"+a.timer),clearTimeout(a.timer)},!1)}},vA=Cu(Ns,"Deeplink","sdkReady"),xA="1.26.12",wh={init:function(e){Pi=e,Rs=Pi&&Pi._,zu=Pi&&Pi.log||console&&console.log||function(){},vo()},handleCommand:Iu},kh=gl(wh,"IOSBridge","sdkAfterInitPara"),CA="1.26.12",Sh={init:function(e){Gi=e,Eo=Gi&&Gi._,qu=Gi&&Gi.log||console&&console.log||function(){},ku()}},Bh=Cs(Sh,"IOSObsoleteBridge","sdkAfterInitPara"),bA="1.26.12",_A=5e3,EA=432e3;ui.prototype.init=function(e,a){if(e){if(this.sd=e,this._=this.sd._,a){this.option=a;var h=a.heartbeat_interval_time;h&&(this._.isNumber(h)||this._.isNumber(1*h))&&1*h>0&&(this.heartbeat_interval_time=1e3*h);var L=a.max_duration;L&&(this._.isNumber(L)||this._.isNumber(1*L))&&1*L>0&&(this.max_duration=L)}this.page_id=Number(String(this._.getRandom()).slice(2,5)+String(this._.getRandom()).slice(2,4)+String(new Date().getTime()).slice(-4)),this.addEventListener(),document.hidden===!0?this.page_show_status=!1:this.addHeartBeatInterval(),this.log("PageLeave\u521D\u59CB\u5316\u5B8C\u6BD5")}else this.log("\u795E\u7B56JS SDK\u672A\u6210\u529F\u5F15\u5165")},ui.prototype.log=function(e){this.sd&&this.sd.log(e)},ui.prototype.refreshPageEndTimer=function(){var e=this;this.timer&&(clearTimeout(this.timer),this.timer=null),this.timer=setTimeout(function(){e.page_hidden_status=!1},_A)},ui.prototype.hiddenStatusHandler=function(){clearTimeout(this.timer),this.timer=null,this.page_hidden_status=!1},ui.prototype.pageStartHandler=function(){this.start_time=+new Date,!document.hidden==1?this.page_show_status=!0:this.page_show_status=!1,this.url=location.href,this.title=document.title},ui.prototype.pageEndHandler=function(){if(this.page_hidden_status!==!0){var e=this.getPageLeaveProperties();this.page_show_status===!1&&delete e.event_duration,this.page_show_status=!1,this.page_hidden_status=!0,this.isCollectUrl(this.url)&&this.sd.track("$WebPageLeave",e),this.refreshPageEndTimer(),this.delHeartBeatData()}},ui.prototype.addEventListener=function(){this.addPageStartListener(),this.addPageSwitchListener(),this.addSinglePageListener(),this.addPageEndListener()},ui.prototype.addPageStartListener=function(){var e=this;"onpageshow"in window&&this._.addEvent(window,"pageshow",function(){e.pageStartHandler(),e.hiddenStatusHandler()})},ui.prototype.isCollectUrl=function(e){return typeof this.option.isCollectUrl!="function"||typeof e!="string"||e===""||this.option.isCollectUrl(e)},ui.prototype.addSinglePageListener=function(){var e=this;this.sd.ee&&this.sd.ee.spa.prepend("switch",function(a){a!==location.href&&(e.url=a,e.pageEndHandler(),e.stopHeartBeatInterval(),e.current_page_url=e.url,e.pageStartHandler(),e.hiddenStatusHandler(),e.addHeartBeatInterval())})},ui.prototype.addPageEndListener=function(){var e=this;this._.each(["pagehide","beforeunload","unload"],function(a){"on"+a in window&&e._.addEvent(window,a,function(){e.pageEndHandler(),e.stopHeartBeatInterval()})})},ui.prototype.addPageSwitchListener=function(){var e=this;this._.listenPageState({visible:function(){e.pageStartHandler(),e.hiddenStatusHandler(),e.addHeartBeatInterval()},hidden:function(){e.url=location.href,e.title=document.title,e.pageEndHandler(),e.stopHeartBeatInterval()}})},ui.prototype.addHeartBeatInterval=function(){this._.localStorage.isSupport()&&this.startHeartBeatInterval()},ui.prototype.startHeartBeatInterval=function(){var e=this;this.heartbeat_interval_timer&&this.stopHeartBeatInterval();var a=!0;this.isCollectUrl(this.url)||(a=!1),this.heartbeat_interval_timer=setInterval(function(){a&&e.saveHeartBeatData()},this.heartbeat_interval_time),a&&this.saveHeartBeatData("is_first_heartbeat"),this.reissueHeartBeatData()},ui.prototype.stopHeartBeatInterval=function(){clearInterval(this.heartbeat_interval_timer),this.heartbeat_interval_timer=null},ui.prototype.saveHeartBeatData=function(e){var a=this.getPageLeaveProperties(),h=new Date;a.$time=h,e==="is_first_heartbeat"&&(a.event_duration=3.14);var L=this.sd.kit.buildData({type:"track",event:"$WebPageLeave",properties:a});L.heartbeat_interval_time=this.heartbeat_interval_time,this.sd.store.saveObjectVal(this.storage_name+"-"+this.page_id,L)},ui.prototype.delHeartBeatData=function(e){this._.localStorage.isSupport()&&this._.localStorage.remove(e||this.storage_name+"-"+this.page_id)},ui.prototype.reissueHeartBeatData=function(){for(var e=window.localStorage.length,a=e-1;a>=0;a--){var h=window.localStorage.key(a);if(h&&h!==this.storage_name+"-"+this.page_id&&h.indexOf(this.storage_name+"-")===0){var L=this.sd.store.readObjectVal(h);this._.isObject(L)&&1*new Date-L.time>L.heartbeat_interval_time+5e3&&(delete L.heartbeat_interval_time,L._flush_time=new Date().getTime(),this.sd.kit.sendData(L),this.delHeartBeatData(h))}}},ui.prototype.getPageLeaveProperties=function(){var e=(+new Date-this.start_time)/1e3;(isNaN(e)||e<0||e>this.max_duration)&&(e=0),e=Number(e.toFixed(3));var a=this._.getReferrer(this.current_page_url),h=document.documentElement&&document.documentElement.scrollTop||window.pageYOffset||document.body&&document.body.scrollTop||0;h=Math.round(h)||0;var L={$title:this.title,$url:this._.getURL(this.url),$url_path:this._.getURLPath(this._.URL(this.url).pathname),$referrer_host:a?this._.getHostname(a):"",$referrer:a,$viewport_position:h};return e!==0&&(L.event_duration=e),L=this._.extend(L,this.option.custom_props)};var IA=new ui,wA=Hr(IA,"PageLeave","sdkReady"),kA="1.26.12",Dh=!1,SA={init:function(e,a){function h(be,Me){if(be.getEntries&&typeof be.getEntries=="function"){for(var st=be.getEntries(),It=null,Pt=0;Pt=0&&It<10737418240&&(Me.$page_resource_size=Number((It/1024).toFixed(3)))}}function L(be){var Me=0;if(be.timing){var st=be.timing;st.fetchStart!==0&&e._.isNumber(st.fetchStart)&&st.domContentLoadedEventEnd!==0&&e._.isNumber(st.domContentLoadedEventEnd)?Me=st.domContentLoadedEventEnd-st.fetchStart:e.log("performance \u6570\u636E\u83B7\u53D6\u5F02\u5E38")}return Me}function H(be){var Me=0;if(e._.isFunction(be.getEntriesByType)){var st=be.getEntriesByType("navigation")||[{}];Me=(st[0]||{}).domContentLoadedEventEnd||0}return Me}function se(){var be=0,Me=window.performance||window.webkitPerformance||window.msPerformance||window.mozPerformance,st={$url:e._.getURL(),$title:document.title,$url_path:e._.getURLPath(),$referrer:e._.getReferrer(null,!0)};if(Me?(be=H(Me)||L(Me),h(Me,st)):e.log("\u6D4F\u89C8\u5668\u672A\u652F\u6301 performance API."),be>0){var It=e._.isObject(a)&&a.max_duration||1800;be=Number((be/1e3).toFixed(3)),(!e._.isNumber(It)||It<=0||be<=It)&&(st.event_duration=be)}Dh||(e.track("$WebPageLoad",st),Dh=!0),window.removeEventListener?window.removeEventListener("load",se):window.detachEvent&&window.detachEvent("onload",se)}document.readyState=="complete"?se():window.addEventListener?window.addEventListener("load",se):window.attachEvent&&window.attachEvent("onload",se)}},BA=xa(SA,"PageLoad","sdkReady");La.prototype.init=function(e){if(e){this.sd=e,this._=e._,this.log=e.log;var a=this;e.registerInterceptor("buildDataStage",{extendProps:{priority:0,entry:function(h){return Es(h,a)}}})}else this.log("\u795E\u7B56JS SDK\u672A\u6210\u529F\u5F15\u5165")},La.prototype.register=function(e){return this.sd?void(this._.isObject(e)&&this._.isArray(e.events)&&e.events.length>0&&this._.isObject(e.properties)&&!this._.isEmptyObject(e.properties)?this.customRegister.push(e):this.log("RegisterProperties: register \u53C2\u6570\u9519\u8BEF")):void this.log("\u795E\u7B56JS SDK\u672A\u6210\u529F\u5F15\u5165")},La.prototype.hookRegister=function(e){return this.sd?void(this._.isFunction(e)?this.customRegister.push(e):this.log("RegisterProperties: hookRegister \u53C2\u6570\u9519\u8BEF")):void this.log("\u795E\u7B56JS SDK\u672A\u6210\u529F\u5F15\u5165")};var DA="1.26.12";La.prototype.plugin_name="RegisterProperties";var no,Th,TA=new La,LA=ws(TA),FA="1.26.12",Hs=window.console&&window.console.log||function(){},MA={init:function(e){return no=e,Hs=no&&no.log||Hs,e&&e.kit&&e.kit.buildData?(Th=no.kit.buildData,no.kit.buildData=He,void Hs("RegisterPropertyPageHeight \u63D2\u4EF6\u521D\u59CB\u5316\u5B8C\u6210")):void Hs("RegisterPropertyPageHeight \u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25,\u5F53\u524D\u4E3Bsdk\u4E0D\u652F\u6301 RegisterPropertyPageHeight \u63D2\u4EF6\uFF0C\u8BF7\u5347\u7EA7\u4E3Bsdk")}},QA=Be(MA,"RegisterPropertyPageHeight","sdkReady"),PA="1.26.12",Ca={};Ca.getPart=function(e){var a=!1,h=this.option.length;if(h){for(var L=0;L-1)return!0}return a},Ca.getPartHash=function(e){var a=this.option.length,h=!1;if(a){for(var L=0;L-1)return this.option[L].after_hash}return!!h},Ca.getCurrenId=function(){var e=this.store.getDistinctId()||"",a=this.store.getFirstId()||"";this._.urlSafeBase64&&this._.urlSafeBase64.encode?e=e?this._.urlSafeBase64.trim(this._.urlSafeBase64.encode(this._.base64Encode(e))):"":this._.rot13obfs&&(e=e?this._.rot13obfs(e):"");var h=a?"f"+e:"d"+e;return encodeURIComponent(h)},Ca.rewriteUrl=function(e,a){var h=this,L=/([^?#]+)(\?[^#]*)?(#.*)?/,H=L.exec(e),se="";if(H){var be,Me=H[1]||"",st=H[2]||"",It=H[3]||"",Pt="_sasdk="+this.getCurrenId(),Qn=function(ar){var zi=ar.split("&"),ba=[];return h._.each(zi,function(Bl){Bl.indexOf("_sasdk=")>-1?ba.push(Pt):ba.push(Bl)}),ba.join("&")};if(this.getPartHash(e)){be=It.indexOf("_sasdk");var Rn=It.indexOf("?");se=Rn>-1?be>-1?Me+st+"#"+It.substring(1,be)+Qn(It.substring(be,It.length)):Me+st+It+"&"+Pt:Me+st+"#"+It.substring(1)+"?"+Pt}else{be=st.indexOf("_sasdk");var Li=/^\?(\w)+/.test(st);se=Li?be>-1?Me+"?"+Qn(st.substring(1))+It:Me+st+"&"+Pt+It:Me+"?"+Pt+It}return a&&(a.href=se),se}},Ca.getUrlId=function(){var e=location.href.match(/_sasdk=([aufd][^\?\#\&\=]+)/);if(this._.isArray(e)&&e[1]){var a=decodeURIComponent(e[1]);return!a||a.substring(0,1)!=="f"&&a.substring(0,1)!=="d"||(this._.urlSafeBase64&&this._.urlSafeBase64.isUrlSafeBase64&&this._.urlSafeBase64.isUrlSafeBase64(a)?a=a.substring(0,1)+this._.base64Decode(this._.urlSafeBase64.decode(a.substring(1))):this._.rot13defs&&(a=a.substring(0,1)+this._.rot13defs(a.substring(1)))),a}return""},Ca.setRefferId=function(e){var a=this.store.getDistinctId(),h=this.getUrlId();if(h&&h!==""){var L=h.substring(0,1)==="a"||h.substring(0,1)==="d";h=h.substring(1),h!==a&&(L?(this.sd.identify(h,!0),this.store.getFirstId()&&this.sd.saEvent.send({original_id:h,distinct_id:a,type:"track_signup",event:"$SignUp",properties:{}},null)):this.store.getFirstId()&&!e.re_login||this.sd.login(h))}},Ca.addListen=function(){var e=this,a=function(h){var L,H,se=h.target,be=se.tagName.toLowerCase(),Me=se.parentNode;if(be==="a"&&se.href||Me&&Me.tagName&&Me.tagName.toLowerCase()==="a"&&Me.href){be==="a"&&se.href?(L=se.href,H=se):(L=Me.href,H=Me);var st=e._.URL(L),It=st.protocol;It!=="http:"&&It!=="https:"||e.getPart(L)&&e.rewriteUrl(L,H)}};e._.addEvent(document,"mousedown",a),window.PointerEvent&&"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>=0&&e._.addEvent(document,"pointerdown",a)},Ca.init=function(e,a){function h(L){for(var H=L.length,se=[],be=0;be0?(this.setRefferId(a),this.addListen(),this.option=a.linker,void(this.option=h(this.option))):void e.log("\u8BF7\u914D\u7F6E\u6253\u901A\u57DF\u540D\u53C2\u6570\uFF01")};var ha,Ti,io,fr,ro,hr,Na,pa,Ha,ga,Oa,Vr,Io,RA=At(Ca,"SiteLinker","sdkReady"),NA="utm_source utm_medium utm_campaign utm_content utm_term",HA="1.26.12",OA={init:function(e){function a(){var h=NA.split(" "),L="",H={};return ha._.isArray(ha.para.source_channel)&&ha.para.source_channel.length>0&&(h=h.concat(ha.para.source_channel),h=ha._.unique(h)),ha._.each(h,function(se){L=ha._.getQueryParam(location.href,se),L.length&&(H[se]=L)}),H}e&&!ha&&(ha=e,ha.registerInterceptor("businessStage",{getUtmData:{priority:0,entry:function(){return a()}}}))}},Lh=fn(OA,"Utm","sdkAfterInitPara"),UA="1.26.12",Ku=!1,kl=null,$A={init:function(e){kl=e,kl.disableSDK=Vn,kl.enableSDK=qn,kl.getDisabled=bi}},Fh=$n($A,"DisableSDK","sdkInitAPI"),jA="1.26.12",WA={plugin_name:"DebugSender",init:function(e){Ti=e,io=Ti._,Wi()}},Mh=ki(WA),zA="1.26.12",qA={plugin_name:"JsappSender",init:function(e){fr=e,ro=fr._,Ka()}},Qh=Dr(qA),YA="1.26.12",Sl=null,VA={plugin_name:"BatchSender",init:function(e){hr=e,Na=hr._,oy()}},Ph=iy(VA),KA="1.26.12",GA={plugin_name:"BeaconSender",init:function(e){pa=e,Ha=pa._,fy()}},Rh=uy(GA),JA="1.26.12",XA={plugin_name:"AjaxSender",init:function(e){ga=e,Oa=ga._,Ay()}},Nh=gy(XA),ZA="1.26.12",e1={plugin_name:"ImageSender",init:function(e){Vr=e,Io=Vr._,Ey()}},Hh=Cy(e1),nr=null,Kr=null,Os=[],t1={init:function(e){e&&(nr=e,Kr=nr._,nr.logger&&nr.logger.appendWriter(Sy),nr.on&&nr.on("sdkAfterInitPara",function(){for(var a=0;a{b(c)}).catch(c=>{C(c)})}}),window.onerror=(A,b,C,c,T)=>{A.toString().includes("Script error.")||vu.track({event_id:"o_imouplayer_error",message:A.toString(),source:b,lineno:C,colno:c,error:T,options:i})},window.onRequestError=(A,b={})=>{vu.track({event_id:"o_imouplayer_error",message:A,options:b})}})}getConfig(i){return Ar(this,null,function*(){var t;try{const s=yield Em({domain:i.domain});return(t=s==null?void 0:s.data)==null?void 0:t.result}catch(s){return console.log("error",s),{}}})}tracking({operate_info:i={},device_info:t={}}){!this.reportFlag||this.sensors.track($i(on(on({event_id:"o_imouplayer"},i),t),{player_sdk_version:Wd,js_sdk_version:sg,wasm_sdk_version:lg}))}}class Xm{constructor(){this.isMiniprogram=Gt.detectHostEnvironment().isMiniProgramWebView,this.platform=Gt.detectHostEnvironment().platform,this.fixApplied=!1,this.audioResumeHandlers=new Map}applyFix(i){!this.isMiniprogram||this.fixApplied||(console.log(`[MiniprogramFix] \u68C0\u6D4B\u5230\u5C0F\u7A0B\u5E8F\u73AF\u5883: ${this.platform}, \u5E94\u7528\u4FEE\u590D...`),this.fixAudioResume(i),this.fixApplied=!0)}fixAudioResume(i){if(!i||!i.playerId)return;const t=i.playerId,s=()=>{console.log(`[MiniprogramFix] \u9875\u9762\u91CD\u65B0\u663E\u793A\uFF0C\u6062\u590D\u97F3\u9891\u64AD\u653E: ${t}`),setTimeout(()=>{try{if(window.webAudioPlayer&&window.webAudioPlayer.resume(),i.player&&i.status.playing){const b=i.status.volume?1:0;i.player.setAudioVolume(i.playerId,b)}console.log(`[MiniprogramFix] \u97F3\u9891\u6062\u590D\u5B8C\u6210: ${t}`)}catch(b){console.error(`[MiniprogramFix] \u97F3\u9891\u6062\u590D\u5931\u8D25: ${t}`,b)}},300)};this.audioResumeHandlers.set(t,s);const u=()=>{!document.hidden&&i.status.playing&&s()},A=()=>{i.status.playing&&s()};document.addEventListener("visibilitychange",u),this.platform==="wechat"&&typeof wx!="undefined"&&wx.onAppRoute&&wx.onAppRoute(()=>{setTimeout(()=>{i.status.playing&&s()},500)}),window.addEventListener("pageshow",A),window.addEventListener("focus",A)}getEnvironmentInfo(){return{isMiniprogram:this.isMiniprogram,platform:this.platform,userAgent:navigator.userAgent,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,documentWidth:document.documentElement.clientWidth,documentHeight:document.documentElement.clientHeight}}}const Zm="zh",{log:b1,error:ey}=Gt.logsFunction(),Uf=["play","volume","talk","capture","videoRecord","ptz","digitalZoom","resolution","fullPageScreen","fullScreen","speed","recordChange","recordTimeLine","calendar"];class $f{static debugSaveLogFile(i){Hf.debugSaveLogFile(i)}constructor(i){const{id:t="",WasmLibPath:s="",width:u,height:A,deviceId:b,channelId:C="0",token:c="",code:T="",type:k=1,streamId:S=0,recordType:E="cloud",beginTime:r="",endTime:D="",controls:f=!0,handleError:y=()=>{},handleCallBack:Q=()=>{},autoplay:g=!0,muted:w=!1,domain:M="",controlsConfig:z=Uf,controlsSize:G="",controlsColor:Y="#ffffff",controlsActiveColor:N="#f18d00",title:K="",titleColor:p="#ffffff",encryptStream:x=!0,videoTalk:_=!1,log_js:B=!1,log_c:R=!1,streamType:X="",threadMode:J="multiThread"}=i;console.log("domain:",M,t);const ne=i.templateMode||"pc";f||(i.controlsConfig=[]),this.imouSensors=null;try{this.imouSensors=new Jm({domain:M})}catch(Z){}vt.changeLanguage(Zm),this.options=i,this.options.beginTime=r||An().startOf("day").format("YYYY-MM-DD HH:mm:ss"),this.options.endTime=D||An(this.options.beginTime).endOf("day").format("YYYY-MM-DD HH:mm:ss"),this.controls=f;const le={id:t,WasmLibPath:s||"",token:c,deviceId:b,channelId:C,code:T||"",width:u,height:A||(ne==="pc"?"100%":document.body.clientWidth*9/16),playing:!1,volume:!w,type:parseInt(k)||1,resolution:S||0,streamId:S||0,fullScreen:!1,fullPageScreen:!1,talk:!1,talkProcessing:!1,ptz:!1,digitalZoom:!1,message:"",recordType:E||"cloud",beginTime:this.options.beginTime,endTime:this.options.endTime,obj:this,videoRecord:!1,encryptMode:!0,muted:w,autoplay:g,recordSpeed:1,domain:M,controlsConfig:i.controlsConfig||Uf,controlsSize:G||(ne==="pc"?35:32),controlsColor:Y||"#ffffff",controlsActiveColor:N||"#f18d00",title:K||"",titleColor:p||"#ffffff",templateMode:ne||"pc",encryptStream:x,tid:"",videoTalk:_||!1,videoTalking:!1,answerVideoTalk:!1,callVideoTalk:!1,videoCapture:!1,audioCapture:!1,answerVideoTalkType:"waiting",streamType:X||"",landscape:!1};this.logInfo={stream_url:"",stream_type:"",talk_stream_url:"",talk_stream_type:"",stream_user_link_start_time:0,talk_user_link_start_time:0},this.playerId=`imou-player-${t}`,this.root=document.getElementById(t),this.root&&(this.root.style.backgroundColor="black",this.root.style.position="relative",this.root.style.width=`${u}px`,this.root.style.height=`${le.height}px`,ne==="pc"&&(this.root.style.overflow="hidden"),this.root.style.userSelect="none",document.body.style.minHeight="100vh"),this.status=wm(le),(()=>{const Z={"--imou-icon-color":Y,"--imou-icon-color-active":N,"--imou-icon-color-rgba43":Gt.hexToRGBA(N,.43),"--imou-icon-size":`${this.status.controlsSize}px`,"--imou-title-color":p};ne==="mobile"&&Object.assign(Z,{"--imou-ptz-arrow-color":"#B3B3B3","--imou-ptz-arrow-border1":"8px"}),Object.entries(Z).forEach(([re,ae])=>{document.documentElement.style.setProperty(re,ae)})})();const Ae=["webkitfullscreenchange","mozfullscreenchange","fullscreenchange","MSFullscreenChange"],q=()=>{!document.webkitIsFullScreen&&!document.mozFullScreen&&!document.msFullscreenElement&&(this.status.fullScreen=!1)};if(Ae.forEach(Z=>{document.addEventListener(Z,q,!1)}),this.resizeObserver=new ResizeObserver(Z=>{for(const re of Z)if(re.contentRect){const{width:ae,height:oe}=re.contentRect;document.documentElement.clientWidth!==ae&&(this.status.width=ae,this.status.height=oe),setTimeout(()=>{this.timeLine&&this.timeLine.changeProp("width",ae)},50)}}),this.resizeObserver&&this.resizeObserver.observe(this.root),this.createPlayer(),Gt.detectHostEnvironment().isMiniProgramWebView){const Z=new Xm;Z.applyFix(this),console.log("[imouPlayer] \u5C0F\u7A0B\u5E8F\u73AF\u5883\u4FE1\u606F:",Z.getEnvironmentInfo())}}createPlayer(){this.stop(),this.playerDom=document.createElement("div"),this.playerDom.id=this.playerId,this.playerDom.style="width: 100%;height: 100%;z-index: 99;position: relative;overflow: hidden",this.root.appendChild(this.playerDom);const i=Fm(this);this.root.appendChild(i),this.player=new Hf(this.playerId,this.status.templateMode,{playStart:()=>this.playStart(),playError:(u,A)=>this.playError(u,A),talkStart:(u,A)=>this.talkStart(u,A),talkError:(u,A)=>this.talkError(u,A),recordTimeStampUpdate:(u,A)=>this.recordTimeStampUpdate(u,A),getEncryptKey:u=>this.getEncryptKey(u),trackingLogs:(u,A)=>this.trackingLogs(u,A)},{sdklog:{log_js:this.options.log_js||!1,log_c:this.options.log_c||!1},WasmLibPath:this.status.WasmLibPath}),setTimeout(()=>{this.options.type==2&&this.handleControls()},0);const t=/^[0-9A-Za-z]+$/i,s=/^\d{1,3}$/;if(!t.test(this.options.deviceId)||!s.test(this.options.channelId)||!["1","2",1,2].includes(this.options.type)){this.status.message=vt.t("loading");return}this.status.autoplay&&this.play()}checkControlsElements(){return!!document.getElementById(`imou_player_icon_root_${this.playerId}`)}handleControls(){if(!this.checkControlsElements()){console.warn("Control elements not found in handleControls, retrying..."),setTimeout(()=>{this.handleControls()},100);return}if(this.mouseleaveFunc&&(this.playerDom.removeEventListener("mouseover",this.mouseleaveFunc),this.playerDom.removeEventListener("touchstart",this.mouseleaveFunc),this.playerDom.removeEventListener("click",this.mouseleaveFunc)),this.mouseleaveFunc=()=>{po(this.playerId,!1),this.playerDom.style.zIndex=99,this.buttonShowOrHiddenFlag&&clearTimeout(this.buttonShowOrHiddenFlag),this.buttonShowOrHiddenFlag=setTimeout(()=>{po(this.playerId),this.playerDom.style.zIndex=100},3e3)},this.controls){const i=this.status.templateMode==="mobile"?"touchstart":"mouseover";this.playerDom.addEventListener(i,this.mouseleaveFunc),setTimeout(()=>{document.getElementById(`imou_player_icon_root_${this.playerId}`)&&(this.buttonShowOrHiddenFlag=setTimeout(()=>{po(this.playerId),this.playerDom.style.zIndex=100},3e3))},100)}else po(this.playerId,!0),this.playerDom.style.zIndex=100}playStart(){this.options.handleCallBack&&this.options.handleCallBack({type:"playStart"}),this.status.message="",this.status.playing=!0,this.status.type===2&&(this.timeLine&&this.timeLine.start(),this.record&&this.record.startTimeLine(),this.status.recordSpeed!=1&&this.setSpeed(this.status.recordSpeed),setTimeout(()=>{this.handleControls()},100)),this.status.type===1&&setTimeout(()=>{this.handleControls()},100),setTimeout(()=>{this.status.volume&&this.volume(1)},1e3),this.status.volume||(this.status.volume=!1),this.status.templateMode==="mobile"&&this.player.touchZoom(this.playerId,this.root)}playError(i,t){console.log("playLog:",i,t);const s=String((t==null?void 0:t.errorCode)||"");let u=s,A="";switch(s){case"201":A=vt.t("errMsg.audioNotSupport");break;case"202":A=this.options.type==1?vt.t("errMsg.wsError"):vt.t("errMsg.wsCloseError");break;case"204":A=this.options.type==1?vt.t("errMsg.playError"):vt.t("errMsg.frequent");break;case"404":A=vt.t("errMsg.playError");break;case"500":A=vt.t("errMsg.deviceError");break;case"1001":A=vt.t("errMsg.codeError");break;case"1002":A=vt.t("errMsg.deviceError");break;case"1003":A=vt.t("errMsg.wsCloseError");break}A&&(po(this.playerId,!1),this.status.message=A,this.stop(!1),this.options.handleError&&this.options.handleError({errCode:u,errMsg:A}),this.trackingLogs("player_err_code",{player_err_code:JSON.stringify({type:"play_err_code",errCode:s,errMsg:A})}))}talkStart(i,t){this.options.handleCallBack&&this.options.handleCallBack({type:"talkStart"}),this.status.talkProcessing=!1}talkError(i,t){console.log("talkLog:",i,t);const s=String((t==null?void 0:t.errorCode)||"");let u=s,A="";switch(s){case"202":u="2006",A=vt.t("errMsg.talkError");break;case"207":u="2007",A=vt.t("errMsg.talkDeviceError");break;case"208":u="2008",A=vt.t("errMsg.talkBusy");break;case"601":case"602":case"603":case"604":case"605":u="2004",A=vt.t("errMsg.microphoneError");break;case"801":case"802":case"803":case"804":case"805":u="2005",A=vt.t("errMsg.cameraError");break;case"2009":A=vt.t("errMsg.talkClose");break}A&&(this.status.talkProcessing=!1,this.status.templateMode==="mobile"&&fu({msg:vt.t("talk_stop"),icon:"icon-imou_icon_live_hd_n1",type:"info",landscape:this.status.landscape}),this.stopTalk(),this.options.handleError&&this.options.handleError({errCode:u,errMsg:A}),this.trackingLogs("player_err_code",{player_err_code:JSON.stringify({type:"talk_err_code",errCode:s,errMsg:A})}))}recordTimeStampUpdate(i,t){const s=An(this.status.beginTime).startOf("day").unix(),A=An(t.utcTime).unix()-s;this.timestamp!=A&&(this.timestamp=A,this.status.encryptMode&&this.timeLine&&this.timeLine.changeProp("timestamp",this.timestamp))}getPlayUrl(){return Ar(this,null,function*(){const i={playUrl:"",encryptMode:0,playToken:"",playTokenKey:""};try{const{protocol:t}=location;if(t.indexOf("http")===-1)return ey("Please open on HTTP or HTTPS"),this.status.message="Please open on HTTP or HTTPS",i;const s=yield ym(this.status),{data:u,status:A}=s;if(A===200){const{data:b,code:C,msg:c=vt.t("errMsg.getStreamError")}=u.result;C==="0"?(i.playUrl=`${b.url}`,i.encryptMode=(b==null?void 0:b.isEncrypt)||!1,i.playToken=(b==null?void 0:b.playToken)||"",i.playTokenKey=b.playTokenKey||"",i.streamType=(b==null?void 0:b.streamType)||"rtsp",i.tid="",b.url.split("&").map(k=>k.split("=")).forEach(k=>{k[0]==="tid"&&(this.status.tid=k[1],i.tid=k[1])}),this.logInfo.stream_type=(b==null?void 0:b.streamType)||"rtsp",this.logInfo.stream_url=(b==null?void 0:b.url)||""):(this.status.message=c||vt.t("errMsg.getStreamError"),i.playUrl="",this.stop(!1))}else this.status.message=vt.t("errMsg.getUrlError")}catch(t){this.status.message=vt.t("errMsg.getUrlError")}return i})}play(i=!0){return Ar(this,null,function*(){this.logInfo.stream_user_link_start_time=new Date().getTime(),(this.status.message===""||this.status.message===vt.t("playEnd"))&&(this.status.message=vt.t("loading"));const t=yield this.getPlayUrl(),{playUrl:s="",encryptMode:u=!1,playToken:A="",playTokenKey:b="",streamType:C="rtsp",tid:c=""}=t;if(!s){this.status.answerVideoTalkType="stop";return}this.status.encryptMode=u,this.player.play(this.playerId,{streamURL:s,deviceId:this.options.deviceId,channelId:this.options.channelId,playSubtype:String(this.status.streamId),isLive:this.options.type==1,recordType:this.status.recordType,streamType:C,encryptMode:u,playToken:A,playTokenKey:b,code:this.status.code||"",volume:this.status.volume,startTime:An(this.status.beginTime).format("YYYY_MM_DD_HH_mm_ss"),endTime:An(this.status.endTime).format("YYYY_MM_DD_HH_mm_ss"),tid:c,threadMode:this.options.threadMode}),setTimeout(()=>{this.status.answerVideoTalkType="start"},100),this.options.type==2&&i&&(this.record=new Au({Obj:this,recordType:this.status.recordType,beginTime:this.status.beginTime}))})}getEncryptKey(i){return Ar(this,null,function*(){if(i!==this.status.tid)return"close";const t=yield Am(this.status),{data:s,status:u}=t,{code:A,msg:b=""}=s==null?void 0:s.result;return A==="0"||A==="OP1041"?s:(this.status.message=b,this.stop(!1),"close")})}pause(){this.status.playing=!1,this.player&&this.player.pause(this.playerId),this.stopTalk(),this.stopRecord()}start(){this.status.playing=!0,this.player&&this.player.start(this.playerId),this.options.type==2&&this.status.recordSpeed!=1&&this.setSpeed(this.status.recordSpeed)}stop(i=!0){if(this.player&&(this.status.playing=!1,this.status.answerVideoTalkType="waiting",this.stopRecord(),this.stopTalk(),this.buttonShowOrHiddenFlag&&(this.playerDom.style.zIndex=100,clearTimeout(this.buttonShowOrHiddenFlag)),this.record=null,this.player.close(this.playerId),this.timeLine&&this.timeLine.stop(),i)){for(this.landscapeResizeHandler&&(window.removeEventListener("resize",this.landscapeResizeHandler),this.landscapeResizeHandler=null),this.landscapeOrientationHandler&&(window.removeEventListener("orientationchange",this.landscapeOrientationHandler),this.landscapeOrientationHandler=null),this.resizeObserver.unobserve(this.root);this.root.firstChild;)this.root.removeChild(this.root.firstChild);this.timeLine=null}}destroy(){this.stop()}talk(){!this.status.playing||(this.options.type==2?this.status.message=vt.t("notSupport"):this.status.talk?this.stopTalk():this.startTalk())}startTalk(i="audio",t="call"){if(this.options.type==2)this.status.message=vt.t("notSupport");else{if(!this.status.playing)return;this.status.talkProcessing=!0;const s=i==="audio"?{checkMicrophone:!0,checkCamera:!1}:{checkMicrophone:!0,checkCamera:!0};Gt.getMediaDevices(s,()=>{u()},()=>{this.status.talk=!1,this.status.talkProcessing=!1});const u=()=>{this.options.handleStartTalk&&this.options.handleStartTalk(),Cm($i(on({},this.options),{type:i})).then(A=>{const{data:b,code:C,msg:c}=A.data.result;if(C==="OP1038"){console.warn(vt.t("talkWsError")),this.status.talkProcessing=!1,this.options.handleError&&this.options.handleError({errCode:"2002",errMsg:vt.t("talkWsError")});return}if(C==="DV1026"){console.warn(vt.t("errMsg.videoTalkNotSupport")),this.status.talkProcessing=!1,this.options.handleError&&this.options.handleError({errCode:"2003",errMsg:vt.t("errMsg.videoTalkNotSupport")});return}if(C!=="0"){console.warn(vt.t("talkUrlError")),this.status.talkProcessing=!1,this.options.handleError&&this.options.handleError({errCode:"2001",errMsg:vt.t("talkUrlError")});return}let T=b.url;this.volume(1),this.status.talk=!0;const k=t==="answer"?this.status.videoCapture:!0,S=t==="answer"?this.status.audioCapture:!0;this.player.talk(this.playerId,T,{type:i,video:k,audio:S,streamType:b==null?void 0:b.streamType}),this.status.templateMode==="mobile"&&fu({msg:vt.t("talk_start"),icon:"icon-imou_icon_live_hd_n1",landscape:this.status.landscape}),this.logInfo.talk_user_link_start_time=new Date().getTime(),this.logInfo.talk_stream_url=T,this.logInfo.talk_stream_type=b==null?void 0:b.streamType,i==="video"&&(this.status.videoTalking=!0,this.status.answerVideoTalk||(this.status.callVideoTalk=!0),t==="call"?(this.status.videoCapture=!0,this.status.audioCapture=!0):(this.status.videoCapture||this.stopVideoCapture(),this.status.audioCapture||this.stopAudioCapture()),this.status.ptz=this.status.ptz,setTimeout(()=>{this.status.talkProcessing&&(this.status.talkProcessing=!1)},5e3))}).catch(A=>{this.status.talkProcessing=!1})}}}stopTalk(){if(this.status.talk)console.log("stopTalk:",this.status.talk),this.status.talk=!1,this.trackingLogs(this.status.videoTalking?"videoTalk":"talk"),this.player.stopTalk(this.playerId),this.status.talkProcessing=!0,this.status.videoTalking&&(this.status.videoTalking=!1,this.status.videoCapture=!1,this.status.audioCapture=!1,this.status.answerVideoTalk=!1,this.status.callVideoTalk=!1);else if(this.status.answerVideoTalk)this.status.answerVideoTalk=!1,this.player.stopTalk(this.playerId,{closeCapture:!0}),this.stopAudioCapture(),this.stopVideoCapture(),bm({deviceId:this.options.deviceId,channelId:this.options.channelId,domain:this.options.domain,ref:"27000",content:{}});else try{this.player.stopTalk(this.playerId,{closeCapture:!0}),this.player.stopTalk(this.playerId)}catch(i){}}answerVideoTalk(){let i=null;i=setInterval(()=>{this.status.answerVideoTalkType==="start"?(i&&clearInterval(i),t()):this.status.answerVideoTalkType==="stop"&&i&&clearInterval(i)});const t=()=>{this.status.answerVideoTalk=!0,this.status.videoCapture=!0,this.status.audioCapture=!0,Gt.getMediaDevices({checkMicrophone:!0,checkCamera:!0},()=>{this.player&&this.player.openVideoTalkCapture(this.playerId);let s=null,u=30;s=setInterval(()=>{this.status.videoTalking?clearInterval(s):(u--,u<=0&&(clearInterval(s),this.stopTalk()))},1e3)},()=>{this.status.talk=!1,this.status.answerVideoTalk=!1,this.status.videoCapture=!1,this.status.audioCapture=!1})}}startVideoCapture(){this.player&&(this.player.startVideoCapture(this.playerId),this.status.videoCapture=!0)}stopVideoCapture(){this.player&&(this.player.stopVideoCapture(this.playerId),this.status.videoCapture=!1)}startAudioCapture(){this.player&&(this.player.startAudioCapture(this.playerId),this.status.audioCapture=!0)}stopAudioCapture(){this.player&&this.status.talk&&(this.player.stopAudioCapture(this.playerId),this.status.audioCapture=!1)}volume(i){this.status.talk||!this.status.playing||this.status.recordSpeed==1&&(Gt.detectHostEnvironment().isMiniProgramWebView&&setTimeout(()=>{window.webAudioPlayer&&window.webAudioPlayer.resume()},100),this.status.volume=i,this.player.setAudioVolume(this.playerId,i))}capture(){try{if(this.player){if(!this.status.playing)return;this.player.screenshot(this.playerId),console.log(vt.t("captureSuccess"))}}catch(i){console.log(vt.t("captureFail"))}}createTimer(){function i(T){return T<10?`0${T}`:`${T}`}function t(T){if(T<10)return"00:00:0"+T;if(T<59)return"00:00:"+T;if(T<3600)return A=Math.trunc((T/60).toFixed(2)),b=T%60,"00:"+i(A)+":"+i(b);if(T>=3600)return u=Math.trunc(T/3600),A=Math.trunc((T-u*3600)/60),b=T%60,i(u)+":"+i(A)+":"+i(b)}let s=document.createElement("div");s.setAttribute("class",`imou-videorecord-time imou-videorecord-time_${this.playerId}`),this.status.templateMode==="mobile"&&s.classList.add("imou-videorecord-time-mobile"),s.innerHTML="00:00:00";let u=0,A=0,b=0,C=0;function c(){setInterval(()=>{C++,s.innerHTML=t(C)},1e3)}c(),this.root.appendChild(s)}destoryTimer(){let i=document.getElementsByClassName(`imou-videorecord-time_${this.playerId}`);i[0]&&this.root.removeChild(i[0])}startRecord(){!this.status.playing||this.status.recordSpeed==1&&(this.player&&!this.status.videoRecord&&(this.createTimer(),this.status.videoRecord=!0,this.player.record(this.playerId)),this.status.templateMode==="mobile"&&fu({msg:vt.t("record_start"),icon:"icon-imou_icon_live_record_n",landscape:this.status.landscape}))}stopRecord(){this.player&&this.status.videoRecord&&(this.destoryTimer(),this.status.videoRecord=!1,this.player.record(this.playerId))}ptzControl(i){!this.status.playing||xm(this.status,i)}changeResolution(i){this.stop(!1),this.status.resolution=i,this.status.streamId=i,this.createPlayer()}fullPageScreen(){window.scroll(0,0),document.body.style.overflow="hidden",document.body.style.position="relative";const i=document.documentElement.clientWidth,t=document.documentElement.clientHeight;this.root.style.position="absolute",this.root.style.left="0",this.root.style.top="0",this.root.style.width=`${i}px`,this.root.style.height=`${t}px`,this.root.style.zIndex="999999",setTimeout(()=>{this.timeLine&&this.timeLine.changeProp("width",i)},100)}exitFullPageScreen(){this.root.style.position="relative",this.root.style.width=`${this.status.width}px`,this.root.style.height=`${this.status.height}px`,this.root.style.zIndex="",document.body.style.overflow="",document.body.style.position="",setTimeout(()=>{this.timeLine&&this.timeLine.changeProp("width",this.status.width)},0)}fullScreen(){const i=this.root;(i.requestFullScreen||i.webkitRequestFullScreen||i.mozRequestFullScreen||i.msRequestFullscreen).call(i),setTimeout(()=>{this.timeLine&&this.timeLine.changeProp("width",window.screen.width)},50)}exitFullScreen(){(document.exitFullScreen||document.webkitCancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen).call(document),setTimeout(()=>{this.timeLine&&this.timeLine.changeProp("width",this.status.fullPageScreen?document.documentElement.clientWidth:this.status.width)},100)}getTimestamp(){this.timeLine&&this.timeLine.changeProp("timestamp",this.timestamp)}changeRootWidthAndHeight(i,t){this.root.style.width=`${i}px`,this.root.style.height=`${t}px`,setTimeout(()=>{this.timeLine&&this.timeLine.changeProp("width",i)},100)}changeImouUrl(i,t){this.status.videoRecord=!1,this.destoryTimer(),this.stop(!1);let s=!0;switch(i){case"beginTime":this.status.beginTime=An.unix(An(this.status.beginTime).startOf("day").unix()+t).format("YYYY-MM-DD HH:mm:ss"),this.status.endTime=An(this.status.beginTime).endOf("day").format("YYYY-MM-DD HH:mm:ss"),s=!1;break;case"recordType":this.status.beginTime=An(this.status.beginTime).startOf("day").format("YYYY-MM-DD HH:mm:ss"),this.status.endTime=An(this.status.beginTime).endOf("day").format("YYYY-MM-DD HH:mm:ss"),this.timeLine&&this.timeLine.stop(!0),this.status[i]=t,this.record&&(this.record&&this.record.stop(),this.record=new Au({Obj:this,recordType:this.status.recordType,beginTime:this.status.beginTime}));break;case"beginTime x":this.status.beginTime=An(t).format("YYYY-MM-DD HH:mm:ss"),this.status.endTime=An(this.status.beginTime).endOf("day").format("YYYY-MM-DD HH:mm:ss"),this.timeLine&&this.timeLine.stop(!0),this.record&&(this.record&&this.record.stop(),this.record=new Au({Obj:this,recordType:this.status.recordType,beginTime:this.status.beginTime})),this.status.message=vt.t("changeDate",{day:t});break;case"resolution":this.status.resolution=t,this.status.streamId=t;default:this.status[i]=t}this.status.templateMode==="pc"&&(this.status.ptz=!1,this.status.digitalZoom=!1),this.status.talk=!1,this.status.playing=!1,this.status.answerVideoTalkType="waiting",i!=="beginTime"&&(this.status.volume=1,this.status.recordSpeed=1),(this.status.message===""||this.status.message===vt.t("playEnd"))&&(this.status.message=vt.t("loading")),this.play(s)}setSpeed(i){console.log(`\u8BBE\u7F6E${i}\u500D\u901F\u64AD\u653E`),this.volume(0),this.status.recordSpeed=i,this.player.setSpeed(this.playerId,i)}changeCode(i){i&&(this.status.code=i)}trackingLogs(i,t={}){let s=new Date().getTime();const u=new Date().getTime();let A=i,b=this.logInfo.stream_url,C=this.logInfo.stream_type;i==="stream"&&(s=this.logInfo.stream_user_link_start_time,this.status.type==1?A="real":this.status.recordType==="localRecord"?A="local_record":A="cloud_record"),(i==="talk"||i==="videoTalk")&&(s=this.logInfo.talk_user_link_start_time,b=this.logInfo.talk_stream_url,C=this.logInfo.talk_stream_type),this.imouSensors&&this.imouSensors.tracking({operate_info:$i(on({func_type:A,user_link_time:s,user_link_end_time:u,stream_type:C,stream_url:b},t),{templateMode:this.status.templateMode}),device_info:{kt:this.options.token,did:this.options.deviceId,cid:this.options.channelId}})}zoomIn(){this.player&&this.player.zoomIn(this.playerId,this.root)}zoomOut(){this.player&&this.player.zoomOut(this.playerId,this.root)}resetZoom(){this.player&&this.player.resetZoom(this.playerId)}enterLandscapeMode(){if(this.resetZoom(),this.root){this.originalStyles={position:this.root.style.position,width:this.root.style.width,height:this.root.style.height,top:this.root.style.top,left:this.root.style.left,zIndex:this.root.style.zIndex,transform:this.root.style.transform,transformOrigin:this.root.style.transformOrigin};const i=()=>{const t=window.innerHeight,s=window.innerWidth;this.root.style.width=`${t}px`,this.root.style.height=`${s}px`};i(),this.landscapeResizeHandler=i,window.addEventListener("resize",this.landscapeResizeHandler),this.landscapeOrientationHandler=()=>{setTimeout(i,100)},window.addEventListener("orientationchange",this.landscapeOrientationHandler),this.root.style.position="fixed",this.root.style.top="50%",this.root.style.left="50%",this.root.style.zIndex="1000",this.root.style.transform="translate(-50%, -50%) rotate(90deg)",this.root.style.transformOrigin="center center",this.root.style.transition="all 0.3s",this.root.classList.add("imou-player-landscape"),document.body.style.overflow="hidden",this.status.landscape=!0,this.player.touchZoom(this.playerId,this.root,{landscape:!0}),this.getTimestamp()}}exitLandscapeMode(){this.resetZoom(),this.root&&this.originalStyles&&(this.landscapeResizeHandler&&(window.removeEventListener("resize",this.landscapeResizeHandler),this.landscapeResizeHandler=null),this.landscapeOrientationHandler&&(window.removeEventListener("orientationchange",this.landscapeOrientationHandler),this.landscapeOrientationHandler=null),this.root.style.position=this.originalStyles.position,this.root.style.width=this.originalStyles.width,this.root.style.height=this.originalStyles.height,this.root.style.top=this.originalStyles.top,this.root.style.left=this.originalStyles.left,this.root.style.zIndex=this.originalStyles.zIndex,this.root.style.transform=this.originalStyles.transform,this.root.style.transformOrigin=this.originalStyles.transformOrigin,this.root.classList.remove("imou-player-landscape"),document.body.style.overflow="",this.status.landscape=!1,this.player.touchZoom(this.playerId,this.root,{landscape:!1}),this.getTimestamp())}}return window&&(window.imouPlayer=$f),$f}); diff --git a/cn-universal-web-ui/public/index.html b/cn-universal-web-ui/public/index.html new file mode 100644 index 0000000000000000000000000000000000000000..cb01d9aa978a2713d0127abb0698cfedf14f658e --- /dev/null +++ b/cn-universal-web-ui/public/index.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + IoT Universal + + + <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %> + + <% } %> + + + + + + +
          +
          +
          + +
          +
          +
          + +<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %> + +<% } %> + + + + + + + diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio-player.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio-player.js new file mode 100644 index 0000000000000000000000000000000000000000..58461b59fe338d88150368f771755d29a4402011 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio-player.js @@ -0,0 +1 @@ +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var Sr=n(e),Pr=n(r),Ar=n(t);function o(e,r){return e(r={exports:{}},r.exports),r.exports}var i=o(function(x){var y;(y=void 0!==(y=void 0!==y?y:{})?y:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var r,m,U,B,W,z,i,I=Object.assign({},y),L="./this.program",N="object"==typeof window,c="function"==typeof importScripts,H="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,e="",q=(H?(e=c?Sr.default.dirname(e)+"/":__dirname+"/",z=()=>{W||(B=Pr.default,W=Sr.default)},r=function(e,r){return z(),e=W.normalize(e),B.readFileSync(e,r?void 0:"utf8")},U=e=>{e=r(e,!0);return e=e.buffer?e:new Uint8Array(e)},m=(e,t,n)=>{z(),e=W.normalize(e),B.readFile(e,function(e,r){e?n(e):t(r.buffer)})},1{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},c&&(U=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),m=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}),y.print||console.log.bind(console)),a=y.printErr||console.warn.bind(console),V=(Object.assign(y,I),y.arguments&&y.arguments,y.thisProgram&&(L=y.thisProgram),y.quit&&y.quit,y.wasmBinary&&(i=y.wasmBinary),y.noExitRuntime,"object"!=typeof WebAssembly&&v("no native wasm support detected"),!1);function G(e,r){e||v(r)}var X,d,f,u,J,l,p,K,Z,Q,Y="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function s(e,r,t){for(var n=r+t,o=r;e[o]&&!(n<=o);)++o;if(16>10,56320|1023&a))):i+=String.fromCharCode((31&u)<<6|s)):i+=String.fromCharCode(u)}return i}function ee(e,r){return e?s(f,e,r):""}function re(e,r,t,n){if(!(0>6,r[t++]=128|63&a}else if(a<=65535){if(i<=t+2)break;r[t++]=224|a>>12,r[t++]=128|a>>6&63,r[t++]=128|63&a}else{if(i<=t+3)break;r[t++]=240|a>>18,r[t++]=128|a>>12&63,r[t++]=128|a>>6&63,r[t++]=128|63&a}}return r[t]=0,t-o}function te(e){for(var r=0,t=0;t>2]=e},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(e){p[this.ptr+8>>2]=e},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_refcount=function(e){l[this.ptr>>2]=e},this.set_caught=function(e){d[this.ptr+12>>0]=e=e?1:0},this.get_caught=function(){return 0!=d[this.ptr+12>>0]},this.set_rethrown=function(e){d[this.ptr+13>>0]=e=e?1:0},this.get_rethrown=function(){return 0!=d[this.ptr+13>>0]},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=l[this.ptr>>2];l[this.ptr>>2]=e+1},this.release_ref=function(){var e=l[this.ptr>>2];return l[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){p[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){if(_r(this.get_type()))return p[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}ue(h="decoder-pro-audio.wasm")||(I=h,h=y.locateFile?y.locateFile(I,e):e+I);var b={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;0<=n;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=b.isAbs(e),t="/"===e.substr(-1);return(e=(e=b.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r?e:".")&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var e=b.splitPath(e),r=e[0],e=e[1];return r||e?r+(e=e&&e.substr(0,e.length-1)):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=b.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return b.normalize(e.join("/"))},join2:(e,r)=>b.normalize(e+"/"+r)},E={resolve:function(){for(var e="",r=!1,t=arguments.length-1;-1<=t&&!r;t--){var n=0<=t?arguments[t]:k.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=b.isAbs(n)}return(r?"/":"")+b.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/")||"."},relative:(e,r)=>{function t(e){for(var r=0;r>>0),0!=t&&(r=Math.max(r,256)),t=e.contents,e.contents=new Uint8Array(r),0=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-o,n);if(8!!e),!1),n=k.root,o="/",i=0;i{for(var r,t;;){if(k.isRoot(e))return t=e.mount.mountpoint,r?"/"!==t[t.length-1]?t+"/"+r:t+r:t;r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%k.nameTable.length},hashAddNode:e=>{var r=k.hashName(e.parent.id,e.name);e.name_next=k.nameTable[r],k.nameTable[r]=e},hashRemoveNode:e=>{var r=k.hashName(e.parent.id,e.name);if(k.nameTable[r]===e)k.nameTable[r]=e.name_next;else for(var t=k.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=k.mayLookup(e);if(t)throw new k.ErrnoError(t,e);for(var t=k.hashName(e.id,r),n=k.nameTable[t];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===r)return n}return k.lookup(e,r)},createNode:(e,r,t,n)=>{e=new k.FSNode(e,r,t,n);return k.hashAddNode(e),e},destroyNode:e=>{k.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=k.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>k.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup:e=>{return k.nodePermissions(e,"x")||(e.node_ops.lookup?0:2)},mayCreate:(e,r)=>{try{return k.lookupNode(e,r),20}catch(e){}return k.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{var n;try{n=k.lookupNode(e,r)}catch(e){return e.errno}r=k.nodePermissions(e,"wx");if(r)return r;if(t){if(!k.isDir(n.mode))return 54;if(k.isRoot(n)||k.getPath(n)===k.cwd())return 10}else if(k.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?k.isLink(e.mode)?32:k.isDir(e.mode)&&("r"!==k.flagsToPermissionString(r)||512&r)?31:k.nodePermissions(e,k.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:function(){for(var e=0k.streams[e],createStream:(e,r,t)=>{k.FSStream||(k.FSStream=function(){this.shared={}},k.FSStream.prototype={},Object.defineProperties(k.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new k.FSStream,e);r=k.nextfd(r,t);return e.fd=r,k.streams[r]=e},closeStream:e=>{k.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=k.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new k.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{k.devices[e]={stream_ops:r}},getDevice:e=>k.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(r,t)=>{"function"==typeof r&&(t=r,r=!1),k.syncFSRequests++,1=n.length&&i(null)}n.forEach(e=>{if(!e.type.syncfs)return s(null);e.type.syncfs(e,r,s)})},mount:(e,r,t)=>{var n,o="/"===t,i=!t;if(o&&k.root)throw new k.ErrnoError(10);if(!o&&!i){i=k.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,k.isMountpoint(n))throw new k.ErrnoError(10);if(!k.isDir(n.mode))throw new k.ErrnoError(54)}i={type:e,opts:r,mountpoint:t,mounts:[]},r=e.mount(i);return(r.mount=i).root=r,o?k.root=r:n&&(n.mounted=i,n.mount&&n.mount.mounts.push(i)),r},unmount:e=>{e=k.lookupPath(e,{follow_mount:!1});if(!k.isMountpoint(e.node))throw new k.ErrnoError(28);var e=e.node,r=e.mounted,n=k.getMounts(r),r=(Object.keys(k.nameTable).forEach(e=>{for(var r=k.nameTable[e];r;){var t=r.name_next;n.includes(r.mount)&&k.destroyNode(r),r=t}}),e.mounted=null,e.mount.mounts.indexOf(r));e.mount.mounts.splice(r,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=k.lookupPath(e,{parent:!0}).node,e=b.basename(e);if(!e||"."===e||".."===e)throw new k.ErrnoError(28);var o=k.mayCreate(n,e);if(o)throw new k.ErrnoError(o);if(n.node_ops.mknod)return n.node_ops.mknod(n,e,r,t);throw new k.ErrnoError(63)},create:(e,r)=>k.mknod(e,r=(r=void 0!==r?r:438)&4095|32768,0),mkdir:(e,r)=>k.mknod(e,r=(r=void 0!==r?r:511)&1023|16384,0),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),k.mknod(e,r|=8192,t)),symlink:(e,r)=>{if(!E.resolve(e))throw new k.ErrnoError(44);var t=k.lookupPath(r,{parent:!0}).node;if(!t)throw new k.ErrnoError(44);var r=b.basename(r),n=k.mayCreate(t,r);if(n)throw new k.ErrnoError(n);if(t.node_ops.symlink)return t.node_ops.symlink(t,r,e);throw new k.ErrnoError(63)},rename:(e,r)=>{var t=b.dirname(e),n=b.dirname(r),o=b.basename(e),i=b.basename(r),s=k.lookupPath(e,{parent:!0}).node,a=k.lookupPath(r,{parent:!0}).node;if(!s||!a)throw new k.ErrnoError(44);if(s.mount!==a.mount)throw new k.ErrnoError(75);var u,l=k.lookupNode(s,o);if("."!==E.relative(e,n).charAt(0))throw new k.ErrnoError(28);if("."!==E.relative(r,t).charAt(0))throw new k.ErrnoError(55);try{u=k.lookupNode(a,i)}catch(e){}if(l!==u){n=k.isDir(l.mode),r=k.mayDelete(s,o,n);if(r)throw new k.ErrnoError(r);if(r=u?k.mayDelete(a,i,n):k.mayCreate(a,i))throw new k.ErrnoError(r);if(!s.node_ops.rename)throw new k.ErrnoError(63);if(k.isMountpoint(l)||u&&k.isMountpoint(u))throw new k.ErrnoError(10);if(a!==s&&(r=k.nodePermissions(s,"w")))throw new k.ErrnoError(r);k.hashRemoveNode(l);try{s.node_ops.rename(l,a,i)}catch(e){throw e}finally{k.hashAddNode(l)}}},rmdir:e=>{var r=k.lookupPath(e,{parent:!0}).node,e=b.basename(e),t=k.lookupNode(r,e),n=k.mayDelete(r,e,!0);if(n)throw new k.ErrnoError(n);if(!r.node_ops.rmdir)throw new k.ErrnoError(63);if(k.isMountpoint(t))throw new k.ErrnoError(10);r.node_ops.rmdir(r,e),k.destroyNode(t)},readdir:e=>{e=k.lookupPath(e,{follow:!0}).node;if(e.node_ops.readdir)return e.node_ops.readdir(e);throw new k.ErrnoError(54)},unlink:e=>{var r=k.lookupPath(e,{parent:!0}).node;if(!r)throw new k.ErrnoError(44);var e=b.basename(e),t=k.lookupNode(r,e),n=k.mayDelete(r,e,!1);if(n)throw new k.ErrnoError(n);if(!r.node_ops.unlink)throw new k.ErrnoError(63);if(k.isMountpoint(t))throw new k.ErrnoError(10);r.node_ops.unlink(r,e),k.destroyNode(t)},readlink:e=>{e=k.lookupPath(e).node;if(!e)throw new k.ErrnoError(44);if(e.node_ops.readlink)return E.resolve(k.getPath(e.parent),e.node_ops.readlink(e));throw new k.ErrnoError(28)},stat:(e,r)=>{e=k.lookupPath(e,{follow:!r}).node;if(!e)throw new k.ErrnoError(44);if(e.node_ops.getattr)return e.node_ops.getattr(e);throw new k.ErrnoError(63)},lstat:e=>k.stat(e,!0),chmod:(e,r,t)=>{t="string"==typeof e?k.lookupPath(e,{follow:!t}).node:e;if(!t.node_ops.setattr)throw new k.ErrnoError(63);t.node_ops.setattr(t,{mode:4095&r|-4096&t.mode,timestamp:Date.now()})},lchmod:(e,r)=>{k.chmod(e,r,!0)},fchmod:(e,r)=>{e=k.getStream(e);if(!e)throw new k.ErrnoError(8);k.chmod(e.node,r)},chown:(e,r,t,n)=>{n="string"==typeof e?k.lookupPath(e,{follow:!n}).node:e;if(!n.node_ops.setattr)throw new k.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,r,t)=>{k.chown(e,r,t,!0)},fchown:(e,r,t)=>{e=k.getStream(e);if(!e)throw new k.ErrnoError(8);k.chown(e.node,r,t)},truncate:(e,r)=>{if(r<0)throw new k.ErrnoError(28);e="string"==typeof e?k.lookupPath(e,{follow:!0}).node:e;if(!e.node_ops.setattr)throw new k.ErrnoError(63);if(k.isDir(e.mode))throw new k.ErrnoError(31);if(!k.isFile(e.mode))throw new k.ErrnoError(28);var t=k.nodePermissions(e,"w");if(t)throw new k.ErrnoError(t);e.node_ops.setattr(e,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{e=k.getStream(e);if(!e)throw new k.ErrnoError(8);if(0==(2097155&e.flags))throw new k.ErrnoError(28);k.truncate(e.node,r)},utime:(e,r,t)=>{e=k.lookupPath(e,{follow:!0}).node;e.node_ops.setattr(e,{timestamp:Math.max(r,t)})},open:(e,r,t)=>{if(""===e)throw new k.ErrnoError(44);var n;if(t=void 0===t?438:t,t=64&(r="string"==typeof r?k.modeStringToFlags(r):r)?4095&t|32768:0,"object"==typeof e)n=e;else{e=b.normalize(e);try{n=k.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var o=!1;if(64&r)if(n){if(128&r)throw new k.ErrnoError(20)}else n=k.mknod(e,t,0),o=!0;if(!n)throw new k.ErrnoError(44);if(k.isChrdev(n.mode)&&(r&=-513),65536&r&&!k.isDir(n.mode))throw new k.ErrnoError(54);if(!o){t=k.mayOpen(n,r);if(t)throw new k.ErrnoError(t)}512&r&&!o&&k.truncate(n,0),r&=-131713;t=k.createStream({node:n,path:k.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return t.stream_ops.open&&t.stream_ops.open(t),!y.logReadFiles||1&r||(k.readFiles||(k.readFiles={}),e in k.readFiles||(k.readFiles[e]=1)),t},close:e=>{if(k.isClosed(e))throw new k.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{k.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(k.isClosed(e))throw new k.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new k.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new k.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new k.ErrnoError(28);if(k.isClosed(e))throw new k.ErrnoError(8);if(1==(2097155&e.flags))throw new k.ErrnoError(8);if(k.isDir(e.node.mode))throw new k.ErrnoError(31);if(!e.stream_ops.read)throw new k.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new k.ErrnoError(70)}else o=e.position;r=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=r),r},write:(e,r,t,n,o,i)=>{if(n<0||o<0)throw new k.ErrnoError(28);if(k.isClosed(e))throw new k.ErrnoError(8);if(0==(2097155&e.flags))throw new k.ErrnoError(8);if(k.isDir(e.node.mode))throw new k.ErrnoError(31);if(!e.stream_ops.write)throw new k.ErrnoError(28);e.seekable&&1024&e.flags&&k.llseek(e,0,2);var s=void 0!==o;if(s){if(!e.seekable)throw new k.ErrnoError(70)}else o=e.position;r=e.stream_ops.write(e,r,t,n,o,i);return s||(e.position+=r),r},allocate:(e,r,t)=>{if(k.isClosed(e))throw new k.ErrnoError(8);if(r<0||t<=0)throw new k.ErrnoError(28);if(0==(2097155&e.flags))throw new k.ErrnoError(8);if(!k.isFile(e.node.mode)&&!k.isDir(e.node.mode))throw new k.ErrnoError(43);if(!e.stream_ops.allocate)throw new k.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if(0!=(2&n)&&0==(2&o)&&2!=(2097155&e.flags))throw new k.ErrnoError(2);if(1==(2097155&e.flags))throw new k.ErrnoError(2);if(e.stream_ops.mmap)return e.stream_ops.mmap(e,r,t,n,o);throw new k.ErrnoError(43)},msync:(e,r,t,n,o)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(e.stream_ops.ioctl)return e.stream_ops.ioctl(e,r,t);throw new k.ErrnoError(59)},readFile:function(e){let r=1k.currentPath,chdir:e=>{e=k.lookupPath(e,{follow:!0});if(null===e.node)throw new k.ErrnoError(44);if(!k.isDir(e.node.mode))throw new k.ErrnoError(54);var r=k.nodePermissions(e.node,"x");if(r)throw new k.ErrnoError(r);k.currentPath=e.path},createDefaultDirectories:()=>{k.mkdir("/tmp"),k.mkdir("/home"),k.mkdir("/home/web_user")},createDefaultDevices:()=>{k.mkdir("/dev"),k.registerDevice(k.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),k.mkdev("/dev/null",k.makedev(1,3)),o.register(k.makedev(5,0),o.default_tty_ops),o.register(k.makedev(6,0),o.default_tty1_ops),k.mkdev("/dev/tty",k.makedev(5,0)),k.mkdev("/dev/tty1",k.makedev(6,0));var e=function(){var e;if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=new Uint8Array(1),()=>(crypto.getRandomValues(e),e[0]);if(H)try{var r=Ar.default;return()=>r.randomBytes(1)[0]}catch(e){}return()=>v("randomDevice")}();k.createDevice("/dev","random",e),k.createDevice("/dev","urandom",e),k.mkdir("/dev/shm"),k.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{k.mkdir("/proc");var r=k.mkdir("/proc/self");k.mkdir("/proc/self/fd"),k.mount({mount:()=>{var e=k.createNode(r,"fd",16895,73);return e.node_ops={lookup:(e,r)=>{var t=k.getStream(+r);if(!t)throw new k.ErrnoError(8);r={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return r.parent=r}},e}},{},"/proc/self/fd")},createStandardStreams:()=>{y.stdin?k.createDevice("/dev","stdin",y.stdin):k.symlink("/dev/tty","/dev/stdin"),y.stdout?k.createDevice("/dev","stdout",null,y.stdout):k.symlink("/dev/tty","/dev/stdout"),y.stderr?k.createDevice("/dev","stderr",null,y.stderr):k.symlink("/dev/tty1","/dev/stderr"),k.open("/dev/stdin",0),k.open("/dev/stdout",1),k.open("/dev/stderr",1)},ensureErrnoError:()=>{k.ErrnoError||(k.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},k.ErrnoError.prototype=new Error,k.ErrnoError.prototype.constructor=k.ErrnoError,[44].forEach(e=>{k.genericErrors[e]=new k.ErrnoError(e),k.genericErrors[e].stack=""}))},staticInit:()=>{k.ensureErrnoError(),k.nameTable=new Array(4096),k.mount(_,{},"/"),k.createDefaultDirectories(),k.createDefaultDevices(),k.createSpecialDirectories(),k.filesystems={MEMFS:_}},init:(e,r,t)=>{k.init.initialized=!0,k.ensureErrnoError(),y.stdin=e||y.stdin,y.stdout=r||y.stdout,y.stderr=t||y.stderr,k.createStandardStreams()},quit:()=>{k.init.initialized=!1;for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{e=k.analyzePath(e,r);return e.exists?e.object:null},analyzePath:(e,r)=>{try{e=(n=k.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=k.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=b.basename(e),n=k.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath:(e,r,t,n)=>{e="string"==typeof e?e:k.getPath(e);for(var o=r.split("/").reverse();o.length;){var i=o.pop();if(i){var s=b.join2(e,i);try{k.mkdir(s)}catch(e){}e=s}}return s},createFile:(e,r,t,n,o)=>{e=b.join2("string"==typeof e?e:k.getPath(e),r),r=k.getMode(n,o);return k.create(e,r)},createDataFile:(e,r,t,n,o,i)=>{var s=r,r=(e&&(e="string"==typeof e?e:k.getPath(e),s=r?b.join2(e,r):e),k.getMode(n,o)),e=k.create(s,r);if(t){if("string"==typeof t){for(var a=new Array(t.length),u=0,l=t.length;u{var e=b.join2("string"==typeof e?e:k.getPath(e),r),r=k.getMode(!!u,!!s),t=(k.createDevice.major||(k.createDevice.major=64),k.makedev(k.createDevice.major++,0));return k.registerDevice(t,{open:e=>{e.seekable=!1},close:e=>{s&&s.buffer&&s.buffer.length&&s(10)},read:(e,r,t,n,o)=>{for(var i,s=0,a=0;a{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!r)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=pe(r(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new k.ErrnoError(29)}},createLazyFile:(e,r,s,t,n)=>{function o(){this.lengthKnown=!1,this.chunks=[]}if(o.prototype.get=function(e){var r;if(!(e>this.length-1||e<0))return r=e%this.chunkSize,e=e/this.chunkSize|0,this.getter(e)[r]},o.prototype.setDataGetter=function(e){this.getter=e},o.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",s,!1),e.send(null),!(200<=e.status&&e.status<300||304===e.status))throw new Error("Couldn't load "+s+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),t=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,e=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,o=1048576,i=(t||(o=n),this);i.setDataGetter(e=>{var r=e*o,t=(e+1)*o-1,t=Math.min(t,n-1);if(void 0===i.chunks[e]&&(i.chunks[e]=((e,r)=>{if(r=i.length)return 0;var s=Math.min(i.length-o,n);if(i.slice)for(var a=0;a{var r=a.stream_ops[e];u[e]=function(){return k.forceLoadFile(a),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(k.forceLoadFile(a),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{k.forceLoadFile(a);var i=he(r);if(i)return l(e,d,i,r,t),{ptr:i,allocated:!0};throw new k.ErrnoError(48)},a.stream_ops=u,a},createPreloadedFile:(t,n,e,o,i,s,a,u,l,c)=>{var r,d,f,p=n?E.resolve(b.join2(t,n)):t;function h(e){function r(e){c&&c(),u||k.createDataFile(t,n,e,o,i,l),s&&s(),ae()}Browser.handledByPreloadPlugin(e,p,r,()=>{a&&a(),ae()})||r(e)}se(),"string"==typeof e?(d=a,f="al "+(r=e),m(r,e=>{G(e,'Loading data file "'+r+'" failed (no arrayBuffer).'),h(new Uint8Array(e)),f&&ae()},e=>{if(!d)throw'Loading data file "'+r+'" failed.';d()}),f&&se()):h(e)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(s,a,u)=>{a=a||(()=>{}),u=u||(()=>{});var e=k.indexedDB();try{var l=e.open(k.DB_NAME(),k.DB_VERSION)}catch(s){return u(s)}l.onupgradeneeded=()=>{q("creating db"),l.result.createObjectStore(k.DB_STORE_NAME)},l.onsuccess=()=>{var e=l.result.transaction([k.DB_STORE_NAME],"readwrite"),r=e.objectStore(k.DB_STORE_NAME),t=0,n=0,o=s.length;function i(){(0==n?a:u)()}s.forEach(e=>{e=r.put(k.analyzePath(e).object.contents,e);e.onsuccess=()=>{++t+n==o&&i()},e.onerror=()=>{t+ ++n==o&&i()}}),e.onerror=u},l.onerror=u},loadFilesFromDB:(a,u,l)=>{u=u||(()=>{}),l=l||(()=>{});var e=k.indexedDB();try{var c=e.open(k.DB_NAME(),k.DB_VERSION)}catch(a){return l(a)}c.onupgradeneeded=l,c.onsuccess=()=>{var e=c.result;try{var r=e.transaction([k.DB_STORE_NAME],"readonly")}catch(e){return void l(e)}var t=r.objectStore(k.DB_STORE_NAME),n=0,o=0,i=a.length;function s(){(0==o?u:l)()}a.forEach(e=>{var r=t.get(e);r.onsuccess=()=>{k.analyzePath(e).exists&&k.unlink(e),k.createDataFile(b.dirname(e),b.basename(e),r.result,!0,!0,!0),++n+o==i&&s()},r.onerror=()=>{n+ ++o==i&&s()}}),r.onerror=l},c.onerror=l}},S={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(b.isAbs(r))return r;var n;if(-100===e)n=k.cwd();else{e=k.getStream(e);if(!e)throw new k.ErrnoError(8);n=e.path}if(0!=r.length)return b.join2(n,r);if(t)return n;throw new k.ErrnoError(44)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&b.normalize(r)!==b.normalize(k.getPath(e.node)))return-54;throw e}return l[t>>2]=n.dev,l[t+4>>2]=0,l[t+8>>2]=n.ino,l[t+12>>2]=n.mode,l[t+16>>2]=n.nlink,l[t+20>>2]=n.uid,l[t+24>>2]=n.gid,l[t+28>>2]=n.rdev,l[t+32>>2]=0,w=[n.size>>>0,(g=n.size,1<=+Math.abs(g)?0>>0:~~+Math.ceil((g-(~~g>>>0))/4294967296)>>>0:0)],l[t+40>>2]=w[0],l[t+44>>2]=w[1],l[t+48>>2]=4096,l[t+52>>2]=n.blocks,w=[Math.floor(n.atime.getTime()/1e3)>>>0,(g=Math.floor(n.atime.getTime()/1e3),1<=+Math.abs(g)?0>>0:~~+Math.ceil((g-(~~g>>>0))/4294967296)>>>0:0)],l[t+56>>2]=w[0],l[t+60>>2]=w[1],l[t+64>>2]=0,w=[Math.floor(n.mtime.getTime()/1e3)>>>0,(g=Math.floor(n.mtime.getTime()/1e3),1<=+Math.abs(g)?0>>0:~~+Math.ceil((g-(~~g>>>0))/4294967296)>>>0:0)],l[t+72>>2]=w[0],l[t+76>>2]=w[1],l[t+80>>2]=0,w=[Math.floor(n.ctime.getTime()/1e3)>>>0,(g=Math.floor(n.ctime.getTime()/1e3),1<=+Math.abs(g)?0>>0:~~+Math.ceil((g-(~~g>>>0))/4294967296)>>>0:0)],l[t+88>>2]=w[0],l[t+92>>2]=w[1],l[t+96>>2]=0,w=[n.ino>>>0,(g=n.ino,1<=+Math.abs(g)?0>>0:~~+Math.ceil((g-(~~g>>>0))/4294967296)>>>0:0)],l[t+104>>2]=w[0],l[t+108>>2]=w[1],0},doMsync:function(e,r,t,n,o){e=f.slice(e,e+t);k.msync(r,e,o,t,n)},varargs:void 0,get:function(){return S.varargs+=4,l[S.varargs-4>>2]},getStr:function(e){return ee(e)},getStreamFromFD:function(e){e=k.getStream(e);if(e)return e;throw new k.ErrnoError(8)}};function me(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ye=void 0;function P(e){for(var r="",t=e;f[t];)r+=ye[f[t++]];return r}var A={},T={},ge={};function we(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return 48<=r&&r<=57?"_"+e:e}function ve(e,r){return e=we(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function be(e,r){var t=ve(r,function(e){this.name=r,this.message=e;e=new Error(e).stack;void 0!==e&&(this.stack=this.toString()+"\n"+e.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),(t.prototype.constructor=t).prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var D=void 0;function F(e){throw new D(e)}var Ee=void 0;function _e(e){throw new Ee(e)}function ke(n,r,o){function t(e){var r=o(e);r.length!==n.length&&_e("Mismatched type converter count");for(var t=0;t{T.hasOwnProperty(e)?i[r]=T[e]:(s.push(e),A.hasOwnProperty(e)||(A[e]=[]),A[e].push(()=>{i[r]=T[e],++a===s.length&&t(i)}))}),0===s.length&&t(i)}function C(e,r,t){t=2e()))}function Se(e){F(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Pe=!1;function Ae(e){}function Te(e){--e.count.value,0===e.count.value&&((e=e).smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr))}var De={};var Fe=[];function Ce(){for(;Fe.length;){var e=Fe.pop();e.$$.deleteScheduled=!1,e.delete()}}var Me=void 0;var $e={};function Re(e,r){return r.ptrType&&r.ptr||_e("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!=!!r.smartPtr&&_e("Both smartPtrType and smartPtr must be specified"),r.count={value:1},Oe(Object.create(e,{$$:{value:r}}))}function Oe(e){return"undefined"==typeof FinalizationRegistry?(Oe=e=>e,e):(Pe=new FinalizationRegistry(e=>{Te(e.$$)}),Ae=e=>Pe.unregister(e),(Oe=e=>{var r=e.$$;return r.smartPtr&&Pe.register(e,{$$:r},e),e})(e))}function M(){}function je(e,r,t){var n;void 0===e[r].overloadTable&&(n=e[r],e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||F("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n)}function xe(e,r,t,n,o,i,s,a){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=s,this.downcast=a,this.pureVirtualFunctions=[]}function Ue(e,r,t){for(;r!==t;)r.upcast||F("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function Be(e,r){if(null===r)return this.isReference&&F("null is not a valid "+this.name),0;r.$$||F('Cannot pass "'+er(r)+'" as a '+this.name),r.$$.ptr||F("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass;return Ue(r.$$.ptr,t,this.registeredClass)}function We(e,r){if(null===r)return this.isReference&&F("null is not a valid "+this.name),this.isSmartPointer?(n=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,n),n):0;r.$$||F('Cannot pass "'+er(r)+'" as a '+this.name),r.$$.ptr||F("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&F("Cannot convert argument of type "+(r.$$.smartPtrType||r.$$.ptrType).name+" to parameter type "+this.name);var t,n,o=r.$$.ptrType.registeredClass;if(n=Ue(r.$$.ptr,o,this.registeredClass),this.isSmartPointer)switch(void 0===r.$$.smartPtr&&F("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?n=r.$$.smartPtr:F("Cannot convert argument of type "+(r.$$.smartPtrType||r.$$.ptrType).name+" to parameter type "+this.name);break;case 1:n=r.$$.smartPtr;break;case 2:r.$$.smartPtrType===this?n=r.$$.smartPtr:(t=r.clone(),n=this.rawShare(n,Ye.toHandle(function(){t.delete()})),null!==e&&e.push(this.rawDestructor,n));break;default:F("Unsupporting sharing policy")}return n}function ze(e,r){if(null===r)return this.isReference&&F("null is not a valid "+this.name),0;r.$$||F('Cannot pass "'+er(r)+'" as a '+this.name),r.$$.ptr||F("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&F("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass;return Ue(r.$$.ptr,t,this.registeredClass)}function Ie(e){return this.fromWireType(l[e>>2])}function $(e,r,t,n,o,i,s,a,u,l,c){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=s,this.rawGetPointee=a,this.rawConstructor=u,this.rawShare=l,this.rawDestructor=c,o||void 0!==r.baseClass?this.toWireType=We:(this.toWireType=n?Be:ze,this.destructorFunction=null)}var Le=[];function Ne(e){var r=Le[e];return r||(e>=Le.length&&(Le.length=e+1),Le[e]=r=Q.get(e)),r}function R(e,r){var o,i,s,t=(e=P(e)).includes("j")?(o=e,i=r,s=[],function(){return s.length=0,Object.assign(s,arguments),r=i,t=s,(e=o).includes("j")?(n=r,e=y["dynCall_"+e],t&&t.length?e.apply(null,[n].concat(t)):e.call(null,n)):Ne(r).apply(null,t);var e,r,t,n}):Ne(r);return"function"!=typeof t&&F("unknown function pointer with signature "+e+": "+r),t}var He=void 0;function qe(e){var e=wr(e),r=P(e);return j(e),r}function Ve(e,r){var t=[],n={};throw r.forEach(function e(r){n[r]||T[r]||(ge[r]?ge[r].forEach(e):(t.push(r),n[r]=!0))}),new He(e+": "+t.map(qe).join([", "]))}function Ge(e,r){for(var t=[],n=0;n>2]);return t}function Xe(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function Je(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=ve(e.name||"unknownFunctionName",function(){}),t=(t.prototype=e.prototype,new t),e=e.apply(t,r);return e instanceof Object?e:t}function Ke(e,r,t,n,o){var i=r.length;i<2&&F("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var t=null!==r[1]&&null!==t,s=!1,a=1;a(e||F("Cannot use deleted val. handle = "+e),O[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=Ze.length?Ze.pop():O.length;return O[r]={refcount:1,value:e},r}}};function er(e){if(null===e)return"null";var r=typeof e;return"object"==r||"array"==r||"function"==r?e.toString():""+e}var rr="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function tr(e,r){for(var t,n=e>>1,o=n+r/2;!(o<=n)&&J[n];)++n;if(32<(t=n<<1)-e&&rr)return rr.decode(f.subarray(e,t));for(var i="",s=0;!(r/2<=s);++s){var a=u[e+2*s>>1];if(0==a)break;i+=String.fromCharCode(a)}return i}function nr(e,r,t){if((t=void 0===t?2147483647:t)<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,i=0;i>1]=s,r+=2}return u[r>>1]=0,r-n}function or(e){return 2*e.length}function ir(e,r){for(var t=0,n="";!(r/4<=t);){var o,i=l[e+4*t>>2];if(0==i)break;++t,65536<=i?(o=i-65536,n+=String.fromCharCode(55296|o>>10,56320|1023&o)):n+=String.fromCharCode(i)}return n}function sr(e,r,t){if((t=void 0===t?2147483647:t)<4)return 0;for(var n=r,o=n+t-4,i=0;i>2]=s,(r+=4)+4>o)break}return l[r>>2]=0,r-n}function ar(e){for(var r=0,t=0;t>1]=2,0;case 16:case 8:default:return-28;case 9:return l[gr()>>2]=28,-1}}catch(e){if(void 0!==k&&e instanceof k.ErrnoError)return-e.errno;throw e}},w:function(e,r,t,n){S.varargs=n;try{r=S.getStr(r),r=S.calculateAt(e,r);var o=n?S.get():0;return k.open(r,t,o).fd}catch(e){if(void 0!==k&&e instanceof k.ErrnoError)return-e.errno;throw e}},u:function(e,r,t,n,o){},E:function(e,t,n,o,i){var s=me(n);C(e,{name:t=P(t),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?o:i},argPackAdvance:8,readValueFromPointer:function(e){var r;if(1===n)r=d;else if(2===n)r=u;else{if(4!==n)throw new TypeError("Unknown boolean type size: "+t);r=l}return this.fromWireType(r[e>>s])},destructorFunction:null})},t:function(u,e,r,l,t,c,n,d,o,f,p,i,h){p=P(p),c=R(t,c),d=d&&R(n,d),f=f&&R(o,f),h=R(i,h);var s,m=we(p);t=m,n=function(){Ve("Cannot construct "+p+" due to unbound types",[l])},y.hasOwnProperty(t)?(F("Cannot register public name '"+t+"' twice"),je(y,t,t),y.hasOwnProperty(s)&&F("Cannot register multiple overloads of a function with the same number of arguments ("+s+")!"),y[t].overloadTable[s]=n):y[t]=n,ke([u,e,r],l?[l]:[],function(e){e=e[0],e=l?(s=e.registeredClass).instancePrototype:M.prototype;var r,t,n=ve(m,function(){if(Object.getPrototypeOf(this)!==o)throw new D("Use 'new' to construct "+p);if(void 0===i.constructor_body)throw new D(p+" has no accessible constructor");var e=i.constructor_body[arguments.length];if(void 0===e)throw new D("Tried to invoke ctor of "+p+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(i.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)}),o=Object.create(e,{constructor:{value:n}}),i=(n.prototype=o,new xe(p,n,o,h,s,c,d,f)),e=new $(p,i,!0,!1,!1),s=new $(p+"*",i,!1,!1,!1),a=new $(p+" const*",i,!1,!0,!1);return De[u]={pointerType:s,constPointerType:a},r=m,n=n,y.hasOwnProperty(r)||_e("Replacing nonexistant public symbol"),y[r].overloadTable,y[r]=n,y[r].argCount=t,[e,s,a]})},r:function(e,n,r,t,o,i){G(0{Ve("Cannot construct "+r.name+" due to unbound types",s)},ke([],s,function(e){return e.splice(1,0,null),r.registeredClass.constructor_body[n-1]=Ke(t,e,null,o,i),[]}),[]})},f:function(e,i,s,r,t,a,u,l){var c=Ge(s,r);i=P(i),a=R(t,a),ke([],[e],function(r){var t=(r=r[0]).name+"."+i;function e(){Ve("Cannot call "+t+" due to unbound types",c)}i.startsWith("@@")&&(i=Symbol[i.substring(2)]),l&&r.registeredClass.pureVirtualFunctions.push(i);var n=r.registeredClass.instancePrototype,o=n[i];return void 0===o||void 0===o.overloadTable&&o.className!==r.name&&o.argCount===s-2?(e.argCount=s-2,e.className=r.name,n[i]=e):(je(n,i,t),n[i].overloadTable[s-2]=e),ke([],c,function(e){e=Ke(t,e,r,a,u);return void 0===n[i].overloadTable?(e.argCount=s-2,n[i]=e):n[i].overloadTable[s-2]=e,[]}),[]})},D:function(e,r){C(e,{name:r=P(r),fromWireType:function(e){var r=Ye.toValue(e);return Qe(e),r},toWireType:function(e,r){return Ye.toHandle(r)},argPackAdvance:8,readValueFromPointer:Ie,destructorFunction:null})},n:function(e,r,t){t=me(t);C(e,{name:r=P(r),fromWireType:function(e){return e},toWireType:function(e,r){return r},argPackAdvance:8,readValueFromPointer:function(e,r){switch(r){case 2:return function(e){return this.fromWireType(K[e>>2])};case 3:return function(e){return this.fromWireType(Z[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}(r,t),destructorFunction:null})},c:function(e,r,t,n,o){r=P(r);var i,s=me(t),a=e=>e,t=(0===n&&(i=32-8*t,a=e=>e<>>i),r.includes("unsigned"));C(e,{name:r,fromWireType:a,toWireType:t?function(e,r){return this.name,r>>>0}:function(e,r){return this.name,r},argPackAdvance:8,readValueFromPointer:function(e,r,t){switch(r){case 0:return t?function(e){return d[e]}:function(e){return f[e]};case 1:return t?function(e){return u[e>>1]}:function(e){return J[e>>1]};case 2:return t?function(e){return l[e>>2]}:function(e){return p[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}(r,s,0!==n),destructorFunction:null})},b:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=p,t=r[e>>=2],r=r[e+1];return new n(X,r,t)}C(e,{name:t=P(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},m:function(e,r){var l="std::string"===(r=P(r));C(e,{name:r,fromWireType:function(e){var r,t=p[e>>2],n=e+4;if(l)for(var o=n,i=0;i<=t;++i){var s,a=n+i;i!=t&&0!=f[a]||(s=ee(o,a-o),void 0===r?r=s:r=r+String.fromCharCode(0)+s,o=a+1)}else{for(var u=new Array(t),i=0;i>2]=t,l&&n)re(r,f,i,t+1);else if(n)for(var s=0;sJ,d=1):4===u&&(l=ir,i=sr,s=ar,c=()=>p,d=2),C(e,{name:o,fromWireType:function(e){for(var r,t=p[e>>2],n=c(),o=e+4,i=0;i<=t;++i){var s,a=e+4+i*u;i!=t&&0!=n[a>>d]||(s=l(o,a-o),void 0===r?r=s:r=r+String.fromCharCode(0)+s,o=a+u)}return j(e),r},toWireType:function(e,r){"string"!=typeof r&&F("Cannot pass non-string to C++ string type "+o);var t=s(r),n=br(4+t+u);return p[n>>2]=t>>d,i(r,n+4,t+u),null!==e&&e.push(j,n),n},argPackAdvance:8,readValueFromPointer:Ie,destructorFunction:function(e){j(e)}})},o:function(e,r){C(e,{isVoid:!0,name:r=P(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},h:function(){return Date.now()},d:function(e,r,t,n){(e=lr[e])(r=Ye.toValue(r),t=void 0===(r=ur[e=t])?P(e):r,null,n)},j:Qe,e:function(e,r){var t=function(e,r){for(var t,n,o=new Array(e),i=0;i>2],void 0===(n=T[t])&&F("parameter "+i+" has unknown type "+qe(t)),n);return o}(e,r),r=t[0],n=r.name+"_$"+t.slice(1).map(function(e){return e.name}).join("_")+"$",o=cr[n];if(void 0!==o)return o;for(var i=["retType"],s=[r],a="",u=0;u>2]=t,e),o=t,i=0;i>0]=n.charCodeAt(i);d[o>>0]=0,u+=e.length+1}),0},z:function(e,r){var t=fr(),n=(p[e>>2]=t.length,0);return t.forEach(function(e){n+=e.length+1}),p[r>>2]=n,0},l:function(e){try{var r=S.getStreamFromFD(e);return k.close(r),0}catch(e){if(void 0!==k&&e instanceof k.ErrnoError)return e.errno;throw e}},x:function(e,r){try{var t=S.getStreamFromFD(e),n=t.tty?2:k.isDir(t.mode)?3:k.isLink(t.mode)?7:4;return d[r>>0]=n,0}catch(e){if(void 0!==k&&e instanceof k.ErrnoError)return e.errno;throw e}},B:function(e,r,t,n){try{var o=function(e,r,t){for(var n=0,o=0;o>2],s=p[r+4>>2],i=(r+=8,k.read(e,d,i,s,void 0));if(i<0)return-1;if(n+=i,i>2]=o,0}catch(e){if(void 0!==k&&e instanceof k.ErrnoError)return e.errno;throw e}},s:function(e,r,t,n,o){try{var i=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(i))return 61;var s=S.getStreamFromFD(e);return k.llseek(s,i,n),w=[s.position>>>0,(g=s.position,1<=+Math.abs(g)?0>>0:~~+Math.ceil((g-(~~g>>>0))/4294967296)>>>0:0)],l[o>>2]=w[0],l[o+4>>2]=w[1],s.getdents&&0===i&&0===n&&(s.getdents=null),0}catch(e){if(void 0!==k&&e instanceof k.ErrnoError)return e.errno;throw e}},k:function(e,r,t,n){try{var o=function(e,r,t){for(var n=0,o=0;o>2],s=p[r+4>>2],i=(r+=8,k.write(e,d,i,s,void 0));if(i<0)return-1;n+=i}return n}(S.getStreamFromFD(e),r,t);return p[n>>2]=o,0}catch(e){if(void 0!==k&&e instanceof k.ErrnoError)return e.errno;throw e}},g:function(e){}},j=(!function(){var r={a:yr};function t(e,r){var e=e.exports;y.asm=e,e=y.asm.F.buffer,X=e,y.HEAP8=d=new Int8Array(e),y.HEAP16=u=new Int16Array(e),y.HEAP32=l=new Int32Array(e),y.HEAPU8=f=new Uint8Array(e),y.HEAPU16=J=new Uint16Array(e),y.HEAPU32=p=new Uint32Array(e),y.HEAPF32=K=new Float32Array(e),y.HEAPF64=Z=new Float64Array(e),Q=y.asm.I,e=y.asm.G,oe.unshift(e),ae()}function n(e){t(e.instance)}function o(e){return function(){if(!i&&(N||c)){if("function"==typeof fetch&&!le(h))return fetch(h,{credentials:"same-origin"}).then(function(e){if(e.ok)return e.arrayBuffer();throw"failed to load wasm binary file at '"+h+"'"}).catch(function(){return ce(h)});if(m)return new Promise(function(r,e){m(h,function(e){r(new Uint8Array(e))},e)})}return Promise.resolve().then(function(){return ce(h)})}().then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(e,function(e){a("failed to asynchronously prepare wasm: "+e),v(e)})}if(se(),y.instantiateWasm)try{return y.instantiateWasm(r,t)}catch(r){return a("Module.instantiateWasm callback failed with error: "+r)}i||"function"!=typeof WebAssembly.instantiateStreaming||ue(h)||le(h)||H||"function"!=typeof fetch?o(n):fetch(h,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,r).then(n,function(e){return a("wasm streaming compile failed: "+e),a("falling back to ArrayBuffer instantiation"),o(n)})})}(),y.___wasm_call_ctors=function(){return(y.___wasm_call_ctors=y.asm.G).apply(null,arguments)},y._free=function(){return(j=y._free=y.asm.H).apply(null,arguments)}),gr=y.___errno_location=function(){return(gr=y.___errno_location=y.asm.J).apply(null,arguments)},wr=y.___getTypeName=function(){return(wr=y.___getTypeName=y.asm.K).apply(null,arguments)};y.___embind_register_native_and_builtin_types=function(){return(y.___embind_register_native_and_builtin_types=y.asm.L).apply(null,arguments)};var vr,br=y._malloc=function(){return(br=y._malloc=y.asm.M).apply(null,arguments)},Er=y._emscripten_builtin_memalign=function(){return(Er=y._emscripten_builtin_memalign=y.asm.N).apply(null,arguments)},_r=y.___cxa_is_pointer_type=function(){return(_r=y.___cxa_is_pointer_type=y.asm.O).apply(null,arguments)};function kr(){function e(){if(!vr&&(vr=!0,y.calledRun=!0,!V)){if(y.noFSInit||k.init.initialized||k.init(),k.ignorePermissions=!1,de(oe),y.onRuntimeInitialized&&y.onRuntimeInitialized(),y.postRun)for("function"==typeof y.postRun&&(y.postRun=[y.postRun]);y.postRun.length;)e=y.postRun.shift(),ie.unshift(e);var e;de(ie)}}if(!(0>4===k&&e[1]===u}function A(){return(performance&&"function"==typeof performance.now?performance:Date).now()}o(function(e){var s,r,a,t,n;s="undefined"!=typeof window&&void 0!==window.document?window.document:{},r=e.exports,a=function(){for(var e,r=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],t=0,n=r.length,o={};t{this.reject=e,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,r(e)},this.demand(t,!0)||null==(e=this.pull)||e.call(this,t)})},new(a=(a=s=void 0)||Promise)(function(t,r){function n(e){try{i(u.next(e))}catch(e){r(e)}}function o(e){try{i(u.throw(e))}catch(e){r(e)}}function i(e){var r;e.done?t(e.value):((r=e.value)instanceof a?r:new a(function(e){e(r)})).then(n,o)}i((u=u.apply(e,s||[])).next())});var e,s,a,u}readU32(){return this.read(c)}readU16(){return this.read(d)}readU8(){return this.read(f)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null!=(e=this.reject)&&e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(this.buffer&&this.need){let e=null;const n=this.buffer.subarray(this.consumed);let r=0;var t=e=>n.length<(r=e);if("number"==typeof this.need){if(t(this.need))return;e=n.subarray(0,r)}else if(this.need===c){if(t(4))return;e=n[0]<<24|n[1]<<16|n[2]<<8|n[3]}else if(this.need===d){if(t(2))return;e=n[0]<<8|n[1]}else if(this.need===f){if(t(1))return;e=n[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(t(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(n.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(t(this.need.byteLength))return;new Uint8Array(this.need).set(n.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise(e=>this.pull=e);this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){var r=this.buffer.length,t=r+e;if(t<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,t);else{const e=new Uint8Array(t);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(r,t)}return this.buffer=new Uint8Array(e),this.buffer}}T.U32=c,T.U16=d,T.U8=f;class D{constructor(i){this.log=function(e){if(i._opt.debug&&i._opt.debugLevel==s){for(var r=i._opt.debugUuid?`[${i._opt.debugUuid}]`:"",t=arguments.length,n=new Array(1{var e=function(){{var t=g;let r="";if("object"==typeof t)try{r=JSON.stringify(t),r=JSON.parse(r)}catch(e){r=t}else r=t;return r}}();return{debug:e.debug,debugLevel:e.debugLevel,sampleRate:0,audioBufferSize:1024,videoBuffer:e.videoBuffer}},h={isDestroyed:!1,_opt:e(),init:function(){h.debug.log("audio worker","init and opt is",h._opt),h.stopId=setInterval(()=>{var e=(new Date).getTime(),e=e-(r=r||e);100h._opt.videoBuffer)){h.delay<0&&h.debug.warn("audio worker",`loop() do not decode and delay is ${h.delay}, bufferList is `+t.length);break}t.shift(),h.doDecode(e)}else-1!==h.delay&&h.debug.log("audio worker","loop() bufferList is empty and reset delay"),h.resetAllDelay()}r=(new Date).getTime()},10)},doDecode:function(e){e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},getDelay:function(e){return e?(h.preDelayTimestamp&&h.preDelayTimestamp>e?1e3 timestamp is ${e} more than ${h.preDelayTimestamp-e}ms`):h.firstTimestamp?e&&(r=Date.now()-h.startTimestamp,t=e-h.firstTimestamp,h.delay=t<=r?r-t:t-r):(h.firstTimestamp=e,h.startTimestamp=Date.now(),h.delay=-1),h.preDelayTimestamp=e,h.delay):-1;var r,t},resetAllDelay:function(){h.firstTimestamp=null,h.startTimestamp=null,h.delay=-1,h.preDelayTimestamp=null},close:function(){h.debug.log("audio worker","close"),h.isDestroyed=!0,h.stopId&&(clearInterval(h.stopId),h.stopId=null),m&&(m.clear&&m.clear(),m=null),s=null,h._opt=e(),t=[],l=[],n(),a=null,i&&(i.close(1e3,"Client disconnecting"),i=null),h.resetAllDelay(),c=!1,d=[],f=0,p=0,postMessage({cmd:"closeEnd"})},fetchStream:function(e,r){h.debug.log("audio worker","fetchStream, url is "+e,"options:",JSON.stringify(r)),s=function(t){let n=0,o=A();return e=>{var r;"[object Number]"===Object.prototype.toString.call(e)&&(n+=e,1e3<=(r=(e=A())-o)&&(t(n/r*1e3),o=e,n=0))}}(e=>{postMessage({cmd:v,type:"streamRate",value:e})}),2===r.protocol?(a=new T(h.demuxFlv()),fetch(e,{signal:o.signal}).then(e=>{if(!(e.ok&&200<=e.status&&e.status<=299))return h.debug.warn("audio worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),n(),void postMessage({cmd:v,type:_,value:`fetch response status is ${e.status} and ok is `+e.ok});if(postMessage({cmd:v,type:E}),"undefined"!=typeof WritableStream)e.body.pipeTo(new WritableStream({write:e=>{s(e.byteLength),a.write(e)},close:()=>{a=null,n(),postMessage({cmd:v,type:b,value:y})},abort:e=>{a=null,e.name!==S&&(n(),postMessage({cmd:v,type:_,value:e.toString()}))}}));else{const r=e.body.getReader(),t=()=>{r.read().then(e=>{var{done:e,value:r}=e;if(e)return a=null,n(),void postMessage({cmd:v,type:b,value:y});s(r.byteLength),a.write(r),t()}).catch(e=>{a=null,e.name!==S&&(n(),postMessage({cmd:v,type:_,value:e.toString()}))})};t()}}).catch(e=>{e.name!==S&&(n(),postMessage({cmd:v,type:_,value:e.toString()}),a=null)})):1===r.protocol&&(r.isFlv&&(a=new T(h.demuxFlv())),(i=new WebSocket(e)).binaryType="arraybuffer",i.onopen=()=>{h.debug.log("audio worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:v,type:E}),postMessage({cmd:v,type:"websocketOpen"})},i.onclose=e=>{h.debug.log("audio worker","fetchStream, WebsocketStream socket close and code is "+e.code),1006===e.code&&h.debug.warn("audio worker","fetchStream, WebsocketStream socket close abnormally and code is "+e.code),a=null,postMessage({cmd:v,type:b,value:"websocket"})},i.onerror=e=>{h.debug.error("audio worker","fetchStream, WebsocketStream socket error",e),a=null,postMessage({cmd:v,type:"websocketError",value:e.isTrusted?"websocket user aborted":"websocket error"})},i.onmessage=e=>{s(e.data.byteLength),r.isFlv?a.write(e.data):h.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),r=new Uint8Array(e),t=new Uint32Array(e);for(;;){r[3]=0;const e=yield 15,i=e[4];r[0]=e[7],r[1]=e[6],r[2]=e[5];var n=t[0],o=(r[0]=e[10],r[1]=e[9],r[2]=e[8],r[3]=e[11],t[0]),n=(yield n).slice();8===i&&h.decode(n,{type:1,ts:o})}},decode:function(e,r){postMessage({cmd:v,type:"streamAbps",value:e.byteLength}),h.pushBuffer(e,r.ts)},setCodecAudio:function(e){var r=e[0]>>4;if(P(e)||7==r||8==r){h.debug.log("audio worker","setCodecAudio: init audio codec, codeId is "+r);e=r===k?e.slice(2):e.slice(1);m.setCodec(r,h._opt.sampleRate,e),c=!0;{const e=Number("1")||1;setTimeout(()=>{h.close(),postMessage({cmd:"workerEnd"})},60*e*60*1e3)}}else h.debug.warn("audio worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r)},pushBuffer:function(e,r){P(e)?h.decodeAudio(e,r):t.push({ts:r,payload:e,decoder:{decode:h.decodeAudio},isIFrame:!1})},decodeAudio:function(e,r){var t=e[0]>>4;c?m.decode(t===k?e.slice(2):e.slice(1),r):h.setCodecAudio(e)},demuxM7s:function(e){const r=new DataView(e),t=r.getUint32(1,!1);1===r.getUint8(0)&&h.decode(new Uint8Array(e,5),{type:1,ts:t})},audioInfo:function(e,r,t){postMessage({cmd:"audioCode",code:e}),postMessage({cmd:"initAudio",sampleRate:r,channels:t}),p=t},pcmData:function(o,i,s){if(h.isDestroyed)h.debug.log("audio worker","pcmData, decoder is destroyed and return");else{let r=i,t=[],e=0,n=h._opt.audioBufferSize;for(let e=0;e<2;e++){var a=u.HEAPU32[(o>>2)+e]>>2;t[e]=u.HEAPF32.subarray(a,a+r)}if(f){if(!(r>=(i=n-f)))return f+=r,l[0]=Float32Array.of(...l[0],...t[0]),void(2==p&&(l[1]=Float32Array.of(...l[1],...t[1])));d[0]=Float32Array.of(...l[0],...t[0].subarray(0,i)),2==p&&(d[1]=Float32Array.of(...l[1],...t[1].subarray(0,i))),postMessage({cmd:w,buffer:d,delay:h.delay,ts:s},d.map(e=>e.buffer)),e=i,r-=i}for(f=r;f>=n;f-=n)d[0]=t[0].slice(e,e+=n),2==p&&(d[1]=t[1].slice(e-n,e)),postMessage({cmd:w,buffer:d,delay:h.delay,ts:s},d.map(e=>e.buffer));f&&(l[0]=t[0].slice(e),2==p&&(l[1]=t[1].slice(e)))}},sendWebsocketMessage:function(e){i?1===i.readyState?i.send(e):h.debug.error("audio worker","socket is not open"):h.debug.error("audio worker","socket is null")},timeEnd:function(){}},m=(h.debug=new D(h),null);u.AudioDecoder&&(m=new u.AudioDecoder(h)),postMessage({cmd:"init"}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case"init":try{h._opt=Object.assign(h._opt,JSON.parse(r.opt))}catch(e){}h.init();break;case"fetchStream":h.fetchStream(r.url,JSON.parse(r.opt));break;case"close":h.close();break;case"updateConfig":h.debug.log("audio worker","updateConfig",r.key,r.value),h._opt[r.key]=r.value;break;case"sendWsMessage":h.sendWebsocketMessage(r.message)}}}Date.now||(Date.now=function(){return(new Date).getTime()}),i.postRun=function(){p(i)}}); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio.js new file mode 100644 index 0000000000000000000000000000000000000000..0596fef5ada748576f778afe115146f04ae95e93 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,s=t(e),n=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,s;(s=e).ready=new Promise(((e,r)=>{t=e,i=r})),(s=void 0!==s?s:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,a,o,d=Object.assign({},s),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return s.locateFile?s.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href)),n=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,s)=>{e?r(e):t(i?s.buffer:s)}))},!s.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),s.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var y,v,b=s.print||console.log.bind(console),w=s.printErr||console.error.bind(console);Object.assign(s,d),d=null,s.arguments&&s.arguments,s.thisProgram&&(l=s.thisProgram),s.quit&&s.quit,s.wasmBinary&&(y=s.wasmBinary),s.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,B,U,x,k,T,C=!1;function D(e,t){e||j(t)}function I(){var e=v.buffer;s.HEAP8=S=new Int8Array(e),s.HEAP16=A=new Int16Array(e),s.HEAPU8=E=new Uint8Array(e),s.HEAPU16=B=new Uint16Array(e),s.HEAP32=U=new Int32Array(e),s.HEAPU32=x=new Uint32Array(e),s.HEAPF32=k=new Float32Array(e),s.HEAPF64=T=new Float64Array(e)}var F=[],P=[],L=[];function M(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)N(s.preRun.shift());se(F)}function R(){s.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,se(P)}function z(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)G(s.postRun.shift());se(L)}function N(e){F.unshift(e)}function O(e){P.unshift(e)}function G(e){L.unshift(e)}var $=0,H=null;function V(e){$++,s.monitorRunDependencies&&s.monitorRunDependencies($)}function W(e){if($--,s.monitorRunDependencies&&s.monitorRunDependencies($),0==$&&H){var t=H;H=null,t()}}function j(e){s.onAbort&&s.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ti};function t(e,t){return ri=e.exports,v=ri.D,I(),Ft=ri.G,O(ri.E),W(),ri}if(V(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}s.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href).href;var se=e=>{for(;e.length>0;)e.shift()(s)};function ne(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){x[this.ptr+4>>2]=e},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(e){x[this.ptr+8>>2]=e},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){x[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){if(di(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var ae=(e,t,r)=>{throw new ne(e).init(t,r),e},oe=e=>(U[si()>>2]=e,e),de={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var s=e[i];"."===s?e.splice(i,1):".."===s?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ue.resolve(e).substr(1),t=ue.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),n=Math.min(i.length,s.length),a=n,o=0;o{for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&he)return he.decode(e.subarray(t,s));for(var n="";t>10,56320|1023&l)}}else n+=String.fromCharCode((31&a)<<6|o)}else n+=String.fromCharCode(a)}return n},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(e,t,r,i)=>{if(!(i>0))return 0;for(var s=r,n=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=n)break;t[r++]=o}else if(o<=2047){if(r+1>=n)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=n)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=n)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-s};function ge(e,t,r){var i=r>0?r:me(e)+1,s=new Array(i),n=_e(e,s,0,s.length);return t&&(s.length=n),s}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var n=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var s=Te.createNode(e,t,r,i);return Te.isDir(s.mode)?(s.node_ops=we.ops_table.dir.node,s.stream_ops=we.ops_table.dir.stream,s.contents={}):Te.isFile(s.mode)?(s.node_ops=we.ops_table.file.node,s.stream_ops=we.ops_table.file.stream,s.usedBytes=0,s.contents=null):Te.isLink(s.mode)?(s.node_ops=we.ops_table.link.node,s.stream_ops=we.ops_table.link.stream):Te.isChrdev(s.mode)&&(s.node_ops=we.ops_table.chrdev.node,s.stream_ops=we.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=Te.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new Te.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,s){var n=e.node.contents;if(s>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-s,i);if(a>8&&n.subarray)t.set(n.subarray(s,s+a),r);else for(var o=0;o0||r+t(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var s=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),s&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),s&&V()},Ee=(e,t,r,i,s,n)=>Te.createDataFile(e,t,r,i,s,n),Ae=s.preloadPlugins||[],Be=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var s=!1;return Ae.forEach((n=>{s||n.canHandle(t)&&(n.handle(e,t,r,i),s=!0)})),s},Ue=(e,t,r,i,s,n,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,s,d),n&&n(),W()}Be(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},xe=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,s="/",n=0;n40)throw new Te.ErrnoError(32)}}return{path:s,node:i}},getPath(e){for(var t;;){if(Te.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),s=Te.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return Te.lookup(e,t)},createNode(e,t,r,i){var s=new Te.FSNode(e,t,r,i);return Te.hashAddNode(s),s},destroyNode(e){Te.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var s=Te.nodePermissions(e,"wx");if(s)return s;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function s(e){return Te.syncFSRequests--,t(e)}function n(e){if(e)return n.errored?void 0:(n.errored=!0,s(e));++i>=r.length&&s(null)}r.forEach((t=>{if(!t.type.syncfs)return n(null);t.type.syncfs(t,e,n)}))},mount(e,t,r){var i,s="/"===r,n=!r;if(s&&Te.root)throw new Te.ErrnoError(10);if(!s&&!n){var a=Te.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?Te.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,s=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&Te.destroyNode(t),t=r}})),r.mounted=null;var n=r.mount.mounts.indexOf(i);r.mount.mounts.splice(n,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=Te.lookupPath(e,{parent:!0}).node,s=de.basename(e);if(!s||"."===s||".."===s)throw new Te.ErrnoError(28);var n=Te.mayCreate(i,s);if(n)throw new Te.ErrnoError(n);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",s=0;s(void 0===r&&(r=t,t=438),t|=8192,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),s=Te.mayCreate(r,i);if(s)throw new Te.ErrnoError(s);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,s=de.dirname(e),n=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,a),c=ue.relative(e,n);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,s)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,o)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,a,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,o,u):Te.mayCreate(i,o))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!0);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!1);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var s;if(!(s="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?xe(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),n=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!n){var a=Te.mayOpen(i,t);if(a)throw new Te.ErrnoError(a)}512&t&&!n&&Te.truncate(i,0),t&=-131713;var o=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),o},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,s){if(i<0||s<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new Te.ErrnoError(70)}else s=e.position;var a=e.stream_ops.read(e,t,r,i,s);return n||(e.position+=a),a},write(e,t,r,i,s,n){if(i<0||s<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new Te.ErrnoError(70)}else s=e.position;var o=e.stream_ops.write(e,t,r,i,s,n);return a||(e.position+=o),o},allocate(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,s){if(0!=(2&i)&&0==(2&s)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,s):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=Te.open(e,t.flags),s=Te.stat(e).size,n=new Uint8Array(s);return Te.read(i,n,0,s,0),"utf8"===t.encoding?r=fe(n,0):"binary"===t.encoding&&(r=n),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(me(t)+1),n=_e(t,s,0,s.length);Te.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams(){s.stdin?Te.createDevice("/dev","stdin",s.stdin):Te.symlink("/dev/tty","/dev/stdin"),s.stdout?Te.createDevice("/dev","stdout",null,s.stdout):Te.symlink("/dev/tty","/dev/stdout"),s.stderr?Te.createDevice("/dev","stderr",null,s.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},n.prototype.setDataGetter=function(e){this.getter=e},n.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),s=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,n=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;s||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,s=(e+1)*a-1;if(s=Math.min(s,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var s=new XMLHttpRequest;if(s.open("GET",r,!1),i!==a&&s.setRequestHeader("Range","bytes="+e+"-"+t),s.responseType="arraybuffer",s.overrideMimeType&&s.overrideMimeType("text/plain; charset=x-user-defined"),s.send(null),!(s.status>=200&&s.status<300||304===s.status))throw new Error("Couldn't load "+r+". Status: "+s.status);return void 0!==s.response?new Uint8Array(s.response||[]):ge(s.responseText||"",!0)})(t,s)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!n&&i||(a=i=1,i=this.getter(0).length,a=i,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new n;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=Te.createFile(e,t,o,i,s);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,s){var n=e.node.contents;if(s>=n.length)return 0;var a=Math.min(n.length-s,i);if(n.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(Te.forceLoadFile(d),c(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{Te.forceLoadFile(d);var n=be();if(!n)throw new Te.ErrnoError(48);return c(e,S,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,x[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var s=i.atime.getTime(),n=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],x[r+48>>2]=s%1e3*1e3,K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],x[r+64>>2]=n%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],x[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,s){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var n=E.slice(e,e+r);Te.msync(t,n,s,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Ie(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((s=De.get())<0)return-28;for(;Te.streams[s];)s++;return Te.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=De.get();return i.flags|=s,0;case 5:return s=De.getp(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var s=i?De.get():0;return Te.open(t,r,s).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Pe,Le,Me,Re=(e,t,r,i,s)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Pe=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Pe[E[r++]];return t},Oe={},Ge={},$e={},He=e=>{throw new Le(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var s=0;s{Ge.hasOwnProperty(e)?s[t]=Ge[e]:(n.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{s[t]=Ge[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Ge[e]=t,delete $e[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},it=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)},st={},nt=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{s.getInheritedInstanceCount=nt,s.getLiveInheritedInstances=at,s.flushPendingDeletes=dt,s.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function s(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=st[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)s=i.upcast(s),i=i.baseClass;return t===i&&r===s},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=48,bt=57,wt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=vt&&t<=bt?`_${e}`:e};function St(e,t){return{[e=wt(e)]:function(){return t.apply(this,arguments)}}[e]}var Et=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},At=(e,t,r)=>{s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),Et(s,e,e),s.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))};function Bt(e,t,r,i,s,n,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=s,this.getActualType=n,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function xt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var s=t.clone();r=this.rawShare(r,sr.toHandle((()=>s.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(x[e>>2])}var Dt=()=>{Object.assign(It.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function It(e,t,r,i,s,n,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=s,this.pointeeType=n,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,s||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,Pt,Lt=(e,t,r)=>{s.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)},Mt=(e,t,r)=>{var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Ot=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Gt=(e,t)=>{var r=(e=Ne(e)).includes("j")?Ot(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},$t=(e,t)=>{var r=St(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Ht=e=>{var t=ni(e),r=Ne(t);return ii(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||($e[t]?$e[t].forEach(e):(r.push(t),i[t]=!0))})),new Pt(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,s,n,a,o,d,l,c,u,h)=>{c=Ne(c),n=Gt(s,n),o&&(o=Gt(a,o)),l&&(l=Gt(d,l)),h=Gt(u,h);var f=wt(c);At(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=St(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Le("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Le(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Le(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var u=new Bt(c,a,d,h,r,n,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new It(c,u,!0,!1,!1),m=new It(c+"*",u,!1,!1,!1),_=new It(c+" const*",u,!1,!0,!1);return st[e]={pointerType:m,constPointerType:_},Lt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Yt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=St(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function Kt(e,t,r,i,s,n){var a=t.length;a<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||n?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);s=Gt(i,s),We([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Le(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,s,n),[]))),[]}))},Zt=(e,t,r,i,s,n,a,o,d)=>{var l=jt(r,i);t=Ne(t),n=Gt(s,n),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function s(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(s.argCount=r-2,s.className=e.name,c[t]=s):(Et(c,t,i),c[t].overloadTable[r-2]=s),We([],l,(function(s){var o=Kt(i,s,e,n,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Jt(){Object.assign(Qt.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Qt(){this.allocated=[void 0],this.freelist=[]}var er=new Qt,tr=e=>{e>=er.reserved&&0==--er.get(e).refcount&&er.free(e)},rr=()=>{for(var e=0,t=er.reserved;t{er.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),er.reserved=er.allocated.length,s.count_emval_handles=rr},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),er.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return er.allocate({refcount:1,value:e})}}};function nr(e){return this.fromWireType(U[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return tr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:nr,destructorFunction:null})},or=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},dr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},lr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:dr(t,r),destructorFunction:null})},cr=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>B[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ur=(e,t,r,i,s)=>{t=Ne(t);var n=e=>e;if(0===i){var a=32-8*r;n=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:n,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:cr(t,r,0!==i),destructorFunction:null})},hr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=x[e>>2],r=x[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:s,argPackAdvance:Ke,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},fr=(e,t,r)=>_e(e,E,t,r),pr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=x[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==E[o]){var d=Ce(n,o-n);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),n=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&s)fr(t,a,i+1);else if(s)for(var o=0;o255&&(ii(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&mr)return mr.decode(E.subarray(e,r));for(var n="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;n+=String.fromCharCode(o)}return n},gr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,s=(r-=2)<2*e.length?r/2:e.length,n=0;n>1]=a,t+=2}return A[t>>1]=0,t-i},yr=e=>2*e.length,vr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var s=U[e+4*r>>2];if(0==s)break;if(++r,s>=65536){var n=s-65536;i+=String.fromCharCode(55296|n>>10,56320|1023&n)}else i+=String.fromCharCode(s)}return i},br=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,s=i+r-4,n=0;n=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++n)),U[t>>2]=a,(t+=4)+4>s)break}return U[t>>2]=0,t-i},wr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Sr=(e,t,r)=>{var i,s,n,a,o;r=Ne(r),2===t?(i=_r,s=gr,a=yr,n=()=>B,o=1):4===t&&(i=vr,s=br,a=wr,n=()=>x,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,s=x[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var c=e+4+l*t;if(l==s||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ii(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var n=a(i),d=oi(4+n+t);return x[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(ii,d),d},argPackAdvance:Ke,readValueFromPointer:nr,destructorFunction(e){ii(e)}})},Er=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ar={},Br=e=>{var t=Ar[e];return void 0===t?Ne(e):t},Ur=[],xr=(e,t,r,i)=>{(e=Ur[e])(t=sr.toValue(t),r=Br(r),null,i)},kr=e=>{var t=Ur.length;return Ur.push(e),t},Tr=(e,t)=>{var r=Ge[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Cr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Dr={},Ir=(e,t)=>{var r=Cr(e,t),i=r[0],s=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",n=Dr[s];if(void 0!==n)return n;for(var a=["retType"],o=[i],d="",l=0;lt+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Pr=()=>{j("")},Lr=()=>Date.now(),Mr=(e,t,r)=>E.copyWithin(e,t,t+r),Rr=e=>{j("OOM")},zr=e=>{E.length,Rr()},Nr={},Or=()=>l||"./this.program",Gr=()=>{if(!Gr.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:Or()};for(var t in Nr)void 0===Nr[t]?delete e[t]:e[t]=Nr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Gr.strings=r}return Gr.strings},$r=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Hr=(e,t)=>{var r=0;return Gr().forEach(((i,s)=>{var n=t+r;x[e+4*s>>2]=n,$r(i,n),r+=i.length+1})),0},Vr=(e,t)=>{var r=Gr();x[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),x[t>>2]=i,0};function Wr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function jr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var qr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.read(e,S,a,o,i);if(d<0)return-1;if(s+=d,d>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Kr(e,t,r,i,s){var n=Fr(t,r);try{if(isNaN(n))return 61;var a=De.getStreamFromFD(e);return Te.llseek(a,n,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[s>>2]=K[0],U[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Xr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.write(e,S,a,o,i);if(d<0)return-1;s+=d,void 0!==i&&(i+=d)}return s};function Zr(e,t,r,i){try{var s=De.getStreamFromFD(e),n=Xr(s,t,r);return x[i>>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Qr=365,ei=146;Object.defineProperties(Jr.prototype,{read:{get:function(){return(this.mode&Qr)===Qr},set:function(e){e?this.mode|=Qr:this.mode&=~Qr}},write:{get:function(){return(this.mode&ei)===ei},set:function(e){e?this.mode|=ei:this.mode&=~ei}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=Jr,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Le=s.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=s.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Pt=s.UnboundTypeError=$t(Error,"UnboundTypeError"),Jt(),ir();var ti={p:ae,B:Ie,v:Fe,t:Re,n:Xe,r:Wt,q:Xt,f:Zt,C:ar,m:lr,c:ur,b:hr,l:pr,h:Sr,o:Er,d:xr,i:tr,e:Ir,a:Pr,g:Lr,z:Mr,u:zr,x:Hr,y:Vr,k:Wr,w:jr,A:Yr,s:Kr,j:Zr},ri=ie(),ii=e=>(ii=ri.F)(e),si=()=>(si=ri.H)(),ni=e=>(ni=ri.I)(e);s.__embind_initialize_bindings=()=>(s.__embind_initialize_bindings=ri.J)();var ai,oi=e=>(oi=ri.K)(e),di=e=>(di=ri.M)(e);function li(){function e(){ai||(ai=!0,s.calledRun=!0,C||(R(),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),z()))}$>0||(M(),$>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),e()}),1)):e()))}if(s.dynCall_viiijj=(e,t,r,i,n,a,o,d)=>(s.dynCall_viiijj=ri.N)(e,t,r,i,n,a,o,d),s.dynCall_jij=(e,t,r,i)=>(s.dynCall_jij=ri.O)(e,t,r,i),s.dynCall_jii=(e,t,r)=>(s.dynCall_jii=ri.P)(e,t,r),s.dynCall_jiji=(e,t,r,i,n)=>(s.dynCall_jiji=ri.Q)(e,t,r,i,n),H=function e(){ai||li(),ai||(H=e)},s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return li(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function l(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var c,u=function(e,t,r,i,s,n,a){var o=1/(t-r),d=1/(i-s),l=1/(n-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(s+i)*d,e[14]=(a+n)*l,e[15]=1,e};function h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},s=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const s=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,s);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:s}}(),n=p(),o=p(),c=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const n=d();u(n,-1,1,-1,1,.1,100);const p=d();l(p);const m=d();!function(e,t,r,i){var s,n,o,d,c,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),s=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],$t=Gt,Ht=Gt;function Vt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Wt(e){return jt(e)&&e[1]===Bt}function jt(e){return e[0]>>4===ze}const qt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Yt(e){let t=new Uint8Array(e),r=null,i=0,s=0,n=0,a=null;if(i=s=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,n<0||n>=qt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=qt[n],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?n>=6?(i=5,r=new Array(4),a=n-3):(i=2,r=new Array(2),a=n):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=n):(i=5,a=n,r=new Array(4),n>=6?a=n-3:1===d&&(i=2,r=new Array(2),a=n)),r[0]=i<<3,r[0]|=(15&n)>>>1,r[1]=(15&n)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+s}}class Kt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,s=(6&e[r+1])>>>1,n=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===n?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==s)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=$t[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(31&t[i+1])<<8|t[i+2];if(i+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let n=new Ot(t.subarray(i+3,i+3+s)),a=null;if(n.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+s),n.destroy();continue}a=e}else{let e=n.readBool();if(e&&n.readBool()){console.error("audioMuxVersionA is Not Supported"),n.destroy();break}if(e&&this.getLATMValue(n),!n.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),n.destroy();break}if(0!==n.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),n.destroy();break}if(0!==n.readBits(4)){console.error("more than 2 numProgram Not Supported"),n.destroy();break}if(0!==n.readBits(3)){console.error("more than 2 numLayer Not Supported"),n.destroy();break}let t=e?this.getLATMValue(n):0,r=n.readBits(5);t-=5;let i=n.readBits(4);t-=4;let s=n.readBits(4);t-=4,n.readBits(3),t-=3,t>0&&n.readBits(t);let o=n.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),n.destroy();break}n.readByte();let d=n.readBool();if(d)if(e)this.getLATMValue(n);else{let e=0;for(;;){e<<=8;let t=n.readBool();if(e+=n.readByte(),!t)break}console.log(e)}n.readBool()&&n.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=$t[a.sampling_freq_index],a.channel_config=s,a.other_data_present=d}let o=0;for(;;){let e=n.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Jt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let s,n=0;for(;n+t>>=8),n+=t,s){if(n+s>r)break;i.push(e.subarray(n,n+s)),n+=s}return i}function Qt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function er(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function tr(){return(new Date).getTime()}function rr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function ir(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=ir();return i=>{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=ir(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function nr(e){return null==e}function ar(e){return!nr(e)}function or(e){return"function"==typeof e}function dr(e){let t=null,r=31&e[0];return r!==$e&&r!==He||(t=Me),t||(r=(126&e[0])>>1,r!==it&&r!==nt&&r!==ot||(t=Re)),t}function lr(){return"undefined"!=typeof WritableStream}function cr(e){e.close()}function ur(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,s=2)}if(r)for(let n=s;n=1e3){e[n-1].ts-r.ts<1e3&&(i=n+1)}}}return i}function hr(e){return e.ok&&e.status>=200&&e.status<=299}function fr(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(U)}function pr(e){return e[0]>>4===Ut&&e[1]===Bt}function mr(e){return!0===e||"true"===e}function _r(e){return!0!==e&&"true"!==e}function gr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}function yr(e,t){const r=Jt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Ze||r===Qe||r===tt)||_r(t)&&r===Ve)&&(i=!0)})),i}var vr=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{d(i.next(e))}catch(e){n(e)}}function o(e){try{d(i.throw(e))}catch(e){n(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const br=Symbol(32),wr=Symbol(16),Sr=Symbol(8);class Er{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return vr(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(br)}readU16(){return this.read(wr)}readU8(){return this.read(Sr)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===br){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===wr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Sr){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Er.U32=br,Er.U16=wr,Er.U8=Sr;class Ar{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==w){const n=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s1?r-1:0),s=1;s1?i-1:0),n=1;n=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)}static parseSPS(e){let t=Br._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=Br.getProfileString(i),a=Br.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,B=2*e,S=A/B}}let U=1;1===b&&1===w||(U=b/w);let x=0,k=0;if(0===o)x=1,k=2-m;else{x=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*x,C-=(y+v)*k;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Br.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Br._ebsp2rbsp(e),s=new Ot(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=Br.getProfileString(n),d=Br.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(c=u[l]),h=s.readUEG()+8,f=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),A=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);U=s.readBool(),x=t,k=2*e,B=x/k}}let T=1;1===E&&1===A||(T=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let I=16*(_+1),F=16*(g+1)*(2-y);I-=(v+b)*C,F-=(w+S)*D;let P=Math.ceil(I*T);return s.destroy(),s=null,{codec_mimetype:r,profile_idc:n,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Br.getChromaFormatString(c),frame_rate:{fixed:U,fps:B,fps_den:k,fps_num:x},sar_ratio:{width:E,height:A},codec_size:{width:I,height:F},present_size:{width:P,height:F}}}static _skipScalingList(e,t){let r=8,i=8,s=0;for(let n=0;n=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function kr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Tr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,s=!1;const n=Br.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,s&&(a[d]=252|n.chroma_format_idc,a[d+1]=248|n.bit_depth_luma-8,a[d+2]=248|n.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Cr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e){return 31&e[0]}function Fr(e){return e===qe}function Pr(e){return!function(e){return e===$e||e===He}(e)&&!Fr(e)}function Lr(e){return e===Ve}function Mr(e){if(0===e.length)return!1;const t=Ir(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,i>=Xe||0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class zr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Nr=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)},Or=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Gr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)}static parseVPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,s=0,n=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let s=0;s<=o;s++){let s=r.readBool();M=s;let n=!0,a=1;s||(n=r.readBool());let o=!1;if(n?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],s=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=Nr(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=Nr(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,s=0,n=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let s=0;s<=o;s++){let s=r.readBool();M=s;let n=!1,a=1;s||(n=r.readBool());let o=!1;if(n?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Nr(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),s=r.readBool(),n=1;return s&&i?n=0:s?n=3:i&&(n=2),{parallelismType:n}})(r);s=Object.assign(s,n,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|it,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|nt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ot,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function jr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e){return(126&e[0])>>1}function Kr(e){return e===lt}function Xr(e){return!function(e){return e>=32&&e<=40}(e)}function Zr(e){return e>=16&&e<=21}function Jr(e){if(0===e.length)return!1;const t=Yr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class ei{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ti(e){return parseInt(e)===e}function ri(e){if(!ti(e.length))return!1;for(var t=0;t255)return!1;return!0}function ii(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ri(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ti(e.length)&&ri(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ni(e,t,r,i,s){null==i&&null==s||(e=e.slice?e.slice(i,s):Array.prototype.slice.call(e,i,s)),t.set(e,r)}var ai,oi={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},di=(ai="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ai[15&i])}return t.join("")}}),li={16:10,24:12,32:14},ci=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],ui=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],hi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],fi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],pi=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],mi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],_i=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],gi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],yi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],vi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],bi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],wi=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Si=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ei=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Ai=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Bi(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=n[t],this._Kd[e-r][t%4]=n[t];for(var a,o=0,d=s;d>16&255]<<24^ui[a>>8&255]<<16^ui[255&a]<<8^ui[a>>24&255]^ci[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^ui[a>>16&255]<<16^ui[a>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=n[t],this._Kd[e-l][c]=n[t++],d++}for(var l=1;l>24&255]^Si[a>>16&255]^Ei[a>>8&255]^Ai[255&a]},Ui.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Bi(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^pi[i[(s+1)%4]>>16&255]^mi[i[(s+2)%4]>>8&255]^_i[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=si(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(ui[i[s]>>24&255]^a>>24),o[4*s+1]=255&(ui[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(ui[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(ui[255&i[(s+3)%4]]^a);return o},Ui.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Bi(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^yi[i[(s+3)%4]>>16&255]^vi[i[(s+2)%4]>>8&255]^bi[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=si(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(hi[i[s]>>24&255]^a>>24),o[4*s+1]=255&(hi[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(hi[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(hi[255&i[(s+1)%4]]^a);return o};var xi=function(e){if(!(this instanceof xi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ui(e)};xi.prototype.encrypt=function(e){if((e=ii(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Di.prototype.setBytes=function(e){if(16!=(e=ii(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Di.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ii=function(e,t){if(!(this instanceof Ii))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Di||(t=new Di(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ui(e)};Ii.prototype.encrypt=function(e){for(var t=ii(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-s%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,s=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,n);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=s(e.charCodeAt(n)<<16-n%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var s=[],n=0,a=0;a>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var s=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(t[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|t[n+2>>>2]>>>24-(n+2)%4*8&255,o=0;o<4&&n+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var n=0;n>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var n=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;n.length%4;)n.push(l);return n.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,s=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(s<<24|s>>>8)}var n=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],U=e[t+15],x=n[0],k=n[1],T=n[2],C=n[3];x=l(x,k,T,C,a,7,o[0]),C=l(C,x,k,T,d,12,o[1]),T=l(T,C,x,k,f,17,o[2]),k=l(k,T,C,x,p,22,o[3]),x=l(x,k,T,C,m,7,o[4]),C=l(C,x,k,T,_,12,o[5]),T=l(T,C,x,k,g,17,o[6]),k=l(k,T,C,x,y,22,o[7]),x=l(x,k,T,C,v,7,o[8]),C=l(C,x,k,T,b,12,o[9]),T=l(T,C,x,k,w,17,o[10]),k=l(k,T,C,x,S,22,o[11]),x=l(x,k,T,C,E,7,o[12]),C=l(C,x,k,T,A,12,o[13]),T=l(T,C,x,k,B,17,o[14]),x=c(x,k=l(k,T,C,x,U,22,o[15]),T,C,d,5,o[16]),C=c(C,x,k,T,g,9,o[17]),T=c(T,C,x,k,S,14,o[18]),k=c(k,T,C,x,a,20,o[19]),x=c(x,k,T,C,_,5,o[20]),C=c(C,x,k,T,w,9,o[21]),T=c(T,C,x,k,U,14,o[22]),k=c(k,T,C,x,m,20,o[23]),x=c(x,k,T,C,b,5,o[24]),C=c(C,x,k,T,B,9,o[25]),T=c(T,C,x,k,p,14,o[26]),k=c(k,T,C,x,v,20,o[27]),x=c(x,k,T,C,A,5,o[28]),C=c(C,x,k,T,f,9,o[29]),T=c(T,C,x,k,y,14,o[30]),x=u(x,k=c(k,T,C,x,E,20,o[31]),T,C,_,4,o[32]),C=u(C,x,k,T,v,11,o[33]),T=u(T,C,x,k,S,16,o[34]),k=u(k,T,C,x,B,23,o[35]),x=u(x,k,T,C,d,4,o[36]),C=u(C,x,k,T,m,11,o[37]),T=u(T,C,x,k,y,16,o[38]),k=u(k,T,C,x,w,23,o[39]),x=u(x,k,T,C,A,4,o[40]),C=u(C,x,k,T,a,11,o[41]),T=u(T,C,x,k,p,16,o[42]),k=u(k,T,C,x,g,23,o[43]),x=u(x,k,T,C,b,4,o[44]),C=u(C,x,k,T,E,11,o[45]),T=u(T,C,x,k,U,16,o[46]),x=h(x,k=u(k,T,C,x,f,23,o[47]),T,C,a,6,o[48]),C=h(C,x,k,T,y,10,o[49]),T=h(T,C,x,k,B,15,o[50]),k=h(k,T,C,x,_,21,o[51]),x=h(x,k,T,C,E,6,o[52]),C=h(C,x,k,T,p,10,o[53]),T=h(T,C,x,k,w,15,o[54]),k=h(k,T,C,x,d,21,o[55]),x=h(x,k,T,C,v,6,o[56]),C=h(C,x,k,T,U,10,o[57]),T=h(T,C,x,k,g,15,o[58]),k=h(k,T,C,x,A,21,o[59]),x=h(x,k,T,C,m,6,o[60]),C=h(C,x,k,T,S,10,o[61]),T=h(T,C,x,k,f,15,o[62]),k=h(k,T,C,x,b,21,o[63]),n[0]=n[0]+x|0,n[1]=n[1]+k|0,n[2]=n[2]+T|0,n[3]=n[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;r[s>>>5]|=128<<24-s%32;var n=e.floor(i/4294967296),a=i;r[15+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),r[14+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,s,n,a){var o=e+(t&r|~t&i)+s+a;return(o<>>32-n)+t}function c(e,t,r,i,s,n,a){var o=e+(t&i|r&~i)+s+a;return(o<>>32-n)+t}function u(e,t,r,i,s,n,a){var o=e+(t^r^i)+s+a;return(o<>>32-n)+t}function h(e,t,r,i,s,n,a){var o=e+(r^(t|~i))+s+a;return(o<>>32-n)+t}t.MD5=n._createHelper(d),t.HmacMD5=n._createHmacHelper(d)}(Math),r.MD5)})),Nt((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=Pi).lib,s=i.WordArray,n=i.Hasher,a=r.algo,o=[],d=a.SHA1=n.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(s&n|~s&a):l<40?1859775393+(s^n^a):l<60?(s&n|s&a|n&a)-1894007588:(s^n^a)-899497514,d=a,a=n,n=s<<30|s>>>2,s=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=n._createHelper(d),r.HmacSHA1=n._createHmacHelper(d),l.SHA1)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,s=0;s<64;)t(i)&&(s<8&&(o[s]=r(e.pow(i,.5))),d[s]=r(e.pow(i,1/3)),s++),i++}();var l=[],c=a.SHA256=n.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&s^i&n^s&n,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=n,n=s,s=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;return r[s>>>5]|=128<<24-s%32,r[14+(s+64>>>9<<4)]=e.floor(i/4294967296),r[15+(s+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=n._createHelper(c),t.HmacSHA256=n._createHmacHelper(c)}(Math),r.SHA256)})),Nt((function(e,t){var r,i,s,n,a,o;e.exports=(i=(r=o=Pi).lib.WordArray,s=r.algo,n=s.SHA256,a=s.SHA224=n.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=n._createHelper(a),r.HmacSHA224=n._createHmacHelper(a),o.SHA224)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.Hasher,i=e.x64,s=i.Word,n=i.WordArray,a=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new n.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=s.high,_=s.low,g=n.high,y=n.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,U=u.low,x=h.high,k=h.low,T=f,C=p,D=m,I=_,F=g,P=y,L=v,M=b,R=w,z=S,N=E,O=A,G=B,$=U,H=x,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,se=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ne=l[W-7],ae=ne.high,oe=ne.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=se)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&$,pe=T&D^T&F^D&F,me=C&I^C&P^I&P,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=F,M=P,F=D,P=I,D=T,I=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=s.low=_+I,s.high=m+D+(_>>>0>>0?1:0),y=n.low=y+P,n.high=g+F+(y>>>0

          >>0?1:0),b=a.low=b+M,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),U=u.low=U+$,u.high=B+G+(U>>>0<$>>>0?1:0),k=h.low=k+V,h.high=x+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Nt((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=Pi).x64,s=i.Word,n=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,n=0;n<24;n++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(n<<24|n>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(k=r[s]).high^=a,k.low^=n}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var U=u[0],x=r[0];for(U.high=x.high,U.low=x.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var I=c[o];k.high^=I.high,k.low^=I.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,n=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/n)*n>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=n.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=n._createHelper(h),t.HmacSHA3=n._createHmacHelper(h)}(Math),r.SHA3)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=n.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,s=e[i];e[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var n,a,f,b,w,S,E,A,B,U,x,k=this._hash.words,T=u.words,C=h.words,D=o.words,I=d.words,F=l.words,P=c.words;for(S=n=k[0],E=a=k[1],A=f=k[2],B=b=k[3],U=w=k[4],r=0;r<80;r+=1)x=n+e[t+D[r]]|0,x+=r<16?p(a,f,b)+T[0]:r<32?m(a,f,b)+T[1]:r<48?_(a,f,b)+T[2]:r<64?g(a,f,b)+T[3]:y(a,f,b)+T[4],x=(x=v(x|=0,F[r]))+w|0,n=w,w=b,b=v(f,10),f=a,a=x,x=S+e[t+I[r]]|0,x+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],x=(x=v(x|=0,P[r]))+U|0,S=U,U=B,B=v(A,10),A=E,E=x;x=k[1]+f+B|0,k[1]=k[2]+b+U|0,k[2]=k[3]+w+S|0,k[3]=k[4]+n+E|0,k[4]=k[0]+a+A|0,k[0]=x},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,n=s.words,a=0;a<5;a++){var o=n[a];n[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=n._createHelper(f),t.HmacRIPEMD160=n._createHmacHelper(f)}(),r.RIPEMD160)})),Nt((function(e,t){var r,i,s;e.exports=(i=(r=Pi).lib.Base,s=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),a=this._iKey=t.clone(),o=n.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=s.extend({cfg:s.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var s=e.createEncryptor(r,i),n=s.finalize(t),a=s.cfg;return m.create({ciphertext:n,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,s){if(i||(i=n.random(8)),s)a=l.create({keySize:t+r,hasher:s}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=n.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var s=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=s.iv;var n=g.encrypt.call(this,e,t,s.key,i);return n.mixIn(s),n},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var s=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=s.iv,g.decrypt.call(this,e,t,s.key,i)}})}())})),Nt((function(e,t){var r;e.exports=((r=Pi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var s,n=this._iv;n?(s=n.slice(0),this._iv=void 0):s=this._prevBlock,i.encryptBlock(s,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,s=r.blockSize,n=this._iv,a=this._counter;n&&(a=this._counter=n.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-n%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.Iso10126={pad:function(e,t){var i=4*t,s=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(s-1)).concat(r.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,s=[],n=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,s[r]=p,n[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),n=this._keySchedule=[],a=0;a6&&a%r==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[a/r|0]<<24),n[a]=n[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,s)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,n),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,s,n,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^s[c>>>16&255]^n[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^s[u>>>16&255]^n[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^s[h>>>16&255]^n[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^s[l>>>16&255]^n[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib,i=t.WordArray,s=t.BlockCipher,n=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=n.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var s=this._subKeys=[],n=0;n<16;n++){var l=s[n]=[],c=d[n];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=s[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var s=r[i],n=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^s[d])&c[d])>>>0];this._lBlock=a,this._rBlock=n^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),r.TripleDES)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],s=0;s<256;s++)i[s]=s;s=0;for(var n=0;s<256;s++){var a=s%r,o=t[a>>>2]>>>24-a%4*8&255;n=(n+i[s]+o)%256;var d=i[s];i[s]=i[n],i[n]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var e=this._S,t=this._i,r=this._j,i=0,s=0;s<4;s++){r=(r+e[t=(t+1)%256])%256;var n=e[t];e[t]=e[r],e[r]=n,i|=e[(e[t]+e[r])%256]<<24-8*s}return this._i=t,this._j=r,i}e.RC4=t._createHelper(s);var a=i.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)n.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)i[s]^=r[s+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const s=16,n=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,s=t>>8&255,n=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][s],a+=e.sbox[3][n],a}function l(e,t,r){let i,n=t,a=r;for(let t=0;t1;--t)n^=e.pbox[t],a=d(e,n)^a,i=n,n=a,a=i;return i=n,n=a,a=i,a^=e.pbox[1],n^=e.pbox[0],{left:n,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(n+4+2,n+4+a);let s=new Fi.ModeOfOperation.ctr(t,new Fi.Counter(r));const o=s.decrypt(i);s=null,e.set(o,n+4+2)}n=n+4+a}return e}function Ri(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new Fi.ModeOfOperation.ctr(t,new Fi.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}Nt((function(e,t){e.exports=Pi}));var zi=Nt((function(e,t){var r,s,n,a=(r=new Date,s=4,n={setLogLevel:function(e){s=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=s&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rs;i--,s++){var n=t[s];t[s]=t[i],t[i]=n}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,s,n,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=n.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+s+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,s=null,n=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,s=void 0!==e?e:this.bufferIndex;if(r=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[n]?i=new h.UUIDBoxes[n](l):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(i=new h.Box(c,l)).uuid=n,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(s=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=s>>1&31,i.bsmod=(1&s)<<4|n>>4&15,i.acmod=n>>1&7,i.lfeon=1&n,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),s=Math.min(127&i,r.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[s]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var n=e.readUint8();for(t=0;t>7,a.nalu_type=63&s;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&n)<<8|e.readUint8():a.property_index=127&n}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&s,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&s,i.subsegment_duration=e.readUint32(),s=e.readUint32(),i.starts_with_SAP=s>>31&1,i.SAP_type=s>>28&7,i.SAP_delta_time=268435455&s}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,n="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(n="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+n,s=!0);t+=n}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,s=[],n=0;for(n|=this.vvcC.ptl_frame_only_constraint<<7,n|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(n),n&&(i=e),n=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|s[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=i,i.nextSample=0,s.nb_samples=1e3,s.samples=[],r&&r.nbSamples&&(s.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,s,n,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var n=s.lastValidSample;ne*s.timescale){l=i-1;break}t&&s.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return n=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),n.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),n.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),n.addBox(f)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),n.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)n.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&n.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){n.addBox(e)})),s.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(n),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},s={},n=this.getTrackById(e);if(null!==n){s.number=n.samples.length,s.track_id=n.tkhd.track_id,s.timescale=n.mdia.mdhd.timescale,s.description_index=i.sample_description_index?i.sample_description_index-1:0,s.description=n.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=i.duration||1,s.cts=i.cts||0,s.dts=i.dts||0,s.is_sync=i.is_sync||!1,s.is_leading=i.is_leading||0,s.depends_on=i.depends_on||0,s.is_depended_on=i.is_depended_on||0,s.has_redundancy=i.has_redundancy||0,s.degradation_priority=i.degradation_priority||0,s.offset=0,s.subsamples=i.subsamples,n.samples.push(s),n.samples_size+=s.size,n.samples_duration+=s.duration,void 0===n.first_dts&&(n.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(s);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),s}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),s=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,s,n;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=s[a].grouping_type+"/0",(o=new l(s[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var s,n;for(s in t.sample_groups=[],i){var a;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=i[s].grouping_type,t.sample_groups[s].grouping_type_parameter=i[s].grouping_type_parameter,r>=i[s].last_sample_in_run&&(i[s].last_sample_in_run<0&&(i[s].last_sample_in_run=0),i[s].entry_index++,i[s].entry_index<=i[s].sbgp.entries.length-1&&(i[s].last_sample_in_run+=i[s].sbgp.entries[i[s].entry_index].sample_count)),i[s].entry_index<=i[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=i[s].sbgp.entries[i[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)a=i[s].fragment_description?i[s].fragment_description:i[s].description,t.sample_groups[s].group_description_index>0?(n=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,a&&n>=0&&(t.sample_groups[s].description=a.entries[n])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[s].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=n.sample_counts[b]),t>0?(e.samples[t-1].duration=n.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),U.cts=e.samples[t].dts+a.sample_offsets[S]):U.cts=U.dts,o?(t==o.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var n=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=n)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+n+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,n),i.alreadyRead+=n,r.usedBytes+=n,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=n.ipro.protections[n.iinf.item_infos[e].protection_index-1]),n.iinf.item_infos[e].item_type?r.type=n.iinf.item_infos[e].item_type:r.type="mime",r.content_type=n.iinf.item_infos[e].content_type,r.content_encoding=n.iinf.item_infos[e].content_encoding;if(n.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Ni(e){return e.reduce(((e,t)=>256*e+t))}function Oi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}zi.Log,zi.MP4BoxStream,zi.DataStream,zi.MultiBufferStream,zi.MPEG4DescriptorParser,zi.BoxParser,zi.XMLSubtitlein4Parser,zi.Textin4Parser,zi.ISOFile,zi.createFile;class Gi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Oi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}function $i(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Hi=16,Vi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Wi=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function ji(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Yi(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Ki(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Xi(e,t){const r=31&t;return e<>>32-r}function Zi(e){return(255&Vi[e>>>24&255])<<24|(255&Vi[e>>>16&255])<<16|(255&Vi[e>>>8&255])<<8|255&Vi[255&e]}function Ji(e){return e^Xi(e,2)^Xi(e,10)^Xi(e,18)^Xi(e,24)}function Qi(e){return e^Xi(e,13)^Xi(e,23)}function es(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Ji(Zi(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Ji(Zi(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Ji(Zi(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Ji(Zi(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function ts(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Wi[r+0],t[r+0]=i[0]^=Qi(Zi(e)),e=i[2]^i[3]^i[0]^Wi[r+1],t[r+1]=i[1]^=Qi(Zi(e)),e=i[3]^i[0]^i[1]^Wi[r+2],t[r+2]=i[2]^=Qi(Zi(e)),e=i[0]^i[1]^i[2]^Wi[r+3],t[r+3]=i[3]^=Qi(Zi(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function rs(e,t,r){let{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof n&&(n=ji(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=ji(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Yi(e):ji(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Hi-e.length%Hi;for(let r=0;r=Hi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=new Uint8Array(e.slice(0,5)),a=5;for(;as){const t=new Uint8Array(n.length+e.length-a);t.set(n,0),t.set(e.slice(a),n.length),n=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=rs(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const s=new Uint8Array(u);s.set(e.slice(a+4,a+4+u),0);const o=Qt($i(s,new Uint8Array(r))),l=new Uint8Array(n.length+o.length);l.set(n,0),l.set(o,n.length),n=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(n.length+4+t.length);r.set(n,0),r.set(o,n.length),r.set(t,n.length+4),n=r}a=a+4+d}return n}const ns={init:0,findFirstStartCode:1,findSecondStartCode:2};class as extends class{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function s(){i.off(e,s);for(var n=arguments.length,a=new Array(n),o=0;o1?r-1:0),s=1;s{delete r[e]})),void delete this.e;const i=r[e],s=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=ns.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ns.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=ns.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ns.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=ns.findFirstStartCode}}}}function os(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=os(e.slice(n+4,n+4+a),t,r);e.set(i,n+4)}n=n+4+a}return e}function cs(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let s=0;return t.forEach((e=>{i.set(e,s),s+=e.byteLength})),i}class us{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const s=()=>{or(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class hs{static init(){hs.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in hs.types)hs.types.hasOwnProperty(e)&&(hs.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=hs.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),s=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let n=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return hs.box(hs.types.trak,hs.tkhd(e),hs.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return hs.box(hs.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return hs.box(hs.types.mdia,hs.mdhd(e),hs.hdlr(e),hs.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return hs.box(hs.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?hs.constants.HDLR_AUDIO:hs.constants.HDLR_VIDEO,hs.box(hs.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?hs.box(hs.types.smhd,hs.constants.SMHD):hs.box(hs.types.vmhd,hs.constants.VMHD),hs.box(hs.types.minf,t,hs.dinf(),hs.stbl(e))}static dinf(){return hs.box(hs.types.dinf,hs.box(hs.types.dref,hs.constants.DREF))}static stbl(e){return hs.box(hs.types.stbl,hs.stsd(e),hs.box(hs.types.stts,hs.constants.STTS),hs.box(hs.types.stsc,hs.constants.STSC),hs.box(hs.types.stsz,hs.constants.STSZ),hs.box(hs.types.stco,hs.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.mp3(e)):hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.mp4a(e)):"avc"===e.videoType?hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.avc1(e)):hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return hs.box(hs.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return hs.box(hs.types.mp4a,i,hs.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return hs.box(hs.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return hs.box(hs.types.avc1,s,hs.box(hs.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return hs.box(hs.types.hvc1,s,hs.box(hs.types.hvcC,t))}static mvex(e){return hs.box(hs.types.mvex,hs.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return hs.box(hs.types.trex,r)}static moof(e,t){return hs.box(hs.types.moof,hs.mfhd(e.sequenceNumber),hs.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return hs.box(hs.types.mfhd,t)}static traf(e,t){let r=e.id,i=hs.box(hs.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=hs.box(hs.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=hs.sdtp(e),a=hs.trun(e,n.byteLength+16+16+8+16+8+8);return hs.box(hs.types.traf,i,s,a,n)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,hs.box(hs.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,s=e.size,n=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,s>>>24&255,s>>>16&255,s>>>8&255,255&s,n.isLeading<<2|n.dependsOn,n.isDependedOn<<6|n.hasRedundancy<<4|n.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),hs.box(hs.types.trun,r)}static mdat(e){return hs.box(hs.types.mdat,e)}}hs.init();var fs,ps=Nt((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(fs=ps)&&fs.__esModule&&Object.prototype.hasOwnProperty.call(fs,"default")&&fs.default;const ms=[44100,48e3,32e3,0],_s=[22050,24e3,16e3,0],gs=[11025,12e3,8e3,0],ys=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],vs=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],bs=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function ws(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,s=(6&t[1])>>1,n=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=gs[a];break;case 2:d=_s[a];break;case 3:d=ms[a]}switch(s){case 1:n=e[s]&&t=6?(i=5,t=new Array(4),a=s-3):(i=2,t=new Array(2),a=s):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=s):(i=5,a=s,t=new Array(4),s>=6?a=s-3:1===n&&(i=2,t=new Array(2),a=s)),t[0]=i<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&n)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Ms[s],this.sampling_index=s,this.channel_count=n,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Ns{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,n=8-i;if(n>=e)return r&&(this.index+=e),s>>n-e;{r&&(this.index+=n);const i=e-n;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Os(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Gs=new Array(214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72),$s=new Array(2746333894,1453994832,1736282519,2993693404),Hs=new Array(462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257);function Vs(e,t,r,i,s){var n=s;n=t+s>e.length&&i+s<=r.length?e.length-t:i+s>r.length&&t+s<=e.length?r.length-i:t+s<=e.length&&i+s<=r.length?s:r.length>24&255,e>>16&255,e>>8&255,255&e)}function js(e,t){return t+3>>19)^(i<<23|i>>>9)}function Ks(e,t){var r=new Array(36);r[0]=js(t,0),r[1]=js(t,4),r[2]=js(t,8),r[3]=js(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^Xs(r[i+1]^r[i+2]^r[i+3]^e[i]);var s=new Array(4);for(i=35;i>=32;i--)s[35-i]=r[i];var n=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function Zs(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=qs(e),s=Math.ceil(r.length/16),n=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let a=5;for(;an)break;let d=e[a+4],l=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Zs(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),n({printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc"))&&console.warn("JbPro[❌❌❌][worker]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],s=[],n=null,a=null,o=null,d=null,l=null,c=null,u=!1,h=null,w=null,S=!1,U=!1,be=!!mr(r),we=0,Ve=0,Xe=!1,Ze=null,Qe=null,tt=null,lt=[],St=null,Et=null,Ut=0,zt=0,Nt=null,Ot=null,Gt=0,$t=0,qt=!1,Zt=!1,ir=!1,vr=null,br=null,wr=!1,Sr=!0,Ur=()=>{const e=fr();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,isSm4CryptoH265V2:e.isSm4CryptoH265V2,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1}};"VideoEncoder"in self&&(n={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){n.decoder=new VideoDecoder({output:function(e){if(or(e.createImageBitmap))e.createImageBitmap().then((t=>{n.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:r,delay:si.delay,ts:0},[r]),cr(e)}));else{n.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:t,delay:si.delay,ts:0},[t]),cr(e)}},error:function(e){si.debug.error("worker","VideoDecoder error",e)}})},destroy(){n.reset(),n.decoder&&"closed"!==n.decoder.state&&(n.decoder.close(),n.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(n.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ht:ft});n.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:L,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,s=null;const a=e.slice(5);t===Fe?(s=xr(a),i={codec:s.codec,description:a}):t===Pe&&(s=Hr(a),i={codec:s.codec,description:a}),s&&s.codecWidth&&s.codecHeight&&(i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth),n.isEmitInfo||(si.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),n.isEmitInfo=!0,n.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),n.offscreenCanvasCtx=n.offscreenCanvas.getContext("2d"));try{n.decoder.configure(i),n.hasInit=!0}catch(e){si.debug.error("worker","VideoDecoder configure error",e.code,e),e.toString()}}else si.debug.warn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){n.hasInit=!1,n.isEmitInfo=!1,n.offscreenCanvas=null,n.offscreenCanvasCtx=null}});let Nr=function(){if(wr=!0,si.fetchStatus!==Tt||_r(si._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){si.debug.log("worker","abort catch",e)}}else a=null,si.debug.log("worker",`abort() and not abortController.abort() _status is ${si.fetchStatus} and _isChrome is ${si._opt.isChrome}`)},Or={init(){Or.lastBuf=null,Or.vps=null,Or.sps=null,Or.pps=null,Or.streamType=null,Or.localDts=0,Or.pendingUnits={},Or.isSendSeqHeader=!1},destroy(){Or.lastBuf=null,Or.vps=null,Or.sps=null,Or.pps=null,Or.streamType=null,Or.localDts=0,Or.pendingUnits={},Or.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(si._opt.nakedFlowDemuxUseNew){const e=Or.extractNALu$3(t);Or.handleVideoFrames(e)}else Or.extractNALu$2(t)},getNaluDts(){const e=si._opt.nakedFlowFps;let t=Or.localDts;return Or.localDts=Or.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=si._opt.sampleRate,t=si._opt.audioBufferSize;return Or.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,s=e.byteLength,n=0,a=[];for(;i1)for(let e=0;e{const t=Ir(e);t===He||t===$e?Or.handleVideoH264Nalu(e):Pr(t)&&i.push(e)})),1===i.length)Or.handleVideoH264Nalu(i[0]);else if(Mr(i)){const e=Ir(i[0]),t=Lr(e);Or.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Or.handleVideoH264Nalu(e)}))}else if(Or.streamType===Re)if(si._opt.nakedFlowH265DemuxUseNew){const t=Or.handleAddNaluStartCode(e),r=Or.extractNALu(t);if(0===r.length)return void si.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Yr(e);t===ot||t===nt||t===it?Or.handleVideoH265Nalu(e):Xr(t)&&i.push(e)})),1===i.length)Or.handleVideoH265Nalu(i[0]);else if(Jr(i)){const e=Yr(i[0]),t=Zr(e);Or.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Or.handleVideoH265Nalu(e)}))}else Yr(e)===ot?Or.extractH265PPS(e):Or.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Fr(Ir(e))?Or.extractH264SEI(e):Or.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Kr(Yr(e))?Or.extractH265SEI(e):Or.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Or.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Or.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Ir(e);switch(t){case $e:Or.sps=e;break;case He:Or.pps=e}if(Or.isSendSeqHeader){if(Or.sps&&Or.pps){const e=kr({sps:Or.sps,pps:Or.pps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}if(Pr(t)){const r=Lr(t),i=Or.getNaluDts(),s=Cr(e,r);Or.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Or.sps&&Or.pps){Or.isSendSeqHeader=!0;const e=kr({sps:Or.sps,pps:Or.pps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}},handleVideoH264NaluList(e,t,r){if(Or.isSendSeqHeader){const i=Or.getNaluDts(),s=Dr(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Or.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),si.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Yr(e);switch(t){case it:Or.vps=e;break;case nt:Or.sps=e;break;case ot:Or.pps=e}if(Or.isSendSeqHeader){if(Or.vps&&Or.sps&&Or.pps){const e=Wr({vps:Or.vps,sps:Or.sps,pps:Or.pps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.vps=null,Or.sps=null,Or.pps=null}if(Xr(t)){const r=Zr(t),i=Or.getNaluDts(),s=jr(e,r);Or.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Or.vps&&Or.sps&&Or.pps){Or.isSendSeqHeader=!0;const e=Wr({vps:Or.vps,sps:Or.sps,pps:Or.pps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.vps=null,Or.sps=null,Or.pps=null}},handleVideoH265NaluList(e,t,r){if(Or.isSendSeqHeader){const i=Or.getNaluDts(),s=qr(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Or.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),si.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){si.calcNetworkDelay(t.ts),t.isIFrame&&si.calcIframeIntervalTimestamp(t.ts),si.decode(e,t)},handleVideoFrames(e){if(!Or.streamVideoType)for(let t of e)if(Or.streamVideoType=dr(t),Or.streamVideoType)break;Or.streamVideoType&&(Or.streamVideoType===Me?Or.handleVideoH264Frames(e):this.streamVideoType===Re&&Or.handleVideoH265Frames(e))},handleVideoH264Frames(e){let t=[],r=[],i=!1,s=!1;Or.pendingUnits.units&&(t=Or.pendingUnits.units,s=Or.pendingUnits.vcl,i=Or.pendingUnits.iFrame,Or.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Ir(a);let o=!1,d=e===je;e!==We&&e!==je||(n=Or.parseVideo264Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(Or.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case He:Or.pps=e;break;case $e:Or.sps=e;break;case qe:s=e}if(Pr(t)){const t=Qt(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Or.isSendSeqHeader&&Or.sps&&Or.pps){Or.isSendSeqHeader=!0;const e=Tr({sps:Or.sps,pps:Or.pps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}if(Or.isSendSeqHeader){if(Or.sps&&Or.pps){const e=Tr({sps:Or.sps,pps:Or.pps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}if(i){const e=Or.getNaluDts(),t=Dr(i,r);si._opt.isEmitSEI&&postMessage({cmd:X,buffer:s,ts:e},[s.buffer]),Or.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,s=!1;Or.pendingUnits.units&&(t=Or.pendingUnits.units,s=Or.pendingUnits.vcl,i=Or.pendingUnits.iFrame,Or.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Yr(a);let o=!1,d=Zr(e);Xr(e)&&(n=this.parseVideo265Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(Or.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ot:Or.pps=e;break;case nt:Or.sps=e;break;case it:Or.vps=e}if(Xr(t)){const t=Qt(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Or.isSendSeqHeader&&Or.sps&&Or.pps&&Or.vps){Or.isSendSeqHeader=!0;const e=Wr({sps:Or.sps,pps:Or.pps,vps:Or.vps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null,Or.vps=null}if(Or.isSendSeqHeader){if(Or.sps&&Or.pps&&Or.vps){const e=Wr({sps:Or.sps,pps:Or.pps,vps:Or.vps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null,Or.vps=null}if(i){const e=Or.getNaluDts(),t=qr(i,r);si._opt.isEmitSEI&&postMessage({cmd:X,buffer:null,ts:e},[null.buffer]),Or.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Or.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Ns(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Ns(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Vr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Vr.mp4Box=zi.createFile(),Vr.mp4Box.onReady=Vr.onReady,Vr.mp4Box.onError=Vr.onError,Vr.mp4Box.onSamples=Vr.onSamples},initTransportDescarmber(){Vr.transportDescarmber=new Gi},_getSeqHeader(e){const t=Vr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new zi.DataStream(void 0,0,zi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Vr.isHevc=!0,si.isHevc=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),s=new Uint8Array(r.length+i.length);return s.set(r,0),s.set(i,r.length),s}return null},onReady(e){si.debug.log(Vr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Vr.videoTrackId=t.id;const e=Vr._getSeqHeader(t);e&&(si.debug.log(Vr.LOG_NAME,"seqHeader"),si.decodeVideo(e,0,!0,0)),Vr.mp4Box.setExtractionOptions(t.id)}if(r&&si._opt.hasAudio){Vr.audioTrackId=r.id;const e=r.audio||{},t=Ht.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Vr.mp4Box.setExtractionOptions(r.id);const s=Vt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});si.debug.log(Vr.LOG_NAME,"aacADTSHeader"),si.decodeAudio(s,0)}Vr.mp4Box.start()},onError(e){si.debug.error(Vr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Vr.videoTrackId){for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&si.calcIframeIntervalTimestamp(i);let s=null;s=Vr.isHevc?qr(t,r):Dr(t,r),si.decode(s,{type:ae,ts:i,isIFrame:r,cts:0})}Vr.mp4Box.removeUsedSamples(e)}else if(e===Vr.audioTrackId){if(si._opt.hasAudio){for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),si.decode(i,{type:ne,ts:r,isIFrame:!1,cts:0})}Vr.mp4Box.removeUsedSamples(e)}}else si.debug.warn(Vr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Vr.transportDescarmber&&(t=Vr.transportDescarmber.transport(t)),t.buffer.fileStart=Vr.offset,Vr.offset+=t.byteLength,Vr.mp4Box.appendBuffer(t.buffer)},destroy(){Vr.mp4Box&&(Vr.mp4Box.stop(),Vr.mp4Box.flush(),Vr.mp4Box.destroy(),Vr.mp4Box=null),Vr.transportDescarmber&&(Vr.transportDescarmber.destroy(),Vr.transportDescarmber=null),Vr.offset=0,Vr.videoTrackId=null,Vr.audioTrackId=null,Vr.isHevc=!1}},ti={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);ti.extractNALu(t)},destroy(){ti.lastBuffer=new Uint8Array(0),ti.parsedOffset=0,ti.firstStartCodeOffset=0,ti.secondStartCodeOffset=0,ti.state="init",ti.hasInitVideoCodec=!1,ti.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void si.debug.warn(ti.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(ti.lastBuffer.length+e.length);for(t.set(ti.lastBuffer,0),t.set(new Uint8Array(e),ti.lastBuffer.length),ti.lastBuffer=t;;){if("init"===ti.state){let e=!1;for(;ti.lastBuffer.length-ti.parsedOffset>=4;)if(0===ti.lastBuffer[ti.parsedOffset])if(0===ti.lastBuffer[ti.parsedOffset+1])if(1===ti.lastBuffer[ti.parsedOffset+2]){if(182===ti.lastBuffer[ti.parsedOffset+3]){ti.state="findFirstStartCode",ti.firstStartCodeOffset=ti.parsedOffset,ti.parsedOffset+=4,e=!0;break}ti.parsedOffset++}else ti.parsedOffset++;else ti.parsedOffset++;else ti.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===ti.state){let e=!1;for(;ti.lastBuffer.length-ti.parsedOffset>=4;)if(0===ti.lastBuffer[ti.parsedOffset])if(0===ti.lastBuffer[ti.parsedOffset+1])if(1===ti.lastBuffer[ti.parsedOffset+2]){if(182===ti.lastBuffer[ti.parsedOffset+3]){ti.state="findSecondStartCode",ti.secondStartCodeOffset=ti.parsedOffset,ti.parsedOffset+=4,e=!0;break}ti.parsedOffset++}else ti.parsedOffset++;else ti.parsedOffset++;else ti.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===ti.state){if(!(ti.lastBuffer.length-ti.parsedOffset>0))break;{let e,t,r=192&ti.lastBuffer[ti.parsedOffset];e=0==r?ti.secondStartCodeOffset-14:ti.secondStartCodeOffset;let i=0==(192&ti.lastBuffer[ti.firstStartCodeOffset+4]);if(i){if(ti.firstStartCodeOffset-14<0)return void si.debug.warn(ti.LOG_NAME,"firstStartCodeOffset -14 is",ti.firstStartCodeOffset-14);ti.hasInitVideoCodec||(ti.hasInitVideoCodec=!0,si.debug.log(ti.LOG_NAME,"setCodec"),ai.setCodec(Le,"")),t=ti.lastBuffer.subarray(ti.firstStartCodeOffset-14,e)}else t=ti.lastBuffer.subarray(ti.firstStartCodeOffset,e);let s=ti.getNaluDts();ti.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:Ue,value:s}),we=s,ai.decode(t,i?1:0,s)):si.debug.warn(ti.LOG_NAME,"has not init video codec"),ti.lastBuffer=ti.lastBuffer.subarray(e),ti.firstStartCodeOffset=0==r?14:0,ti.parsedOffset=ti.firstStartCodeOffset+4,ti.state="findFirstStartCode"}}}},getNaluDts(){let e=ti.localDts;return ti.localDts=ti.localDts+40,e}},ri={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Rs,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){ri.media_info_=null,ri.pes_slice_queues_=null,ri.section_slice_queues_=null,ri.video_metadata_=null,ri.audio_metadata_=null,ri.aac_last_incomplete_data_=null,ri.video_track_=null,ri.audio_track_=null,ri._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let s=0;s=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){ri._remainingPacketData&&(e=cs(ri._remainingPacketData,e),ri._remainingPacketData=null);let t=e.buffer;const r=ri.parseChunks(t);r?ri._remainingPacketData=e.subarray(r):e.length>>6;r[1];let n=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!ri.pmt_||ri.pmt_.pcr_pid!==n),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);ri.last_pcr_=e}if(2==a||5+e===188){t+=188,204===ri.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===n||n===ri.current_pmt_pid_||null!=ri.pmt_&&ri.pmt_.pid_stream_type[n]===Cs){let r=188-c;ri.handleSectionSlice(e,t+c,r,{pid:n,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=ri.pmt_&&null!=ri.pmt_.pid_stream_type[n]){let r=188-c,i=ri.pmt_.pid_stream_type[n];n!==ri.pmt_.common_pids.h264&&n!==ri.pmt_.common_pids.h265&&n!==ri.pmt_.common_pids.adts_aac&&n!==ri.pmt_.common_pids.loas_aac&&n!==ri.pmt_.common_pids.ac3&&n!==ri.pmt_.common_pids.eac3&&n!==ri.pmt_.common_pids.opus&&n!==ri.pmt_.common_pids.mp3&&!0!==ri.pmt_.pes_private_data_pids[n]&&!0!==ri.pmt_.timed_id3_pids[n]&&!0!==ri.pmt_.synchronous_klv_pids[n]&&!0!==ri.pmt_.asynchronous_klv_pids[n]||ri.handlePESSlice(e,t+c,r,{pid:n,stream_type:i,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===ri.tsPacketSize&&(t+=16)}return ri.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=ri.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=s[0];if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t+1,Math.min(r,a));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?ri.emitSectionSlices(n,i):ri.clearSlices(n,i)}for(let o=1+a;o=n.expected_length&&ri.clearSlices(n,i),o+=d.byteLength}}else if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t,Math.min(r,n.expected_length-n.total_length));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?ri.emitSectionSlices(n,i):n.total_length>=n.expected_length&&ri.clearSlices(n,i)}},handlePESSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=s[0]<<16|s[1]<<8|s[2];s[3];let a=s[4]<<8|s[5];if(i.payload_unit_start_indicator){if(1!==n)return void si.debug.warn(ri.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${n}`);let e=ri.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?ri.emitPESSlices(e,i):ri.clearSlices(e,i)),ri.pes_slice_queues_[i.pid]=new Fs,ri.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==ri.pes_slice_queues_[i.pid])return;let o=ri.pes_slice_queues_[i.pid];o.slices.push(s),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?ri.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,n=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==s){if(s<3+o)return void si.debug.warn(ri.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Ss:case Es:ri.parseMP3Payload(c,r);break;case As:ri.pmt_.common_pids.opus===e.pid||ri.pmt_.common_pids.ac3===e.pid||ri.pmt_.common_pids.eac3===e.pid||(ri.pmt_.asynchronous_klv_pids[e.pid]?ri.parseAsynchronousKLVMetadataPayload(c,e.pid,i):ri.pmt_.smpte2038_pids[e.pid]?ri.parseSMPTE2038MetadataPayload(c,r,n,e.pid,i):ri.parsePESPrivateDataPayload(c,r,n,e.pid,i));break;case Bs:ri.parseADTSAACPayload(c,r);break;case Us:ri.parseLOASAACPayload(c,r);break;case xs:case ks:break;case Ts:ri.pmt_.timed_id3_pids[e.pid]?ri.parseTimedID3MetadataPayload(c,r,n,e.pid,i):ri.pmt_.synchronous_klv_pids[e.pid]&&ri.parseSynchronousKLVMetadataPayload(c,r,n,e.pid,i);break;case Ds:ri.parseH264Payload(c,r,n,e.random_access_indicator);break;case Is:ri.parseH265Payload(c,r,n,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===As){let r,n=6;r=0!==s?s:t.byteLength-n;let a=t.subarray(n,n+r);ri.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else si.debug.error(ri.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(ri.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,s=1&e[5],n=e[6];e[7];let a=null;if(1===s&&0===n)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=ri.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===s&&0===n&&(null==ri.pat_&&si.debug.log(ri.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),ri.pat_=a,ri.current_program_=d,ri.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void si.debug.error(ri.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],n=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=ri._initPmt(),r.program_number=s,r.version_number=n,ri.program_pmt_map_[s]=r;else if(r=ri.program_pmt_map_[s],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iri.has_video_&&ri.has_audio_?ri.video_init_segment_dispatched_&&ri.audio_init_segment_dispatched_:ri.has_video_&&!ri.has_audio_?ri.video_init_segment_dispatched_:!(ri.has_video_||!ri.has_audio_)&&ri.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=ri.video_metadata_.details,t={type:"video"};t.id=ri.video_track_.id,t.timescale=1e3,t.duration=ri.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,ri.video_metadata_.vps){si.isHevc=!0;let e=ri.video_metadata_.vps.data.subarray(4),r=ri.video_metadata_.sps.data.subarray(4),i=ri.video_metadata_.pps.data.subarray(4);t.hvcc=Wr({vps:e,sps:r,pps:i}),0==ri.video_init_segment_dispatched_&&si.debug.log(ri.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&si.decodeVideo(t.hvcc,0,!0,0)}else{let e=ri.video_metadata_.sps.data.subarray(4),r=ri.video_metadata_.pps.data.subarray(4);t.avcc=Tr({sps:e,pps:r}),0==ri.video_init_segment_dispatched_&&si.debug.log(ri.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&si.decodeVideo(t.avcc,0,!0,0)}ri.video_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let s=ri.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){ri.isInitSegmentDispatched()&&ri.video_track_.length&&ri._preDoDecode()},dispatchAudioMediaSegment(){ri.isInitSegmentDispatched()&&ri.audio_track_.length&&ri._preDoDecode()},dispatchAudioVideoMediaSegment(){ri.isInitSegmentDispatched()&&(ri.audio_track_.length||ri.video_track_.length)&&ri._preDoDecode()},parseADTSAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void si.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(si.debug.warn(ri.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Kt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};ri.audio_track_.samples.push(n),ri.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(ri.aac_last_incomplete_data_=n.getIncompleteData()),s&&(ri.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void si.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(si.debug.warn(ri.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Xt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame(nr(this.loas_previous_frame)?void 0:this.loas_previous_frame));){ri.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};ri.audio_track_.samples.push(n),ri.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(ri.aac_last_incomplete_data_=n.getIncompleteData()),s&&(ri.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],n=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(n){case 0:l=s[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},ri.dispatchAudioInitSegment(h)):ri.detectAudioMetadataChange(h)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/ri.timescale_,dts:t/ri.timescale_,type:ne};ri.audio_track_.samples.push(f),ri.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==ri.audio_metadata_.codec)return si.debug.log(ri.TAG_NAME,`Audio: Audio Codecs changed from ${ri.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===ri.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==ri.audio_metadata_.audio_object_type)return si.debug.log(ri.TAG_NAME,`AAC: AudioObjectType changed from ${ri.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==ri.audio_metadata_.sampling_freq_index)return si.debug.log(ri.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==ri.audio_metadata_.channel_config)return si.debug.log(ri.TAG_NAME,`AAC: Channel configuration changed from ${ri.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===ri.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==ri.audio_metadata_.sampling_frequency)return si.debug.log(ri.TAG_NAME,`AC3: Sampling Frequency changed from ${ri.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==ri.audio_metadata_.bit_stream_identification)return si.debug.log(ri.TAG_NAME,`AC3: Bit Stream Identification changed from ${ri.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==ri.audio_metadata_.bit_stream_mode)return si.debug.log(ri.TAG_NAME,`AC3: BitStream Mode changed from ${ri.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==ri.audio_metadata_.channel_mode)return si.debug.log(ri.TAG_NAME,`AC3: Channel Mode changed from ${ri.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==ri.audio_metadata_.low_frequency_effects_channel_on)return si.debug.log(ri.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${ri.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===ri.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return si.debug.log(ri.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return si.debug.log(ri.TAG_NAME,`Opus: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===ri.audio_metadata_.codec){const t=e.data;if(t.object_type!==ri.audio_metadata_.object_type)return si.debug.log(ri.TAG_NAME,`MP3: AudioObjectType changed from ${ri.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return si.debug.log(ri.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return si.debug.log(ri.TAG_NAME,`MP3: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=ri.audio_track_.id,t.timescale=1e3,t.duration=ri.duration_,"aac"===ri.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new zs(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=Vt({profile:si._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});si.decodeAudio(s,0)}else"ac-3"===ri.audio_metadata_.codec||"ec-3"===ri.audio_metadata_.codec||"opus"===ri.audio_metadata_.codec||"mp3"===ri.audio_metadata_.codec&&(t.audioSampleRate=ri.audio_metadata_.sample_rate,t.channelCount=ri.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==ri.audio_init_segment_dispatched_&&si.debug.log(ri.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),ri.audio_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let r=ri.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,s){let n=new Ls;if(n.pid=i,n.stream_id=s,n.len=e.byteLength,n.data=e,null!=t){let e=Math.floor(t/ri.timescale_);n.pts=e}else n.nearest_pts=ri.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/ri.timescale_);n.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,s){si.debug.log(ri.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,s){si.debug.log(ri.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,r){si.debug.log(ri.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,s){si.debug.log(ri.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},getNearestTimestampMilliseconds:()=>null!=ri.audio_last_sample_pts_?Math.floor(ri.audio_last_sample_pts_):null!=ri.last_pcr_?Math.floor(ri.last_pcr_/300/ri.timescale_):void 0,_preDoDecode(){const e=ri.video_track_,t=ri.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?ri._doDecodeVideo({...e,payload:t}):e.type===ne&&ri._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?qr(t,e.isIFrame):Dr(t,e.isIFrame),e.isIFrame&&si.calcIframeIntervalTimestamp(e.dts);let i=si.cryptoPayload(r,e.isIFrame);si.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;mr(si._opt.m7sCryptoAudio)&&(r=si.cryptoPayloadAudio(t)),si.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},ii=null;gr()&&(ii={TAG_NAME:"worker MediaSource",_resetInIt(){ii.isAvc=null,ii.isAAC=null,ii.videoInfo={},ii.videoMeta={},ii.audioMeta={},ii.sourceBuffer=null,ii.audioSourceBuffer=null,ii.hasInit=!1,ii.hasAudioInit=!1,ii.isAudioInitInfo=!1,ii.videoMimeType="",ii.audioMimeType="",ii.cacheTrack={},ii.cacheAudioTrack={},ii.timeInit=!1,ii.sequenceNumber=0,ii.audioSequenceNumber=0,ii.firstRenderTime=null,ii.firstAudioTime=null,ii.mediaSourceAppendBufferFull=!1,ii.mediaSourceAppendBufferError=!1,ii.mediaSourceAddSourceBufferError=!1,ii.mediaSourceBufferError=!1,ii.mediaSourceError=!1,ii.prevTimestamp=null,ii.decodeDiffTimestamp=null,ii.prevDts=null,ii.prevAudioDts=null,ii.prevPayloadBufferSize=0,ii.isWidthOrHeightChanged=!1,ii.prevTs=null,ii.prevAudioTs=null,ii.eventListenList=[],ii.pendingRemoveRanges=[],ii.pendingSegments=[],ii.pendingAudioRemoveRanges=[],ii.pendingAudioSegments=[],ii.supportVideoFrameCallbackHandle=null,ii.audioSourceBufferCheckTimeout=null,ii.audioSourceNoDataCheckTimeout=null,ii.hasPendingEos=!1,ii.$video={currentTime:0,readyState:0}},init(){ii.events=new us,ii._resetInIt(),ii.mediaSource=new self.MediaSource,ii.isDecodeFirstIIframe=!!_r(si._opt.checkFirstIFrame),ii._bindMediaSourceEvents()},destroy(){ii.stop(),ii._clearAudioSourceBufferCheckTimeout(),ii.eventListenList&&ii.eventListenList.length&&(ii.eventListenList.forEach((e=>e())),ii.eventListenList=[]),ii._resetInIt(),ii.mediaSource=null},getState:()=>ii.mediaSource&&ii.mediaSource.readyState,isStateOpen:()=>ii.getState()===gt,isStateClosed:()=>ii.getState()===yt,isStateEnded:()=>ii.getState()===_t,_bindMediaSourceEvents(){const{proxy:e}=ii.events,t=e(ii.mediaSource,bt,(()=>{si.debug.log(ii.TAG_NAME,"sourceOpen"),ii._onMediaSourceSourceOpen()})),r=e(ii.mediaSource,vt,(()=>{si.debug.log(ii.TAG_NAME,"sourceClose")})),i=e(ii.mediaSource,wt,(()=>{si.debug.log(ii.TAG_NAME,"sourceended")}));ii.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ii.sourceBuffer||(si.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ii._initSourceBuffer()),ii.audioSourceBuffer||(si.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ii._initAudioSourceBuffer()),ii._hasPendingSegments()&&ii._doAppendSegments()},decodeVideo(e,t,r,i){if(si.isDestroyed)si.debug.warn(ii.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(_r(ii.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Pe&&_r(si._opt.supportMSEDecodeHevc))return void ii.emitError(De.mediaSourceH265NotSupport);ii.videoInfo.codec=i,postMessage({cmd:L,code:i});const s=new Uint8Array(e);postMessage({cmd:M,buffer:s,codecId:i},[s.buffer]),ii.hasInit=ii._decodeConfigurationRecord(e,t,r,i)}else si.debug.warn(ii.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!ii.isDecodeFirstIIframe&&r&&(ii.isDecodeFirstIIframe=!0),ii.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Fe?r=xr(e.slice(5)):t===Pe&&(r=$r(e));const i=ii.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(si.debug.warn(ii.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ii.isWidthOrHeightChanged=!0,ii.emitError(De.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(ii.isWidthOrHeightChanged)return void si.debug.warn(ii.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(pr(e))return void si.debug.log(ii.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthii.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let s=e.slice(5),n={};if(i===Fe?n=xr(s):i===Pe&&(n=Hr(s)),ii.videoInfo.width=n.codecWidth,ii.videoInfo.height=n.codecHeight,0===n.codecWidth&&0===n.codecHeight)return si.debug.warn(ii.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(n)),ii.emitError(De.mediaSourceDecoderConfigurationError,`width is ${0===n.codecWidth} and height is ${n.codecHeight}`),!1;const a={id:Dt,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:n.codecWidth,codecHeight:n.codecHeight,videoType:n.videoType},o=hs.generateInitSegment(a);ii.isAvc=i===Fe;let d=n.codec;return ii.videoMimeType=d?`video/mp4; codecs="${n.codec}"`:ii.isAvc?pt:mt,postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),ii._initSourceBuffer(),ii.appendBuffer(o.buffer),ii.sequenceNumber=0,ii.cacheTrack={},ii.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,s=r===Ge,n=r===ze;if(_r(n||s))return si.debug.warn(ii.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ii.emitError(De.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Wt(e)){if(o=Yt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!s)return!1;if(o=ws(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;s&&_r(si._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=hs.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),_r(ii.isAudioInitInfo)&&(br=r===ze?i?16:8:0===i?8:16,postMessage({cmd:I,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:br}),ii.isAudioInitInfo=!0),ii.audioMimeType=u,ii.isAAC=n,ii._initAudioSourceBuffer(),ii.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.sourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.videoMimeType){try{si.debug.log(ii.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.videoMimeType),ii.sourceBuffer=ii.mediaSource.addSourceBuffer(ii.videoMimeType)}catch(e){return si.debug.error(ii.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(De.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.sourceBuffer){const t=e(ii.sourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,si.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ii.emitError(De.mseSourceBufferError,e.code)})),r=e(ii.sourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(si.debug.log(ii.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r)}}else si.debug.log(ii.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.isAvc === null is ${null===ii.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.audioSourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.audioMimeType){try{si.debug.log(ii.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.audioMimeType),ii._clearAudioSourceBufferCheckTimeout(),ii.audioSourceBuffer=ii.mediaSource.addSourceBuffer(ii.audioMimeType)}catch(e){return si.debug.error(ii.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(De.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.audioSourceBuffer){const t=e(ii.audioSourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,si.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ii.emitError(De.mseSourceBufferError,e.code)})),r=e(ii.audioSourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(si.debug.log(ii.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r),null===ii.audioSourceNoDataCheckTimeout&&(ii.audioSourceNoDataCheckTimeout=setTimeout((()=>{ii._clearAudioNoDataCheckTimeout(),ii.emitError(De.mediaSourceAudioNoDataTimeout)}),1e3))}}else si.debug.log(ii.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.audioMimeType is ${ii.audioMimeType}`)},_decodeVideo(e,t,r,i,s){let n=e.slice(5),a=n.byteLength;if(0===a)return void si.debug.warn(ii.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;ii.prevTimestamp||(ii.prevTimestamp=o,d=!0);const l=o-ii.prevTimestamp;if(ii.decodeDiffTimestamp=l,l>1e3&&!d&&si.isPlayer&&si.debug.log(ii.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${ii.prevTimestamp}, diff time is ${l} ms`),ii.cacheTrack.id&&t>=ii.cacheTrack.dts){let e=8+ii.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(hs.types.mdat,4),r.set(ii.cacheTrack.data,8),ii.cacheTrack.duration=t-ii.cacheTrack.dts;let i=hs.moof(ii.cacheTrack,ii.cacheTrack.dts);ii.cacheTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),ii.appendBuffer(s.buffer)}else si.debug.log(ii.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${ii.cacheTrack&&ii.cacheTrack.dts}`),ii.timeInit=!1,ii.cacheTrack={};ii.cacheTrack||(ii.cacheTrack={}),ii.cacheTrack.id=Dt,ii.cacheTrack.sequenceNumber=++ii.sequenceNumber,ii.cacheTrack.size=a,ii.cacheTrack.dts=t,ii.cacheTrack.cts=i,ii.cacheTrack.isKeyframe=r,ii.cacheTrack.data=n,ii.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ii.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ii.isAAC?e.slice(2):e.slice(1),s=i.byteLength;if(ii.cacheAudioTrack.id&&t>=ii.cacheAudioTrack.dts){let e=8+ii.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(hs.types.mdat,4),r.set(ii.cacheAudioTrack.data,8),ii.cacheAudioTrack.duration=t-ii.cacheAudioTrack.dts;let i=hs.moof(ii.cacheAudioTrack,ii.cacheAudioTrack.dts);ii.cacheAudioTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),ii.appendAudioBuffer(s.buffer)}else ii.cacheAudioTrack={};ii.cacheAudioTrack||(ii.cacheAudioTrack={}),ii.cacheAudioTrack.id=It,ii.cacheAudioTrack.sequenceNumber=++ii.audioSequenceNumber,ii.cacheAudioTrack.size=s,ii.cacheAudioTrack.dts=t,ii.cacheAudioTrack.cts=0,ii.cacheAudioTrack.data=i,ii.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){si.isDestroyed?si.debug.warn(ii.TAG_NAME,"appendBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingSegments.push(e),ii.sourceBuffer&&(si._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),_r(ii.getSourceBufferUpdating())&&ii.isStateOpen()&&_r(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){si.isDestroyed?si.debug.warn(ii.TAG_NAME,"appendAudioBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingAudioSegments.push(e),ii.audioSourceBuffer&&(si._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),_r(ii.getAudioSourceBufferUpdating())&&ii.isStateOpen()&&_r(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>ii.sourceBuffer&&ii.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ii.audioSourceBuffer&&ii.audioSourceBuffer.updating,stop(){ii.abortSourceBuffer(),ii.removeSourceBuffer(),ii.endOfStream()},clearUpAllSourceBuffer(){if(ii.sourceBuffer){const e=ii.sourceBuffer.buffered;for(let t=0;tii.pendingSegments.length>0||ii.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ii.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ii.isStateClosed()||ii.isStateEnded())si.debug.log(ii.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ii.sourceBuffer){if(ii.needInitAudio()&&null===ii.audioSourceBuffer)return si.debug.log(ii.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ii.audioSourceBufferCheckTimeout&&(ii.audioSourceBufferCheckTimeout=setTimeout((()=>{ii._clearAudioSourceBufferCheckTimeout(),ii.emitError(De.mediaSourceAudioInitTimeout)}),1e3)));if(_r(ii.getSourceBufferUpdating())&&ii.pendingSegments.length>0){const e=ii.pendingSegments.shift();try{ii.sourceBuffer.appendBuffer(e)}catch(e){si.debug.error(ii.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(De.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(De.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(_r(ii.getAudioSourceBufferUpdating())&&ii.pendingAudioSegments.length>0){const e=ii.pendingAudioSegments.shift();try{ii.audioSourceBuffer.appendBuffer(e)}catch(e){si.debug.error(ii.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(De.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(De.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else si.debug.log(ii.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ii.$video.currentTime;if(ii.sourceBuffer){const t=ii.sourceBuffer.buffered;let r=!1;for(let i=0;i=si._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-si._opt.mseAutoCleanupMinBackwardDuration;ii.pendingRemoveRanges.push({start:s,end:t})}}else n=si._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-si._opt.mseAutoCleanupMinBackwardDuration;ii.pendingAudioRemoveRanges.push({start:s,end:t})}}else nii.pendingRemoveRanges.length>0||ii.pendingAudioRemoveRanges.length>0,needInitAudio:()=>si._opt.hasAudio&&si._opt.mseDecodeAudio,_doRemoveRanges(){if(ii.sourceBuffer&&_r(ii.getSourceBufferUpdating())){let e=ii.pendingRemoveRanges;for(;e.length&&_r(ii.getSourceBufferUpdating());){let t=e.shift();try{ii.sourceBuffer.remove(t.start,t.end)}catch(e){si.debug.warn(ii.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ii.audioSourceBuffer&&_r(ii.getAudioSourceBufferUpdating())){let e=ii.pendingAudioRemoveRanges;for(;e.length&&_r(ii.getAudioSourceBufferUpdating());){let t=e.shift();try{ii.audioSourceBuffer.remove(t.start,t.end)}catch(e){si.debug.warn(ii.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(_r(si._opt.mseAutoCleanupSourceBuffer))return!1;const e=ii.$video.currentTime;if(ii.sourceBuffer){let t=ii.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=si._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ii.audioSourceBuffer){let t=ii.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=si._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ii.audioSourceBufferCheckTimeout&&(clearTimeout(ii.audioSourceBufferCheckTimeout),ii.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ii.audioSourceNoDataCheckTimeout&&(clearTimeout(ii.audioSourceNoDataCheckTimeout),ii.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ii.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let si={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:kt,_opt:Ur(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){si.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:si.getVideoBufferLength(),audioDemuxBufferDelay:si.getAudioBufferLength(),streamBufferByteLength:si.getStreamBufferLength(),netBuf:si.networkDelay||0,pushLatestDelay:si.pushLatestDelay||0,latestDelay:si.delay,isStreamTsMoreThanLocal:Xe,wasmDecodeDelay:we-Ve});postMessage({cmd:O,type:ke,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return si._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||si._opt.hasVideo&&!be)return-1;if(t===ne)return si.delay;if(si.preDelayTimestamp&&si.preDelayTimestamp>e)return si.preDelayTimestamp-e>1e3&&si.debug.warn("worker",`getDelay() and preDelayTimestamp is ${si.preDelayTimestamp} > timestamp is ${e} more than ${si.preDelayTimestamp-e}ms and return ${si.delay}`),si.preDelayTimestamp=e,si.delay;if(si.firstTimestamp){if(e){const t=Date.now()-si.startTimestamp,r=e-si.firstTimestamp;t>=r?(Xe=!1,si.delay=t-r):(Xe=!0,si.delay=r-t)}}else si.firstTimestamp=e,si.startTimestamp=Date.now(),si.delay=-1;return si.preDelayTimestamp=e,si.delay},getDelayNotUpdateDelay:function(e,t){if(!e||si._opt.hasVideo&&!be)return-1;if(t===ne)return si.pushLatestDelay;if(si.preDelayTimestamp&&si.preDelayTimestamp-e>1e3)return si.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${si.preDelayTimestamp} > timestamp is ${e} more than ${si.preDelayTimestamp-e}ms and return -1`),-1;if(si.firstTimestamp){let t=-1;if(e){const r=Date.now()-si.startTimestamp,i=e-si.firstTimestamp;r>=i?(Xe=!1,t=r-i):(Xe=!0,t=i-r)}return t}return-1},resetDelay:function(){si.firstTimestamp=null,si.startTimestamp=null,si.delay=-1,si.dropping=!1},resetAllDelay:function(){si.resetDelay(),si.preDelayTimestamp=null},doDecode:function(e){si._opt.isEmitSEI&&e.type===ae&&si.isWorkerFetch&&si.findSei(e.payload,e.ts),si.isPlayUseMSEAndDecoderInWorker()?e.type===ne?si._opt.mseDecodeAudio?ii.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&ii.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):si._opt.useWCS&&si.useOffscreen()&&e.type===ae&&n.decode?n.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,s=i[0],n=e.type===ae&&pr(e.payload);if(_r(r))n&&(si.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n isVideoSqeHeader is ${n}`),i.shift(),si.doDecode(s));else{const r=s.ts-t,a=s.type===ne&&e.type===ae;(r<=20||a||n)&&(si.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${n}`),i.shift(),si.doDecode(s))}},init:function(){si.debug.log("worker","init and opt is",JSON.stringify(si._opt));const e=si._opt.playType===y,t=si._opt.playType===v;if(Or.init(),si.isPlayer=e,si.isPlayback=t,si.isPlayUseMSEAndDecoderInWorker()&&ii&&ii.init(),n&&si._opt.useWCS&&si.useOffscreen()&&n.init(),si.isPlaybackCacheBeforeDecodeForFpsRender())si.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{si.debug.log("worker","setInterval()");const t=()=>{const t=si._opt.videoBuffer+si._opt.videoBufferDelay;let r=null;if(i.length){if(si.isPushDropping)return void si.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(si.dropping){for(r=i.shift(),si.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${si.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=si.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=si.getNotDroppingDelayTs()&&(si.debug.log("worker","loop() is dropping = false, is iFrame"),si.dropping=!1,si.doDecode(r),si.decodeNext(r))}else if(si.isPlayback||si.isPlayUseMSE()||0===si._opt.videoBuffer)for(;i.length;)r=i.shift(),si.doDecode(r);else if(r=i[0],-1===si.getDelay(r.ts,r.type))si.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),si.doDecode(r),si.decodeNext(r);else if(si.delay>t&&e)si.hasIframeInBufferList()?(si.debug.log("worker",`delay is ${si.delay} > maxDelay ${t}, set dropping is true`),si.resetAllDelay(),si.dropping=!0,postMessage({cmd:$})):(i.shift(),si.doDecode(r),si.decodeNext(r));else for(;i.length;){if(r=i[0],!(si.getDelay(r.ts,r.type)>si._opt.videoBuffer)){si.delay<0&&si.debug.warn("worker",`loop() do not decode and delay is ${si.delay}, bufferList is ${i.length}`);break}i.shift(),si.doDecode(r)}}else-1!==si.delay&&si.debug.log("worker","loop() bufferList is empty and reset delay"),si.resetAllDelay()};si.stopId=setInterval((()=>{let e=(new Date).getTime();Ze||(Ze=e);const r=e-Ze;r>100&&si.debug.warn("worker",`loop demux diff time is ${r}`),t(),Ze=(new Date).getTime()}),20)}if(_r(si._opt.checkFirstIFrame)&&(be=!0),si.isPlayUseMSEAndDecoderInWorker()&&ii){const e=ii.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){si.stopId&&(clearInterval(si.stopId),si.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),si.doDecode(e))};e();const t=Math.ceil(1e3/(si.streamFps*si._opt.playbackRate));si.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${si.streamFps}, streamAudioFps is ${si.streamAudioFps} ,streamVideoFps is ${si.streamVideoFps} playbackRate is ${si._opt.playbackRate}`),si.stopId=setInterval(e,t)},close:function(){if(si.debug.log("worker","close"),si.isDestroyed=!0,Nr(),!o||1!==o.readyState&&2!==o.readyState?o&&si.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(wr=!0,o.close(1e3,"Client disconnecting")),o=null,si.stopStreamRateAndStatsInterval(),si.stopId&&(clearInterval(si.stopId),si.stopId=null),si.mp3Demuxer&&(si.mp3Demuxer.destroy(),si.mp3Demuxer=null),si.writableStream&&_r(si.writableStream.locked)&&si.writableStream.close().catch((e=>{si.debug.log("worker","close() and writableStream.close() error",e)})),si.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){si.debug.log("worker","close() and audioDecoder.clear error",e.toString(),e)}if(ai)try{ai.clear&&ai.clear(),ai=null}catch(e){si.debug.log("worker","close() and videoDecoder.clear error",e.toString(),e)}d=null,Ze=null,Xe=!1,we=0,Ve=0,n&&(n.destroy&&n.destroy(),n=null),ii&&(ii.destroy(),ii=null),si.firstTimestamp=null,si.startTimestamp=null,si.networkDelay=0,si.streamFps=null,si.streamAudioFps=null,si.streamVideoFps=null,si.delay=-1,si.pushLatestDelay=-1,si.preDelayTimestamp=null,si.dropping=!1,si.isPushDropping=!1,si.isPlayer=!0,si.isPlayback=!1,si.isWorkerFetch=!1,si.isHevc=null,si._opt=Ur(),si.webglObj&&(si.webglObj.destroy(),si.offscreenCanvas.removeEventListener("webglcontextlost",si.onOffscreenCanvasWebglContextLost),si.offscreenCanvas.removeEventListener("webglcontextrestored",si.onOffscreenCanvasWebglContextRestored),si.offscreenCanvas=null,si.offscreenCanvasGL=null,si.offscreenCanvasCtx=null),i=[],s=[],c&&(c.buffer=null,c=null),h=null,w=null,S=!1,U=!1,be=!1,qt=!1,Zt=!1,ir=!1,vr=null,lt=[],Ut=0,zt=0,Qe=null,tt=null,Nt=null,Ot=null,br=null,Gt=0,$t=0,St=null,Et=null,si.fetchStatus=kt,Sr=!0,Or.destroy(),Vr.destroy(),ti.destroy(),ri.destroy(),postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===ne&&Wt(e)){if(si.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),si._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}si.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&pr(e)){if(si.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),si._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}si.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(si._opt.isRecording)if(si._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(si._opt.recordType===b)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&si._opt.isWasmMp4){const r=new Uint8Array(e),i=jt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(si.isPlayer){if(t.type===ae){if(Gt>0){const e=t.ts-Ot,r=Gt+Gt/2;e>r&&si.debug.log("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ot},\n diff is ${e} and preTsDuration is ${Gt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ot&&Ot>=t.ts&&(si.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ot} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${$t}`),Ot-t.ts>E&&(si.debug.warn("worker",`pushBuffer,\n preTimestamp is ${Ot}, options.ts is ${t.ts},\n diff is ${Ot-t.ts} more than 3600000,\n and resetAllDelay`),si.resetAllDelay(),Ot=null,Gt=0),si._opt.isDropSameTimestampGop&&_r(t.isIFrame)&&be)){const e=si.hasIframeInBufferList(),t=_r(si.isPushDropping);return si.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?si.dropBuffer$2():(si.clearBuffer(!0),mr(si._opt.checkFirstIFrame)&&mr(r)&&(si.isPlayUseMSEAndDecoderInWorker()?ii.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}Ot>0&&(Gt=t.ts-Ot),$t=e.byteLength,Ot=t.ts}if(be){const e=si._opt.videoBuffer+si._opt.videoBufferDelay,r=si.getDelayNotUpdateDelay(t.ts,t.type);si.pushLatestDelay=r,si.delay>0&&r>e&&si.delay({type:e.type,ts:e.ts})));si.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=si.getAudioBufferLength()>0,s=r?60:40;i.length>=s&&(si.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${s}, and hasAudio is ${r} an set streamFps is 25`),si.streamVideoFps=25,postMessage({cmd:V,value:si.streamVideoFps}),r?(si.streamAudioFps=25,si.streamFps=si.streamVideoFps+si.streamAudioFps):si.streamFps=si.streamVideoFps,si.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=si.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>si._opt.videoBuffer+si._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),si._opt.isNakedFlow?Or.lastBuf&&(e=Or.lastBuf.byteLength):si._opt.isTs?ri._remainingPacketData&&(e=ri._remainingPacketData.byteLength):si._opt.isFmp4&&Vr.mp4Box&&(e=Vr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){if(si.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),si.isWorkerFetch=!0,t.isFlv?si._opt.isFlv=!0:t.isFmp4?si._opt.isFmp4=!0:t.isMpeg4?si._opt.isMpeg4=!0:t.isNakedFlow?si._opt.isNakedFlow=!0:t.isTs&&(si._opt.isTs=!0),d=sr((e=>{postMessage({cmd:O,type:Ee,value:e})})),si.startStreamRateAndStatsInterval(),t.isFmp4&&(Vr.listenMp4Box(),si._opt.isFmp4Private&&Vr.initTransportDescarmber()),t.protocol===m){c=new Er(si.demuxFlv()),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(mr(wr))return si.debug.log("worker","request abort and run res.body.cancel()"),si.fetchStatus=kt,void e.body.cancel();if(!hr(e))return si.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Nr(),void postMessage({cmd:O,type:De.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:xe}),lr())si.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(si.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct)):mr(wr)?(si.debug.log("worker","writableStream write() and requestAbort is true so return"),void(si.fetchStatus=Ct)):void("string"!=typeof e?(si.fetchStatus=Tt,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?si.demuxFmp4(e):t.isMpeg4?si.demuxMpeg4(e):t.isTs&&si.demuxTs(e)):si.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{si.debug.log("worker","writableStream close()"),si.fetchStatus=Ct,c=null,Nr(),postMessage({cmd:O,type:Se,value:_,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return si.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct);c=null,e.name!==At?(si.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Nr(),postMessage({cmd:O,type:De.fetchError,value:e.toString()})):si.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(si.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:s}=e;return r?(si.debug.log("worker","fetchNext().then() and done is true"),si.fetchStatus=Ct,c=null,Nr(),void postMessage({cmd:O,type:Se,value:_,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(si.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct)):mr(wr)?(si.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(si.fetchStatus=Ct)):void("string"!=typeof s?(si.fetchStatus=Tt,d(s.byteLength),t.isFlv?c.write(s):t.isFmp4?si.demuxFmp4(s):t.isMpeg4?si.demuxMpeg4(s):t.isTs&&si.demuxTs(s),i()):si.debug.warn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return si.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct);c=null,e.name!==At?(si.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Nr(),postMessage({cmd:O,type:De.fetchError,value:e.toString()})):si.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?si.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==At?(si.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Nr(),postMessage({cmd:O,type:De.fetchError,value:e.toString()}),c=null):si.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===p&&(t.isFlv&&(c=new Er(si.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{si.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:xe}),postMessage({cmd:O,type:Ce})},o.onclose=e=>{si.isDestroyed?si.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):u?si.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(si.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&si.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),mr(wr)?si.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:Se,value:g,msg:e.code})))},o.onerror=e=>{si.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,si.isDestroyed?si.debug.log("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):postMessage({cmd:O,type:De.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?si.demuxFmp4(e.data):t.isMpeg4?si.demuxMpeg4(e.data):si._opt.isNakedFlow?si.demuxNakedFlow(e.data):si.demuxM7s(e.data)):si.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let n=r[0];const a=(yield s).slice();switch(i){case oe:if(a.byteLength>0){let e=a;mr(si._opt.m7sCryptoAudio)&&(e=si.cryptoPayloadAudio(a)),si.decode(e,{type:ne,ts:n})}else si.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(si._isEnhancedH265Header(e))si._decodeEnhancedH265Video(a,n);else{const e=15&a[0];let t=a[0]>>4===xt;const i=e===Pe;if(_r(t)&&mr(yr(a,i))&&(si.debug.log("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&pr(a)&&null===si.isHevc){const e=15&a[0];si.isHevc=e===Pe,vr=er(a,si.isHevc),si.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${si.isHevc} and nalUnitSize is ${vr}`)}t&&si.calcIframeIntervalTimestamp(n),si.isPlayer&&si.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let s=r[0],o=si.cryptoPayload(a,t);si.decode(o,{type:ae,ts:n,isIFrame:t,cts:s})}}else si.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:si.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?si._opt.hasAudio&&(postMessage({cmd:O,type:Ae,value:e.byteLength}),si.isPlayer?si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):si.isPlayback&&(si.isPlaybackOnlyDecodeIFrame()||(si.isPlaybackCacheBeforeDecodeForFpsRender(),si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&si._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:Ue,value:t.ts}),si.isPlayer?si.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):si.isPlayback&&(si.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(si.isPlaybackCacheBeforeDecodeForFpsRender(),si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return si._opt.isM7sCrypto?si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?r=Mi(e,si._opt.cryptoKey,si._opt.cryptoIV,si.isHevc):si.debug.error("worker",`isM7sCrypto cryptoKey.length is ${si._opt.cryptoKey&&si._opt.cryptoKey.byteLength} or cryptoIV.length is ${si._opt.cryptoIV&&si._opt.cryptoIV.byteLength} null`):si._opt.isSm4Crypto?si._opt.sm4CryptoKey?r=si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?Js(e,si._opt.cryptoKey,si._opt.cryptoIV,si.isHevc,si._opt.isSm4CryptoH265V2):ss(e,si._opt.sm4CryptoKey,si.isHevc,si._opt.isSm4CryptoH265V2):si._opt.sm4CryptoKey||si.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):si._opt.isXorCrypto&&(si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?r=ls(e,si._opt.cryptoKey,si._opt.cryptoIV,si.isHevc):si.debug.error("worker",`isXorCrypto cryptoKey.length is ${si._opt.cryptoKey&&si._opt.cryptoKey.byteLength} or cryptoIV.length is ${si._opt.cryptoIV&&si._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return si._opt.isM7sCrypto&&(si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?e[0]>>4===ze&&(t=Ri(e,si._opt.cryptoKey,si._opt.cryptoIV)):si.debug.error("worker",`isM7sCrypto cryptoKey.length is ${si._opt.cryptoKey&&si._opt.cryptoKey.byteLength} or cryptoIV.length is ${si._opt.cryptoIV&&si._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(br=r===ze?i?16:8:0===i?8:16,ni&&ni.setCodec)if(Wt(e)||r===Ne||r===Oe||r===Ge){si.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${si._opt.sampleRate}`);const i=r===ze?e.slice(2):new Uint8Array(0);ni.setCodec(r,si._opt.sampleRate,i),r===ze&&postMessage({cmd:P,buffer:i},[i.buffer]),U=!0,r!==ze&&(r===Ge?(si.mp3Demuxer||(si.mp3Demuxer=new as(si),si.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),si.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{si.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),si.close(),postMessage({cmd:H})}),60*e*60*1e3)}}else si.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else si.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(si.isDestroyed)si.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(si.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ii.decodeAudio(e,t);else if(mr(r)&&mr(si._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(U){if(Wt(e))return void si.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?si.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===ze?e.slice(2):e.slice(1),t)}else si.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(ai&&ai.setCodec)if(pr(e))if(r===Fe||r===Pe){si.debug.log("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Fe&&si._opt.useSIMD){const e=xr(t);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:q,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void si.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,ai.setCodec(r,t),postMessage({cmd:L,code:r}),postMessage({cmd:M,buffer:i,codecId:r},[i.buffer])}else si.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else si.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else si.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(si.isDestroyed)si.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(si.isPlayUseMSEAndDecoderInWorker())ii.decodeVideo(e,t,i,s);else if(mr(r))postMessage({cmd:z,payload:e,isIFrame:i,ts:t,cts:s,delay:si.delay},[e.buffer]);else if(S)if(!be&&i&&(be=!0),be){if(i&&pr(e)){const t=15&e[0];let r={};t===Fe?r=xr(e.slice(5)):t===Pe&&(r=$r(e)),r.codecWidth&&r.codecHeight&&h&&w&&(r.codecWidth!==h||r.codecHeight!==w)&&(si.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${w},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:W,value:`width: ${h}->${r.codecWidth}, height: ${w}->${r.codecHeight}`}))}if(Zt)return void si.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(ir)return void si.debug.warn("worker","decodeVideo: simd decode error, and return");if(pr(e))return void si.debug.log("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];si.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),si.isPlayer&&(si.resetAllDelay(),mr(si._opt.checkFirstIFrame)&&(si.dropping=!0,postMessage({cmd:$}))),mr(si._opt.checkFirstIFrame)&&_r(r)&&(be=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>mr(e.isIFrame)&&e.type===ae));if(si.isAllIframeInBufferList())for(let t=0;t=si.getNotDroppingDelayTs()){si.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${si.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){si.isPushDropping=!0,postMessage({cmd:$});const t=i.length;i=i.slice(e);const r=i.shift();si.resetAllDelay(),si.getDelay(r.ts,r.type),si.doDecode(r),si.isPushDropping=!1,si.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${si.delay} `)}else si.isPushDropping=!1}0===i.length&&(si.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),s=new ArrayBuffer(4),n=new Uint32Array(s);switch(i){case ne:si.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(si._isEnhancedH265Header(s))si._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(si.calcIframeIntervalTimestamp(r),pr(i)&&null===si.isHevc)){const e=15&i[0];si.isHevc=e===Pe}si.isPlayer&&si.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=si.cryptoPayload(i,e);si.decode(a,{type:ae,ts:r,isIFrame:e,cts:s})}}else si.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Or.dispatch(e)},demuxFmp4:function(e){Vr.dispatch(e)},demuxMpeg4:function(e){ti.dispatch(e)},demuxTs:function(e){ri.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,s=15&r,n=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(n[0]);if(si.isHevc=_r(d),s===Pt){if(i===Rt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),vr=er(e,si.isHevc),si.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${si.isHevc} and nalUnitSize is ${vr}`),si.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(s===Lt){let r=e,s=0;const n=i===Rt;n&&si.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0],r=qr(e.slice(8),n),r=si.cryptoPayload(r,n),si.decode(r,{type:ae,ts:t,isIFrame:n,cts:s}))}else if(s===Mt){const r=i===Rt;r&&si.calcIframeIntervalTimestamp(t);let s=qr(e.slice(5),r);s=si.cryptoPayload(s,r),si.decode(s,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ft)===Ft},findSei:function(e,t){let r=4;ar(vr)&&(r=vr),Jt(e.slice(5),r).forEach((e=>{const r=si.isHevc?e[0]>>>1&63:31&e[0];(si.isHevc&&(r===ut||r===ct)||_r(si.isHevc)&&r===qe)&&postMessage({cmd:X,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(be&&e>0))return;null===Qe?(Qe=e,tt=tr()):et?r-t:0;si.networkDelay=i,i>si._opt.networkDelay&&si._opt.playType===y&&(si.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Qe} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Te,value:i}))},calcIframeIntervalTimestamp:function(e){null===Nt?Nt=e:Nt=si._opt.playbackForwardMaxRateDecodeIFrame&&!(si._opt.useMSE&&si._opt.mseDecodeAudio)},isPlayUseMSE:function(){return si.isPlayer&&si._opt.useMSE&&mr(r)},isPlayUseMSEAndDecoderInWorker:function(){return si.isPlayUseMSE()&&si._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return si.isPlayUseMSEAndDecoderInWorker()&&si._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){si.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){si.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),qt=!0,si.webglObj.destroy(),si.webglObj=null,si.offscreenCanvasGL=null,setTimeout((()=>{si.offscreenCanvasGL=si.offscreenCanvas.getContext("webgl"),si.offscreenCanvasGL&&si.offscreenCanvasGL.getContextAttributes().stencil?(si.webglObj=f(si.offscreenCanvasGL,si._opt.openWebglAlignment),qt=!1):si.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){si.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:k,w:t,h:r}),h=t,w=r,si.useOffscreen()&&(si.offscreenCanvas=new OffscreenCanvas(t,r),si.offscreenCanvasGL=si.offscreenCanvas.getContext("webgl"),si.webglObj=f(si.offscreenCanvasGL,si._opt.openWebglAlignment),si.offscreenCanvas.addEventListener("webglcontextlost",si.onOffscreenCanvasWebglContextLost,!1),si.offscreenCanvas.addEventListener("webglcontextrestored",si.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:I,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:br}),zt=r},yuvData:function(t,r){if(si.isDestroyed)return void si.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*w*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(St=null,Ve=r,si.useOffscreen())try{if(qt)return;si.webglObj.renderYUV(h,w,n);let e=si.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:si.delay,ts:r},[e])}catch(e){si.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:T,output:n,delay:si.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(si.isDestroyed)return void si.debug.log("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=si._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+n)}if(Ut){if(!(n>=(r=d-Ut)))return Ut+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==zt&&(s[1]=Float32Array.of(...s[1],...a[1])));lt[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==zt&&(lt[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:lt,ts:i},lt.map((e=>e.buffer))),o=r,n-=r}for(Ut=n;Ut>=d;Ut-=d)lt[0]=a[0].slice(o,o+=d),2==zt&&(lt[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:lt,ts:i},lt.map((e=>e.buffer)));Ut&&(s[0]=a[0].slice(o),2==zt&&(s[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===St&&(St=tr());const t=tr(),r=rr(Et>0?2*Et:5e3,1e3,5e3),i=t-St;i>r&&(si.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Et} and diff is ${i} and maxDiff is ${r}\n and replay`),ir=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){o?o.readyState===Ie?o.send(e):si.debug.error("worker","socket is not open"):si.debug.error("worker","socket is null")},timeEnd:function(){si.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),si.close(),postMessage({cmd:H})},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])}};si.debug=new Ar(si);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(si));let ai=null;e.VideoDecoder&&(ai=new e.VideoDecoder(si)),postMessage({cmd:x}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{si._opt=Object.assign(si._opt,JSON.parse(t.opt))}catch(e){}si.init();break;case ue:si.pushBuffer(t.buffer,t.options);break;case he:si.decodeAudio(t.buffer,t.ts);break;case fe:si.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:si.clearBuffer(t.needClear);break;case ge:si.fetchStream(t.url,JSON.parse(t.opt));break;case pe:si.debug.log("worker","close",JSON.stringify(t.options)),t.options&&_r(t.options.isVideoInited)&&(Sr=t.options.isVideoInited),si.close();break;case me:si.debug.log("worker","updateConfig",t.key,t.value),si._opt[t.key]=t.value,"playbackRate"===t.key&&(si.playbackUpdatePlaybackRate(),si.isPlaybackCacheBeforeDecodeForFpsRender()&&si.playbackCacheLoop());break;case ye:si.sendWebsocketMessage(t.message);break;case ve:ii.$video.currentTime=Number(t.message)}}}(e,e)}))})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio.wasm b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio.wasm new file mode 100644 index 0000000000000000000000000000000000000000..df2f3bc601bbcef45d75d8af50c3881fe80c673f Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-audio.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-hard-not-wasm.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-hard-not-wasm.js new file mode 100644 index 0000000000000000000000000000000000000000..25db71609ba18bab453f14fe354d54f28a9abbf3 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-hard-not-wasm.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),s=1e-6,a="undefined"!=typeof Float32Array?Float32Array:Array;function n(){var e=new a(16);return a!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function o(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var d,l=function(e,t,i,r,s,a,n){var o=1/(t-i),d=1/(r-s),l=1/(a-n);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+i)*o,e[13]=(s+r)*d,e[14]=(n+a)*l,e[15]=1,e};function c(e,t,i){var r=new a(3);return r[0]=e,r[1]=t,r[2]=i,r}d=new a(3),a!=Float32Array&&(d[0]=0,d[1]=0,d[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const i=function(){const t=_(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),i=_(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),r=e.createProgram();if(e.attachShader(r,t),e.attachShader(r,i),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(r)),null;return r}();let r={program:i,attribLocations:{vertexPosition:e.getAttribLocation(i,"aVertexPosition"),texturePosition:e.getAttribLocation(i,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(i,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(i,"uModelMatrix"),viewMatrix:e.getUniformLocation(i,"uViewMatrix"),rgbatexture:e.getUniformLocation(i,"rgbaTexture"),ytexture:e.getUniformLocation(i,"yTexture"),utexture:e.getUniformLocation(i,"uTexture"),vtexture:e.getUniformLocation(i,"vTexture"),isyuv:e.getUniformLocation(i,"isyuv")}},a=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var i=[];i=i.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),e.STATIC_DRAW);const s=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,s);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:r,indices:s}}(),d=p(),u=p(),h=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function _(t,i){const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)}function m(t,i){e.viewport(0,0,t,i),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const d=n();l(d,-1,1,-1,1,.1,100);const p=n();o(p);const _=n();!function(e,t,i,r){var a,n,d,l,c,u,h,f,p,_,m=t[0],g=t[1],y=t[2],b=r[0],v=r[1],S=r[2],w=i[0],A=i[1],B=i[2];Math.abs(m-w)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let r=Math.min(i,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Nt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Gt=Nt,Ot=Nt;function Ht(e){let{profile:t,sampleRate:i,channel:r}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|r<<3])}function Vt(e){return $t(e)&&e[1]===At}function $t(e){return e[0]>>4===Me}const Wt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Yt(e){let t=new Uint8Array(e),i=null,r=0,s=0,a=0,n=null;if(r=s=t[0]>>>3,a=(7&t[0])<<1|t[1]>>>7,a<0||a>=Wt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Wt[a],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===r&&(n=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?a>=6?(r=5,i=new Array(4),n=a-3):(r=2,i=new Array(2),n=a):-1!==l.indexOf("android")?(r=2,i=new Array(2),n=a):(r=5,n=a,i=new Array(4),a>=6?n=a-3:1===d&&(r=2,i=new Array(2),n=a)),i[0]=r<<3,i[0]|=(15&a)>>>1,i[1]=(15&a)<<7,i[1]|=(15&d)<<3,5===r&&(i[1]|=(15&n)>>>1,i[2]=(1&n)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:o,channelCount:d,objectType:r,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}class qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,r=(8&e[i+1])>>>3,s=(6&e[i+1])>>>1,a=1&e[i+1],n=(192&e[i+2])>>>6,o=(60&e[i+2])>>>2,d=(1&e[i+2])<<2|(192&e[i+3])>>>6,l=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===a?7:9,u=l-c;i+=c;let h=this.findNextSyncwordOffset(i+u);if(this.current_syncword_offset_=h,0!==r&&1!==r||0!==s)continue;let f=e.subarray(i,i+u);t={},t.audio_object_type=n+1,t.sampling_freq_index=o,t.sampling_frequency=Gt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class jt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let r=0;r<=t;r++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let r=this.current_syncword_offset_,s=(31&t[r+1])<<8|t[r+2];if(r+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let a=new Rt(t.subarray(r+3,r+3+s)),n=null;if(a.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(r+3+s),a.destroy();continue}n=e}else{let e=a.readBool();if(e&&a.readBool()){console.error("audioMuxVersionA is Not Supported"),a.destroy();break}if(e&&this.getLATMValue(a),!a.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),a.destroy();break}if(0!==a.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),a.destroy();break}if(0!==a.readBits(4)){console.error("more than 2 numProgram Not Supported"),a.destroy();break}if(0!==a.readBits(3)){console.error("more than 2 numLayer Not Supported"),a.destroy();break}let t=e?this.getLATMValue(a):0,i=a.readBits(5);t-=5;let r=a.readBits(4);t-=4;let s=a.readBits(4);t-=4,a.readBits(3),t-=3,t>0&&a.readBits(t);let o=a.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),a.destroy();break}a.readByte();let d=a.readBool();if(d)if(e)this.getLATMValue(a);else{let e=0;for(;;){e<<=8;let t=a.readBool();if(e+=a.readByte(),!t)break}console.log(e)}a.readBool()&&a.readByte(),n={},n.audio_object_type=i,n.sampling_freq_index=r,n.sampling_frequency=Gt[n.sampling_freq_index],n.channel_config=s,n.other_data_present=d}let o=0;for(;;){let e=a.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Xt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const i=e.length,r=[];let s,a=0;for(;a+t>>=8),a+=t,s){if(a+s>i)break;r.push(e.subarray(a,a+s)),a+=s}return r}function Zt(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const r=new Uint8Array(t+4);return r.set(i,0),r.set(e,4),r}function Jt(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}function Qt(){return(new Date).getTime()}function ei(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ti(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ii(e){let t=0,i=ti();return r=>{if(s=r,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=r;const a=ti(),n=a-i;n>=1e3&&(e(t/n*1e3),i=a,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function ri(e){return null==e}function si(e){return!ri(e)}function ai(e){return"function"==typeof e}function ni(e){let t=null,i=31&e[0];return i!==Ge&&i!==Oe||(t=Le),t||(i=(126&e[0])>>1,i!==tt&&i!==rt&&i!==at||(t=Pe)),t}function oi(){return"undefined"!=typeof WritableStream}function di(e){e.close()}function li(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],r=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,s=2)}if(i)for(let a=s;a=1e3){e[a-1].ts-i.ts<1e3&&(r=a+1)}}}return r}function ci(e){return e.ok&&e.status>=200&&e.status<=299}function ui(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(i){t=e}else t=e;return t}(B)}function hi(e){return e[0]>>4===Bt&&e[1]===At}function fi(e){return!0===e||"true"===e}function pi(e){return!0!==e&&"true"!==e}function _i(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}function mi(e,t){const i=Xt(e.slice(5));let r=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===Ke||i===Ze||i===Qe)||pi(t)&&i===He)&&(r=!0)})),r}var gi=function(e,t,i,r){return new(i||(i=Promise))((function(s,a){function n(e){try{d(r.next(e))}catch(e){a(e)}}function o(e){try{d(r.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(n,o)}d((r=r.apply(e,t||[])).next())}))};const yi=Symbol(32),bi=Symbol(16),vi=Symbol(8);class Si{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return gi(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var r;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(r=this.pull)||void 0===r||r.call(this,e)}))}))}readU32(){return this.read(yi)}readU16(){return this.read(bi)}readU8(){return this.read(vi)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const r=e=>t.length<(i=e);if("number"==typeof this.need){if(r(this.need))return;e=t.subarray(0,i)}else if(this.need===yi){if(r(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===bi){if(r(2))return;e=t[0]<<8|t[1]}else if(this.need===vi){if(r(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}Si.U32=yi,Si.U16=bi,Si.U8=vi;class wi{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==b){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,r=new Array(i>1?i-1:0),s=1;s1?i-1:0),s=1;s1?r-1:0),a=1;a=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseSPS(e){let t=Ai._ebsp2rbsp(e),i=new Rt(t);i.readByte();let r=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let a=Ai.getProfileString(r),n=Ai.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(o=i.readUEG(),3===o&&i.readBits(1),o<=3&&(d=l[o]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(v=t[e-1],S=r[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),S=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);A=i.readBool(),B=t,U=2*e,w=B/U}}let x=1;1===v&&1===S||(x=v/S);let E=0,T=0;if(0===o)E=1,T=2-_;else{E=3===o?1:2,T=(1===o?2:1)*(2-_)}let k=16*(f+1),C=16*(p+1)*(2-_);k-=(m+g)*E,C-=(y+b)*T;let D=Math.ceil(k*x);return i.destroy(),i=null,{profile_string:a,level_string:n,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Ai.getChromaFormatString(d),frame_rate:{fixed:A,fps:w,fps_den:U,fps_num:B},sar_ratio:{width:v,height:S},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}let r=Ai._ebsp2rbsp(e),s=new Rt(r);s.readByte();let a=s.readByte();s.readByte();let n=s.readByte();s.readUEG();let o=Ai.getProfileString(a),d=Ai.getLevelString(n),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(c=u[l]),h=s.readUEG()+8,f=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(A=t[e-1],B=i[e-1]):255===e&&(A=s.readByte()<<8|s.readByte(),B=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);x=s.readBool(),E=t,T=2*e,U=E/T}}let k=1;1===A&&1===B||(k=A/B);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let I=16*(m+1),F=16*(g+1)*(2-y);I-=(b+v)*C,F-=(S+w)*D;let L=Math.ceil(I*k);return s.destroy(),s=null,{codec_mimetype:i,profile_idc:a,level_idc:n,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:_,chroma_format:c,chroma_format_string:Ai.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:T,fps_num:E},sar_ratio:{width:A,height:B},codec_size:{width:I,height:F},present_size:{width:L,height:F}}}static _skipScalingList(e,t){let i=8,r=8,s=0;for(let a=0;a=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.sps,4),t.sps=r}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.pps,4),t.pps=r}return t}function xi(e){let{sps:t,pps:i}=e;const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=t[1],r[7]=t[2],r[8]=t[3],r[10]=225,r[11]=t.byteLength>>8&255,r[12]=255&t.byteLength,r.push(...t,1,i.byteLength>>8&255,255&i.byteLength,...i);return new Uint8Array(r)}function Ei(e){let{sps:t,pps:i}=e,r=8+t.byteLength+1+2+i.byteLength,s=!1;const a=Ai.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,r+=4);let n=new Uint8Array(r);n[0]=1,n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=255,n[5]=225;let o=t.byteLength;n[6]=o>>>8,n[7]=255&o;let d=8;n.set(t,8),d+=o,n[d]=1;let l=i.byteLength;n[d+1]=l>>>8,n[d+2]=255&l,n.set(i,d+3),d+=3+l,s&&(n[d]=252|a.chroma_format_idc,n[d+1]=248|a.bit_depth_luma-8,n[d+2]=248|a.bit_depth_chroma-8,n[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+n.byteLength);return u.set(c,0),u.set(n,c.length),u}function Ti(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function ki(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Ci(e){return 31&e[0]}function Di(e){return e===We}function Ii(e){return!function(e){return e===Ge||e===Oe}(e)&&!Di(e)}function Fi(e){return e===He}function Li(e){if(0===e.length)return!1;const t=Ci(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=31&e[i],s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,r>=je||0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class Mi{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const zi=e=>{let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)},Ri=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Ni{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseVPS(e){let t=Ni._ebsp2rbsp(e),i=new Rt(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}}static parseSPS(e){let t=Ni._ebsp2rbsp(e),i=new Rt(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(L=t[e-1],P=r[e-1]):255===e&&(L=i.readBits(16),P=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(z=i.readBits(32),R=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();M=s;let a=!0,n=1;s||(a=i.readBool());let o=!1;if(a?i.readUEG():o=i.readBool(),o||(n=i.readUEG()+1),e){for(let e=0;e>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let r=e[22],s=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);r.sub_layer_profile_space=[],r.sub_layer_tier_flag=[],r.sub_layer_profile_idc=[],r.sub_layer_profile_compatibility_flag=[],r.sub_layer_progressive_source_flag=[],r.sub_layer_interlaced_source_flag=[],r.sub_layer_non_packed_constraint_flag=[],r.sub_layer_frame_only_constraint_flag=[],r.sub_layer_level_idc=[];for(let t=0;t{let t=zi(e),i=new Rt(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(t),n=(e=>{let t=zi(e),i=new Rt(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(L=t[e-1],P=r[e-1]):255===e&&(L=i.readBits(16),P=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(r+=i.readUEG(),s+=i.readUEG(),a+=i.readUEG(),n+=i.readUEG()),i.readBool()&&(z=i.readBits(32),R=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();M=s;let a=!1,n=1;s||(a=i.readBool());let o=!1;if(a?i.readSEG():o=i.readBool(),o||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=zi(e),i=new Rt(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let r=i.readBool(),s=i.readBool(),a=1;return s&&r?a=0:s?a=3:r&&(a=2),{parallelismType:a}})(i);s=Object.assign(s,a,n,o);let d=23+(5+t.byteLength)+(5+r.byteLength)+(5+i.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|tt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|rt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+r.byteLength)+0]=128|at,l[23+(5+t.byteLength+5+r.byteLength)+1]=0,l[23+(5+t.byteLength+5+r.byteLength)+2]=1,l[23+(5+t.byteLength+5+r.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength+5+r.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength+5+r.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function $i(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Wi(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Yi(e){return(126&e[0])>>1}function qi(e){return e===ot}function ji(e){return!function(e){return e>=32&&e<=40}(e)}function Ki(e){return e>=16&&e<=21}function Xi(e){if(0===e.length)return!1;const t=Yi(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=e[i]>>1&63,s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class Ji{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function Qi(e){return parseInt(e)===e}function er(e){if(!Qi(e.length))return!1;for(var t=0;t255)return!1;return!0}function tr(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!er(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Qi(e.length)&&er(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ir(e){return new Uint8Array(e)}function rr(e,t,i,r,s){null==r&&null==s||(e=e.slice?e.slice(r,s):Array.prototype.slice.call(e,r,s)),t.set(e,i)}var sr,ar={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&r<224?(t.push(String.fromCharCode((31&r)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&r)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},nr=(sr="0123456789abcdef",{toBytes:function(e){for(var t=[],i=0;i>4]+sr[15&r])}return t.join("")}}),or={16:10,24:12,32:14},dr=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],lr=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],cr=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],ur=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],hr=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],fr=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],pr=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],_r=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],mr=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],gr=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],yr=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],br=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],vr=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Sr=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],wr=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Ar(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=a[t],this._Kd[e-i][t%4]=a[t];for(var n,o=0,d=s;d>16&255]<<24^lr[n>>8&255]<<16^lr[255&n]<<8^lr[n>>24&255]^dr[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^lr[n>>16&255]<<16^lr[n>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=a[t],this._Kd[e-l][c]=a[t++],d++}for(var l=1;l>24&255]^vr[n>>16&255]^Sr[n>>8&255]^wr[255&n]},Br.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],r=Ar(e),s=0;s<4;s++)r[s]^=this._Ke[0][s];for(var a=1;a>24&255]^hr[r[(s+1)%4]>>16&255]^fr[r[(s+2)%4]>>8&255]^pr[255&r[(s+3)%4]]^this._Ke[a][s];r=i.slice()}var n,o=ir(16);for(s=0;s<4;s++)n=this._Ke[t][s],o[4*s]=255&(lr[r[s]>>24&255]^n>>24),o[4*s+1]=255&(lr[r[(s+1)%4]>>16&255]^n>>16),o[4*s+2]=255&(lr[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(lr[255&r[(s+3)%4]]^n);return o},Br.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],r=Ar(e),s=0;s<4;s++)r[s]^=this._Kd[0][s];for(var a=1;a>24&255]^mr[r[(s+3)%4]>>16&255]^gr[r[(s+2)%4]>>8&255]^yr[255&r[(s+1)%4]]^this._Kd[a][s];r=i.slice()}var n,o=ir(16);for(s=0;s<4;s++)n=this._Kd[t][s],o[4*s]=255&(cr[r[s]>>24&255]^n>>24),o[4*s+1]=255&(cr[r[(s+3)%4]>>16&255]^n>>16),o[4*s+2]=255&(cr[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(cr[255&r[(s+1)%4]]^n);return o};var Ur=function(e){if(!(this instanceof Ur))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Br(e)};Ur.prototype.encrypt=function(e){if((e=tr(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ir(e.length),i=ir(16),r=0;rNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},kr.prototype.setBytes=function(e){if(16!=(e=tr(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},kr.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Cr=function(e,t){if(!(this instanceof Cr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof kr||(t=new kr(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Br(e)};Cr.prototype.encrypt=function(e){for(var t=tr(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,r=0;r>>2]>>>24-a%4*8&255;t[r+a>>>2]|=n<<24-(r+a)%4*8}else for(var o=0;o>>2]=i[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-s%4*8&255;r.push((a>>>4).toString(16)),r.push((15&a).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new l.init(i,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>24-s%4*8&255;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new l.init(i,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,r=this._data,s=r.words,a=r.sigBytes,n=this.blockSize,o=a/(4*n),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*n,c=e.min(4*d,a);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,r,i)}else t.apply(this,arguments)};r.prototype=e}}(),i.lib.WordArray)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.WordArray,r=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>16-s%4*8&65535;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var i=e.length,r=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(r,2*i)}},r.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],a=0;a>>2]>>>16-a%4*8&65535);r.push(String.fromCharCode(n))}return r.join("")},parse:function(e){for(var i=e.length,r=[],a=0;a>>1]|=s(e.charCodeAt(a)<<16-a%2*16);return t.create(r,2*i)}}}(),i.enc.Utf16)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.WordArray;function r(e,i,r){for(var s=[],a=0,n=0;n>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,r=this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,o=0;o<4&&a+.75*o>>6*(3-o)&63));var d=r.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,i=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,r=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var a=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(i[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|i[n+2>>>2]>>>24-(n+2)%4*8&255,d=0;d<4&&n+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;a.length%4;)a.push(l);return a.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,s=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var n=0;n>>24)|4278255360&(s<<24|s>>>8)}var a=this._hash.words,n=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],_=e[t+4],m=e[t+5],g=e[t+6],y=e[t+7],b=e[t+8],v=e[t+9],S=e[t+10],w=e[t+11],A=e[t+12],B=e[t+13],U=e[t+14],x=e[t+15],E=a[0],T=a[1],k=a[2],C=a[3];E=l(E,T,k,C,n,7,o[0]),C=l(C,E,T,k,d,12,o[1]),k=l(k,C,E,T,f,17,o[2]),T=l(T,k,C,E,p,22,o[3]),E=l(E,T,k,C,_,7,o[4]),C=l(C,E,T,k,m,12,o[5]),k=l(k,C,E,T,g,17,o[6]),T=l(T,k,C,E,y,22,o[7]),E=l(E,T,k,C,b,7,o[8]),C=l(C,E,T,k,v,12,o[9]),k=l(k,C,E,T,S,17,o[10]),T=l(T,k,C,E,w,22,o[11]),E=l(E,T,k,C,A,7,o[12]),C=l(C,E,T,k,B,12,o[13]),k=l(k,C,E,T,U,17,o[14]),E=c(E,T=l(T,k,C,E,x,22,o[15]),k,C,d,5,o[16]),C=c(C,E,T,k,g,9,o[17]),k=c(k,C,E,T,w,14,o[18]),T=c(T,k,C,E,n,20,o[19]),E=c(E,T,k,C,m,5,o[20]),C=c(C,E,T,k,S,9,o[21]),k=c(k,C,E,T,x,14,o[22]),T=c(T,k,C,E,_,20,o[23]),E=c(E,T,k,C,v,5,o[24]),C=c(C,E,T,k,U,9,o[25]),k=c(k,C,E,T,p,14,o[26]),T=c(T,k,C,E,b,20,o[27]),E=c(E,T,k,C,B,5,o[28]),C=c(C,E,T,k,f,9,o[29]),k=c(k,C,E,T,y,14,o[30]),E=u(E,T=c(T,k,C,E,A,20,o[31]),k,C,m,4,o[32]),C=u(C,E,T,k,b,11,o[33]),k=u(k,C,E,T,w,16,o[34]),T=u(T,k,C,E,U,23,o[35]),E=u(E,T,k,C,d,4,o[36]),C=u(C,E,T,k,_,11,o[37]),k=u(k,C,E,T,y,16,o[38]),T=u(T,k,C,E,S,23,o[39]),E=u(E,T,k,C,B,4,o[40]),C=u(C,E,T,k,n,11,o[41]),k=u(k,C,E,T,p,16,o[42]),T=u(T,k,C,E,g,23,o[43]),E=u(E,T,k,C,v,4,o[44]),C=u(C,E,T,k,A,11,o[45]),k=u(k,C,E,T,x,16,o[46]),E=h(E,T=u(T,k,C,E,f,23,o[47]),k,C,n,6,o[48]),C=h(C,E,T,k,y,10,o[49]),k=h(k,C,E,T,U,15,o[50]),T=h(T,k,C,E,m,21,o[51]),E=h(E,T,k,C,A,6,o[52]),C=h(C,E,T,k,p,10,o[53]),k=h(k,C,E,T,S,15,o[54]),T=h(T,k,C,E,d,21,o[55]),E=h(E,T,k,C,b,6,o[56]),C=h(C,E,T,k,x,10,o[57]),k=h(k,C,E,T,g,15,o[58]),T=h(T,k,C,E,B,21,o[59]),E=h(E,T,k,C,_,6,o[60]),C=h(C,E,T,k,w,10,o[61]),k=h(k,C,E,T,f,15,o[62]),T=h(T,k,C,E,v,21,o[63]),a[0]=a[0]+E|0,a[1]=a[1]+T|0,a[2]=a[2]+k|0,a[3]=a[3]+C|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;i[s>>>5]|=128<<24-s%32;var a=e.floor(r/4294967296),n=r;i[15+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),i[14+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),t.sigBytes=4*(i.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,i,r,s,a,n){var o=e+(t&i|~t&r)+s+n;return(o<>>32-a)+t}function c(e,t,i,r,s,a,n){var o=e+(t&r|i&~r)+s+n;return(o<>>32-a)+t}function u(e,t,i,r,s,a,n){var o=e+(t^i^r)+s+n;return(o<>>32-a)+t}function h(e,t,i,r,s,a,n){var o=e+(i^(t|~r))+s+n;return(o<>>32-a)+t}t.MD5=a._createHelper(d),t.HmacMD5=a._createHmacHelper(d)}(Math),i.MD5)})),zt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Ir).lib,s=r.WordArray,a=r.Hasher,n=i.algo,o=[],d=n.SHA1=a.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],d=i[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(r<<5|r>>>27)+d+o[l];u+=l<20?1518500249+(s&a|~s&n):l<40?1859775393+(s^a^n):l<60?(s&a|s&n|a&n)-1894007588:(s^a^n)-899497514,d=n,n=a,a=s<<30|s>>>2,s=r,r=u}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(r+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=a._createHelper(d),i.HmacSHA1=a._createHmacHelper(d),l.SHA1)})),zt((function(e,t){var i;e.exports=(i=Ir,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=[],d=[];!function(){function t(t){for(var i=e.sqrt(t),r=2;r<=i;r++)if(!(t%r))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var r=2,s=0;s<64;)t(r)&&(s<8&&(o[s]=i(e.pow(r,.5))),d[s]=i(e.pow(r,1/3)),s++),r++}();var l=[],c=n.SHA256=a.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,m=l[f-2],g=(m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10;l[f]=_+l[f-7]+g+l[f-16]}var y=r&s^r&a^s&a,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),v=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=n+v|0,n=a,a=s,s=r,r=v+(b+y)|0}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+o|0,i[5]=i[5]+c|0,i[6]=i[6]+u|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;return i[s>>>5]|=128<<24-s%32,i[14+(s+64>>>9<<4)]=e.floor(r/4294967296),i[15+(s+64>>>9<<4)]=r,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(c),t.HmacSHA256=a._createHmacHelper(c)}(Math),i.SHA256)})),zt((function(e,t){var i,r,s,a,n,o;e.exports=(r=(i=o=Ir).lib.WordArray,s=i.algo,a=s.SHA256,n=s.SHA224=a.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=a._createHelper(n),i.HmacSHA224=a._createHmacHelper(n),o.SHA224)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.Hasher,r=e.x64,s=r.Word,a=r.WordArray,n=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=n.SHA512=t.extend({_doReset:function(){this._hash=new a.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=r.high,p=r.low,_=s.high,m=s.low,g=a.high,y=a.low,b=n.high,v=n.low,S=o.high,w=o.low,A=c.high,B=c.low,U=u.high,x=u.low,E=h.high,T=h.low,k=f,C=p,D=_,I=m,F=g,L=y,P=b,M=v,z=S,R=w,N=A,G=B,O=U,H=x,V=E,$=T,W=0;W<80;W++){var Y,q,j=l[W];if(W<16)q=j.high=0|e[t+2*W],Y=j.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,ie=ee.low,re=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,se=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),ae=l[W-7],ne=ae.high,oe=ae.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ne+((Y=Q+oe)>>>0>>0?1:0))+re+((Y+=se)>>>0>>0?1:0))+le+((Y+=ce)>>>0>>0?1:0),j.high=q,j.low=Y}var ue,he=z&N^~z&O,fe=R&G^~R&H,pe=k&D^k&F^D&F,_e=C&I^C&L^I&L,me=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=d[W],Se=ve.high,we=ve.low,Ae=V+ye+((ue=$+be)>>>0<$>>>0?1:0),Be=ge+_e;V=O,$=H,O=N,H=G,N=z,G=R,z=P+(Ae=(Ae=(Ae=Ae+he+((ue+=fe)>>>0>>0?1:0))+Se+((ue+=we)>>>0>>0?1:0))+q+((ue+=Y)>>>0>>0?1:0))+((R=M+ue|0)>>>0>>0?1:0)|0,P=F,M=L,F=D,L=I,D=k,I=C,k=Ae+(me+pe+(Be>>>0>>0?1:0))+((C=ue+Be|0)>>>0>>0?1:0)|0}p=r.low=p+C,r.high=f+k+(p>>>0>>0?1:0),m=s.low=m+I,s.high=_+D+(m>>>0>>0?1:0),y=a.low=y+L,a.high=g+F+(y>>>0>>0?1:0),v=n.low=v+M,n.high=b+P+(v>>>0>>0?1:0),w=o.low=w+R,o.high=S+z+(w>>>0>>0?1:0),B=c.low=B+G,c.high=A+N+(B>>>0>>0?1:0),x=u.low=x+H,u.high=U+O+(x>>>0>>0?1:0),T=h.low=T+$,h.high=E+V+(T>>>0<$>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(r+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),i.SHA512)})),zt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Ir).x64,s=r.Word,a=r.WordArray,n=i.algo,o=n.SHA512,d=n.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=o._createHelper(d),i.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),zt((function(e,t){var i;e.exports=(i=Ir,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,i=0;i<24;i++){d[e+5*t]=(i+1)*(i+2)/2%64;var r=(2*e+3*t)%5;e=t%5,t=r}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,a=0;a<24;a++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(a<<24|a>>>8),n=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),(T=i[s]).high^=n,T.low^=a}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,_=0;_<5;_++)f^=(T=i[h+5*_]).high,p^=T.low;var m=u[h];m.high=f,m.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],b=y.high,v=y.low;for(f=g.high^(b<<1|v>>>31),p=g.low^(v<<1|b>>>31),_=0;_<5;_++)(T=i[h+5*_]).high^=f,T.low^=p}for(var S=1;S<25;S++){var w=(T=i[S]).high,A=T.low,B=d[S];B<32?(f=w<>>32-B,p=A<>>32-B):(f=A<>>64-B,p=w<>>64-B);var U=u[l[S]];U.high=f,U.low=p}var x=u[0],E=i[0];for(x.high=E.high,x.low=E.low,h=0;h<5;h++)for(_=0;_<5;_++){var T=i[S=h+5*_],k=u[S],C=u[(h+1)%5+5*_],D=u[(h+2)%5+5*_];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=i[0];var I=c[o];T.high^=I.high,T.low^=I.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var r=8*t.sigBytes,a=32*this.blockSize;i[r>>>5]|=1<<24-r%32,i[(e.ceil((r+1)/a)*a>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var n=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=a._createHelper(h),t.HmacSHA3=a._createHmacHelper(h)}(Math),i.SHA3)})),zt((function(e,t){var i;e.exports=(i=Ir,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=n.RIPEMD160=a.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var r=t+i,s=e[r];e[r]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var a,n,f,v,S,w,A,B,U,x,E,T=this._hash.words,k=u.words,C=h.words,D=o.words,I=d.words,F=l.words,L=c.words;for(w=a=T[0],A=n=T[1],B=f=T[2],U=v=T[3],x=S=T[4],i=0;i<80;i+=1)E=a+e[t+D[i]]|0,E+=i<16?p(n,f,v)+k[0]:i<32?_(n,f,v)+k[1]:i<48?m(n,f,v)+k[2]:i<64?g(n,f,v)+k[3]:y(n,f,v)+k[4],E=(E=b(E|=0,F[i]))+S|0,a=S,S=v,v=b(f,10),f=n,n=E,E=w+e[t+I[i]]|0,E+=i<16?y(A,B,U)+C[0]:i<32?g(A,B,U)+C[1]:i<48?m(A,B,U)+C[2]:i<64?_(A,B,U)+C[3]:p(A,B,U)+C[4],E=(E=b(E|=0,L[i]))+x|0,w=x,x=U,U=b(B,10),B=A,A=E;E=T[1]+f+U|0,T[1]=T[2]+v+x|0,T[2]=T[3]+S+w|0,T[3]=T[4]+a+A|0,T[4]=T[0]+n+B|0,T[0]=E},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,a=s.words,n=0;n<5;n++){var o=a[n];a[n]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,i){return e^t^i}function _(e,t,i){return e&t|~e&i}function m(e,t,i){return(e|~t)^i}function g(e,t,i){return e&i|t&~i}function y(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=a._createHelper(f),t.HmacRIPEMD160=a._createHmacHelper(f)}(),i.RIPEMD160)})),zt((function(e,t){var i,r,s;e.exports=(r=(i=Ir).lib.Base,s=i.enc.Utf8,void(i.algo.HMAC=r.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var i=e.blockSize,r=4*i;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),n=this._iKey=t.clone(),o=a.words,d=n.words,l=0;l>>2];e.sigBytes-=t}};r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,i=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(r,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var _=r.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),m=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?a.create([1398893684,1701076831]).concat(i).concat(t):t).toString(d)},parse:function(e){var t,i=d.parse(e),r=i.words;return 1398893684==r[0]&&1701076831==r[1]&&(t=a.create(r.slice(2,4)),r.splice(0,4),i.sigBytes-=16),_.create({ciphertext:i,salt:t})}},g=r.SerializableCipher=s.extend({cfg:s.extend({format:m}),encrypt:function(e,t,i,r){r=this.cfg.extend(r);var s=e.createEncryptor(i,r),a=s.finalize(t),n=s.cfg;return _.create({ciphertext:a,key:i,iv:n.iv,algorithm:e,mode:n.mode,padding:n.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,i,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(i,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,i,r,s){if(r||(r=a.random(8)),s)n=l.create({keySize:t+i,hasher:s}).compute(e,r);else var n=l.create({keySize:t+i}).compute(e,r);var o=a.create(n.words.slice(t),4*i);return n.sigBytes=4*t,_.create({key:n,iv:o,salt:r})}},b=r.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,i,r){var s=(r=this.cfg.extend(r)).kdf.execute(i,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=s.iv;var a=g.encrypt.call(this,e,t,s.key,r);return a.mixIn(s),a},decrypt:function(e,t,i,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var s=r.kdf.execute(i,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=s.iv,g.decrypt.call(this,e,t,s.key,r)}})}())})),zt((function(e,t){var i;e.exports=((i=Ir).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,r){var s,a=this._iv;a?(s=a.slice(0),this._iv=void 0):s=this._prevBlock,r.encryptBlock(s,0);for(var n=0;n>24&255)){var t=e>>16&255,i=e>>8&255,r=255&e;255===t?(t=0,255===i?(i=0,255===r?r=0:++r):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=r}else e+=1<<24;return e}function r(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,s=i.blockSize,a=this._iv,n=this._counter;a&&(n=this._counter=a.slice(0),this._iv=void 0),r(n);var o=n.slice(0);i.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-a%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),zt((function(e,t){var i;e.exports=((i=Ir).pad.Iso10126={pad:function(e,t){var r=4*t,s=r-e.sigBytes%r;e.concat(i.lib.WordArray.random(s-1)).concat(i.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),zt((function(e,t){var i;e.exports=((i=Ir).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),zt((function(e,t){var i;e.exports=((i=Ir).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),zt((function(e,t){var i;e.exports=((i=Ir).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),zt((function(e,t){var i;e.exports=(i=Ir,function(e){var t=i,r=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return r.create({ciphertext:t})}}}(),i.format.Hex)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.BlockCipher,r=e.algo,s=[],a=[],n=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,r=0;for(t=0;t<256;t++){var p=r^r<<1^r<<2^r<<3^r<<4;p=p>>>8^255&p^99,s[i]=p,a[p]=i;var _=e[i],m=e[_],g=e[m],y=257*e[p]^16843008*p;n[i]=y<<24|y>>>8,o[i]=y<<16|y>>>16,d[i]=y<<8|y>>>24,l[i]=y,y=16843009*g^65537*m^257*_^16843008*i,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,i?(i=_^e[e[e[g^_]]],r^=e[e[r]]):i=r=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=r.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,r=4*((this._nRounds=i+6)+1),a=this._keySchedule=[],n=0;n6&&n%i==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[n/i|0]<<24),a[n]=a[n-i]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,n,o,d,l,s)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,a),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,r,s,a,n,o){for(var d=this._nRounds,l=e[t]^i[0],c=e[t+1]^i[1],u=e[t+2]^i[2],h=e[t+3]^i[3],f=4,p=1;p>>24]^s[c>>>16&255]^a[u>>>8&255]^n[255&h]^i[f++],m=r[c>>>24]^s[u>>>16&255]^a[h>>>8&255]^n[255&l]^i[f++],g=r[u>>>24]^s[h>>>16&255]^a[l>>>8&255]^n[255&c]^i[f++],y=r[h>>>24]^s[l>>>16&255]^a[c>>>8&255]^n[255&u]^i[f++];l=_,c=m,u=g,h=y}_=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^i[f++],m=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^i[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^i[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^i[f++],e[t]=_,e[t+1]=m,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(_)}(),i.AES)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib,r=t.WordArray,s=t.BlockCipher,a=e.algo,n=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=a.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var r=n[i]-1;t[i]=e[r>>>5]>>>31-r%32&1}for(var s=this._subKeys=[],a=0;a<16;a++){var l=s[a]=[],c=d[a];for(i=0;i<24;i++)l[i/6|0]|=t[(o[i]-1+c)%28]<<31-i%6,l[4+(i/6|0)]|=t[28+(o[i+24]-1+c)%28]<<31-i%6;for(l[0]=l[0]<<1|l[0]>>>31,i=1;i<7;i++)l[i]=l[i]>>>4*(i-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(i=0;i<16;i++)u[i]=s[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var r=0;r<16;r++){for(var s=i[r],a=this._lBlock,n=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((n^s[d])&c[d])>>>0];this._lBlock=n,this._rBlock=a^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(r.create(t)),this._des2=u.createEncryptor(r.create(i)),this._des3=u.createEncryptor(r.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),i.TripleDES)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=r.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,r=this._S=[],s=0;s<256;s++)r[s]=s;s=0;for(var a=0;s<256;s++){var n=s%i,o=t[n>>>2]>>>24-n%4*8&255;a=(a+r[s]+o)%256;var d=r[s];r[s]=r[a],r[a]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:8,ivSize:0});function a(){for(var e=this._S,t=this._i,i=this._j,r=0,s=0;s<4;s++){i=(i+e[t=(t+1)%256])%256;var a=e[t];e[t]=e[i],e[i]=a,r|=e[(e[t]+e[i])%256]<<24-8*s}return this._i=t,this._j=i,r}e.RC4=t._createHelper(s);var n=r.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});e.RC4Drop=t._createHelper(n)}(),i.RC4)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)d.call(this);for(i=0;i<8;i++)s[i]^=r[i+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,i=0;i<4;i++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.Rabbit=t._createHelper(o)}(),i.Rabbit)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)r[s]^=i[s+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(r[0]^=l,r[1]^=u,r[2]^=c,r[3]^=h,r[4]^=l,r[5]^=u,r[6]^=c,r[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.RabbitLegacy=t._createHelper(o)}(),i.RabbitLegacy)})),zt((function(e,t){var i;e.exports=(i=Ir,function(){var e=i,t=e.lib.BlockCipher,r=e.algo;const s=16,a=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],n=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let i=t>>24&255,r=t>>16&255,s=t>>8&255,a=255&t,n=e.sbox[0][i]+e.sbox[1][r];return n^=e.sbox[2][s],n+=e.sbox[3][a],n}function l(e,t,i){let r,a=t,n=i;for(let t=0;t1;--t)a^=e.pbox[t],n=d(e,a)^n,r=a,a=n,n=r;return r=a,a=n,n=r,n^=e.pbox[1],a^=e.pbox[0],{left:a,right:n}}function u(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=n[t][i]}let r=0;for(let n=0;n=i&&(r=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const s=e.byteLength;let a=5;for(;as)break;let o=e[a+4],d=!1;if(r?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const r=e.slice(a+4+2,a+4+n);let s=new Dr.ModeOfOperation.ctr(t,new Dr.Counter(i));const o=s.decrypt(r);s=null,e.set(o,a+4+2)}a=a+4+n}return e}function Pr(e,t,i){if(e.byteLength<=30)return e;const r=e.slice(32);let s=new Dr.ModeOfOperation.ctr(t,new Dr.Counter(i));const a=s.decrypt(r);return s=null,e.set(a,32),e}zt((function(e,t){e.exports=Ir}));var Mr=zt((function(e,t){var r,s,a,n=(r=new Date,s=4,a={setLogLevel:function(e){s=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=s&&console.debug("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},a);n.getDurationString=function(e,t){var i;function r(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",r=0;r0&&(i+=","),i+="["+n.getDurationString(e.start(r))+","+n.getDurationString(e.end(r))+"]";return i}return"(empty)"},t.Log=n;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var r=new ArrayBuffer(i),s=new Uint8Array(this._buffer);new Uint8Array(r,0,s.length).set(s),this.buffer=r,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,i,r,s){var a=new Uint8Array(e,t,s),n=new Uint8Array(i,r,s);a.set(n)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;is;r--,s++){var a=t[s];t[s]=t[r],t[r]=a}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,n.debug("MultiBufferStream","Stream ready for parsing"),!0):(n.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(n.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){n.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},c.prototype.reduceBuffer=function(e,t,i){var r;return(r=new Uint8Array(i)).set(new Uint8Array(e,t,i)),r.buffer.fileStart=e.fileStart+t,r.buffer.usedBytes=0,r.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,i=0;ir.byteLength){this.buffers.splice(i,1),i--;continue}n.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=r.fileStart||(e=this.reduceBuffer(e,0,r.fileStart-e.fileStart)),n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,a)}}t&&(n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,i,r,s,a,o=[],d="";for(r=0,s=0,t=0;t0&&(d+=a.end-1+"]");var l=e?n.info:n.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+r+"/"+s+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,i){var r,s=null,a=-1;for(r=!0===e?0:this.bufferIndex;r=t?(n.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},c.prototype.findEndContiguousBuf=function(e){var t,i,r,s=void 0!==e?e:this.bufferIndex;if(i=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===r&&i.data.length>=2&&(r=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),r}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){h.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){h.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,r){h.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=r},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(n.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+i),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),n.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?r=new h[c+"Box"](l):"uuid"!==c?(n.warn("BoxParser","Unknown box type: '"+c+"'"),(r=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[a]?r=new h.UUIDBoxes[a](l):(n.warn("BoxParser","Unknown uuid type: '"+a+"'"),(r=new h.Box(c,l)).uuid=a,r.has_unparsed_data=!0),r.hdr_size=d,r.start=o,r.write===h.Box.prototype.write&&"mdat"!==r.type&&(n.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(e)),r.parse(e),(s=e.getPosition()-(r.start+r.size))<0?(n.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(r.start+r.size)):s>0&&(n.error("BoxParser","Parsing of box '"+u+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==r.size&&e.seek(r.start+r.size)),{code:h.OK,box:r,size:r.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)n.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void n.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else n.error("av1C reserved_1 parsing problem");else n.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|r>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,r.bsid=s>>1&31,r.bsmod=(1&s)<<4|a>>4&15,r.acmod=a>>1&7,r.lfeon=1&a,r.num_dep_sub=n>>1&15,r.num_dep_sub>0&&(r.chan_loc=(1&n)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var r=e.readUint8(),s=Math.min(127&r,i.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[s]),128&r)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,i,r,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var a=e.readUint8();for(t=0;t>7,n.nalu_type=63&s;var o=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var r=0;r>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),n.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?n.property_index=(127&a)<<8|e.readUint8():n.property_index=127&a}}})),h.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,r.assignment_type=127&s,r.assignment_type){case 0:r.grouping_type=e.readString(4);break;case 1:r.grouping_type=e.readString(4),r.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:r.sub_track_id=e.readUint32();break;default:n.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(n.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(r))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),r=0;r>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)n.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[r]=t>>4&3,this.sample_is_depended_on[r]=t>>2&3,this.sample_has_redundancy[r]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),n.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=e.readUint32(),s=e.readUint32(),r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}})),h.SingleItemTypeReferenceBox=function(e,t,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&r}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),r=0;r>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,i,r={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(r.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var n=r.extract_bits(1);this.ptl_sublayer_present_mask|=n<1;++i)r.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(r,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,a="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(a="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,s=!0);t+=a}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var r,s=[],a=0;for(a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(a),a&&(r=e),a=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===r)i=".CA";else{i=".C";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=r;++e)for(o=o<<8|s[e],d+=8;d>=5;){i+=n[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(i+=n[31&(o<<=5-d)])}}t+=i}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(i?"."+i:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),n.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof h.Box||t[i]instanceof h.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,i){var r=this.getTrackById(e);if(r){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=r,r.nextSample=0,s.nb_samples=1e3,s.samples=[],i&&i.nbSamples&&(s.nb_samples=i.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&n.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(n.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(n.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(n.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(n.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},g.prototype.getInfo=function(){var e,t,i,r,s,a,n={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(n.hasMoov=!0,n.duration=this.moov.mvhd.duration,n.timescale=this.moov.mvhd.timescale,n.isFragmented=null!=this.moov.mvex,n.isFragmented&&this.moov.mvex.mehd&&(n.fragment_duration=this.moov.mvex.mehd.fragment_duration),n.isProgressive=this.isProgressive,n.hasIOD=null!=this.moov.iods,n.brands=[],n.brands.push(this.ftyp.major_brand),n.brands=n.brands.concat(this.ftyp.compatible_brands),n.created=new Date(o+1e3*this.moov.mvhd.creation_time),n.modified=new Date(o+1e3*this.moov.mvhd.modification_time),n.tracks=[],n.audioTracks=[],n.videoTracks=[],n.subtitleTracks=[],n.metadataTracks=[],n.hintTracks=[],n.otherTracks=[],e=0;e0?n.mime+='video/mp4; codecs="':n.audioTracks&&n.audioTracks.length>0?n.mime+='audio/mp4; codecs="':n.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(n.info("ISOFile","Sending fragmented data on track #"+r.id+" for samples ["+Math.max(0,i.nextSample-r.nb_samples)+","+(i.nextSample-1)+"]"),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(r.id,r.user,r.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),r.segmentStream=null,r!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(n.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var i=[];return g._sweep.call(this,e,i,t),i},g._sweep=function(e,t,i){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;g._sweep.call(this.boxes[r],e,t,i)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},g.prototype.releaseUsedSamples=function(e,t,i){var r=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var a=s.lastValidSample;ae*s.timescale){l=r-1;break}t&&s.is_sync&&(d=r)}for(t&&(l=d),e=i.samples[l].cts,i.nextSample=l;i.samples[l].alreadyRead===i.samples[l].size&&i.samples[l+1];)l++;return a=i.samples[l].offset+i.samples[l].alreadyRead,n.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+n.getDurationString(e,o)+" and offset: "+a),{offset:a,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var i,r,s,a=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(i)||((r=this.seekTrack(e,t,i)).offset-1){n=d;break}switch(n){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),a.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),a.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),a.addBox(f)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),a.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)a.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&a.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){a.addBox(e)})),s.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(a),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,i){var r=i||{},s={},a=this.getTrackById(e);if(null!==a){s.number=a.samples.length,s.track_id=a.tkhd.track_id,s.timescale=a.mdia.mdhd.timescale,s.description_index=r.sample_description_index?r.sample_description_index-1:0,s.description=a.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=r.duration||1,s.cts=r.cts||0,s.dts=r.dts||0,s.is_sync=r.is_sync||!1,s.is_leading=r.is_leading||0,s.depends_on=r.depends_on||0,s.is_depended_on=r.is_depended_on||0,s.has_redundancy=r.has_redundancy||0,s.degradation_priority=r.degradation_priority||0,s.offset=0,s.subsamples=r.subsamples,a.samples.push(s),a.samples_size+=s.size,a.samples_duration+=s.duration,void 0===a.first_dts&&(a.first_dts=r.dts),this.processSamples();var n=this.createSingleSampleMoof(s);return this.addBox(n),n.computeSize(),n.trafs[0].truns[0].data_offset=n.size+8,this.add("mdat").data=new Uint8Array(t),s}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new h.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var r=i.add("traf"),s=this.getTrackById(e.track_id);return r.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),r.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,i,r,s,a;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=s[n].grouping_type+"/0",(o=new l(s[n].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(n=0;n=2&&(d=r[n].grouping_type+"/0",o=new l(r[n].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,i,r){var s,a;for(s in t.sample_groups=[],r){var n;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=r[s].grouping_type,t.sample_groups[s].grouping_type_parameter=r[s].grouping_type_parameter,i>=r[s].last_sample_in_run&&(r[s].last_sample_in_run<0&&(r[s].last_sample_in_run=0),r[s].entry_index++,r[s].entry_index<=r[s].sbgp.entries.length-1&&(r[s].last_sample_in_run+=r[s].sbgp.entries[r[s].entry_index].sample_count)),r[s].entry_index<=r[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=r[s].sbgp.entries[r[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)n=r[s].fragment_description?r[s].fragment_description:r[s].description,t.sample_groups[s].group_description_index>0?(a=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,n&&a>=0&&(t.sample_groups[s].description=n.entries[a])):n&&n.version>=2&&n.default_group_description_index>0&&(t.sample_groups[s].description=n.entries[n.default_group_description_index-1])}},g.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=a.sample_counts[v]),t>0?(e.samples[t-1].duration=a.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,n?(t>=S&&(w++,S<0&&(S=0),S+=n.sample_counts[w]),x.cts=e.samples[t].dts+n.sample_offsets[w]):x.cts=x.dts,o?(t==o.sample_numbers[A]-1?(x.is_sync=!0,A++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[B].sample_delta+U==t+1&&(x.subsamples=l.entries[B].subsamples,U+=l.entries[B].sample_delta,B++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[B].sample_delta+U==t&&(x.subsamples=l.entries[B].subsamples,U+=l.entries[B].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,i,r,s,a,n,o,d,l,c,u,f,p,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,m.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+m.sample_composition_time_offset[i]),_=n,m.flags&h.TRUN_FLAGS_FLAGS?_=m.sample_flags[i]:0===i&&m.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=m.first_sample_flags),p.is_sync=!(_>>16&1),p.is_leading=_>>26&3,p.depends_on=_>>24&3,p.is_depended_on=_>>22&3,p.has_redundancy=_>>20&3,p.degradation_priority=65535&_;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(m.flags&h.TRUN_FLAGS_DATA_OFFSET),S=0;S=y?c.tfhd.base_data_offset:b||0===t?l.start:o,p.offset=0===t&&0===i?v?S+m.data_offset:S:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var w=c.first_sample_index;for(t=0;t-1))return null;var a=(i=this.stream.buffers[s]).byteLength-(r.offset+r.alreadyRead-i.fileStart);if(r.size-r.alreadyRead<=a)return n.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+(r.size-r.alreadyRead)+" full size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,r.size-r.alreadyRead),i.usedBytes+=r.size-r.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead=r.size,r;if(0===a)return null;n.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+a+" full size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,a),r.alreadyRead+=a,i.usedBytes+=a,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=a.ipro.protections[a.iinf.item_infos[e].protection_index-1]),a.iinf.item_infos[e].item_type?i.type=a.iinf.item_infos[e].item_type:i.type="mime",i.content_type=a.iinf.item_infos[e].content_type,i.content_encoding=a.iinf.item_infos[e].content_encoding;if(a.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return n.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,i.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;n.debug("ISOFile","Getting item #"+e+" extent #"+r+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return i.alreadyRead===i.size?i:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(r)}return t},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var i=void 0===e||e,r=new g(t);return r.discardMdatData=!i,r}};t.createFile=y.createFile}));function zr(e){return e.reduce(((e,t)=>256*e+t))}function Rr(e){const t=[101,103,119,99],i=e.length-28,r=e.slice(i,i+t.length);return t.every(((e,t)=>e===r[t]))}Mr.Log,Mr.MP4BoxStream,Mr.DataStream,Mr.MultiBufferStream,Mr.MPEG4DescriptorParser,Mr.BoxParser,Mr.XMLSubtitlein4Parser,Mr.Textin4Parser,Mr.ISOFile,Mr.createFile;class Nr{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const r=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(r instanceof Error)return console.error(r.message),this.d=!0,e;this.A=!0,this.u=i[1],Rr(t)&&this.c++,WebAssembly.instantiate(i[2],r).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}function Gr(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new r((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new r)}const Or=16,Hr=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Vr=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function $r(e){const t=[];for(let i=0,r=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Yr(e){const t=[];for(let i=0,r=e.length;i>>6),t.push(128|63&r);else if(r<=55295||r>=57344&&r<=65535)t.push(224|r>>>12),t.push(128|r>>>6&63),t.push(128|63&r);else{if(!(r>=65536&&r<=1114111))throw t.push(r),new Error("input is not supported");i++,t.push(240|r>>>18&28),t.push(128|r>>>12&63),t.push(128|r>>>6&63),t.push(128|63&r)}}return t}function qr(e){const t=[];for(let i=0,r=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}function jr(e,t){const i=31&t;return e<>>32-i}function Kr(e){return(255&Hr[e>>>24&255])<<24|(255&Hr[e>>>16&255])<<16|(255&Hr[e>>>8&255])<<8|255&Hr[255&e]}function Xr(e){return e^jr(e,2)^jr(e,10)^jr(e,18)^jr(e,24)}function Zr(e){return e^jr(e,13)^jr(e,23)}function Jr(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=r[1]^r[2]^r[3]^i[t+0],r[0]^=Xr(Kr(e)),e=r[2]^r[3]^r[0]^i[t+1],r[1]^=Xr(Kr(e)),e=r[3]^r[0]^r[1]^i[t+2],r[2]^=Xr(Kr(e)),e=r[0]^r[1]^r[2]^i[t+3],r[3]^=Xr(Kr(e));for(let e=0;e<16;e+=4)t[e]=r[3-e/4]>>>24&255,t[e+1]=r[3-e/4]>>>16&255,t[e+2]=r[3-e/4]>>>8&255,t[e+3]=255&r[3-e/4]}function Qr(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];r[0]^=2746333894,r[1]^=1453994832,r[2]^=1736282519,r[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=r[1]^r[2]^r[3]^Vr[i+0],t[i+0]=r[0]^=Zr(Kr(e)),e=r[2]^r[3]^r[0]^Vr[i+1],t[i+1]=r[1]^=Zr(Kr(e)),e=r[3]^r[0]^r[1]^Vr[i+2],t[i+2]=r[2]^=Zr(Kr(e)),e=r[0]^r[1]^r[2]^Vr[i+3],t[i+3]=r[3]^=Zr(Kr(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function es(e,t,i){let{padding:r="pkcs#7",mode:s,iv:a=[],output:n="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof a&&(a=$r(a)),16!==a.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=$r(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Yr(e):$r(e):[...e],("pkcs#5"===r||"pkcs#7"===r)&&0!==i){const t=Or-e.length%Or;for(let i=0;i=Or;){const t=e.slice(u,u+16),r=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let a=new Uint8Array(e.slice(0,5)),n=5;for(;ns){const t=new Uint8Array(a.length+e.length-n);t.set(a,0),t.set(e.slice(n),a.length),a=t;break}let l=e[n+4],c=!1,u=2;if(i?(r&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const i=es(e.slice(n+4+u,n+4+d),t,0,{padding:"none",output:"array"});let r=i[i.length-1];if(r>0&&r<16){let e=!0;for(let t=1;t<=r;t++)if(i[i.length-t]!==r){e=!1;break}e&&i.splice(i.length-r,r)}const s=new Uint8Array(u);s.set(e.slice(n+4,n+4+u),0);const o=Zt(Gr(s,new Uint8Array(i))),l=new Uint8Array(a.length+o.length);l.set(a,0),l.set(o,a.length),a=l}else{const t=e.slice(n+4,n+4+d),i=new Uint8Array(a.length+4+t.length);i.set(a,0),i.set(o,a.length),i.set(t,a.length+4),a=i}n=n+4+d}return a}const rs={init:0,findFirstStartCode:1,findSecondStartCode:2};class ss extends class{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function s(){r.off(e,s);for(var a=arguments.length,n=new Array(a),o=0;o1?i-1:0),s=1;s{delete i[e]})),void delete this.e;const r=i[e],s=[];if(r&&t)for(let e=0,i=r.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=rs.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==rs.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=rs.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==rs.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=rs.findFirstStartCode}}}}function as(e,t,i){for(let r=2;r3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let a=5;for(;as)break;let o=e[a+4],d=!1;if(r?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const r=as(e.slice(a+4,a+4+n),t,i);e.set(r,a+4)}a=a+4+n}return e}function ds(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let s=0;return t.forEach((e=>{r.set(e,s),s+=e.byteLength})),r}class ls{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const s=()=>{ai(e.removeEventListener)&&e.removeEventListener(t,i,r)};return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class cs{static init(){cs.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in cs.types)cs.types.hasOwnProperty(e)&&(cs.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=cs.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,r=Array.prototype.slice.call(arguments,1),s=r.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let a=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return cs.box(cs.types.trak,cs.tkhd(e),cs.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return cs.box(cs.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return cs.box(cs.types.mdia,cs.mdhd(e),cs.hdlr(e),cs.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return cs.box(cs.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?cs.constants.HDLR_AUDIO:cs.constants.HDLR_VIDEO,cs.box(cs.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?cs.box(cs.types.smhd,cs.constants.SMHD):cs.box(cs.types.vmhd,cs.constants.VMHD),cs.box(cs.types.minf,t,cs.dinf(),cs.stbl(e))}static dinf(){return cs.box(cs.types.dinf,cs.box(cs.types.dref,cs.constants.DREF))}static stbl(e){return cs.box(cs.types.stbl,cs.stsd(e),cs.box(cs.types.stts,cs.constants.STTS),cs.box(cs.types.stsc,cs.constants.STSC),cs.box(cs.types.stsz,cs.constants.STSZ),cs.box(cs.types.stco,cs.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?cs.box(cs.types.stsd,cs.constants.STSD_PREFIX,cs.mp3(e)):cs.box(cs.types.stsd,cs.constants.STSD_PREFIX,cs.mp4a(e)):"avc"===e.videoType?cs.box(cs.types.stsd,cs.constants.STSD_PREFIX,cs.avc1(e)):cs.box(cs.types.stsd,cs.constants.STSD_PREFIX,cs.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return cs.box(cs.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return cs.box(cs.types.mp4a,r,cs.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return cs.box(cs.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return cs.box(cs.types.avc1,s,cs.box(cs.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return cs.box(cs.types.hvc1,s,cs.box(cs.types.hvcC,t))}static mvex(e){return cs.box(cs.types.mvex,cs.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return cs.box(cs.types.trex,i)}static moof(e,t){return cs.box(cs.types.moof,cs.mfhd(e.sequenceNumber),cs.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return cs.box(cs.types.mfhd,t)}static traf(e,t){let i=e.id,r=cs.box(cs.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=cs.box(cs.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=cs.sdtp(e),n=cs.trun(e,a.byteLength+16+16+8+16+8+8);return cs.box(cs.types.traf,r,s,n,a)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,cs.box(cs.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let r=e.duration,s=e.size,a=e.flags,n=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,s>>>24&255,s>>>16&255,s>>>8&255,255&s,a.isLeading<<2|a.dependsOn,a.isDependedOn<<6|a.hasRedundancy<<4|a.isNonSync,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12),cs.box(cs.types.trun,i)}static mdat(e){return cs.box(cs.types.mdat,e)}}cs.init();var us,hs=zt((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(us=hs)&&us.__esModule&&Object.prototype.hasOwnProperty.call(us,"default")&&us.default;const fs=[44100,48e3,32e3,0],ps=[22050,24e3,16e3,0],_s=[11025,12e3,8e3,0],ms=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],gs=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],ys=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function bs(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),i=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let r=t[1]>>>3&3,s=(6&t[1])>>1,a=(240&t[2])>>>4,n=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(r){case 0:d=_s[n];break;case 2:d=ps[n];break;case 3:d=fs[n]}switch(s){case 1:a=e[s]&&t=6?(r=5,t=new Array(4),n=s-3):(r=2,t=new Array(2),n=s):-1!==o.indexOf("android")?(r=2,t=new Array(2),n=s):(r=5,n=s,t=new Array(4),s>=6?n=s-3:1===a&&(r=2,t=new Array(2),n=s)),t[0]=r<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&a)<<3,5===r&&(t[1]|=(15&n)>>>1,t[2]=(1&n)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Ls[s],this.sampling_index=s,this.channel_count=a,this.object_type=r,this.original_object_type=i,this.codec_mimetype="mp4a.40."+r,this.original_codec_mimetype="mp4a.40."+i}}class zs{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>r,a=8-r;if(a>=e)return i&&(this.index+=e),s>>a-e;{i&&(this.index+=a);const r=e-a;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Rs(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Ns=new Array(214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72),Gs=new Array(2746333894,1453994832,1736282519,2993693404),Os=new Array(462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257);function Hs(e,t,i,r,s){var a=s;a=t+s>e.length&&r+s<=i.length?e.length-t:r+s>i.length&&t+s<=e.length?i.length-r:t+s<=e.length&&r+s<=i.length?s:i.length>24&255,e>>16&255,e>>8&255,255&e)}function $s(e,t){return t+3>>19)^(r<<23|r>>>9)}function qs(e,t){var i=new Array(36);i[0]=$s(t,0),i[1]=$s(t,4),i[2]=$s(t,8),i[3]=$s(t,12);for(var r=0;r<32;r++)i[r+4]=i[r]^js(i[r+1]^i[r+2]^i[r+3]^e[r]);var s=new Array(4);for(r=35;r>=32;r--)s[35-r]=i[r];var a=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(r<<10|r>>>22)^(r<<18|r>>>14)^(r<<24|r>>>8)}function Ks(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var r=Ws(e),s=Math.ceil(i.length/16),a=new Array(i.length),n=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const a=e.byteLength;let n=5;for(;na)break;let d=e[n+4],l=!1,c=2;if(r?(s&&(c=3),d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const r=Ks(t,i,e.slice(n+4+c,n+4+o));e.set(r,n+4+c)}n=n+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=[],s=[],a=null,n=null,o=null,d=null,l=null,c=null,b=!1,v=null,B=null,ye=!1,be=!1,He=!!fi(i),je=0,Ke=0,Ze=!1,Qe=null,ot=null,vt=null,St=[],Bt=null,Mt=null,zt=0,Rt=0,Nt=null,Gt=null,Wt=0,Kt=0,ti=!1,gi=!1,yi=!1,bi=null,vi=null,Bi=!1,zi=!0,Ri=()=>{const e=ui();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,isSm4CryptoH265V2:e.isSm4CryptoH265V2,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(ai(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let i=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:i,delay:sr.delay,ts:0},[i]),di(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:t,delay:sr.delay,ts:0},[t]),di(e)}},error:function(e){sr.debug.error("worker","VideoDecoder error",e)}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,i){const r=e[0]>>4==1;if(a.hasInit){const i=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:r?ct:ut});a.decoder.decode(i)}else if(r&&0===e[1]){const t=15&e[0];postMessage({cmd:F,code:t});const i=new Uint8Array(e);postMessage({cmd:L,buffer:i,codecId:t},[i.buffer]);let r=null,s=null;const n=e.slice(5);t===De?(s=Ui(n),r={codec:s.codec,description:n}):t===Ie&&(s=Oi(n),r={codec:s.codec,description:n}),s&&s.codecWidth&&s.codecHeight&&(r.codedHeight=s.codecHeight,r.codedWidth=s.codecWidth),a.isEmitInfo||(sr.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:x,w:s.codecWidth,h:s.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(r),a.hasInit=!0}catch(e){sr.debug.error("worker","VideoDecoder configure error",e.code,e),e.toString()}}else sr.debug.warn("worker",`VideoDecoder configure has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Hi=function(){if(Bi=!0,sr.fetchStatus!==Et||pi(sr._opt.isChrome)){if(n)try{n.abort(),n=null}catch(e){sr.debug.log("worker","abort catch",e)}}else n=null,sr.debug.log("worker",`abort() and not abortController.abort() _status is ${sr.fetchStatus} and _isChrome is ${sr._opt.isChrome}`)},Qi={init(){Qi.lastBuf=null,Qi.vps=null,Qi.sps=null,Qi.pps=null,Qi.streamType=null,Qi.localDts=0,Qi.pendingUnits={},Qi.isSendSeqHeader=!1},destroy(){Qi.lastBuf=null,Qi.vps=null,Qi.sps=null,Qi.pps=null,Qi.streamType=null,Qi.localDts=0,Qi.pendingUnits={},Qi.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(sr._opt.nakedFlowDemuxUseNew){const e=Qi.extractNALu$3(t);Qi.handleVideoFrames(e)}else Qi.extractNALu$2(t)},getNaluDts(){const e=sr._opt.nakedFlowFps;let t=Qi.localDts;return Qi.localDts=Qi.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=sr._opt.sampleRate,t=sr._opt.audioBufferSize;return Qi.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,i,r=0,s=e.byteLength,a=0,n=[];for(;r1)for(let e=0;e{const t=Ci(e);t===Oe||t===Ge?Qi.handleVideoH264Nalu(e):Ii(t)&&r.push(e)})),1===r.length)Qi.handleVideoH264Nalu(r[0]);else{if(Li(r)){const e=Ci(r[0]),t=Fi(e);Qi.handleVideoH264NaluList(r,t,e)}else r.forEach((e=>{Qi.handleVideoH264Nalu(e)}))}}else if(Qi.streamType===Pe)if(sr._opt.nakedFlowH265DemuxUseNew){const t=Qi.handleAddNaluStartCode(e),i=Qi.extractNALu(t);if(0===i.length)return void sr.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=Yi(e);t===at||t===rt||t===tt?Qi.handleVideoH265Nalu(e):ji(t)&&r.push(e)})),1===r.length)Qi.handleVideoH265Nalu(r[0]);else{if(Xi(r)){const e=Yi(r[0]),t=Ki(e);Qi.handleVideoH265NaluList(r,t,e)}else r.forEach((e=>{Qi.handleVideoH265Nalu(e)}))}}else{Yi(e)===at?Qi.extractH265PPS(e):Qi.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Qi.handleAddNaluStartCode(e);Qi.extractNALu(t).forEach((e=>{Di(Ci(e))?Qi.extractH264SEI(e):Qi.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Qi.handleAddNaluStartCode(e);Qi.extractNALu(t).forEach((e=>{qi(Yi(e))?Qi.extractH265SEI(e):Qi.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Qi.handleAddNaluStartCode(e);Qi.extractNALu(t).forEach((e=>{Qi.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Qi.handleAddNaluStartCode(e);Qi.extractNALu(t).forEach((e=>{Qi.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i},handleVideoH264Nalu(e){const t=Ci(e);switch(t){case Ge:Qi.sps=e;break;case Oe:Qi.pps=e}if(Qi.isSendSeqHeader){if(Qi.sps&&Qi.pps){const e=xi({sps:Qi.sps,pps:Qi.pps}),t=Qi.localDts;sr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Qi.sps=null,Qi.pps=null}if(Ii(t)){const i=Fi(t),r=Qi.getNaluDts(),s=Ti(e,i);Qi.doDecode(s,{type:se,ts:r,isIFrame:i,cts:0})}}else if(Qi.sps&&Qi.pps){Qi.isSendSeqHeader=!0;const e=xi({sps:Qi.sps,pps:Qi.pps});sr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Qi.sps=null,Qi.pps=null}},handleVideoH264NaluList(e,t,i){if(Qi.isSendSeqHeader){const r=Qi.getNaluDts(),s=ki(e.reduce(((e,t)=>{const i=Zt(e),r=Zt(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);Qi.doDecode(s,{type:se,ts:r,isIFrame:t,cts:0}),sr.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}},handleVideoH265Nalu(e){const t=Yi(e);switch(t){case tt:Qi.vps=e;break;case rt:Qi.sps=e;break;case at:Qi.pps=e}if(Qi.isSendSeqHeader){if(Qi.vps&&Qi.sps&&Qi.pps){const e=Vi({vps:Qi.vps,sps:Qi.sps,pps:Qi.pps}),t=Qi.localDts;sr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Qi.vps=null,Qi.sps=null,Qi.pps=null}if(ji(t)){const i=Ki(t),r=Qi.getNaluDts(),s=$i(e,i);Qi.doDecode(s,{type:se,ts:r,isIFrame:i,cts:0})}}else if(Qi.vps&&Qi.sps&&Qi.pps){Qi.isSendSeqHeader=!0;const e=Vi({vps:Qi.vps,sps:Qi.sps,pps:Qi.pps});sr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Qi.vps=null,Qi.sps=null,Qi.pps=null}},handleVideoH265NaluList(e,t,i){if(Qi.isSendSeqHeader){const r=Qi.getNaluDts(),s=Wi(e.reduce(((e,t)=>{const i=Zt(e),r=Zt(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);Qi.doDecode(s,{type:se,ts:r,isIFrame:t,cts:0}),sr.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}},doDecode(e,t){sr.calcNetworkDelay(t.ts),t.isIFrame&&sr.calcIframeIntervalTimestamp(t.ts),sr.decode(e,t)},handleVideoFrames(e){if(!Qi.streamVideoType)for(let t of e)if(Qi.streamVideoType=ni(t),Qi.streamVideoType)break;Qi.streamVideoType&&(Qi.streamVideoType===Le?Qi.handleVideoH264Frames(e):this.streamVideoType===Pe&&Qi.handleVideoH265Frames(e))},handleVideoH264Frames(e){let t=[],i=[],r=!1,s=!1;Qi.pendingUnits.units&&(t=Qi.pendingUnits.units,s=Qi.pendingUnits.vcl,r=Qi.pendingUnits.iFrame,Qi.pendingUnits={});let a={};for(let n of e){if(n.byteLength<4)continue;const e=Ci(n);let o=!1,d=e===$e;e!==Ve&&e!==$e||(a=Qi.parseVideo264Header(n),o=!0),t.length&&s&&(a.isfms||!o)&&(i.push({units:t,isIFrame:r}),t=[],r=!1,s=!1),t.push(n),r=r||d,s=s||o}t.length&&(Qi.pendingUnits={units:t,vcl:s,iFrame:r}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let r=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Oe:Qi.pps=e;break;case Ge:Qi.sps=e;break;case We:s=e}if(Ii(t)){const t=Zt(e);if(r){const e=new Uint8Array(r.byteLength+t.byteLength);e.set(r,0),e.set(t,r.byteLength),r=e}else r=t}})),!Qi.isSendSeqHeader&&Qi.sps&&Qi.pps){Qi.isSendSeqHeader=!0;const e=Ei({sps:Qi.sps,pps:Qi.pps});sr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Qi.sps=null,Qi.pps=null}if(Qi.isSendSeqHeader){if(Qi.sps&&Qi.pps){const e=Ei({sps:Qi.sps,pps:Qi.pps}),t=Qi.localDts;sr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Qi.sps=null,Qi.pps=null}if(r){const e=Qi.getNaluDts(),t=ki(r,i);sr._opt.isEmitSEI&&postMessage({cmd:j,buffer:s,ts:e},[s.buffer]),Qi.doDecode(t,{type:se,ts:e,isIFrame:i,cts:0})}}}))},handleVideoH265Frames(e){let t=[],i=[],r=!1,s=!1;Qi.pendingUnits.units&&(t=Qi.pendingUnits.units,s=Qi.pendingUnits.vcl,r=Qi.pendingUnits.iFrame,Qi.pendingUnits={});let a={};for(let n of e){if(n.byteLength<4)continue;const e=Yi(n);let o=!1,d=Ki(e);ji(e)&&(a=this.parseVideo265Header(n),o=!0),t.length&&s&&(a.isfms||!o)&&(i.push({units:t,isIFrame:r}),t=[],r=!1,s=!1),t.push(n),r=r||d,s=s||o}t.length&&(Qi.pendingUnits={units:t,vcl:s,iFrame:r}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let r=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case at:Qi.pps=e;break;case rt:Qi.sps=e;break;case tt:Qi.vps=e}if(ji(t)){const t=Zt(e);if(r){const e=new Uint8Array(r.byteLength+t.byteLength);e.set(r,0),e.set(t,r.byteLength),r=e}else r=t}})),!Qi.isSendSeqHeader&&Qi.sps&&Qi.pps&&Qi.vps){Qi.isSendSeqHeader=!0;const e=Vi({sps:Qi.sps,pps:Qi.pps,vps:Qi.vps});sr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Qi.sps=null,Qi.pps=null,Qi.vps=null}if(Qi.isSendSeqHeader){if(Qi.sps&&Qi.pps&&Qi.vps){const e=Vi({sps:Qi.sps,pps:Qi.pps,vps:Qi.vps}),t=Qi.localDts;sr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Qi.sps=null,Qi.pps=null,Qi.vps=null}if(r){const e=Qi.getNaluDts(),t=Wi(r,i);sr._opt.isEmitSEI&&postMessage({cmd:j,buffer:null,ts:e},[null.buffer]),Qi.doDecode(t,{type:se,ts:e,isIFrame:i,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Qi.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new zs(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new zs(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},er={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){er.mp4Box=Mr.createFile(),er.mp4Box.onReady=er.onReady,er.mp4Box.onError=er.onError,er.mp4Box.onSamples=er.onSamples},initTransportDescarmber(){er.transportDescarmber=new Nr},_getSeqHeader(e){const t=er.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Mr.DataStream(void 0,0,Mr.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(er.isHevc=!0,sr.isHevc=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const r=new Uint8Array(t.buffer,8),s=new Uint8Array(i.length+r.length);return s.set(i,0),s.set(r,i.length),s}return null},onReady(e){sr.debug.log(er.LOG_NAME,"onReady()");const t=e.videoTracks[0],i=e.audioTracks[0];if(t){er.videoTrackId=t.id;const e=er._getSeqHeader(t);e&&(sr.debug.log(er.LOG_NAME,"seqHeader"),sr.decodeVideo(e,0,!0,0)),er.mp4Box.setExtractionOptions(t.id)}if(i&&sr._opt.hasAudio){er.audioTrackId=i.id;const e=i.audio||{},t=Ot.indexOf(e.sample_rate),r=i.codec.replace("mp4a.40.","");er.mp4Box.setExtractionOptions(i.id);const s=Ht({profile:parseInt(r,10),sampleRate:t,channel:e.channel_count});sr.debug.log(er.LOG_NAME,"aacADTSHeader"),sr.decodeAudio(s,0)}er.mp4Box.start()},onError(e){sr.debug.error(er.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,i){if(e===er.videoTrackId){for(const e of i){const t=e.data,i=e.is_sync,r=1e3*e.cts/e.timescale;e.duration,e.timescale,i&&sr.calcIframeIntervalTimestamp(r);let s=null;s=er.isHevc?Wi(t,i):ki(t,i),sr.decode(s,{type:se,ts:r,isIFrame:i,cts:0})}er.mp4Box.removeUsedSamples(e)}else if(e===er.audioTrackId){if(sr._opt.hasAudio){for(const e of i){const t=e.data,i=1e3*e.cts/e.timescale;e.duration,e.timescale;const r=new Uint8Array(t.byteLength+2);r.set([175,1],0),r.set(t,2),sr.decode(r,{type:re,ts:i,isIFrame:!1,cts:0})}er.mp4Box.removeUsedSamples(e)}}else sr.debug.warn(er.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);er.transportDescarmber&&(t=er.transportDescarmber.transport(t)),t.buffer.fileStart=er.offset,er.offset+=t.byteLength,er.mp4Box.appendBuffer(t.buffer)},destroy(){er.mp4Box&&(er.mp4Box.stop(),er.mp4Box.flush(),er.mp4Box.destroy(),er.mp4Box=null),er.transportDescarmber&&(er.transportDescarmber.destroy(),er.transportDescarmber=null),er.offset=0,er.videoTrackId=null,er.audioTrackId=null,er.isHevc=!1}},tr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);tr.extractNALu(t)},destroy(){tr.lastBuffer=new Uint8Array(0),tr.parsedOffset=0,tr.firstStartCodeOffset=0,tr.secondStartCodeOffset=0,tr.state="init",tr.hasInitVideoCodec=!1,tr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void sr.debug.warn(tr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(tr.lastBuffer.length+e.length);for(t.set(tr.lastBuffer,0),t.set(new Uint8Array(e),tr.lastBuffer.length),tr.lastBuffer=t;;){if("init"===tr.state){let e=!1;for(;tr.lastBuffer.length-tr.parsedOffset>=4;)if(0===tr.lastBuffer[tr.parsedOffset])if(0===tr.lastBuffer[tr.parsedOffset+1])if(1===tr.lastBuffer[tr.parsedOffset+2]){if(182===tr.lastBuffer[tr.parsedOffset+3]){tr.state="findFirstStartCode",tr.firstStartCodeOffset=tr.parsedOffset,tr.parsedOffset+=4,e=!0;break}tr.parsedOffset++}else tr.parsedOffset++;else tr.parsedOffset++;else tr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===tr.state){let e=!1;for(;tr.lastBuffer.length-tr.parsedOffset>=4;)if(0===tr.lastBuffer[tr.parsedOffset])if(0===tr.lastBuffer[tr.parsedOffset+1])if(1===tr.lastBuffer[tr.parsedOffset+2]){if(182===tr.lastBuffer[tr.parsedOffset+3]){tr.state="findSecondStartCode",tr.secondStartCodeOffset=tr.parsedOffset,tr.parsedOffset+=4,e=!0;break}tr.parsedOffset++}else tr.parsedOffset++;else tr.parsedOffset++;else tr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===tr.state){if(!(tr.lastBuffer.length-tr.parsedOffset>0))break;{let e,t,i=192&tr.lastBuffer[tr.parsedOffset];e=0==i?tr.secondStartCodeOffset-14:tr.secondStartCodeOffset;let r=0==(192&tr.lastBuffer[tr.firstStartCodeOffset+4]);if(r){if(tr.firstStartCodeOffset-14<0)return void sr.debug.warn(tr.LOG_NAME,"firstStartCodeOffset -14 is",tr.firstStartCodeOffset-14);tr.hasInitVideoCodec||(tr.hasInitVideoCodec=!0,sr.debug.log(tr.LOG_NAME,"setCodec"),nr.setCodec(Fe,"")),t=tr.lastBuffer.subarray(tr.firstStartCodeOffset-14,e)}else t=tr.lastBuffer.subarray(tr.firstStartCodeOffset,e);let s=tr.getNaluDts();tr.hasInitVideoCodec?(postMessage({cmd:R,type:Ae,value:t.byteLength}),postMessage({cmd:R,type:Be,value:s}),je=s,nr.decode(t,r?1:0,s)):sr.debug.warn(tr.LOG_NAME,"has not init video codec"),tr.lastBuffer=tr.lastBuffer.subarray(e),tr.firstStartCodeOffset=0==i?14:0,tr.parsedOffset=tr.firstStartCodeOffset+4,tr.state="findFirstStartCode"}}}},getNaluDts(){let e=tr.localDts;return tr.localDts=tr.localDts+40,e}},ir={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Ps,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){ir.media_info_=null,ir.pes_slice_queues_=null,ir.section_slice_queues_=null,ir.video_metadata_=null,ir.audio_metadata_=null,ir.aac_last_incomplete_data_=null,ir.video_track_=null,ir.audio_track_=null,ir._remainingPacketData=null},probe(e){let t=new Uint8Array(e),i=-1,r=188;if(t.byteLength<=3*r)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*r);for(let s=0;s=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:r,sync_offset:i})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){ir._remainingPacketData&&(e=ds(ir._remainingPacketData,e),ir._remainingPacketData=null);let t=e.buffer;const i=ir.parseChunks(t);i?ir._remainingPacketData=e.subarray(i):e.length>>6;i[1];let a=(31&i[1])<<8|i[2],n=(48&i[3])>>>4,o=15&i[3],d=!(!ir.pmt_||ir.pmt_.pcr_pid!==a),l={},c=4;if(2==n||3==n){let e=i[4];if(e>0&&(d||3==n)){if(l.discontinuity_indicator=(128&i[5])>>>7,l.random_access_indicator=(64&i[5])>>>6,l.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*(i[6]<<25|i[7]<<17|i[8]<<9|i[9]<<1|i[10]>>>7)+((1&i[10])<<8|i[11]);ir.last_pcr_=e}}if(2==n||5+e===188){t+=188,204===ir.tsPacketSize&&(t+=16);continue}c=5+e}if(1==n||3==n)if(0===a||a===ir.current_pmt_pid_||null!=ir.pmt_&&ir.pmt_.pid_stream_type[a]===Ts){let i=188-c;ir.handleSectionSlice(e,t+c,i,{pid:a,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=ir.pmt_&&null!=ir.pmt_.pid_stream_type[a]){let i=188-c,r=ir.pmt_.pid_stream_type[a];a!==ir.pmt_.common_pids.h264&&a!==ir.pmt_.common_pids.h265&&a!==ir.pmt_.common_pids.adts_aac&&a!==ir.pmt_.common_pids.loas_aac&&a!==ir.pmt_.common_pids.ac3&&a!==ir.pmt_.common_pids.eac3&&a!==ir.pmt_.common_pids.opus&&a!==ir.pmt_.common_pids.mp3&&!0!==ir.pmt_.pes_private_data_pids[a]&&!0!==ir.pmt_.timed_id3_pids[a]&&!0!==ir.pmt_.synchronous_klv_pids[a]&&!0!==ir.pmt_.asynchronous_klv_pids[a]||ir.handlePESSlice(e,t+c,i,{pid:a,stream_type:r,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===ir.tsPacketSize&&(t+=16)}return ir.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=ir.section_slice_queues_[r.pid];if(r.payload_unit_start_indicator){let n=s[0];if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t+1,Math.min(i,n));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?ir.emitSectionSlices(a,r):ir.clearSlices(a,r)}for(let o=1+n;o=a.expected_length&&ir.clearSlices(a,r),o+=d.byteLength}}else if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t,Math.min(i,a.expected_length-a.total_length));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?ir.emitSectionSlices(a,r):a.total_length>=a.expected_length&&ir.clearSlices(a,r)}},handlePESSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=s[0]<<16|s[1]<<8|s[2];s[3];let n=s[4]<<8|s[5];if(r.payload_unit_start_indicator){if(1!==a)return void sr.debug.warn(ir.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${a}`);let e=ir.pes_slice_queues_[r.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?ir.emitPESSlices(e,r):ir.clearSlices(e,r)),ir.pes_slice_queues_[r.pid]=new Ds,ir.pes_slice_queues_[r.pid].random_access_indicator=r.random_access_indicator}if(null==ir.pes_slice_queues_[r.pid])return;let o=ir.pes_slice_queues_[r.pid];o.slices.push(s),r.payload_unit_start_indicator&&(o.expected_length=0===n?0:n+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?ir.emitPESSlices(o,r):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==n&&3!==n||(i=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,a=3===n?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:i);let d,l=9+o;if(0!==s){if(s<3+o)return void sr.debug.warn(ir.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case vs:case Ss:ir.parseMP3Payload(c,i);break;case ws:ir.pmt_.common_pids.opus===e.pid||ir.pmt_.common_pids.ac3===e.pid||ir.pmt_.common_pids.eac3===e.pid||(ir.pmt_.asynchronous_klv_pids[e.pid]?ir.parseAsynchronousKLVMetadataPayload(c,e.pid,r):ir.pmt_.smpte2038_pids[e.pid]?ir.parseSMPTE2038MetadataPayload(c,i,a,e.pid,r):ir.parsePESPrivateDataPayload(c,i,a,e.pid,r));break;case As:ir.parseADTSAACPayload(c,i);break;case Bs:ir.parseLOASAACPayload(c,i);break;case Us:case xs:break;case Es:ir.pmt_.timed_id3_pids[e.pid]?ir.parseTimedID3MetadataPayload(c,i,a,e.pid,r):ir.pmt_.synchronous_klv_pids[e.pid]&&ir.parseSynchronousKLVMetadataPayload(c,i,a,e.pid,r);break;case ks:ir.parseH264Payload(c,i,a,e.random_access_indicator);break;case Cs:ir.parseH265Payload(c,i,a,e.random_access_indicator)}}else if((188===r||191===r||240===r||241===r||255===r||242===r||248===r)&&e.stream_type===ws){let i,a=6;i=0!==s?s:t.byteLength-a;let n=t.subarray(a,a+i);ir.parsePESPrivateDataPayload(n,void 0,void 0,e.pid,r)}}else sr.debug.error(ir.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(ir.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let r=(62&e[5])>>>1,s=1&e[5],a=e[6];e[7];let n=null;if(1===s&&0===a)n={version_number:0,network_pid:0,program_pmt_pid:{}},n.version_number=r;else if(n=ir.pat_,null==n)return;let o=i-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let i=e[t]<<8|e[t+1],r=(31&e[t+2])<<8|e[t+3];0===i?n.network_pid=r:(n.program_pmt_pid[i]=r,-1===d&&(d=i),-1===l&&(l=r))}1===s&&0===a&&(null==ir.pat_&&sr.debug.log(ir.TAG_NAME,`Parsed first PAT: ${JSON.stringify(n)}`),ir.pat_=n,ir.current_program_=d,ir.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void sr.debug.error(ir.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,r=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],a=(62&e[5])>>>1,n=1&e[5],o=e[6];if(e[7],1===n&&0===o)i=ir._initPmt(),i.program_number=s,i.version_number=a,ir.program_pmt_map_[s]=i;else if(i=ir.program_pmt_map_[s],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=r-9-d-4;for(let t=l;t0){for(let r=t+5;r0)for(let r=t+5;rir.has_video_&&ir.has_audio_?ir.video_init_segment_dispatched_&&ir.audio_init_segment_dispatched_:ir.has_video_&&!ir.has_audio_?ir.video_init_segment_dispatched_:!(ir.has_video_||!ir.has_audio_)&&ir.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=ir.video_metadata_.details,t={type:"video"};t.id=ir.video_track_.id,t.timescale=1e3,t.duration=ir.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let i=t.frameRate.fps_den,r=t.frameRate.fps_num;if(t.refSampleDuration=i/r*1e3,t.codec=e.codec_mimetype,ir.video_metadata_.vps){sr.isHevc=!0;let e=ir.video_metadata_.vps.data.subarray(4),i=ir.video_metadata_.sps.data.subarray(4),r=ir.video_metadata_.pps.data.subarray(4);t.hvcc=Vi({vps:e,sps:i,pps:r}),0==ir.video_init_segment_dispatched_&&sr.debug.log(ir.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&sr.decodeVideo(t.hvcc,0,!0,0)}else{let e=ir.video_metadata_.sps.data.subarray(4),i=ir.video_metadata_.pps.data.subarray(4);t.avcc=Ei({sps:e,pps:i}),0==ir.video_init_segment_dispatched_&&sr.debug.log(ir.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&sr.decodeVideo(t.avcc,0,!0,0)}ir.video_init_segment_dispatched_=!0,ir.video_metadata_changed_=!1;let s=ir.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){ir.isInitSegmentDispatched()&&ir.video_track_.length&&ir._preDoDecode()},dispatchAudioMediaSegment(){ir.isInitSegmentDispatched()&&ir.audio_track_.length&&ir._preDoDecode()},dispatchAudioVideoMediaSegment(){ir.isInitSegmentDispatched()&&(ir.audio_track_.length||ir.video_track_.length)&&ir._preDoDecode()},parseADTSAACPayload(e,t){if(ir.has_video_&&!ir.video_init_segment_dispatched_)return;if(ir.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ir.aac_last_incomplete_data_.byteLength);t.set(ir.aac_last_incomplete_data_,0),t.set(e,ir.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/ir.timescale_),"aac"===ir.audio_metadata_.codec){if(null==t&&null!=ir.audio_last_sample_pts_)i=1024/ir.audio_metadata_.sampling_frequency*1e3,r=ir.audio_last_sample_pts_+i;else if(null==t)return void sr.debug.warn(ir.TAG_NAME,"AAC: Unknown pts");if(ir.aac_last_incomplete_data_&&ir.audio_last_sample_pts_){i=1024/ir.audio_metadata_.sampling_frequency*1e3;let e=ir.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(sr.debug.warn(ir.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new qt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame());){i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==ir.audio_init_segment_dispatched_?(ir.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},ir.dispatchAudioInitSegment(e)):ir.detectAudioMetadataChange(e)&&(ir.dispatchAudioMediaSegment(),ir.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:re};ir.audio_track_.samples.push(a),ir.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(ir.aac_last_incomplete_data_=a.getIncompleteData()),s&&(ir.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(ir.has_video_&&!ir.video_init_segment_dispatched_)return;if(ir.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ir.aac_last_incomplete_data_.byteLength);t.set(ir.aac_last_incomplete_data_,0),t.set(e,ir.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/ir.timescale_),"aac"===ir.audio_metadata_.codec){if(null==t&&null!=ir.audio_last_sample_pts_)i=1024/ir.audio_metadata_.sampling_frequency*1e3,r=ir.audio_last_sample_pts_+i;else if(null==t)return void sr.debug.warn(ir.TAG_NAME,"AAC: Unknown pts");if(ir.aac_last_incomplete_data_&&ir.audio_last_sample_pts_){i=1024/ir.audio_metadata_.sampling_frequency*1e3;let e=ir.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(sr.debug.warn(ir.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new jt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame(ri(this.loas_previous_frame)?void 0:this.loas_previous_frame));){ir.loas_previous_frame=n,i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==ir.audio_init_segment_dispatched_?(ir.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},ir.dispatchAudioInitSegment(e)):ir.detectAudioMetadataChange(e)&&(ir.dispatchAudioMediaSegment(),ir.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:re};ir.audio_track_.samples.push(a),ir.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(ir.aac_last_incomplete_data_=a.getIncompleteData()),s&&(ir.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(ir.has_video_&&!ir.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],r=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],a=e[1]>>>3&3,n=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!==(e[3]>>>6&3)?2:1,l=0,c=34;switch(a){case 0:l=s[o];break;case 2:l=r[o];break;case 3:l=i[o]}switch(n){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==ir.audio_init_segment_dispatched_?(ir.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},ir.dispatchAudioInitSegment(h)):ir.detectAudioMetadataChange(h)&&(ir.dispatchAudioMediaSegment(),ir.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/ir.timescale_,dts:t/ir.timescale_,type:re};ir.audio_track_.samples.push(f),ir.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==ir.audio_metadata_.codec)return sr.debug.log(ir.TAG_NAME,`Audio: Audio Codecs changed from ${ir.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===ir.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==ir.audio_metadata_.audio_object_type)return sr.debug.log(ir.TAG_NAME,`AAC: AudioObjectType changed from ${ir.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==ir.audio_metadata_.sampling_freq_index)return sr.debug.log(ir.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${ir.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==ir.audio_metadata_.channel_config)return sr.debug.log(ir.TAG_NAME,`AAC: Channel configuration changed from ${ir.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===ir.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==ir.audio_metadata_.sampling_frequency)return sr.debug.log(ir.TAG_NAME,`AC3: Sampling Frequency changed from ${ir.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==ir.audio_metadata_.bit_stream_identification)return sr.debug.log(ir.TAG_NAME,`AC3: Bit Stream Identification changed from ${ir.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==ir.audio_metadata_.bit_stream_mode)return sr.debug.log(ir.TAG_NAME,`AC3: BitStream Mode changed from ${ir.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==ir.audio_metadata_.channel_mode)return sr.debug.log(ir.TAG_NAME,`AC3: Channel Mode changed from ${ir.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==ir.audio_metadata_.low_frequency_effects_channel_on)return sr.debug.log(ir.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${ir.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===ir.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==ir.audio_metadata_.sample_rate)return sr.debug.log(ir.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${ir.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ir.audio_metadata_.channel_count)return sr.debug.log(ir.TAG_NAME,`Opus: Channel count changed from ${ir.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===ir.audio_metadata_.codec){const t=e.data;if(t.object_type!==ir.audio_metadata_.object_type)return sr.debug.log(ir.TAG_NAME,`MP3: AudioObjectType changed from ${ir.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==ir.audio_metadata_.sample_rate)return sr.debug.log(ir.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${ir.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ir.audio_metadata_.channel_count)return sr.debug.log(ir.TAG_NAME,`MP3: Channel count changed from ${ir.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=ir.audio_track_.id,t.timescale=1e3,t.duration=ir.duration_,"aac"===ir.audio_metadata_.codec){let i="aac"===e.codec?e.data:null,r=new Ms(i);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=Ht({profile:sr._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});sr.decodeAudio(s,0)}else"ac-3"===ir.audio_metadata_.codec||"ec-3"===ir.audio_metadata_.codec||"opus"===ir.audio_metadata_.codec||"mp3"===ir.audio_metadata_.codec&&(t.audioSampleRate=ir.audio_metadata_.sample_rate,t.channelCount=ir.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==ir.audio_init_segment_dispatched_&&sr.debug.log(ir.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),ir.audio_init_segment_dispatched_=!0,ir.video_metadata_changed_=!1;let i=ir.media_info_;i.hasAudio=!0,i.audioCodec=t.originalCodec,i.audioSampleRate=t.audioSampleRate,i.audioChannelCount=t.channelCount,i.hasVideo&&i.videoCodec?i.mimeType=`video/mp2t; codecs="${i.videoCodec},${i.audioCodec}"`:i.mimeType=`video/mp2t; codecs="${i.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,i){},parsePESPrivateDataPayload(e,t,i,r,s){let a=new Fs;if(a.pid=r,a.stream_id=s,a.len=e.byteLength,a.data=e,null!=t){let e=Math.floor(t/ir.timescale_);a.pts=e}else a.nearest_pts=ir.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/ir.timescale_);a.dts=e}},parseTimedID3MetadataPayload(e,t,i,r,s){sr.debug.log(ir.TAG_NAME,`Timed ID3 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,i,r,s){sr.debug.log(ir.TAG_NAME,`Synchronous KLV Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,i){sr.debug.log(ir.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)},parseSMPTE2038MetadataPayload(e,t,i,r,s){sr.debug.log(ir.TAG_NAME,`SMPTE 2038 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},getNearestTimestampMilliseconds(){if(null!=ir.audio_last_sample_pts_)return Math.floor(ir.audio_last_sample_pts_);if(null!=ir.last_pcr_){return Math.floor(ir.last_pcr_/300/ir.timescale_)}},_preDoDecode(){const e=ir.video_track_,t=ir.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===se?ir._doDecodeVideo({...e,payload:t}):e.type===re&&ir._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Wi(t,e.isIFrame):ki(t,e.isIFrame),e.isIFrame&&sr.calcIframeIntervalTimestamp(e.dts);let r=sr.cryptoPayload(i,e.isIFrame);sr.decode(r,{type:se,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let i=t;fi(sr._opt.m7sCryptoAudio)&&(i=sr.cryptoPayloadAudio(t)),sr.decode(i,{type:re,ts:e.dts,isIFrame:!1,cts:0})}},rr=null;_i()&&(rr={TAG_NAME:"worker MediaSource",_resetInIt(){rr.isAvc=null,rr.isAAC=null,rr.videoInfo={},rr.videoMeta={},rr.audioMeta={},rr.sourceBuffer=null,rr.audioSourceBuffer=null,rr.hasInit=!1,rr.hasAudioInit=!1,rr.isAudioInitInfo=!1,rr.videoMimeType="",rr.audioMimeType="",rr.cacheTrack={},rr.cacheAudioTrack={},rr.timeInit=!1,rr.sequenceNumber=0,rr.audioSequenceNumber=0,rr.firstRenderTime=null,rr.firstAudioTime=null,rr.mediaSourceAppendBufferFull=!1,rr.mediaSourceAppendBufferError=!1,rr.mediaSourceAddSourceBufferError=!1,rr.mediaSourceBufferError=!1,rr.mediaSourceError=!1,rr.prevTimestamp=null,rr.decodeDiffTimestamp=null,rr.prevDts=null,rr.prevAudioDts=null,rr.prevPayloadBufferSize=0,rr.isWidthOrHeightChanged=!1,rr.prevTs=null,rr.prevAudioTs=null,rr.eventListenList=[],rr.pendingRemoveRanges=[],rr.pendingSegments=[],rr.pendingAudioRemoveRanges=[],rr.pendingAudioSegments=[],rr.supportVideoFrameCallbackHandle=null,rr.audioSourceBufferCheckTimeout=null,rr.audioSourceNoDataCheckTimeout=null,rr.hasPendingEos=!1,rr.$video={currentTime:0,readyState:0}},init(){rr.events=new ls,rr._resetInIt(),rr.mediaSource=new self.MediaSource,rr.isDecodeFirstIIframe=!!pi(sr._opt.checkFirstIFrame),rr._bindMediaSourceEvents()},destroy(){rr.stop(),rr._clearAudioSourceBufferCheckTimeout(),rr.eventListenList&&rr.eventListenList.length&&(rr.eventListenList.forEach((e=>e())),rr.eventListenList=[]),rr._resetInIt(),rr.mediaSource=null},getState:()=>rr.mediaSource&&rr.mediaSource.readyState,isStateOpen:()=>rr.getState()===_t,isStateClosed:()=>rr.getState()===mt,isStateEnded:()=>rr.getState()===pt,_bindMediaSourceEvents(){const{proxy:e}=rr.events,t=e(rr.mediaSource,yt,(()=>{sr.debug.log(rr.TAG_NAME,"sourceOpen"),rr._onMediaSourceSourceOpen()})),i=e(rr.mediaSource,gt,(()=>{sr.debug.log(rr.TAG_NAME,"sourceClose")})),r=e(rr.mediaSource,bt,(()=>{sr.debug.log(rr.TAG_NAME,"sourceended")}));rr.eventListenList.push(t,i,r)},_onMediaSourceSourceOpen(){rr.sourceBuffer||(sr.debug.log(rr.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),rr._initSourceBuffer()),rr.audioSourceBuffer||(sr.debug.log(rr.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),rr._initAudioSourceBuffer()),rr._hasPendingSegments()&&rr._doAppendSegments()},decodeVideo(e,t,i,r){if(sr.isDestroyed)sr.debug.warn(rr.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(pi(rr.hasInit))if(i&&e[1]===At){const r=15&e[0];if(r===Ie&&pi(sr._opt.supportMSEDecodeHevc))return void rr.emitError(ke.mediaSourceH265NotSupport);rr.videoInfo.codec=r,postMessage({cmd:F,code:r});const s=new Uint8Array(e);postMessage({cmd:L,buffer:s,codecId:r},[s.buffer]),rr.hasInit=rr._decodeConfigurationRecord(e,t,i,r)}else sr.debug.warn(rr.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`);else if(!rr.isDecodeFirstIIframe&&i&&(rr.isDecodeFirstIIframe=!0),rr.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===De){i=Ui(e.slice(5))}else t===Ie&&(i=Gi(e));const r=rr.videoInfo;r&&r.codecWidth&&r.codecWidth&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.codecWidth||i.codecHeight!==r.codecWidth)&&(sr.debug.warn(rr.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${r.codecWidth}, old height is ${r.codecHeight},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),rr.isWidthOrHeightChanged=!0,rr.emitError(ke.mseWidthOrHeightChange,`width: ${r.codecWidth}->${i.codecWidth}, height: ${r.codecWidth}->${i.codecHeight}`))}if(rr.isWidthOrHeightChanged)return void sr.debug.warn(rr.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(hi(e))return void sr.debug.log(rr.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthrr.prevTs>0&&eS,_decodeConfigurationRecord(e,t,i,r){let s=e.slice(5),a={};if(r===De?a=Ui(s):r===Ie&&(a=Oi(s)),rr.videoInfo.width=a.codecWidth,rr.videoInfo.height=a.codecHeight,0===a.codecWidth&&0===a.codecHeight)return sr.debug.warn(rr.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(a)),rr.emitError(ke.mediaSourceDecoderConfigurationError,`width is ${0===a.codecWidth} and height is ${a.codecHeight}`),!1;const n={id:kt,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:a.codecWidth,codecHeight:a.codecHeight,videoType:a.videoType},o=cs.generateInitSegment(n);rr.isAvc=r===De;let d=a.codec;return rr.videoMimeType=d?`video/mp4; codecs="${a.codec}"`:rr.isAvc?ht:ft,postMessage({cmd:x,w:a.codecWidth,h:a.codecHeight}),rr._initSourceBuffer(),rr.appendBuffer(o.buffer),rr.sequenceNumber=0,rr.cacheTrack={},rr.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,r=e[0]>>1&1,s=i===Ne,a=i===Me;if(pi(a||s))return sr.debug.warn(rr.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),rr.emitError(ke.mediaSourceAudioG711NotSupport),!1;const n={id:Ct,type:"audio",timescale:1e3};let o={};if(Vt(e)){if(o=Yt(e.slice(2)),!o)return!1;n.audioSampleRate=o.sampleRate,n.channelCount=o.channelCount,n.config=o.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!s)return!1;if(o=bs(e),!o)return!1;n.audioSampleRate=o.samplingRate,n.channelCount=o.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=o.codec,n.duration=0;let d="mp4",l=o.codec,c=null;s&&pi(sr._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=cs.generateInitSegment(n);let u=`${n.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),pi(rr.isAudioInitInfo)&&(vi=i===Me?r?16:8:0===r?8:16,postMessage({cmd:C,code:i}),postMessage({cmd:k,sampleRate:n.audioSampleRate,channels:n.channelCount,depth:vi}),rr.isAudioInitInfo=!0),rr.audioMimeType=u,rr.isAAC=a,rr._initAudioSourceBuffer(),rr.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=rr.events;if(null===rr.sourceBuffer&&null!==rr.mediaSource&&rr.isStateOpen()&&rr.videoMimeType){try{sr.debug.log(rr.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",rr.videoMimeType),rr.sourceBuffer=rr.mediaSource.addSourceBuffer(rr.videoMimeType)}catch(e){return sr.debug.error(rr.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),rr.emitError(ke.mseWorkerAddSourceBufferError,e.code),void(rr.mediaSourceAddSourceBufferError=!0)}if(rr.sourceBuffer){const t=e(rr.sourceBuffer,"error",(e=>{rr.mediaSourceBufferError=!0,sr.debug.error(rr.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),rr.emitError(ke.mseSourceBufferError,e.code)})),i=e(rr.sourceBuffer,"updateend",(()=>{rr._hasPendingRemoveRanges()?rr._doRemoveRanges():rr._hasPendingSegments()?rr._doAppendSegments():rr.hasPendingEos&&(sr.debug.log(rr.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),rr.endOfStream())}));rr.eventListenList.push(t,i)}}else sr.debug.log(rr.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${rr.isStateOpen()} and mseDecoder.isAvc === null is ${null===rr.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=rr.events;if(null===rr.audioSourceBuffer&&null!==rr.mediaSource&&rr.isStateOpen()&&rr.audioMimeType){try{sr.debug.log(rr.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",rr.audioMimeType),rr._clearAudioSourceBufferCheckTimeout(),rr.audioSourceBuffer=rr.mediaSource.addSourceBuffer(rr.audioMimeType)}catch(e){return sr.debug.error(rr.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),rr.emitError(ke.mseWorkerAddSourceBufferError,e.code),void(rr.mediaSourceAddSourceBufferError=!0)}if(rr.audioSourceBuffer){const t=e(rr.audioSourceBuffer,"error",(e=>{rr.mediaSourceBufferError=!0,sr.debug.error(rr.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),rr.emitError(ke.mseSourceBufferError,e.code)})),i=e(rr.audioSourceBuffer,"updateend",(()=>{rr._hasPendingRemoveRanges()?rr._doRemoveRanges():rr._hasPendingSegments()?rr._doAppendSegments():rr.hasPendingEos&&(sr.debug.log(rr.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),rr.endOfStream())}));rr.eventListenList.push(t,i),null===rr.audioSourceNoDataCheckTimeout&&(rr.audioSourceNoDataCheckTimeout=setTimeout((()=>{rr._clearAudioNoDataCheckTimeout(),rr.emitError(ke.mediaSourceAudioNoDataTimeout)}),1e3))}}else sr.debug.log(rr.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${rr.isStateOpen()} and mseDecoder.audioMimeType is ${rr.audioMimeType}`)},_decodeVideo(e,t,i,r,s){let a=e.slice(5),n=a.byteLength;if(0===n)return void sr.debug.warn(rr.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;rr.prevTimestamp||(rr.prevTimestamp=o,d=!0);const l=o-rr.prevTimestamp;if(rr.decodeDiffTimestamp=l,l>1e3&&!d&&sr.isPlayer&&sr.debug.log(rr.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${rr.prevTimestamp}, diff time is ${l} ms`),rr.cacheTrack.id&&t>=rr.cacheTrack.dts){let e=8+rr.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(cs.types.mdat,4),i.set(rr.cacheTrack.data,8),rr.cacheTrack.duration=t-rr.cacheTrack.dts;let r=cs.moof(rr.cacheTrack,rr.cacheTrack.dts);rr.cacheTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),rr.appendBuffer(s.buffer)}else sr.debug.log(rr.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${rr.cacheTrack&&rr.cacheTrack.dts}`),rr.timeInit=!1,rr.cacheTrack={};rr.cacheTrack||(rr.cacheTrack={}),rr.cacheTrack.id=kt,rr.cacheTrack.sequenceNumber=++rr.sequenceNumber,rr.cacheTrack.size=n,rr.cacheTrack.dts=t,rr.cacheTrack.cts=r,rr.cacheTrack.isKeyframe=i,rr.cacheTrack.data=a,rr.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},rr.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,i){let r=rr.isAAC?e.slice(2):e.slice(1),s=r.byteLength;if(rr.cacheAudioTrack.id&&t>=rr.cacheAudioTrack.dts){let e=8+rr.cacheAudioTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(cs.types.mdat,4),i.set(rr.cacheAudioTrack.data,8),rr.cacheAudioTrack.duration=t-rr.cacheAudioTrack.dts;let r=cs.moof(rr.cacheAudioTrack,rr.cacheAudioTrack.dts);rr.cacheAudioTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),rr.appendAudioBuffer(s.buffer)}else rr.cacheAudioTrack={};rr.cacheAudioTrack||(rr.cacheAudioTrack={}),rr.cacheAudioTrack.id=Ct,rr.cacheAudioTrack.sequenceNumber=++rr.audioSequenceNumber,rr.cacheAudioTrack.size=s,rr.cacheAudioTrack.dts=t,rr.cacheAudioTrack.cts=0,rr.cacheAudioTrack.data=r,rr.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){sr.isDestroyed?sr.debug.warn(rr.TAG_NAME,"appendBuffer() player is destroyed"):rr.mediaSourceAddSourceBufferError?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):rr.mediaSourceAppendBufferFull?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):rr.mediaSourceAppendBufferError?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):rr.mediaSourceBufferError?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(rr.pendingSegments.push(e),rr.sourceBuffer&&(sr._opt.mseAutoCleanupSourceBuffer&&rr._needCleanupSourceBuffer()&&rr._doCleanUpSourceBuffer(),pi(rr.getSourceBufferUpdating())&&rr.isStateOpen()&&pi(rr._hasPendingRemoveRanges()))?rr._doAppendSegments():rr.isStateClosed()?(rr.mediaSourceBufferError=!0,rr.emitError(ke.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):rr.isStateEnded()&&(rr.mediaSourceBufferError=!0,rr.emitError(ke.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){sr.isDestroyed?sr.debug.warn(rr.TAG_NAME,"appendAudioBuffer() player is destroyed"):rr.mediaSourceAddSourceBufferError?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):rr.mediaSourceAppendBufferFull?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):rr.mediaSourceAppendBufferError?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):rr.mediaSourceBufferError?sr.debug.warn(rr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(rr.pendingAudioSegments.push(e),rr.audioSourceBuffer&&(sr._opt.mseAutoCleanupSourceBuffer&&rr._needCleanupSourceBuffer()&&rr._doCleanUpSourceBuffer(),pi(rr.getAudioSourceBufferUpdating())&&rr.isStateOpen()&&pi(rr._hasPendingRemoveRanges()))?rr._doAppendSegments():rr.isStateClosed()?(rr.mediaSourceBufferError=!0,rr.emitError(ke.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):rr.isStateEnded()&&(rr.mediaSourceBufferError=!0,rr.emitError(ke.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>rr.sourceBuffer&&rr.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>rr.audioSourceBuffer&&rr.audioSourceBuffer.updating,stop(){rr.abortSourceBuffer(),rr.removeSourceBuffer(),rr.endOfStream()},clearUpAllSourceBuffer(){if(rr.sourceBuffer){const e=rr.sourceBuffer.buffered;for(let t=0;trr.pendingSegments.length>0||rr.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>rr.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(rr.isStateClosed()||rr.isStateEnded())sr.debug.log(rr.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==rr.sourceBuffer){if(rr.needInitAudio()&&null===rr.audioSourceBuffer)return sr.debug.log(rr.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===rr.audioSourceBufferCheckTimeout&&(rr.audioSourceBufferCheckTimeout=setTimeout((()=>{rr._clearAudioSourceBufferCheckTimeout(),rr.emitError(ke.mediaSourceAudioInitTimeout)}),1e3)));if(pi(rr.getSourceBufferUpdating())&&rr.pendingSegments.length>0){const e=rr.pendingSegments.shift();try{rr.sourceBuffer.appendBuffer(e)}catch(e){sr.debug.error(rr.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(rr.stop(),rr.mediaSourceAppendBufferFull=!0,rr.emitError(ke.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(rr.stop(),rr.mediaSourceAppendBufferError=!0,rr.emitError(ke.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(rr.stop(),rr.mediaSourceBufferError=!0,rr.emitError(ke.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(pi(rr.getAudioSourceBufferUpdating())&&rr.pendingAudioSegments.length>0){const e=rr.pendingAudioSegments.shift();try{rr.audioSourceBuffer.appendBuffer(e)}catch(e){sr.debug.error(rr.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(rr.stop(),rr.mediaSourceAppendBufferFull=!0,rr.emitError(ke.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(rr.stop(),rr.mediaSourceAppendBufferError=!0,rr.emitError(ke.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(rr.stop(),rr.mediaSourceBufferError=!0,rr.emitError(ke.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else sr.debug.log(rr.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=rr.$video.currentTime;if(rr.sourceBuffer){const t=rr.sourceBuffer.buffered;let i=!1;for(let r=0;r=sr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-sr._opt.mseAutoCleanupMinBackwardDuration;rr.pendingRemoveRanges.push({start:s,end:t})}}else a=sr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-sr._opt.mseAutoCleanupMinBackwardDuration;rr.pendingAudioRemoveRanges.push({start:s,end:t})}}else arr.pendingRemoveRanges.length>0||rr.pendingAudioRemoveRanges.length>0,needInitAudio:()=>sr._opt.hasAudio&&sr._opt.mseDecodeAudio,_doRemoveRanges(){if(rr.sourceBuffer&&pi(rr.getSourceBufferUpdating())){let e=rr.pendingRemoveRanges;for(;e.length&&pi(rr.getSourceBufferUpdating());){let t=e.shift();try{rr.sourceBuffer.remove(t.start,t.end)}catch(e){sr.debug.warn(rr.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(rr.audioSourceBuffer&&pi(rr.getAudioSourceBufferUpdating())){let e=rr.pendingAudioRemoveRanges;for(;e.length&&pi(rr.getAudioSourceBufferUpdating());){let t=e.shift();try{rr.audioSourceBuffer.remove(t.start,t.end)}catch(e){sr.debug.warn(rr.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(pi(sr._opt.mseAutoCleanupSourceBuffer))return!1;const e=rr.$video.currentTime;if(rr.sourceBuffer){let t=rr.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=sr._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(rr.audioSourceBuffer){let t=rr.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=sr._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){rr.audioSourceBufferCheckTimeout&&(clearTimeout(rr.audioSourceBufferCheckTimeout),rr.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){rr.audioSourceNoDataCheckTimeout&&(clearTimeout(rr.audioSourceNoDataCheckTimeout),rr.audioSourceNoDataCheckTimeout=null)},getHandle:()=>rr.mediaSource.handle,emitError(e){postMessage({cmd:ie,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let sr={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:xt,_opt:Ri(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){sr.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:sr.getVideoBufferLength(),audioDemuxBufferDelay:sr.getAudioBufferLength(),streamBufferByteLength:sr.getStreamBufferLength(),netBuf:sr.networkDelay||0,pushLatestDelay:sr.pushLatestDelay||0,latestDelay:sr.delay,isStreamTsMoreThanLocal:Ze,wasmDecodeDelay:je-Ke});postMessage({cmd:R,type:xe,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return sr._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||sr._opt.hasVideo&&!He)return-1;if(t===re)return sr.delay;if(sr.preDelayTimestamp&&sr.preDelayTimestamp>e)return sr.preDelayTimestamp-e>1e3&&sr.debug.warn("worker",`getDelay() and preDelayTimestamp is ${sr.preDelayTimestamp} > timestamp is ${e} more than ${sr.preDelayTimestamp-e}ms and return ${sr.delay}`),sr.preDelayTimestamp=e,sr.delay;if(sr.firstTimestamp){if(e){const t=Date.now()-sr.startTimestamp,i=e-sr.firstTimestamp;t>=i?(Ze=!1,sr.delay=t-i):(Ze=!0,sr.delay=i-t)}}else sr.firstTimestamp=e,sr.startTimestamp=Date.now(),sr.delay=-1;return sr.preDelayTimestamp=e,sr.delay},getDelayNotUpdateDelay:function(e,t){if(!e||sr._opt.hasVideo&&!He)return-1;if(t===re)return sr.pushLatestDelay;if(sr.preDelayTimestamp&&sr.preDelayTimestamp-e>1e3)return sr.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${sr.preDelayTimestamp} > timestamp is ${e} more than ${sr.preDelayTimestamp-e}ms and return -1`),-1;if(sr.firstTimestamp){let t=-1;if(e){const i=Date.now()-sr.startTimestamp,r=e-sr.firstTimestamp;i>=r?(Ze=!1,t=i-r):(Ze=!0,t=r-i)}return t}return-1},resetDelay:function(){sr.firstTimestamp=null,sr.startTimestamp=null,sr.delay=-1,sr.dropping=!1},resetAllDelay:function(){sr.resetDelay(),sr.preDelayTimestamp=null},doDecode:function(e){sr._opt.isEmitSEI&&e.type===se&&sr.isWorkerFetch&&sr.findSei(e.payload,e.ts),sr.isPlayUseMSEAndDecoderInWorker()?e.type===re?sr._opt.mseDecodeAudio?rr.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===se&&rr.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):sr._opt.useWCS&&sr.useOffscreen()&&e.type===se&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===r.length)return;const t=e.ts,s=r[0],a=e.type===se&&hi(e.payload);if(pi(i))a&&(sr.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n isVideoSqeHeader is ${a}`),r.shift(),sr.doDecode(s));else{const i=s.ts-t,n=s.type===re&&e.type===se;(i<=20||n||a)&&(sr.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n diff is ${i} and isVideoAndNextAudio is ${n} and isVideoSqeHeader is ${a}`),r.shift(),sr.doDecode(s))}},init:function(){sr.debug.log("worker","init and opt is",JSON.stringify(sr._opt));const e=sr._opt.playType===m,t=sr._opt.playType===g;if(Qi.init(),sr.isPlayer=e,sr.isPlayback=t,sr.isPlayUseMSEAndDecoderInWorker()&&rr&&rr.init(),a&&sr._opt.useWCS&&sr.useOffscreen()&&a.init(),sr.isPlaybackCacheBeforeDecodeForFpsRender())sr.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{sr.debug.log("worker","setInterval()");const t=()=>{const t=sr._opt.videoBuffer+sr._opt.videoBufferDelay;let i=null;if(r.length){if(sr.isPushDropping)return void sr.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${r.length}`);if(sr.dropping){for(i=r.shift(),sr.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${i.isIFrame} and delay is ${sr.delay} and bufferlist is ${r.length}`);!i.isIFrame&&r.length;)i=r.shift();const e=sr.getDelayNotUpdateDelay(i.ts,i.type);i.isIFrame&&e<=sr.getNotDroppingDelayTs()&&(sr.debug.log("worker","loop() is dropping = false, is iFrame"),sr.dropping=!1,sr.doDecode(i),sr.decodeNext(i))}else if(sr.isPlayback||sr.isPlayUseMSE()||0===sr._opt.videoBuffer)for(;r.length;)i=r.shift(),sr.doDecode(i);else if(i=r[0],-1===sr.getDelay(i.ts,i.type))sr.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",i.ts),r.shift(),sr.doDecode(i),sr.decodeNext(i);else if(sr.delay>t&&e)sr.hasIframeInBufferList()?(sr.debug.log("worker",`delay is ${sr.delay} > maxDelay ${t}, set dropping is true`),sr.resetAllDelay(),sr.dropping=!0,postMessage({cmd:G})):(r.shift(),sr.doDecode(i),sr.decodeNext(i));else for(;r.length;){if(i=r[0],!(sr.getDelay(i.ts,i.type)>sr._opt.videoBuffer)){sr.delay<0&&sr.debug.warn("worker",`loop() do not decode and delay is ${sr.delay}, bufferList is ${r.length}`);break}r.shift(),sr.doDecode(i)}}else-1!==sr.delay&&sr.debug.log("worker","loop() bufferList is empty and reset delay"),sr.resetAllDelay()};sr.stopId=setInterval((()=>{let e=(new Date).getTime();Qe||(Qe=e);const i=e-Qe;i>100&&sr.debug.warn("worker",`loop demux diff time is ${i}`),t(),Qe=(new Date).getTime()}),20)}if(pi(sr._opt.checkFirstIFrame)&&(He=!0),sr.isPlayUseMSEAndDecoderInWorker()&&rr){const e=rr.getHandle();e&&postMessage({cmd:ee,mseHandle:e},[e])}},playbackCacheLoop:function(){sr.stopId&&(clearInterval(sr.stopId),sr.stopId=null);const e=()=>{let e=null;r.length&&(e=r.shift(),sr.doDecode(e))};e();const t=Math.ceil(1e3/(sr.streamFps*sr._opt.playbackRate));sr.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${sr.streamFps}, streamAudioFps is ${sr.streamAudioFps} ,streamVideoFps is ${sr.streamVideoFps} playbackRate is ${sr._opt.playbackRate}`),sr.stopId=setInterval(e,t)},close:function(){if(sr.debug.log("worker","close"),sr.isDestroyed=!0,Hi(),!o||1!==o.readyState&&2!==o.readyState?o&&sr.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(Bi=!0,o.close(1e3,"Client disconnecting")),o=null,sr.stopStreamRateAndStatsInterval(),sr.stopId&&(clearInterval(sr.stopId),sr.stopId=null),sr.mp3Demuxer&&(sr.mp3Demuxer.destroy(),sr.mp3Demuxer=null),sr.writableStream&&pi(sr.writableStream.locked)&&sr.writableStream.close().catch((e=>{sr.debug.log("worker","close() and writableStream.close() error",e)})),sr.writableStream=null,ar)try{ar.clear&&ar.clear(),ar=null}catch(e){sr.debug.log("worker","close() and audioDecoder.clear error",e.toString(),e)}if(nr)try{nr.clear&&nr.clear(),nr=null}catch(e){sr.debug.log("worker","close() and videoDecoder.clear error",e.toString(),e)}d=null,Qe=null,Ze=!1,je=0,Ke=0,a&&(a.destroy&&a.destroy(),a=null),rr&&(rr.destroy(),rr=null),sr.firstTimestamp=null,sr.startTimestamp=null,sr.networkDelay=0,sr.streamFps=null,sr.streamAudioFps=null,sr.streamVideoFps=null,sr.delay=-1,sr.pushLatestDelay=-1,sr.preDelayTimestamp=null,sr.dropping=!1,sr.isPushDropping=!1,sr.isPlayer=!0,sr.isPlayback=!1,sr.isWorkerFetch=!1,sr.isHevc=null,sr._opt=Ri(),sr.webglObj&&(sr.webglObj.destroy(),sr.offscreenCanvas.removeEventListener("webglcontextlost",sr.onOffscreenCanvasWebglContextLost),sr.offscreenCanvas.removeEventListener("webglcontextrestored",sr.onOffscreenCanvasWebglContextRestored),sr.offscreenCanvas=null,sr.offscreenCanvasGL=null,sr.offscreenCanvasCtx=null),r=[],s=[],c&&(c.buffer=null,c=null),v=null,B=null,ye=!1,be=!1,He=!1,ti=!1,gi=!1,yi=!1,bi=null,St=[],zt=0,Rt=0,ot=null,vt=null,Nt=null,Gt=null,vi=null,Wt=0,Kt=0,Bt=null,Mt=null,sr.fetchStatus=xt,zi=!0,Qi.destroy(),er.destroy(),tr.destroy(),ir.destroy(),postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===re&&Vt(e)){if(sr.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),sr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:X,buffer:t},[t.buffer])}sr.decodeAudio(e,t.ts)}else if(t.type===se&&t.isIFrame&&hi(e)){if(sr.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),sr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Z,buffer:t},[t.buffer])}sr.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(sr._opt.isRecording)if(sr._opt.isRecordTypeFlv){const i=new Uint8Array(e);postMessage({cmd:J,type:t.type,buffer:i,ts:t.ts},[i.buffer])}else if(sr._opt.recordType===y)if(t.type===se){const i=new Uint8Array(e).slice(5);postMessage({cmd:P,buffer:i,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[i.buffer])}else if(t.type===re&&sr._opt.isWasmMp4){const i=new Uint8Array(e),r=$t(i)?i.slice(2):i.slice(1);postMessage({cmd:D,buffer:r,ts:t.ts},[r.buffer])}if(sr.isPlayer){if(t.type===se){if(Wt>0){const e=t.ts-Gt,i=Wt+Wt/2;e>i&&sr.debug.log("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Gt},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${i}\n maybe trigger black screen or flower screen\n `)}if(null!==Gt&&Gt>=t.ts&&(sr.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Gt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Kt}`),Gt-t.ts>S&&(sr.debug.warn("worker",`pushBuffer,\n preTimestamp is ${Gt}, options.ts is ${t.ts},\n diff is ${Gt-t.ts} more than 3600000,\n and resetAllDelay`),sr.resetAllDelay(),Gt=null,Wt=0),sr._opt.isDropSameTimestampGop&&pi(t.isIFrame)&&He)){const e=sr.hasIframeInBufferList(),t=pi(sr.isPushDropping);return sr.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?sr.dropBuffer$2():(sr.clearBuffer(!0),fi(sr._opt.checkFirstIFrame)&&fi(i)&&(sr.isPlayUseMSEAndDecoderInWorker()?rr.isDecodeFirstIIframe=!1:postMessage({cmd:Q}))))}Gt>0&&(Wt=t.ts-Gt),Kt=e.byteLength,Gt=t.ts}if(He){const e=sr._opt.videoBuffer+sr._opt.videoBufferDelay,i=sr.getDelayNotUpdateDelay(t.ts,t.type);sr.pushLatestDelay=i,sr.delay>0&&i>e&&sr.delay({type:e.type,ts:e.ts})));sr.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${r.length}, and ts list is ${JSON.stringify(i)}`)}const i=sr.getAudioBufferLength()>0,s=i?60:40;r.length>=s&&(sr.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${r.length} more than ${s}, and hasAudio is ${i} an set streamFps is 25`),sr.streamVideoFps=25,postMessage({cmd:H,value:sr.streamVideoFps}),i?(sr.streamAudioFps=25,sr.streamFps=sr.streamVideoFps+sr.streamAudioFps):sr.streamFps=sr.streamVideoFps,sr.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return r.forEach((t=>{t.type===se&&(e+=1)})),e},hasIframeInBufferList:()=>r.some((e=>e.type===se&&e.isIFrame)),isAllIframeInBufferList(){const e=sr.getVideoBufferLength();let t=0;return r.forEach((e=>{e.type===se&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>sr._opt.videoBuffer+sr._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return r.forEach((t=>{t.type===re&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),sr._opt.isNakedFlow?Qi.lastBuf&&(e=Qi.lastBuf.byteLength):sr._opt.isTs?ir._remainingPacketData&&(e=ir._remainingPacketData.byteLength):sr._opt.isFmp4&&er.mp4Box&&(e=er.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){if(sr.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),sr.isWorkerFetch=!0,t.isFlv?sr._opt.isFlv=!0:t.isFmp4?sr._opt.isFmp4=!0:t.isMpeg4?sr._opt.isMpeg4=!0:t.isNakedFlow?sr._opt.isNakedFlow=!0:t.isTs&&(sr._opt.isTs=!0),d=ii((e=>{postMessage({cmd:R,type:Se,value:e})})),sr.startStreamRateAndStatsInterval(),t.isFmp4&&(er.listenMp4Box(),sr._opt.isFmp4Private&&er.initTransportDescarmber()),t.protocol===f){c=new Si(sr.demuxFlv()),n=new AbortController;const i=Object.assign({signal:n.signal},{headers:t.options&&t.options.headers||{}});fetch(e,i).then((e=>{if(fi(Bi))return sr.debug.log("worker","request abort and run res.body.cancel()"),sr.fetchStatus=xt,void e.body.cancel();if(!ci(e))return sr.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Hi(),void postMessage({cmd:R,type:ke.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:R,type:Ue}),oi())sr.writableStream=new WritableStream({write:e=>n&&n.signal&&n.signal.aborted?(sr.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(sr.fetchStatus=Tt)):fi(Bi)?(sr.debug.log("worker","writableStream write() and requestAbort is true so return"),void(sr.fetchStatus=Tt)):void("string"!=typeof e?(sr.fetchStatus=Et,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?sr.demuxFmp4(e):t.isMpeg4?sr.demuxMpeg4(e):t.isTs&&sr.demuxTs(e)):sr.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{sr.debug.log("worker","writableStream close()"),sr.fetchStatus=Tt,c=null,Hi(),postMessage({cmd:R,type:ve,value:p,msg:"fetch done"})},abort:e=>{if(n&&n.signal&&n.signal.aborted)return sr.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(sr.fetchStatus=Tt);c=null,e.name!==wt?(sr.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Hi(),postMessage({cmd:R,type:ke.fetchError,value:e.toString()})):sr.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(sr.writableStream);else{const i=e.body.getReader(),r=()=>{i.read().then((e=>{let{done:i,value:s}=e;return i?(sr.debug.log("worker","fetchNext().then() and done is true"),sr.fetchStatus=Tt,c=null,Hi(),void postMessage({cmd:R,type:ve,value:p,msg:"fetch done"})):n&&n.signal&&n.signal.aborted?(sr.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(sr.fetchStatus=Tt)):fi(Bi)?(sr.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(sr.fetchStatus=Tt)):void("string"!=typeof s?(sr.fetchStatus=Et,d(s.byteLength),t.isFlv?c.write(s):t.isFmp4?sr.demuxFmp4(s):t.isMpeg4?sr.demuxMpeg4(s):t.isTs&&sr.demuxTs(s),r()):sr.debug.warn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(n&&n.signal&&n.signal.aborted)return sr.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(sr.fetchStatus=Tt);c=null,e.name!==wt?(sr.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Hi(),postMessage({cmd:R,type:ke.fetchError,value:e.toString()})):sr.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};r()}})).catch((e=>{n&&n.signal&&n.signal.aborted?sr.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==wt?(sr.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Hi(),postMessage({cmd:R,type:ke.fetchError,value:e.toString()}),c=null):sr.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===h&&(t.isFlv&&(c=new Si(sr.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{sr.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:R,type:Ue}),postMessage({cmd:R,type:Te})},o.onclose=e=>{sr.isDestroyed?sr.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):b?sr.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(sr.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&sr.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),fi(Bi)?sr.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:R,type:ve,value:_,msg:e.code})))},o.onerror=e=>{sr.debug.error("worker","fetchStream, WebsocketStream socket error",e),b=!0,c=null,sr.isDestroyed?sr.debug.log("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):postMessage({cmd:R,type:ke.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?sr.demuxFmp4(e.data):t.isMpeg4?sr.demuxMpeg4(e.data):sr._opt.isNakedFlow?sr.demuxNakedFlow(e.data):sr.demuxM7s(e.data)):sr.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield s).slice();switch(r){case ae:if(n.byteLength>0){let e=n;fi(sr._opt.m7sCryptoAudio)&&(e=sr.cryptoPayloadAudio(n)),sr.decode(e,{type:re,ts:a})}else sr.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${n.byteLength} and return`);break;case ne:if(n.byteLength>=6){const e=n[0];if(sr._isEnhancedH265Header(e))sr._decodeEnhancedH265Video(n,a);else{const e=15&n[0];let t=n[0]>>4===Ut;const r=e===Ie;if(pi(t)&&fi(mi(n,r))&&(sr.debug.log("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&hi(n)&&null===sr.isHevc){const e=15&n[0];sr.isHevc=e===Ie,bi=Jt(n,sr.isHevc),sr.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${sr.isHevc} and nalUnitSize is ${bi}`)}t&&sr.calcIframeIntervalTimestamp(a),sr.isPlayer&&sr.calcNetworkDelay(a),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let s=i[0],o=sr.cryptoPayload(n,t);sr.decode(o,{type:se,ts:a,isIFrame:t,cts:s})}}else sr.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${n.byteLength} and return`);break;case oe:postMessage({cmd:K,buffer:n},[n.buffer]);break;default:sr.debug.log("worker",`demuxFlv() type is ${r}`)}}},decode:function(e,t){t.type===re?sr._opt.hasAudio&&(postMessage({cmd:R,type:we,value:e.byteLength}),sr.isPlayer?sr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):sr.isPlayback&&(sr.isPlaybackOnlyDecodeIFrame()||(sr.isPlaybackCacheBeforeDecodeForFpsRender(),sr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===se&&sr._opt.hasVideo&&(postMessage({cmd:R,type:Ae,value:e.byteLength}),postMessage({cmd:R,type:Be,value:t.ts}),sr.isPlayer?sr.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):sr.isPlayback&&(sr.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&sr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(sr.isPlaybackCacheBeforeDecodeForFpsRender(),sr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let i=e;return sr._opt.isM7sCrypto?sr._opt.cryptoIV&&sr._opt.cryptoIV.byteLength>0&&sr._opt.cryptoKey&&sr._opt.cryptoKey.byteLength>0?i=Lr(e,sr._opt.cryptoKey,sr._opt.cryptoIV,sr.isHevc):sr.debug.error("worker",`isM7sCrypto cryptoKey.length is ${sr._opt.cryptoKey&&sr._opt.cryptoKey.byteLength} or cryptoIV.length is ${sr._opt.cryptoIV&&sr._opt.cryptoIV.byteLength} null`):sr._opt.isSm4Crypto?sr._opt.sm4CryptoKey?i=sr._opt.cryptoIV&&sr._opt.cryptoIV.byteLength>0&&sr._opt.cryptoKey&&sr._opt.cryptoKey.byteLength>0?Xs(e,sr._opt.cryptoKey,sr._opt.cryptoIV,sr.isHevc,sr._opt.isSm4CryptoH265V2):is(e,sr._opt.sm4CryptoKey,sr.isHevc,sr._opt.isSm4CryptoH265V2):sr._opt.sm4CryptoKey||sr.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):sr._opt.isXorCrypto&&(sr._opt.cryptoIV&&sr._opt.cryptoIV.byteLength>0&&sr._opt.cryptoKey&&sr._opt.cryptoKey.byteLength>0?i=os(e,sr._opt.cryptoKey,sr._opt.cryptoIV,sr.isHevc):sr.debug.error("worker",`isXorCrypto cryptoKey.length is ${sr._opt.cryptoKey&&sr._opt.cryptoKey.byteLength} or cryptoIV.length is ${sr._opt.cryptoIV&&sr._opt.cryptoIV.byteLength} null`)),i},cryptoPayloadAudio:function(e){let t=e;if(sr._opt.isM7sCrypto)if(sr._opt.cryptoIV&&sr._opt.cryptoIV.byteLength>0&&sr._opt.cryptoKey&&sr._opt.cryptoKey.byteLength>0){e[0]>>4===Me&&(t=Pr(e,sr._opt.cryptoKey,sr._opt.cryptoIV))}else sr.debug.error("worker",`isM7sCrypto cryptoKey.length is ${sr._opt.cryptoKey&&sr._opt.cryptoKey.byteLength} or cryptoIV.length is ${sr._opt.cryptoIV&&sr._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const i=e[0]>>4,r=e[0]>>1&1;if(vi=i===Me?r?16:8:0===r?8:16,ar&&ar.setCodec)if(Vt(e)||i===ze||i===Re||i===Ne){sr.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${i} _opt.sampleRate is ${sr._opt.sampleRate}`);const r=i===Me?e.slice(2):new Uint8Array(0);ar.setCodec(i,sr._opt.sampleRate,r),i===Me&&postMessage({cmd:I,buffer:r},[r.buffer]),be=!0,i!==Me&&(i===Ne?(sr.mp3Demuxer||(sr.mp3Demuxer=new ss(sr),sr.mp3Demuxer.on("data",((e,t)=>{ar.decode(e,t)}))),sr.mp3Demuxer.dispatch(e.slice(1),t)):ar.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{sr.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),sr.close(),postMessage({cmd:O})}),60*e*60*1e3)}}else sr.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",i);else sr.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(sr.isDestroyed)sr.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(sr.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())rr.decodeAudio(e,t);else if(fi(i)&&fi(sr._opt.mseDecodeAudio))postMessage({cmd:z,payload:e,ts:t,cts:t},[e.buffer]);else{const i=e[0]>>4;if(be){if(Vt(e))return void sr.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i===Ne?sr.mp3Demuxer.dispatch(e.slice(1),t):ar.decode(i===Me?e.slice(2):e.slice(1),t)}else sr.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const i=15&e[0];if(nr&&nr.setCodec)if(hi(e))if(i===De||i===Ie){sr.debug.log("worker",`setCodecVideo: init video codec , codecId is ${i}`);const t=e.slice(5);if(i===De&&sr._opt.useSIMD){const e=Ui(t);if(e.codecWidth>w||e.codecHeight>w)return postMessage({cmd:W,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void sr.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const r=new Uint8Array(e);ye=!0,nr.setCodec(i,t),postMessage({cmd:F,code:i}),postMessage({cmd:L,buffer:r,codecId:i},[r.buffer])}else sr.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${i} is not H264 or H265`);else sr.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${i} and isIFrame is ${t} and packetType is ${e[1]}`);else sr.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(sr.isDestroyed)sr.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(sr.isPlayUseMSEAndDecoderInWorker())rr.decodeVideo(e,t,r,s);else if(fi(i))postMessage({cmd:M,payload:e,isIFrame:r,ts:t,cts:s,delay:sr.delay},[e.buffer]);else if(ye)if(!He&&r&&(He=!0),He){if(r&&hi(e)){const t=15&e[0];let i={};if(t===De){i=Ui(e.slice(5))}else t===Ie&&(i=Gi(e));i.codecWidth&&i.codecHeight&&v&&B&&(i.codecWidth!==v||i.codecHeight!==B)&&(sr.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${v}, old height is ${B},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),gi=!0,postMessage({cmd:V,value:`width: ${v}->${i.codecWidth}, height: ${B}->${i.codecHeight}`}))}if(gi)return void sr.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(yi)return void sr.debug.warn("worker","decodeVideo: simd decode error, and return");if(hi(e))return void sr.debug.log("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];sr.debug.log("worker",`clearBuffer,bufferList length is ${r.length}, need clear is ${e}`),e&&(r=[]),sr.isPlayer&&(sr.resetAllDelay(),fi(sr._opt.checkFirstIFrame)&&(sr.dropping=!0,postMessage({cmd:G}))),fi(sr._opt.checkFirstIFrame)&&pi(i)&&(He=!1)},dropBuffer$2:function(){if(r.length>0){let e=r.findIndex((e=>fi(e.isIFrame)&&e.type===se));if(sr.isAllIframeInBufferList())for(let t=0;t=sr.getNotDroppingDelayTs()){sr.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${sr.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){sr.isPushDropping=!0,postMessage({cmd:G});const t=r.length;r=r.slice(e);const i=r.shift();sr.resetAllDelay(),sr.getDelay(i.ts,i.type),sr.doDecode(i),sr.isPushDropping=!1,sr.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${r.length} and new delay is ${sr.delay} `)}else sr.isPushDropping=!1}0===r.length&&(sr.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),i=t.getUint32(1,!1),r=t.getUint8(0),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case re:sr.decode(new Uint8Array(e,5),{type:re,ts:i});break;case se:if(t.byteLength>=11){const r=new Uint8Array(e,5),s=r[0];if(sr._isEnhancedH265Header(s))sr._decodeEnhancedH265Video(r,i);else{const e=t.getUint8(5)>>4==1;if(e&&(sr.calcIframeIntervalTimestamp(i),hi(r)&&null===sr.isHevc)){const e=15&r[0];sr.isHevc=e===Ie}sr.isPlayer&&sr.calcNetworkDelay(i),a[0]=r[4],a[1]=r[3],a[2]=r[2],a[3]=0;let s=a[0],n=sr.cryptoPayload(r,e);sr.decode(n,{type:se,ts:i,isIFrame:e,cts:s})}}else sr.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Qi.dispatch(e)},demuxFmp4:function(e){er.dispatch(e)},demuxMpeg4:function(e){tr.dispatch(e)},demuxTs:function(e){ir.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const i=e[0],r=48&i,s=15&i,a=e.slice(1,5),n=new ArrayBuffer(4),o=new Uint32Array(n),d="a"==String.fromCharCode(a[0]);if(sr.isHevc=pi(d),s===It){if(r===Pt){const i=e.slice(5);if(d);else{const r=new Uint8Array(5+i.length);r.set([28,0,0,0,0],0),r.set(i,5),bi=Jt(e,sr.isHevc),sr.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${sr.isHevc} and nalUnitSize is ${bi}`),sr.decode(r,{type:se,ts:t,isIFrame:!0,cts:0})}}}else if(s===Ft){let i=e,s=0;const a=r===Pt;if(a&&sr.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];i=Wi(e.slice(8),a),i=sr.cryptoPayload(i,a),sr.decode(i,{type:se,ts:t,isIFrame:a,cts:s})}}else if(s===Lt){const i=r===Pt;i&&sr.calcIframeIntervalTimestamp(t);let s=Wi(e.slice(5),i);s=sr.cryptoPayload(s,i),sr.decode(s,{type:se,ts:t,isIFrame:i,cts:0})}},_isEnhancedH265Header:function(e){return(e&Dt)===Dt},findSei:function(e,t){let i=4;si(bi)&&(i=bi);Xt(e.slice(5),i).forEach((e=>{const i=sr.isHevc?e[0]>>>1&63:31&e[0];(sr.isHevc&&(i===lt||i===dt)||pi(sr.isHevc)&&i===We)&&postMessage({cmd:j,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(He&&e>0))return;null===ot?(ot=e,vt=Qt()):et?i-t:0;sr.networkDelay=r,r>sr._opt.networkDelay&&sr._opt.playType===m&&(sr.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ot} vs start is ${t},local diff is ${i} ,delay is ${r}`),postMessage({cmd:R,type:Ee,value:r}))},calcIframeIntervalTimestamp:function(e){null===Nt?Nt=e:Nt=sr._opt.playbackForwardMaxRateDecodeIFrame&&!(sr._opt.useMSE&&sr._opt.mseDecodeAudio)},isPlayUseMSE:function(){return sr.isPlayer&&sr._opt.useMSE&&fi(i)},isPlayUseMSEAndDecoderInWorker:function(){return sr.isPlayUseMSE()&&sr._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return sr.isPlayUseMSEAndDecoderInWorker()&&sr._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){sr.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){sr.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),ti=!0,sr.webglObj.destroy(),sr.webglObj=null,sr.offscreenCanvasGL=null,setTimeout((()=>{sr.offscreenCanvasGL=sr.offscreenCanvas.getContext("webgl"),sr.offscreenCanvasGL&&sr.offscreenCanvasGL.getContextAttributes().stencil?(sr.webglObj=u(sr.offscreenCanvasGL,sr._opt.openWebglAlignment),ti=!1):sr.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){sr.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,i){postMessage({cmd:F,code:e}),postMessage({cmd:x,w:t,h:i}),v=t,B=i,sr.useOffscreen()&&(sr.offscreenCanvas=new OffscreenCanvas(t,i),sr.offscreenCanvasGL=sr.offscreenCanvas.getContext("webgl"),sr.webglObj=u(sr.offscreenCanvasGL,sr._opt.openWebglAlignment),sr.offscreenCanvas.addEventListener("webglcontextlost",sr.onOffscreenCanvasWebglContextLost,!1),sr.offscreenCanvas.addEventListener("webglcontextrestored",sr.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,i){postMessage({cmd:C,code:e}),postMessage({cmd:k,sampleRate:t,channels:i,depth:vi}),Rt=i},yuvData:function(t,i){if(sr.isDestroyed)return void sr.debug.log("worker","yuvData, decoder is destroyed and return");const r=v*B*3/2;let s=e.HEAPU8.subarray(t,t+r),a=new Uint8Array(s);if(Bt=null,Ke=i,sr.useOffscreen())try{if(ti)return;sr.webglObj.renderYUV(v,B,a);let e=sr.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:e,delay:sr.delay,ts:i},[e])}catch(e){sr.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:E,output:a,delay:sr.delay,ts:i},[a.buffer])},pcmData:function(e,i,r){if(sr.isDestroyed)return void sr.debug.log("worker","pcmData, decoder is destroyed and return");let a=i,n=[],o=0,d=sr._opt.audioBufferSize;for(let i=0;i<2;i++){let r=t.HEAPU32[(e>>2)+i]>>2;n[i]=t.HEAPF32.subarray(r,r+a)}if(zt){if(!(a>=(i=d-zt)))return zt+=a,s[0]=Float32Array.of(...s[0],...n[0]),void(2==Rt&&(s[1]=Float32Array.of(...s[1],...n[1])));St[0]=Float32Array.of(...s[0],...n[0].subarray(0,i)),2==Rt&&(St[1]=Float32Array.of(...s[1],...n[1].subarray(0,i))),postMessage({cmd:T,buffer:St,ts:r},St.map((e=>e.buffer))),o=i,a-=i}for(zt=a;zt>=d;zt-=d)St[0]=n[0].slice(o,o+=d),2==Rt&&(St[1]=n[1].slice(o-d,o)),postMessage({cmd:T,buffer:St,ts:r},St.map((e=>e.buffer)));zt&&(s[0]=n[0].slice(o),2==Rt&&(s[1]=n[1].slice(o))),n=[]},errorInfo:function(e){null===Bt&&(Bt=Qt());const t=Qt(),i=ei(Mt>0?2*Mt:5e3,1e3,5e3),r=t-Bt;r>i&&(sr.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Mt} and diff is ${r} and maxDiff is ${i}\n and replay`),yi=!0,postMessage({cmd:$}))},sendWebsocketMessage:function(e){o?o.readyState===Ce?o.send(e):sr.debug.error("worker","socket is not open"):sr.debug.error("worker","socket is null")},timeEnd:function(){sr.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),sr.close(),postMessage({cmd:O})},postStreamToMain(e,t){postMessage({cmd:q,type:t,buffer:e},[e.buffer])}};sr.debug=new wi(sr);let ar=null;t.AudioDecoder&&(ar=new t.AudioDecoder(sr));let nr=null;e.VideoDecoder&&(nr=new e.VideoDecoder(sr)),postMessage({cmd:U}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case de:try{sr._opt=Object.assign(sr._opt,JSON.parse(t.opt))}catch(e){}sr.init();break;case le:sr.pushBuffer(t.buffer,t.options);break;case ce:sr.decodeAudio(t.buffer,t.ts);break;case ue:sr.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case pe:sr.clearBuffer(t.needClear);break;case _e:sr.fetchStream(t.url,JSON.parse(t.opt));break;case he:sr.debug.log("worker","close",JSON.stringify(t.options)),t.options&&pi(t.options.isVideoInited)&&(zi=t.options.isVideoInited),sr.close();break;case fe:sr.debug.log("worker","updateConfig",t.key,t.value),sr._opt[t.key]=t.value,"playbackRate"===t.key&&(sr.playbackUpdatePlaybackRate(),sr.isPlaybackCacheBeforeDecodeForFpsRender()&&sr.playbackCacheLoop());break;case me:sr.sendWebsocketMessage(t.message);break;case ge:rr.$video.currentTime=Number(t.message)}}}({},{},!0)})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-hard.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-hard.js new file mode 100644 index 0000000000000000000000000000000000000000..2cee5af029385f54e8c5b89c1b1e70dc1e7b319a --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-hard.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,s=t(e),n=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,s;(s=e).ready=new Promise(((e,r)=>{t=e,i=r})),(s=void 0!==s?s:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,a,o,d=Object.assign({},s),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return s.locateFile?s.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href)),n=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,s)=>{e?r(e):t(i?s.buffer:s)}))},!s.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),s.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var y,v,b=s.print||console.log.bind(console),w=s.printErr||console.error.bind(console);Object.assign(s,d),d=null,s.arguments&&s.arguments,s.thisProgram&&(l=s.thisProgram),s.quit&&s.quit,s.wasmBinary&&(y=s.wasmBinary),s.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,B,U,x,k,T,C=!1;function D(e,t){e||j(t)}function I(){var e=v.buffer;s.HEAP8=S=new Int8Array(e),s.HEAP16=A=new Int16Array(e),s.HEAPU8=E=new Uint8Array(e),s.HEAPU16=B=new Uint16Array(e),s.HEAP32=U=new Int32Array(e),s.HEAPU32=x=new Uint32Array(e),s.HEAPF32=k=new Float32Array(e),s.HEAPF64=T=new Float64Array(e)}var F=[],P=[],L=[];function M(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)N(s.preRun.shift());se(F)}function R(){s.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,se(P)}function z(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)G(s.postRun.shift());se(L)}function N(e){F.unshift(e)}function O(e){P.unshift(e)}function G(e){L.unshift(e)}var $=0,H=null;function V(e){$++,s.monitorRunDependencies&&s.monitorRunDependencies($)}function W(e){if($--,s.monitorRunDependencies&&s.monitorRunDependencies($),0==$&&H){var t=H;H=null,t()}}function j(e){s.onAbort&&s.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ti};function t(e,t){return ri=e.exports,v=ri.D,I(),Ft=ri.G,O(ri.E),W(),ri}if(V(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}s.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href).href;var se=e=>{for(;e.length>0;)e.shift()(s)};function ne(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){x[this.ptr+4>>2]=e},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(e){x[this.ptr+8>>2]=e},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){x[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){if(di(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var ae=(e,t,r)=>{throw new ne(e).init(t,r),e},oe=e=>(U[si()>>2]=e,e),de={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var s=e[i];"."===s?e.splice(i,1):".."===s?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ue.resolve(e).substr(1),t=ue.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),n=Math.min(i.length,s.length),a=n,o=0;o{for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&he)return he.decode(e.subarray(t,s));for(var n="";t>10,56320|1023&l)}}else n+=String.fromCharCode((31&a)<<6|o)}else n+=String.fromCharCode(a)}return n},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(e,t,r,i)=>{if(!(i>0))return 0;for(var s=r,n=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=n)break;t[r++]=o}else if(o<=2047){if(r+1>=n)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=n)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=n)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-s};function ge(e,t,r){var i=r>0?r:me(e)+1,s=new Array(i),n=_e(e,s,0,s.length);return t&&(s.length=n),s}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var n=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var s=Te.createNode(e,t,r,i);return Te.isDir(s.mode)?(s.node_ops=we.ops_table.dir.node,s.stream_ops=we.ops_table.dir.stream,s.contents={}):Te.isFile(s.mode)?(s.node_ops=we.ops_table.file.node,s.stream_ops=we.ops_table.file.stream,s.usedBytes=0,s.contents=null):Te.isLink(s.mode)?(s.node_ops=we.ops_table.link.node,s.stream_ops=we.ops_table.link.stream):Te.isChrdev(s.mode)&&(s.node_ops=we.ops_table.chrdev.node,s.stream_ops=we.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=Te.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new Te.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,s){var n=e.node.contents;if(s>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-s,i);if(a>8&&n.subarray)t.set(n.subarray(s,s+a),r);else for(var o=0;o0||r+t(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var s=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),s&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),s&&V()},Ee=(e,t,r,i,s,n)=>Te.createDataFile(e,t,r,i,s,n),Ae=s.preloadPlugins||[],Be=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var s=!1;return Ae.forEach((n=>{s||n.canHandle(t)&&(n.handle(e,t,r,i),s=!0)})),s},Ue=(e,t,r,i,s,n,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,s,d),n&&n(),W()}Be(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},xe=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,s="/",n=0;n40)throw new Te.ErrnoError(32)}}return{path:s,node:i}},getPath(e){for(var t;;){if(Te.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),s=Te.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return Te.lookup(e,t)},createNode(e,t,r,i){var s=new Te.FSNode(e,t,r,i);return Te.hashAddNode(s),s},destroyNode(e){Te.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var s=Te.nodePermissions(e,"wx");if(s)return s;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function s(e){return Te.syncFSRequests--,t(e)}function n(e){if(e)return n.errored?void 0:(n.errored=!0,s(e));++i>=r.length&&s(null)}r.forEach((t=>{if(!t.type.syncfs)return n(null);t.type.syncfs(t,e,n)}))},mount(e,t,r){var i,s="/"===r,n=!r;if(s&&Te.root)throw new Te.ErrnoError(10);if(!s&&!n){var a=Te.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?Te.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,s=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&Te.destroyNode(t),t=r}})),r.mounted=null;var n=r.mount.mounts.indexOf(i);r.mount.mounts.splice(n,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=Te.lookupPath(e,{parent:!0}).node,s=de.basename(e);if(!s||"."===s||".."===s)throw new Te.ErrnoError(28);var n=Te.mayCreate(i,s);if(n)throw new Te.ErrnoError(n);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",s=0;s(void 0===r&&(r=t,t=438),t|=8192,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),s=Te.mayCreate(r,i);if(s)throw new Te.ErrnoError(s);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,s=de.dirname(e),n=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,a),c=ue.relative(e,n);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,s)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,o)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,a,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,o,u):Te.mayCreate(i,o))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!0);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!1);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var s;if(!(s="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?xe(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),n=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!n){var a=Te.mayOpen(i,t);if(a)throw new Te.ErrnoError(a)}512&t&&!n&&Te.truncate(i,0),t&=-131713;var o=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),o},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,s){if(i<0||s<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new Te.ErrnoError(70)}else s=e.position;var a=e.stream_ops.read(e,t,r,i,s);return n||(e.position+=a),a},write(e,t,r,i,s,n){if(i<0||s<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new Te.ErrnoError(70)}else s=e.position;var o=e.stream_ops.write(e,t,r,i,s,n);return a||(e.position+=o),o},allocate(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,s){if(0!=(2&i)&&0==(2&s)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,s):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=Te.open(e,t.flags),s=Te.stat(e).size,n=new Uint8Array(s);return Te.read(i,n,0,s,0),"utf8"===t.encoding?r=fe(n,0):"binary"===t.encoding&&(r=n),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(me(t)+1),n=_e(t,s,0,s.length);Te.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams(){s.stdin?Te.createDevice("/dev","stdin",s.stdin):Te.symlink("/dev/tty","/dev/stdin"),s.stdout?Te.createDevice("/dev","stdout",null,s.stdout):Te.symlink("/dev/tty","/dev/stdout"),s.stderr?Te.createDevice("/dev","stderr",null,s.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},n.prototype.setDataGetter=function(e){this.getter=e},n.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),s=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,n=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;s||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,s=(e+1)*a-1;if(s=Math.min(s,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var s=new XMLHttpRequest;if(s.open("GET",r,!1),i!==a&&s.setRequestHeader("Range","bytes="+e+"-"+t),s.responseType="arraybuffer",s.overrideMimeType&&s.overrideMimeType("text/plain; charset=x-user-defined"),s.send(null),!(s.status>=200&&s.status<300||304===s.status))throw new Error("Couldn't load "+r+". Status: "+s.status);return void 0!==s.response?new Uint8Array(s.response||[]):ge(s.responseText||"",!0)})(t,s)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!n&&i||(a=i=1,i=this.getter(0).length,a=i,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new n;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=Te.createFile(e,t,o,i,s);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,s){var n=e.node.contents;if(s>=n.length)return 0;var a=Math.min(n.length-s,i);if(n.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(Te.forceLoadFile(d),c(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{Te.forceLoadFile(d);var n=be();if(!n)throw new Te.ErrnoError(48);return c(e,S,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,x[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var s=i.atime.getTime(),n=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],x[r+48>>2]=s%1e3*1e3,K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],x[r+64>>2]=n%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],x[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,s){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var n=E.slice(e,e+r);Te.msync(t,n,s,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Ie(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((s=De.get())<0)return-28;for(;Te.streams[s];)s++;return Te.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=De.get();return i.flags|=s,0;case 5:return s=De.getp(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var s=i?De.get():0;return Te.open(t,r,s).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Pe,Le,Me,Re=(e,t,r,i,s)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Pe=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Pe[E[r++]];return t},Oe={},Ge={},$e={},He=e=>{throw new Le(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var s=0;s{Ge.hasOwnProperty(e)?s[t]=Ge[e]:(n.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{s[t]=Ge[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Ge[e]=t,delete $e[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},it=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)},st={},nt=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{s.getInheritedInstanceCount=nt,s.getLiveInheritedInstances=at,s.flushPendingDeletes=dt,s.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function s(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=st[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)s=i.upcast(s),i=i.baseClass;return t===i&&r===s},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=48,bt=57,wt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=vt&&t<=bt?`_${e}`:e};function St(e,t){return{[e=wt(e)]:function(){return t.apply(this,arguments)}}[e]}var Et=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},At=(e,t,r)=>{s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),Et(s,e,e),s.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))};function Bt(e,t,r,i,s,n,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=s,this.getActualType=n,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function xt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var s=t.clone();r=this.rawShare(r,sr.toHandle((()=>s.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(x[e>>2])}var Dt=()=>{Object.assign(It.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function It(e,t,r,i,s,n,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=s,this.pointeeType=n,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,s||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,Pt,Lt=(e,t,r)=>{s.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)},Mt=(e,t,r)=>{var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Ot=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Gt=(e,t)=>{var r=(e=Ne(e)).includes("j")?Ot(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},$t=(e,t)=>{var r=St(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Ht=e=>{var t=ni(e),r=Ne(t);return ii(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||($e[t]?$e[t].forEach(e):(r.push(t),i[t]=!0))})),new Pt(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,s,n,a,o,d,l,c,u,h)=>{c=Ne(c),n=Gt(s,n),o&&(o=Gt(a,o)),l&&(l=Gt(d,l)),h=Gt(u,h);var f=wt(c);At(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=St(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Le("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Le(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Le(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var u=new Bt(c,a,d,h,r,n,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new It(c,u,!0,!1,!1),m=new It(c+"*",u,!1,!1,!1),_=new It(c+" const*",u,!1,!0,!1);return st[e]={pointerType:m,constPointerType:_},Lt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Yt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=St(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function Kt(e,t,r,i,s,n){var a=t.length;a<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||n?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);s=Gt(i,s),We([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Le(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,s,n),[]))),[]}))},Zt=(e,t,r,i,s,n,a,o,d)=>{var l=jt(r,i);t=Ne(t),n=Gt(s,n),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function s(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(s.argCount=r-2,s.className=e.name,c[t]=s):(Et(c,t,i),c[t].overloadTable[r-2]=s),We([],l,(function(s){var o=Kt(i,s,e,n,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Jt(){Object.assign(Qt.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Qt(){this.allocated=[void 0],this.freelist=[]}var er=new Qt,tr=e=>{e>=er.reserved&&0==--er.get(e).refcount&&er.free(e)},rr=()=>{for(var e=0,t=er.reserved;t{er.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),er.reserved=er.allocated.length,s.count_emval_handles=rr},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),er.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return er.allocate({refcount:1,value:e})}}};function nr(e){return this.fromWireType(U[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return tr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:nr,destructorFunction:null})},or=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},dr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},lr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:dr(t,r),destructorFunction:null})},cr=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>B[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ur=(e,t,r,i,s)=>{t=Ne(t);var n=e=>e;if(0===i){var a=32-8*r;n=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:n,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:cr(t,r,0!==i),destructorFunction:null})},hr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=x[e>>2],r=x[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:s,argPackAdvance:Ke,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},fr=(e,t,r)=>_e(e,E,t,r),pr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=x[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==E[o]){var d=Ce(n,o-n);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),n=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&s)fr(t,a,i+1);else if(s)for(var o=0;o255&&(ii(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&mr)return mr.decode(E.subarray(e,r));for(var n="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;n+=String.fromCharCode(o)}return n},gr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,s=(r-=2)<2*e.length?r/2:e.length,n=0;n>1]=a,t+=2}return A[t>>1]=0,t-i},yr=e=>2*e.length,vr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var s=U[e+4*r>>2];if(0==s)break;if(++r,s>=65536){var n=s-65536;i+=String.fromCharCode(55296|n>>10,56320|1023&n)}else i+=String.fromCharCode(s)}return i},br=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,s=i+r-4,n=0;n=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++n)),U[t>>2]=a,(t+=4)+4>s)break}return U[t>>2]=0,t-i},wr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Sr=(e,t,r)=>{var i,s,n,a,o;r=Ne(r),2===t?(i=_r,s=gr,a=yr,n=()=>B,o=1):4===t&&(i=vr,s=br,a=wr,n=()=>x,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,s=x[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var c=e+4+l*t;if(l==s||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ii(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var n=a(i),d=oi(4+n+t);return x[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(ii,d),d},argPackAdvance:Ke,readValueFromPointer:nr,destructorFunction(e){ii(e)}})},Er=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ar={},Br=e=>{var t=Ar[e];return void 0===t?Ne(e):t},Ur=[],xr=(e,t,r,i)=>{(e=Ur[e])(t=sr.toValue(t),r=Br(r),null,i)},kr=e=>{var t=Ur.length;return Ur.push(e),t},Tr=(e,t)=>{var r=Ge[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Cr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Dr={},Ir=(e,t)=>{var r=Cr(e,t),i=r[0],s=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",n=Dr[s];if(void 0!==n)return n;for(var a=["retType"],o=[i],d="",l=0;lt+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Pr=()=>{j("")},Lr=()=>Date.now(),Mr=(e,t,r)=>E.copyWithin(e,t,t+r),Rr=e=>{j("OOM")},zr=e=>{E.length,Rr()},Nr={},Or=()=>l||"./this.program",Gr=()=>{if(!Gr.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:Or()};for(var t in Nr)void 0===Nr[t]?delete e[t]:e[t]=Nr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Gr.strings=r}return Gr.strings},$r=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Hr=(e,t)=>{var r=0;return Gr().forEach(((i,s)=>{var n=t+r;x[e+4*s>>2]=n,$r(i,n),r+=i.length+1})),0},Vr=(e,t)=>{var r=Gr();x[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),x[t>>2]=i,0};function Wr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function jr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var qr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.read(e,S,a,o,i);if(d<0)return-1;if(s+=d,d>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Kr(e,t,r,i,s){var n=Fr(t,r);try{if(isNaN(n))return 61;var a=De.getStreamFromFD(e);return Te.llseek(a,n,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[s>>2]=K[0],U[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Xr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.write(e,S,a,o,i);if(d<0)return-1;s+=d,void 0!==i&&(i+=d)}return s};function Zr(e,t,r,i){try{var s=De.getStreamFromFD(e),n=Xr(s,t,r);return x[i>>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Qr=365,ei=146;Object.defineProperties(Jr.prototype,{read:{get:function(){return(this.mode&Qr)===Qr},set:function(e){e?this.mode|=Qr:this.mode&=~Qr}},write:{get:function(){return(this.mode&ei)===ei},set:function(e){e?this.mode|=ei:this.mode&=~ei}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=Jr,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Le=s.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=s.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Pt=s.UnboundTypeError=$t(Error,"UnboundTypeError"),Jt(),ir();var ti={p:ae,B:Ie,v:Fe,t:Re,n:Xe,r:Wt,q:Xt,f:Zt,C:ar,m:lr,c:ur,b:hr,l:pr,h:Sr,o:Er,d:xr,i:tr,e:Ir,a:Pr,g:Lr,z:Mr,u:zr,x:Hr,y:Vr,k:Wr,w:jr,A:Yr,s:Kr,j:Zr},ri=ie(),ii=e=>(ii=ri.F)(e),si=()=>(si=ri.H)(),ni=e=>(ni=ri.I)(e);s.__embind_initialize_bindings=()=>(s.__embind_initialize_bindings=ri.J)();var ai,oi=e=>(oi=ri.K)(e),di=e=>(di=ri.M)(e);function li(){function e(){ai||(ai=!0,s.calledRun=!0,C||(R(),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),z()))}$>0||(M(),$>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),e()}),1)):e()))}if(s.dynCall_viiijj=(e,t,r,i,n,a,o,d)=>(s.dynCall_viiijj=ri.N)(e,t,r,i,n,a,o,d),s.dynCall_jij=(e,t,r,i)=>(s.dynCall_jij=ri.O)(e,t,r,i),s.dynCall_jii=(e,t,r)=>(s.dynCall_jii=ri.P)(e,t,r),s.dynCall_jiji=(e,t,r,i,n)=>(s.dynCall_jiji=ri.Q)(e,t,r,i,n),H=function e(){ai||li(),ai||(H=e)},s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return li(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function l(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var c,u=function(e,t,r,i,s,n,a){var o=1/(t-r),d=1/(i-s),l=1/(n-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(s+i)*d,e[14]=(a+n)*l,e[15]=1,e};function h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},s=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const s=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,s);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:s}}(),n=p(),o=p(),c=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const n=d();u(n,-1,1,-1,1,.1,100);const p=d();l(p);const m=d();!function(e,t,r,i){var s,n,o,d,c,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),s=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],$t=Gt,Ht=Gt;function Vt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Wt(e){return jt(e)&&e[1]===Bt}function jt(e){return e[0]>>4===ze}const qt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Yt(e){let t=new Uint8Array(e),r=null,i=0,s=0,n=0,a=null;if(i=s=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,n<0||n>=qt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=qt[n],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?n>=6?(i=5,r=new Array(4),a=n-3):(i=2,r=new Array(2),a=n):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=n):(i=5,a=n,r=new Array(4),n>=6?a=n-3:1===d&&(i=2,r=new Array(2),a=n)),r[0]=i<<3,r[0]|=(15&n)>>>1,r[1]=(15&n)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+s}}class Kt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,s=(6&e[r+1])>>>1,n=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===n?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==s)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=$t[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(31&t[i+1])<<8|t[i+2];if(i+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let n=new Ot(t.subarray(i+3,i+3+s)),a=null;if(n.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+s),n.destroy();continue}a=e}else{let e=n.readBool();if(e&&n.readBool()){console.error("audioMuxVersionA is Not Supported"),n.destroy();break}if(e&&this.getLATMValue(n),!n.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),n.destroy();break}if(0!==n.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),n.destroy();break}if(0!==n.readBits(4)){console.error("more than 2 numProgram Not Supported"),n.destroy();break}if(0!==n.readBits(3)){console.error("more than 2 numLayer Not Supported"),n.destroy();break}let t=e?this.getLATMValue(n):0,r=n.readBits(5);t-=5;let i=n.readBits(4);t-=4;let s=n.readBits(4);t-=4,n.readBits(3),t-=3,t>0&&n.readBits(t);let o=n.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),n.destroy();break}n.readByte();let d=n.readBool();if(d)if(e)this.getLATMValue(n);else{let e=0;for(;;){e<<=8;let t=n.readBool();if(e+=n.readByte(),!t)break}console.log(e)}n.readBool()&&n.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=$t[a.sampling_freq_index],a.channel_config=s,a.other_data_present=d}let o=0;for(;;){let e=n.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Jt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let s,n=0;for(;n+t>>=8),n+=t,s){if(n+s>r)break;i.push(e.subarray(n,n+s)),n+=s}return i}function Qt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function er(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function tr(){return(new Date).getTime()}function rr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function ir(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=ir();return i=>{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=ir(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function nr(e){return null==e}function ar(e){return!nr(e)}function or(e){return"function"==typeof e}function dr(e){let t=null,r=31&e[0];return r!==$e&&r!==He||(t=Me),t||(r=(126&e[0])>>1,r!==it&&r!==nt&&r!==ot||(t=Re)),t}function lr(){return"undefined"!=typeof WritableStream}function cr(e){e.close()}function ur(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,s=2)}if(r)for(let n=s;n=1e3){e[n-1].ts-r.ts<1e3&&(i=n+1)}}}return i}function hr(e){return e.ok&&e.status>=200&&e.status<=299}function fr(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(U)}function pr(e){return e[0]>>4===Ut&&e[1]===Bt}function mr(e){return!0===e||"true"===e}function _r(e){return!0!==e&&"true"!==e}function gr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}function yr(e,t){const r=Jt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Ze||r===Qe||r===tt)||_r(t)&&r===Ve)&&(i=!0)})),i}var vr=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{d(i.next(e))}catch(e){n(e)}}function o(e){try{d(i.throw(e))}catch(e){n(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const br=Symbol(32),wr=Symbol(16),Sr=Symbol(8);class Er{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return vr(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(br)}readU16(){return this.read(wr)}readU8(){return this.read(Sr)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===br){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===wr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Sr){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Er.U32=br,Er.U16=wr,Er.U8=Sr;class Ar{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==w){const n=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s1?r-1:0),s=1;s1?i-1:0),n=1;n=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)}static parseSPS(e){let t=Br._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=Br.getProfileString(i),a=Br.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,B=2*e,S=A/B}}let U=1;1===b&&1===w||(U=b/w);let x=0,k=0;if(0===o)x=1,k=2-m;else{x=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*x,C-=(y+v)*k;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Br.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Br._ebsp2rbsp(e),s=new Ot(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=Br.getProfileString(n),d=Br.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(c=u[l]),h=s.readUEG()+8,f=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),A=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);U=s.readBool(),x=t,k=2*e,B=x/k}}let T=1;1===E&&1===A||(T=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let I=16*(_+1),F=16*(g+1)*(2-y);I-=(v+b)*C,F-=(w+S)*D;let P=Math.ceil(I*T);return s.destroy(),s=null,{codec_mimetype:r,profile_idc:n,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Br.getChromaFormatString(c),frame_rate:{fixed:U,fps:B,fps_den:k,fps_num:x},sar_ratio:{width:E,height:A},codec_size:{width:I,height:F},present_size:{width:P,height:F}}}static _skipScalingList(e,t){let r=8,i=8,s=0;for(let n=0;n=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function kr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Tr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,s=!1;const n=Br.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,s&&(a[d]=252|n.chroma_format_idc,a[d+1]=248|n.bit_depth_luma-8,a[d+2]=248|n.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Cr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e){return 31&e[0]}function Fr(e){return e===qe}function Pr(e){return!function(e){return e===$e||e===He}(e)&&!Fr(e)}function Lr(e){return e===Ve}function Mr(e){if(0===e.length)return!1;const t=Ir(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,i>=Xe||0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class zr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Nr=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)},Or=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Gr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)}static parseVPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,s=0,n=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let s=0;s<=o;s++){let s=r.readBool();M=s;let n=!0,a=1;s||(n=r.readBool());let o=!1;if(n?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],s=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=Nr(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=Nr(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,s=0,n=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let s=0;s<=o;s++){let s=r.readBool();M=s;let n=!1,a=1;s||(n=r.readBool());let o=!1;if(n?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Nr(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),s=r.readBool(),n=1;return s&&i?n=0:s?n=3:i&&(n=2),{parallelismType:n}})(r);s=Object.assign(s,n,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|it,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|nt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ot,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function jr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e){return(126&e[0])>>1}function Kr(e){return e===lt}function Xr(e){return!function(e){return e>=32&&e<=40}(e)}function Zr(e){return e>=16&&e<=21}function Jr(e){if(0===e.length)return!1;const t=Yr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class ei{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ti(e){return parseInt(e)===e}function ri(e){if(!ti(e.length))return!1;for(var t=0;t255)return!1;return!0}function ii(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ri(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ti(e.length)&&ri(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ni(e,t,r,i,s){null==i&&null==s||(e=e.slice?e.slice(i,s):Array.prototype.slice.call(e,i,s)),t.set(e,r)}var ai,oi={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},di=(ai="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ai[15&i])}return t.join("")}}),li={16:10,24:12,32:14},ci=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],ui=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],hi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],fi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],pi=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],mi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],_i=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],gi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],yi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],vi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],bi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],wi=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Si=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ei=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Ai=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Bi(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=n[t],this._Kd[e-r][t%4]=n[t];for(var a,o=0,d=s;d>16&255]<<24^ui[a>>8&255]<<16^ui[255&a]<<8^ui[a>>24&255]^ci[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^ui[a>>16&255]<<16^ui[a>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=n[t],this._Kd[e-l][c]=n[t++],d++}for(var l=1;l>24&255]^Si[a>>16&255]^Ei[a>>8&255]^Ai[255&a]},Ui.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Bi(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^pi[i[(s+1)%4]>>16&255]^mi[i[(s+2)%4]>>8&255]^_i[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=si(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(ui[i[s]>>24&255]^a>>24),o[4*s+1]=255&(ui[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(ui[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(ui[255&i[(s+3)%4]]^a);return o},Ui.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Bi(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^yi[i[(s+3)%4]>>16&255]^vi[i[(s+2)%4]>>8&255]^bi[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=si(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(hi[i[s]>>24&255]^a>>24),o[4*s+1]=255&(hi[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(hi[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(hi[255&i[(s+1)%4]]^a);return o};var xi=function(e){if(!(this instanceof xi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ui(e)};xi.prototype.encrypt=function(e){if((e=ii(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Di.prototype.setBytes=function(e){if(16!=(e=ii(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Di.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ii=function(e,t){if(!(this instanceof Ii))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Di||(t=new Di(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ui(e)};Ii.prototype.encrypt=function(e){for(var t=ii(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-s%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,s=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,n);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=s(e.charCodeAt(n)<<16-n%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var s=[],n=0,a=0;a>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var s=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(t[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|t[n+2>>>2]>>>24-(n+2)%4*8&255,o=0;o<4&&n+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var n=0;n>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var n=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;n.length%4;)n.push(l);return n.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,s=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(s<<24|s>>>8)}var n=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],U=e[t+15],x=n[0],k=n[1],T=n[2],C=n[3];x=l(x,k,T,C,a,7,o[0]),C=l(C,x,k,T,d,12,o[1]),T=l(T,C,x,k,f,17,o[2]),k=l(k,T,C,x,p,22,o[3]),x=l(x,k,T,C,m,7,o[4]),C=l(C,x,k,T,_,12,o[5]),T=l(T,C,x,k,g,17,o[6]),k=l(k,T,C,x,y,22,o[7]),x=l(x,k,T,C,v,7,o[8]),C=l(C,x,k,T,b,12,o[9]),T=l(T,C,x,k,w,17,o[10]),k=l(k,T,C,x,S,22,o[11]),x=l(x,k,T,C,E,7,o[12]),C=l(C,x,k,T,A,12,o[13]),T=l(T,C,x,k,B,17,o[14]),x=c(x,k=l(k,T,C,x,U,22,o[15]),T,C,d,5,o[16]),C=c(C,x,k,T,g,9,o[17]),T=c(T,C,x,k,S,14,o[18]),k=c(k,T,C,x,a,20,o[19]),x=c(x,k,T,C,_,5,o[20]),C=c(C,x,k,T,w,9,o[21]),T=c(T,C,x,k,U,14,o[22]),k=c(k,T,C,x,m,20,o[23]),x=c(x,k,T,C,b,5,o[24]),C=c(C,x,k,T,B,9,o[25]),T=c(T,C,x,k,p,14,o[26]),k=c(k,T,C,x,v,20,o[27]),x=c(x,k,T,C,A,5,o[28]),C=c(C,x,k,T,f,9,o[29]),T=c(T,C,x,k,y,14,o[30]),x=u(x,k=c(k,T,C,x,E,20,o[31]),T,C,_,4,o[32]),C=u(C,x,k,T,v,11,o[33]),T=u(T,C,x,k,S,16,o[34]),k=u(k,T,C,x,B,23,o[35]),x=u(x,k,T,C,d,4,o[36]),C=u(C,x,k,T,m,11,o[37]),T=u(T,C,x,k,y,16,o[38]),k=u(k,T,C,x,w,23,o[39]),x=u(x,k,T,C,A,4,o[40]),C=u(C,x,k,T,a,11,o[41]),T=u(T,C,x,k,p,16,o[42]),k=u(k,T,C,x,g,23,o[43]),x=u(x,k,T,C,b,4,o[44]),C=u(C,x,k,T,E,11,o[45]),T=u(T,C,x,k,U,16,o[46]),x=h(x,k=u(k,T,C,x,f,23,o[47]),T,C,a,6,o[48]),C=h(C,x,k,T,y,10,o[49]),T=h(T,C,x,k,B,15,o[50]),k=h(k,T,C,x,_,21,o[51]),x=h(x,k,T,C,E,6,o[52]),C=h(C,x,k,T,p,10,o[53]),T=h(T,C,x,k,w,15,o[54]),k=h(k,T,C,x,d,21,o[55]),x=h(x,k,T,C,v,6,o[56]),C=h(C,x,k,T,U,10,o[57]),T=h(T,C,x,k,g,15,o[58]),k=h(k,T,C,x,A,21,o[59]),x=h(x,k,T,C,m,6,o[60]),C=h(C,x,k,T,S,10,o[61]),T=h(T,C,x,k,f,15,o[62]),k=h(k,T,C,x,b,21,o[63]),n[0]=n[0]+x|0,n[1]=n[1]+k|0,n[2]=n[2]+T|0,n[3]=n[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;r[s>>>5]|=128<<24-s%32;var n=e.floor(i/4294967296),a=i;r[15+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),r[14+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,s,n,a){var o=e+(t&r|~t&i)+s+a;return(o<>>32-n)+t}function c(e,t,r,i,s,n,a){var o=e+(t&i|r&~i)+s+a;return(o<>>32-n)+t}function u(e,t,r,i,s,n,a){var o=e+(t^r^i)+s+a;return(o<>>32-n)+t}function h(e,t,r,i,s,n,a){var o=e+(r^(t|~i))+s+a;return(o<>>32-n)+t}t.MD5=n._createHelper(d),t.HmacMD5=n._createHmacHelper(d)}(Math),r.MD5)})),Nt((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=Pi).lib,s=i.WordArray,n=i.Hasher,a=r.algo,o=[],d=a.SHA1=n.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(s&n|~s&a):l<40?1859775393+(s^n^a):l<60?(s&n|s&a|n&a)-1894007588:(s^n^a)-899497514,d=a,a=n,n=s<<30|s>>>2,s=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=n._createHelper(d),r.HmacSHA1=n._createHmacHelper(d),l.SHA1)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,s=0;s<64;)t(i)&&(s<8&&(o[s]=r(e.pow(i,.5))),d[s]=r(e.pow(i,1/3)),s++),i++}();var l=[],c=a.SHA256=n.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&s^i&n^s&n,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=n,n=s,s=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;return r[s>>>5]|=128<<24-s%32,r[14+(s+64>>>9<<4)]=e.floor(i/4294967296),r[15+(s+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=n._createHelper(c),t.HmacSHA256=n._createHmacHelper(c)}(Math),r.SHA256)})),Nt((function(e,t){var r,i,s,n,a,o;e.exports=(i=(r=o=Pi).lib.WordArray,s=r.algo,n=s.SHA256,a=s.SHA224=n.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=n._createHelper(a),r.HmacSHA224=n._createHmacHelper(a),o.SHA224)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.Hasher,i=e.x64,s=i.Word,n=i.WordArray,a=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new n.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=s.high,_=s.low,g=n.high,y=n.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,U=u.low,x=h.high,k=h.low,T=f,C=p,D=m,I=_,F=g,P=y,L=v,M=b,R=w,z=S,N=E,O=A,G=B,$=U,H=x,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,se=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ne=l[W-7],ae=ne.high,oe=ne.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=se)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&$,pe=T&D^T&F^D&F,me=C&I^C&P^I&P,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=F,M=P,F=D,P=I,D=T,I=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=s.low=_+I,s.high=m+D+(_>>>0>>0?1:0),y=n.low=y+P,n.high=g+F+(y>>>0

          >>0?1:0),b=a.low=b+M,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),U=u.low=U+$,u.high=B+G+(U>>>0<$>>>0?1:0),k=h.low=k+V,h.high=x+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Nt((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=Pi).x64,s=i.Word,n=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,n=0;n<24;n++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(n<<24|n>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(k=r[s]).high^=a,k.low^=n}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var U=u[0],x=r[0];for(U.high=x.high,U.low=x.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var I=c[o];k.high^=I.high,k.low^=I.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,n=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/n)*n>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=n.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=n._createHelper(h),t.HmacSHA3=n._createHmacHelper(h)}(Math),r.SHA3)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=n.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,s=e[i];e[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var n,a,f,b,w,S,E,A,B,U,x,k=this._hash.words,T=u.words,C=h.words,D=o.words,I=d.words,F=l.words,P=c.words;for(S=n=k[0],E=a=k[1],A=f=k[2],B=b=k[3],U=w=k[4],r=0;r<80;r+=1)x=n+e[t+D[r]]|0,x+=r<16?p(a,f,b)+T[0]:r<32?m(a,f,b)+T[1]:r<48?_(a,f,b)+T[2]:r<64?g(a,f,b)+T[3]:y(a,f,b)+T[4],x=(x=v(x|=0,F[r]))+w|0,n=w,w=b,b=v(f,10),f=a,a=x,x=S+e[t+I[r]]|0,x+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],x=(x=v(x|=0,P[r]))+U|0,S=U,U=B,B=v(A,10),A=E,E=x;x=k[1]+f+B|0,k[1]=k[2]+b+U|0,k[2]=k[3]+w+S|0,k[3]=k[4]+n+E|0,k[4]=k[0]+a+A|0,k[0]=x},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,n=s.words,a=0;a<5;a++){var o=n[a];n[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=n._createHelper(f),t.HmacRIPEMD160=n._createHmacHelper(f)}(),r.RIPEMD160)})),Nt((function(e,t){var r,i,s;e.exports=(i=(r=Pi).lib.Base,s=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),a=this._iKey=t.clone(),o=n.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=s.extend({cfg:s.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var s=e.createEncryptor(r,i),n=s.finalize(t),a=s.cfg;return m.create({ciphertext:n,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,s){if(i||(i=n.random(8)),s)a=l.create({keySize:t+r,hasher:s}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=n.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var s=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=s.iv;var n=g.encrypt.call(this,e,t,s.key,i);return n.mixIn(s),n},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var s=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=s.iv,g.decrypt.call(this,e,t,s.key,i)}})}())})),Nt((function(e,t){var r;e.exports=((r=Pi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var s,n=this._iv;n?(s=n.slice(0),this._iv=void 0):s=this._prevBlock,i.encryptBlock(s,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,s=r.blockSize,n=this._iv,a=this._counter;n&&(a=this._counter=n.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-n%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.Iso10126={pad:function(e,t){var i=4*t,s=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(s-1)).concat(r.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Nt((function(e,t){var r;e.exports=((r=Pi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(e){var t=r,i=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,s=[],n=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,s[r]=p,n[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),n=this._keySchedule=[],a=0;a6&&a%r==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[a/r|0]<<24),n[a]=n[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,s)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,n),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,s,n,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^s[c>>>16&255]^n[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^s[u>>>16&255]^n[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^s[h>>>16&255]^n[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^s[l>>>16&255]^n[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib,i=t.WordArray,s=t.BlockCipher,n=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=n.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var s=this._subKeys=[],n=0;n<16;n++){var l=s[n]=[],c=d[n];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=s[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var s=r[i],n=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^s[d])&c[d])>>>0];this._lBlock=a,this._rBlock=n^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),r.TripleDES)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],s=0;s<256;s++)i[s]=s;s=0;for(var n=0;s<256;s++){var a=s%r,o=t[a>>>2]>>>24-a%4*8&255;n=(n+i[s]+o)%256;var d=i[s];i[s]=i[n],i[n]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var e=this._S,t=this._i,r=this._j,i=0,s=0;s<4;s++){r=(r+e[t=(t+1)%256])%256;var n=e[t];e[t]=e[r],e[r]=n,i|=e[(e[t]+e[r])%256]<<24-8*s}return this._i=t,this._j=r,i}e.RC4=t._createHelper(s);var a=i.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)n.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)i[s]^=r[s+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Nt((function(e,t){var r;e.exports=(r=Pi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const s=16,n=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,s=t>>8&255,n=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][s],a+=e.sbox[3][n],a}function l(e,t,r){let i,n=t,a=r;for(let t=0;t1;--t)n^=e.pbox[t],a=d(e,n)^a,i=n,n=a,a=i;return i=n,n=a,a=i,a^=e.pbox[1],n^=e.pbox[0],{left:n,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(n+4+2,n+4+a);let s=new Fi.ModeOfOperation.ctr(t,new Fi.Counter(r));const o=s.decrypt(i);s=null,e.set(o,n+4+2)}n=n+4+a}return e}function Ri(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new Fi.ModeOfOperation.ctr(t,new Fi.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}Nt((function(e,t){e.exports=Pi}));var zi=Nt((function(e,t){var r,s,n,a=(r=new Date,s=4,n={setLogLevel:function(e){s=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=s&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rs;i--,s++){var n=t[s];t[s]=t[i],t[i]=n}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,s,n,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=n.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+s+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,s=null,n=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,s=void 0!==e?e:this.bufferIndex;if(r=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[n]?i=new h.UUIDBoxes[n](l):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(i=new h.Box(c,l)).uuid=n,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(s=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=s>>1&31,i.bsmod=(1&s)<<4|n>>4&15,i.acmod=n>>1&7,i.lfeon=1&n,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),s=Math.min(127&i,r.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[s]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var n=e.readUint8();for(t=0;t>7,a.nalu_type=63&s;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&n)<<8|e.readUint8():a.property_index=127&n}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&s,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&s,i.subsegment_duration=e.readUint32(),s=e.readUint32(),i.starts_with_SAP=s>>31&1,i.SAP_type=s>>28&7,i.SAP_delta_time=268435455&s}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,n="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(n="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+n,s=!0);t+=n}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,s=[],n=0;for(n|=this.vvcC.ptl_frame_only_constraint<<7,n|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(n),n&&(i=e),n=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|s[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=i,i.nextSample=0,s.nb_samples=1e3,s.samples=[],r&&r.nbSamples&&(s.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,s,n,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var n=s.lastValidSample;ne*s.timescale){l=i-1;break}t&&s.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return n=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),n.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),n.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),n.addBox(f)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),n.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)n.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&n.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){n.addBox(e)})),s.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(n),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},s={},n=this.getTrackById(e);if(null!==n){s.number=n.samples.length,s.track_id=n.tkhd.track_id,s.timescale=n.mdia.mdhd.timescale,s.description_index=i.sample_description_index?i.sample_description_index-1:0,s.description=n.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=i.duration||1,s.cts=i.cts||0,s.dts=i.dts||0,s.is_sync=i.is_sync||!1,s.is_leading=i.is_leading||0,s.depends_on=i.depends_on||0,s.is_depended_on=i.is_depended_on||0,s.has_redundancy=i.has_redundancy||0,s.degradation_priority=i.degradation_priority||0,s.offset=0,s.subsamples=i.subsamples,n.samples.push(s),n.samples_size+=s.size,n.samples_duration+=s.duration,void 0===n.first_dts&&(n.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(s);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),s}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),s=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,s,n;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=s[a].grouping_type+"/0",(o=new l(s[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var s,n;for(s in t.sample_groups=[],i){var a;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=i[s].grouping_type,t.sample_groups[s].grouping_type_parameter=i[s].grouping_type_parameter,r>=i[s].last_sample_in_run&&(i[s].last_sample_in_run<0&&(i[s].last_sample_in_run=0),i[s].entry_index++,i[s].entry_index<=i[s].sbgp.entries.length-1&&(i[s].last_sample_in_run+=i[s].sbgp.entries[i[s].entry_index].sample_count)),i[s].entry_index<=i[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=i[s].sbgp.entries[i[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)a=i[s].fragment_description?i[s].fragment_description:i[s].description,t.sample_groups[s].group_description_index>0?(n=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,a&&n>=0&&(t.sample_groups[s].description=a.entries[n])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[s].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=n.sample_counts[b]),t>0?(e.samples[t-1].duration=n.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),U.cts=e.samples[t].dts+a.sample_offsets[S]):U.cts=U.dts,o?(t==o.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var n=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=n)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+n+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,n),i.alreadyRead+=n,r.usedBytes+=n,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=n.ipro.protections[n.iinf.item_infos[e].protection_index-1]),n.iinf.item_infos[e].item_type?r.type=n.iinf.item_infos[e].item_type:r.type="mime",r.content_type=n.iinf.item_infos[e].content_type,r.content_encoding=n.iinf.item_infos[e].content_encoding;if(n.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Ni(e){return e.reduce(((e,t)=>256*e+t))}function Oi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}zi.Log,zi.MP4BoxStream,zi.DataStream,zi.MultiBufferStream,zi.MPEG4DescriptorParser,zi.BoxParser,zi.XMLSubtitlein4Parser,zi.Textin4Parser,zi.ISOFile,zi.createFile;class Gi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Oi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}function $i(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Hi=16,Vi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Wi=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function ji(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Yi(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Ki(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Xi(e,t){const r=31&t;return e<>>32-r}function Zi(e){return(255&Vi[e>>>24&255])<<24|(255&Vi[e>>>16&255])<<16|(255&Vi[e>>>8&255])<<8|255&Vi[255&e]}function Ji(e){return e^Xi(e,2)^Xi(e,10)^Xi(e,18)^Xi(e,24)}function Qi(e){return e^Xi(e,13)^Xi(e,23)}function es(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Ji(Zi(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Ji(Zi(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Ji(Zi(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Ji(Zi(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function ts(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Wi[r+0],t[r+0]=i[0]^=Qi(Zi(e)),e=i[2]^i[3]^i[0]^Wi[r+1],t[r+1]=i[1]^=Qi(Zi(e)),e=i[3]^i[0]^i[1]^Wi[r+2],t[r+2]=i[2]^=Qi(Zi(e)),e=i[0]^i[1]^i[2]^Wi[r+3],t[r+3]=i[3]^=Qi(Zi(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function rs(e,t,r){let{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof n&&(n=ji(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=ji(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Yi(e):ji(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Hi-e.length%Hi;for(let r=0;r=Hi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=new Uint8Array(e.slice(0,5)),a=5;for(;as){const t=new Uint8Array(n.length+e.length-a);t.set(n,0),t.set(e.slice(a),n.length),n=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=rs(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const s=new Uint8Array(u);s.set(e.slice(a+4,a+4+u),0);const o=Qt($i(s,new Uint8Array(r))),l=new Uint8Array(n.length+o.length);l.set(n,0),l.set(o,n.length),n=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(n.length+4+t.length);r.set(n,0),r.set(o,n.length),r.set(t,n.length+4),n=r}a=a+4+d}return n}const ns={init:0,findFirstStartCode:1,findSecondStartCode:2};class as extends class{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function s(){i.off(e,s);for(var n=arguments.length,a=new Array(n),o=0;o1?r-1:0),s=1;s{delete r[e]})),void delete this.e;const i=r[e],s=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=ns.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ns.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=ns.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ns.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=ns.findFirstStartCode}}}}function os(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=os(e.slice(n+4,n+4+a),t,r);e.set(i,n+4)}n=n+4+a}return e}function cs(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let s=0;return t.forEach((e=>{i.set(e,s),s+=e.byteLength})),i}class us{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const s=()=>{or(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class hs{static init(){hs.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in hs.types)hs.types.hasOwnProperty(e)&&(hs.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=hs.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),s=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let n=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return hs.box(hs.types.trak,hs.tkhd(e),hs.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return hs.box(hs.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return hs.box(hs.types.mdia,hs.mdhd(e),hs.hdlr(e),hs.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return hs.box(hs.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?hs.constants.HDLR_AUDIO:hs.constants.HDLR_VIDEO,hs.box(hs.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?hs.box(hs.types.smhd,hs.constants.SMHD):hs.box(hs.types.vmhd,hs.constants.VMHD),hs.box(hs.types.minf,t,hs.dinf(),hs.stbl(e))}static dinf(){return hs.box(hs.types.dinf,hs.box(hs.types.dref,hs.constants.DREF))}static stbl(e){return hs.box(hs.types.stbl,hs.stsd(e),hs.box(hs.types.stts,hs.constants.STTS),hs.box(hs.types.stsc,hs.constants.STSC),hs.box(hs.types.stsz,hs.constants.STSZ),hs.box(hs.types.stco,hs.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.mp3(e)):hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.mp4a(e)):"avc"===e.videoType?hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.avc1(e)):hs.box(hs.types.stsd,hs.constants.STSD_PREFIX,hs.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return hs.box(hs.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return hs.box(hs.types.mp4a,i,hs.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return hs.box(hs.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return hs.box(hs.types.avc1,s,hs.box(hs.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return hs.box(hs.types.hvc1,s,hs.box(hs.types.hvcC,t))}static mvex(e){return hs.box(hs.types.mvex,hs.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return hs.box(hs.types.trex,r)}static moof(e,t){return hs.box(hs.types.moof,hs.mfhd(e.sequenceNumber),hs.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return hs.box(hs.types.mfhd,t)}static traf(e,t){let r=e.id,i=hs.box(hs.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=hs.box(hs.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=hs.sdtp(e),a=hs.trun(e,n.byteLength+16+16+8+16+8+8);return hs.box(hs.types.traf,i,s,a,n)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,hs.box(hs.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,s=e.size,n=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,s>>>24&255,s>>>16&255,s>>>8&255,255&s,n.isLeading<<2|n.dependsOn,n.isDependedOn<<6|n.hasRedundancy<<4|n.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),hs.box(hs.types.trun,r)}static mdat(e){return hs.box(hs.types.mdat,e)}}hs.init();var fs,ps=Nt((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(fs=ps)&&fs.__esModule&&Object.prototype.hasOwnProperty.call(fs,"default")&&fs.default;const ms=[44100,48e3,32e3,0],_s=[22050,24e3,16e3,0],gs=[11025,12e3,8e3,0],ys=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],vs=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],bs=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function ws(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,s=(6&t[1])>>1,n=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=gs[a];break;case 2:d=_s[a];break;case 3:d=ms[a]}switch(s){case 1:n=e[s]&&t=6?(i=5,t=new Array(4),a=s-3):(i=2,t=new Array(2),a=s):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=s):(i=5,a=s,t=new Array(4),s>=6?a=s-3:1===n&&(i=2,t=new Array(2),a=s)),t[0]=i<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&n)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Ms[s],this.sampling_index=s,this.channel_count=n,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Ns{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,n=8-i;if(n>=e)return r&&(this.index+=e),s>>n-e;{r&&(this.index+=n);const i=e-n;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Os(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Gs=new Array(214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72),$s=new Array(2746333894,1453994832,1736282519,2993693404),Hs=new Array(462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257);function Vs(e,t,r,i,s){var n=s;n=t+s>e.length&&i+s<=r.length?e.length-t:i+s>r.length&&t+s<=e.length?r.length-i:t+s<=e.length&&i+s<=r.length?s:r.length>24&255,e>>16&255,e>>8&255,255&e)}function js(e,t){return t+3>>19)^(i<<23|i>>>9)}function Ks(e,t){var r=new Array(36);r[0]=js(t,0),r[1]=js(t,4),r[2]=js(t,8),r[3]=js(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^Xs(r[i+1]^r[i+2]^r[i+3]^e[i]);var s=new Array(4);for(i=35;i>=32;i--)s[35-i]=r[i];var n=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function Zs(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=qs(e),s=Math.ceil(r.length/16),n=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let a=5;for(;an)break;let d=e[a+4],l=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Zs(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),n({printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc"))&&console.warn("JbPro[❌❌❌][worker]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],s=[],n=null,a=null,o=null,d=null,l=null,c=null,u=!1,h=null,w=null,S=!1,U=!1,be=!!mr(r),we=0,Ve=0,Xe=!1,Ze=null,Qe=null,tt=null,lt=[],St=null,Et=null,Ut=0,zt=0,Nt=null,Ot=null,Gt=0,$t=0,qt=!1,Zt=!1,ir=!1,vr=null,br=null,wr=!1,Sr=!0,Ur=()=>{const e=fr();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,isSm4CryptoH265V2:e.isSm4CryptoH265V2,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1}};"VideoEncoder"in self&&(n={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){n.decoder=new VideoDecoder({output:function(e){if(or(e.createImageBitmap))e.createImageBitmap().then((t=>{n.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:r,delay:si.delay,ts:0},[r]),cr(e)}));else{n.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:t,delay:si.delay,ts:0},[t]),cr(e)}},error:function(e){si.debug.error("worker","VideoDecoder error",e)}})},destroy(){n.reset(),n.decoder&&"closed"!==n.decoder.state&&(n.decoder.close(),n.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(n.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ht:ft});n.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:L,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,s=null;const a=e.slice(5);t===Fe?(s=xr(a),i={codec:s.codec,description:a}):t===Pe&&(s=Hr(a),i={codec:s.codec,description:a}),s&&s.codecWidth&&s.codecHeight&&(i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth),n.isEmitInfo||(si.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),n.isEmitInfo=!0,n.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),n.offscreenCanvasCtx=n.offscreenCanvas.getContext("2d"));try{n.decoder.configure(i),n.hasInit=!0}catch(e){si.debug.error("worker","VideoDecoder configure error",e.code,e),e.toString()}}else si.debug.warn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){n.hasInit=!1,n.isEmitInfo=!1,n.offscreenCanvas=null,n.offscreenCanvasCtx=null}});let Nr=function(){if(wr=!0,si.fetchStatus!==Tt||_r(si._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){si.debug.log("worker","abort catch",e)}}else a=null,si.debug.log("worker",`abort() and not abortController.abort() _status is ${si.fetchStatus} and _isChrome is ${si._opt.isChrome}`)},Or={init(){Or.lastBuf=null,Or.vps=null,Or.sps=null,Or.pps=null,Or.streamType=null,Or.localDts=0,Or.pendingUnits={},Or.isSendSeqHeader=!1},destroy(){Or.lastBuf=null,Or.vps=null,Or.sps=null,Or.pps=null,Or.streamType=null,Or.localDts=0,Or.pendingUnits={},Or.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(si._opt.nakedFlowDemuxUseNew){const e=Or.extractNALu$3(t);Or.handleVideoFrames(e)}else Or.extractNALu$2(t)},getNaluDts(){const e=si._opt.nakedFlowFps;let t=Or.localDts;return Or.localDts=Or.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=si._opt.sampleRate,t=si._opt.audioBufferSize;return Or.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,s=e.byteLength,n=0,a=[];for(;i1)for(let e=0;e{const t=Ir(e);t===He||t===$e?Or.handleVideoH264Nalu(e):Pr(t)&&i.push(e)})),1===i.length)Or.handleVideoH264Nalu(i[0]);else if(Mr(i)){const e=Ir(i[0]),t=Lr(e);Or.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Or.handleVideoH264Nalu(e)}))}else if(Or.streamType===Re)if(si._opt.nakedFlowH265DemuxUseNew){const t=Or.handleAddNaluStartCode(e),r=Or.extractNALu(t);if(0===r.length)return void si.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Yr(e);t===ot||t===nt||t===it?Or.handleVideoH265Nalu(e):Xr(t)&&i.push(e)})),1===i.length)Or.handleVideoH265Nalu(i[0]);else if(Jr(i)){const e=Yr(i[0]),t=Zr(e);Or.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Or.handleVideoH265Nalu(e)}))}else Yr(e)===ot?Or.extractH265PPS(e):Or.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Fr(Ir(e))?Or.extractH264SEI(e):Or.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Kr(Yr(e))?Or.extractH265SEI(e):Or.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Or.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Or.handleAddNaluStartCode(e);Or.extractNALu(t).forEach((e=>{Or.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Ir(e);switch(t){case $e:Or.sps=e;break;case He:Or.pps=e}if(Or.isSendSeqHeader){if(Or.sps&&Or.pps){const e=kr({sps:Or.sps,pps:Or.pps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}if(Pr(t)){const r=Lr(t),i=Or.getNaluDts(),s=Cr(e,r);Or.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Or.sps&&Or.pps){Or.isSendSeqHeader=!0;const e=kr({sps:Or.sps,pps:Or.pps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}},handleVideoH264NaluList(e,t,r){if(Or.isSendSeqHeader){const i=Or.getNaluDts(),s=Dr(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Or.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),si.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Yr(e);switch(t){case it:Or.vps=e;break;case nt:Or.sps=e;break;case ot:Or.pps=e}if(Or.isSendSeqHeader){if(Or.vps&&Or.sps&&Or.pps){const e=Wr({vps:Or.vps,sps:Or.sps,pps:Or.pps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.vps=null,Or.sps=null,Or.pps=null}if(Xr(t)){const r=Zr(t),i=Or.getNaluDts(),s=jr(e,r);Or.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Or.vps&&Or.sps&&Or.pps){Or.isSendSeqHeader=!0;const e=Wr({vps:Or.vps,sps:Or.sps,pps:Or.pps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.vps=null,Or.sps=null,Or.pps=null}},handleVideoH265NaluList(e,t,r){if(Or.isSendSeqHeader){const i=Or.getNaluDts(),s=qr(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Or.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),si.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){si.calcNetworkDelay(t.ts),t.isIFrame&&si.calcIframeIntervalTimestamp(t.ts),si.decode(e,t)},handleVideoFrames(e){if(!Or.streamVideoType)for(let t of e)if(Or.streamVideoType=dr(t),Or.streamVideoType)break;Or.streamVideoType&&(Or.streamVideoType===Me?Or.handleVideoH264Frames(e):this.streamVideoType===Re&&Or.handleVideoH265Frames(e))},handleVideoH264Frames(e){let t=[],r=[],i=!1,s=!1;Or.pendingUnits.units&&(t=Or.pendingUnits.units,s=Or.pendingUnits.vcl,i=Or.pendingUnits.iFrame,Or.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Ir(a);let o=!1,d=e===je;e!==We&&e!==je||(n=Or.parseVideo264Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(Or.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case He:Or.pps=e;break;case $e:Or.sps=e;break;case qe:s=e}if(Pr(t)){const t=Qt(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Or.isSendSeqHeader&&Or.sps&&Or.pps){Or.isSendSeqHeader=!0;const e=Tr({sps:Or.sps,pps:Or.pps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}if(Or.isSendSeqHeader){if(Or.sps&&Or.pps){const e=Tr({sps:Or.sps,pps:Or.pps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null}if(i){const e=Or.getNaluDts(),t=Dr(i,r);si._opt.isEmitSEI&&postMessage({cmd:X,buffer:s,ts:e},[s.buffer]),Or.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,s=!1;Or.pendingUnits.units&&(t=Or.pendingUnits.units,s=Or.pendingUnits.vcl,i=Or.pendingUnits.iFrame,Or.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Yr(a);let o=!1,d=Zr(e);Xr(e)&&(n=this.parseVideo265Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(Or.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ot:Or.pps=e;break;case nt:Or.sps=e;break;case it:Or.vps=e}if(Xr(t)){const t=Qt(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Or.isSendSeqHeader&&Or.sps&&Or.pps&&Or.vps){Or.isSendSeqHeader=!0;const e=Wr({sps:Or.sps,pps:Or.pps,vps:Or.vps});si.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null,Or.vps=null}if(Or.isSendSeqHeader){if(Or.sps&&Or.pps&&Or.vps){const e=Wr({sps:Or.sps,pps:Or.pps,vps:Or.vps}),t=Or.localDts;si.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Or.sps=null,Or.pps=null,Or.vps=null}if(i){const e=Or.getNaluDts(),t=qr(i,r);si._opt.isEmitSEI&&postMessage({cmd:X,buffer:null,ts:e},[null.buffer]),Or.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Or.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Ns(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Ns(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Vr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Vr.mp4Box=zi.createFile(),Vr.mp4Box.onReady=Vr.onReady,Vr.mp4Box.onError=Vr.onError,Vr.mp4Box.onSamples=Vr.onSamples},initTransportDescarmber(){Vr.transportDescarmber=new Gi},_getSeqHeader(e){const t=Vr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new zi.DataStream(void 0,0,zi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Vr.isHevc=!0,si.isHevc=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),s=new Uint8Array(r.length+i.length);return s.set(r,0),s.set(i,r.length),s}return null},onReady(e){si.debug.log(Vr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Vr.videoTrackId=t.id;const e=Vr._getSeqHeader(t);e&&(si.debug.log(Vr.LOG_NAME,"seqHeader"),si.decodeVideo(e,0,!0,0)),Vr.mp4Box.setExtractionOptions(t.id)}if(r&&si._opt.hasAudio){Vr.audioTrackId=r.id;const e=r.audio||{},t=Ht.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Vr.mp4Box.setExtractionOptions(r.id);const s=Vt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});si.debug.log(Vr.LOG_NAME,"aacADTSHeader"),si.decodeAudio(s,0)}Vr.mp4Box.start()},onError(e){si.debug.error(Vr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Vr.videoTrackId){for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&si.calcIframeIntervalTimestamp(i);let s=null;s=Vr.isHevc?qr(t,r):Dr(t,r),si.decode(s,{type:ae,ts:i,isIFrame:r,cts:0})}Vr.mp4Box.removeUsedSamples(e)}else if(e===Vr.audioTrackId){if(si._opt.hasAudio){for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),si.decode(i,{type:ne,ts:r,isIFrame:!1,cts:0})}Vr.mp4Box.removeUsedSamples(e)}}else si.debug.warn(Vr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Vr.transportDescarmber&&(t=Vr.transportDescarmber.transport(t)),t.buffer.fileStart=Vr.offset,Vr.offset+=t.byteLength,Vr.mp4Box.appendBuffer(t.buffer)},destroy(){Vr.mp4Box&&(Vr.mp4Box.stop(),Vr.mp4Box.flush(),Vr.mp4Box.destroy(),Vr.mp4Box=null),Vr.transportDescarmber&&(Vr.transportDescarmber.destroy(),Vr.transportDescarmber=null),Vr.offset=0,Vr.videoTrackId=null,Vr.audioTrackId=null,Vr.isHevc=!1}},ti={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);ti.extractNALu(t)},destroy(){ti.lastBuffer=new Uint8Array(0),ti.parsedOffset=0,ti.firstStartCodeOffset=0,ti.secondStartCodeOffset=0,ti.state="init",ti.hasInitVideoCodec=!1,ti.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void si.debug.warn(ti.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(ti.lastBuffer.length+e.length);for(t.set(ti.lastBuffer,0),t.set(new Uint8Array(e),ti.lastBuffer.length),ti.lastBuffer=t;;){if("init"===ti.state){let e=!1;for(;ti.lastBuffer.length-ti.parsedOffset>=4;)if(0===ti.lastBuffer[ti.parsedOffset])if(0===ti.lastBuffer[ti.parsedOffset+1])if(1===ti.lastBuffer[ti.parsedOffset+2]){if(182===ti.lastBuffer[ti.parsedOffset+3]){ti.state="findFirstStartCode",ti.firstStartCodeOffset=ti.parsedOffset,ti.parsedOffset+=4,e=!0;break}ti.parsedOffset++}else ti.parsedOffset++;else ti.parsedOffset++;else ti.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===ti.state){let e=!1;for(;ti.lastBuffer.length-ti.parsedOffset>=4;)if(0===ti.lastBuffer[ti.parsedOffset])if(0===ti.lastBuffer[ti.parsedOffset+1])if(1===ti.lastBuffer[ti.parsedOffset+2]){if(182===ti.lastBuffer[ti.parsedOffset+3]){ti.state="findSecondStartCode",ti.secondStartCodeOffset=ti.parsedOffset,ti.parsedOffset+=4,e=!0;break}ti.parsedOffset++}else ti.parsedOffset++;else ti.parsedOffset++;else ti.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===ti.state){if(!(ti.lastBuffer.length-ti.parsedOffset>0))break;{let e,t,r=192&ti.lastBuffer[ti.parsedOffset];e=0==r?ti.secondStartCodeOffset-14:ti.secondStartCodeOffset;let i=0==(192&ti.lastBuffer[ti.firstStartCodeOffset+4]);if(i){if(ti.firstStartCodeOffset-14<0)return void si.debug.warn(ti.LOG_NAME,"firstStartCodeOffset -14 is",ti.firstStartCodeOffset-14);ti.hasInitVideoCodec||(ti.hasInitVideoCodec=!0,si.debug.log(ti.LOG_NAME,"setCodec"),ai.setCodec(Le,"")),t=ti.lastBuffer.subarray(ti.firstStartCodeOffset-14,e)}else t=ti.lastBuffer.subarray(ti.firstStartCodeOffset,e);let s=ti.getNaluDts();ti.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:Ue,value:s}),we=s,ai.decode(t,i?1:0,s)):si.debug.warn(ti.LOG_NAME,"has not init video codec"),ti.lastBuffer=ti.lastBuffer.subarray(e),ti.firstStartCodeOffset=0==r?14:0,ti.parsedOffset=ti.firstStartCodeOffset+4,ti.state="findFirstStartCode"}}}},getNaluDts(){let e=ti.localDts;return ti.localDts=ti.localDts+40,e}},ri={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Rs,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){ri.media_info_=null,ri.pes_slice_queues_=null,ri.section_slice_queues_=null,ri.video_metadata_=null,ri.audio_metadata_=null,ri.aac_last_incomplete_data_=null,ri.video_track_=null,ri.audio_track_=null,ri._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let s=0;s=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){ri._remainingPacketData&&(e=cs(ri._remainingPacketData,e),ri._remainingPacketData=null);let t=e.buffer;const r=ri.parseChunks(t);r?ri._remainingPacketData=e.subarray(r):e.length>>6;r[1];let n=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!ri.pmt_||ri.pmt_.pcr_pid!==n),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);ri.last_pcr_=e}if(2==a||5+e===188){t+=188,204===ri.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===n||n===ri.current_pmt_pid_||null!=ri.pmt_&&ri.pmt_.pid_stream_type[n]===Cs){let r=188-c;ri.handleSectionSlice(e,t+c,r,{pid:n,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=ri.pmt_&&null!=ri.pmt_.pid_stream_type[n]){let r=188-c,i=ri.pmt_.pid_stream_type[n];n!==ri.pmt_.common_pids.h264&&n!==ri.pmt_.common_pids.h265&&n!==ri.pmt_.common_pids.adts_aac&&n!==ri.pmt_.common_pids.loas_aac&&n!==ri.pmt_.common_pids.ac3&&n!==ri.pmt_.common_pids.eac3&&n!==ri.pmt_.common_pids.opus&&n!==ri.pmt_.common_pids.mp3&&!0!==ri.pmt_.pes_private_data_pids[n]&&!0!==ri.pmt_.timed_id3_pids[n]&&!0!==ri.pmt_.synchronous_klv_pids[n]&&!0!==ri.pmt_.asynchronous_klv_pids[n]||ri.handlePESSlice(e,t+c,r,{pid:n,stream_type:i,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===ri.tsPacketSize&&(t+=16)}return ri.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=ri.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=s[0];if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t+1,Math.min(r,a));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?ri.emitSectionSlices(n,i):ri.clearSlices(n,i)}for(let o=1+a;o=n.expected_length&&ri.clearSlices(n,i),o+=d.byteLength}}else if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t,Math.min(r,n.expected_length-n.total_length));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?ri.emitSectionSlices(n,i):n.total_length>=n.expected_length&&ri.clearSlices(n,i)}},handlePESSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=s[0]<<16|s[1]<<8|s[2];s[3];let a=s[4]<<8|s[5];if(i.payload_unit_start_indicator){if(1!==n)return void si.debug.warn(ri.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${n}`);let e=ri.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?ri.emitPESSlices(e,i):ri.clearSlices(e,i)),ri.pes_slice_queues_[i.pid]=new Fs,ri.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==ri.pes_slice_queues_[i.pid])return;let o=ri.pes_slice_queues_[i.pid];o.slices.push(s),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?ri.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,n=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==s){if(s<3+o)return void si.debug.warn(ri.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Ss:case Es:ri.parseMP3Payload(c,r);break;case As:ri.pmt_.common_pids.opus===e.pid||ri.pmt_.common_pids.ac3===e.pid||ri.pmt_.common_pids.eac3===e.pid||(ri.pmt_.asynchronous_klv_pids[e.pid]?ri.parseAsynchronousKLVMetadataPayload(c,e.pid,i):ri.pmt_.smpte2038_pids[e.pid]?ri.parseSMPTE2038MetadataPayload(c,r,n,e.pid,i):ri.parsePESPrivateDataPayload(c,r,n,e.pid,i));break;case Bs:ri.parseADTSAACPayload(c,r);break;case Us:ri.parseLOASAACPayload(c,r);break;case xs:case ks:break;case Ts:ri.pmt_.timed_id3_pids[e.pid]?ri.parseTimedID3MetadataPayload(c,r,n,e.pid,i):ri.pmt_.synchronous_klv_pids[e.pid]&&ri.parseSynchronousKLVMetadataPayload(c,r,n,e.pid,i);break;case Ds:ri.parseH264Payload(c,r,n,e.random_access_indicator);break;case Is:ri.parseH265Payload(c,r,n,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===As){let r,n=6;r=0!==s?s:t.byteLength-n;let a=t.subarray(n,n+r);ri.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else si.debug.error(ri.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(ri.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,s=1&e[5],n=e[6];e[7];let a=null;if(1===s&&0===n)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=ri.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===s&&0===n&&(null==ri.pat_&&si.debug.log(ri.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),ri.pat_=a,ri.current_program_=d,ri.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void si.debug.error(ri.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],n=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=ri._initPmt(),r.program_number=s,r.version_number=n,ri.program_pmt_map_[s]=r;else if(r=ri.program_pmt_map_[s],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iri.has_video_&&ri.has_audio_?ri.video_init_segment_dispatched_&&ri.audio_init_segment_dispatched_:ri.has_video_&&!ri.has_audio_?ri.video_init_segment_dispatched_:!(ri.has_video_||!ri.has_audio_)&&ri.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=ri.video_metadata_.details,t={type:"video"};t.id=ri.video_track_.id,t.timescale=1e3,t.duration=ri.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,ri.video_metadata_.vps){si.isHevc=!0;let e=ri.video_metadata_.vps.data.subarray(4),r=ri.video_metadata_.sps.data.subarray(4),i=ri.video_metadata_.pps.data.subarray(4);t.hvcc=Wr({vps:e,sps:r,pps:i}),0==ri.video_init_segment_dispatched_&&si.debug.log(ri.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&si.decodeVideo(t.hvcc,0,!0,0)}else{let e=ri.video_metadata_.sps.data.subarray(4),r=ri.video_metadata_.pps.data.subarray(4);t.avcc=Tr({sps:e,pps:r}),0==ri.video_init_segment_dispatched_&&si.debug.log(ri.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&si.decodeVideo(t.avcc,0,!0,0)}ri.video_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let s=ri.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){ri.isInitSegmentDispatched()&&ri.video_track_.length&&ri._preDoDecode()},dispatchAudioMediaSegment(){ri.isInitSegmentDispatched()&&ri.audio_track_.length&&ri._preDoDecode()},dispatchAudioVideoMediaSegment(){ri.isInitSegmentDispatched()&&(ri.audio_track_.length||ri.video_track_.length)&&ri._preDoDecode()},parseADTSAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void si.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(si.debug.warn(ri.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Kt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};ri.audio_track_.samples.push(n),ri.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(ri.aac_last_incomplete_data_=n.getIncompleteData()),s&&(ri.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void si.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(si.debug.warn(ri.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Xt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame(nr(this.loas_previous_frame)?void 0:this.loas_previous_frame));){ri.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};ri.audio_track_.samples.push(n),ri.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(ri.aac_last_incomplete_data_=n.getIncompleteData()),s&&(ri.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],n=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(n){case 0:l=s[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},ri.dispatchAudioInitSegment(h)):ri.detectAudioMetadataChange(h)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/ri.timescale_,dts:t/ri.timescale_,type:ne};ri.audio_track_.samples.push(f),ri.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==ri.audio_metadata_.codec)return si.debug.log(ri.TAG_NAME,`Audio: Audio Codecs changed from ${ri.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===ri.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==ri.audio_metadata_.audio_object_type)return si.debug.log(ri.TAG_NAME,`AAC: AudioObjectType changed from ${ri.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==ri.audio_metadata_.sampling_freq_index)return si.debug.log(ri.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==ri.audio_metadata_.channel_config)return si.debug.log(ri.TAG_NAME,`AAC: Channel configuration changed from ${ri.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===ri.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==ri.audio_metadata_.sampling_frequency)return si.debug.log(ri.TAG_NAME,`AC3: Sampling Frequency changed from ${ri.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==ri.audio_metadata_.bit_stream_identification)return si.debug.log(ri.TAG_NAME,`AC3: Bit Stream Identification changed from ${ri.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==ri.audio_metadata_.bit_stream_mode)return si.debug.log(ri.TAG_NAME,`AC3: BitStream Mode changed from ${ri.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==ri.audio_metadata_.channel_mode)return si.debug.log(ri.TAG_NAME,`AC3: Channel Mode changed from ${ri.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==ri.audio_metadata_.low_frequency_effects_channel_on)return si.debug.log(ri.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${ri.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===ri.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return si.debug.log(ri.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return si.debug.log(ri.TAG_NAME,`Opus: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===ri.audio_metadata_.codec){const t=e.data;if(t.object_type!==ri.audio_metadata_.object_type)return si.debug.log(ri.TAG_NAME,`MP3: AudioObjectType changed from ${ri.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return si.debug.log(ri.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return si.debug.log(ri.TAG_NAME,`MP3: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=ri.audio_track_.id,t.timescale=1e3,t.duration=ri.duration_,"aac"===ri.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new zs(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=Vt({profile:si._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});si.decodeAudio(s,0)}else"ac-3"===ri.audio_metadata_.codec||"ec-3"===ri.audio_metadata_.codec||"opus"===ri.audio_metadata_.codec||"mp3"===ri.audio_metadata_.codec&&(t.audioSampleRate=ri.audio_metadata_.sample_rate,t.channelCount=ri.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==ri.audio_init_segment_dispatched_&&si.debug.log(ri.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),ri.audio_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let r=ri.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,s){let n=new Ls;if(n.pid=i,n.stream_id=s,n.len=e.byteLength,n.data=e,null!=t){let e=Math.floor(t/ri.timescale_);n.pts=e}else n.nearest_pts=ri.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/ri.timescale_);n.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,s){si.debug.log(ri.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,s){si.debug.log(ri.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,r){si.debug.log(ri.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,s){si.debug.log(ri.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},getNearestTimestampMilliseconds:()=>null!=ri.audio_last_sample_pts_?Math.floor(ri.audio_last_sample_pts_):null!=ri.last_pcr_?Math.floor(ri.last_pcr_/300/ri.timescale_):void 0,_preDoDecode(){const e=ri.video_track_,t=ri.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?ri._doDecodeVideo({...e,payload:t}):e.type===ne&&ri._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?qr(t,e.isIFrame):Dr(t,e.isIFrame),e.isIFrame&&si.calcIframeIntervalTimestamp(e.dts);let i=si.cryptoPayload(r,e.isIFrame);si.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;mr(si._opt.m7sCryptoAudio)&&(r=si.cryptoPayloadAudio(t)),si.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},ii=null;gr()&&(ii={TAG_NAME:"worker MediaSource",_resetInIt(){ii.isAvc=null,ii.isAAC=null,ii.videoInfo={},ii.videoMeta={},ii.audioMeta={},ii.sourceBuffer=null,ii.audioSourceBuffer=null,ii.hasInit=!1,ii.hasAudioInit=!1,ii.isAudioInitInfo=!1,ii.videoMimeType="",ii.audioMimeType="",ii.cacheTrack={},ii.cacheAudioTrack={},ii.timeInit=!1,ii.sequenceNumber=0,ii.audioSequenceNumber=0,ii.firstRenderTime=null,ii.firstAudioTime=null,ii.mediaSourceAppendBufferFull=!1,ii.mediaSourceAppendBufferError=!1,ii.mediaSourceAddSourceBufferError=!1,ii.mediaSourceBufferError=!1,ii.mediaSourceError=!1,ii.prevTimestamp=null,ii.decodeDiffTimestamp=null,ii.prevDts=null,ii.prevAudioDts=null,ii.prevPayloadBufferSize=0,ii.isWidthOrHeightChanged=!1,ii.prevTs=null,ii.prevAudioTs=null,ii.eventListenList=[],ii.pendingRemoveRanges=[],ii.pendingSegments=[],ii.pendingAudioRemoveRanges=[],ii.pendingAudioSegments=[],ii.supportVideoFrameCallbackHandle=null,ii.audioSourceBufferCheckTimeout=null,ii.audioSourceNoDataCheckTimeout=null,ii.hasPendingEos=!1,ii.$video={currentTime:0,readyState:0}},init(){ii.events=new us,ii._resetInIt(),ii.mediaSource=new self.MediaSource,ii.isDecodeFirstIIframe=!!_r(si._opt.checkFirstIFrame),ii._bindMediaSourceEvents()},destroy(){ii.stop(),ii._clearAudioSourceBufferCheckTimeout(),ii.eventListenList&&ii.eventListenList.length&&(ii.eventListenList.forEach((e=>e())),ii.eventListenList=[]),ii._resetInIt(),ii.mediaSource=null},getState:()=>ii.mediaSource&&ii.mediaSource.readyState,isStateOpen:()=>ii.getState()===gt,isStateClosed:()=>ii.getState()===yt,isStateEnded:()=>ii.getState()===_t,_bindMediaSourceEvents(){const{proxy:e}=ii.events,t=e(ii.mediaSource,bt,(()=>{si.debug.log(ii.TAG_NAME,"sourceOpen"),ii._onMediaSourceSourceOpen()})),r=e(ii.mediaSource,vt,(()=>{si.debug.log(ii.TAG_NAME,"sourceClose")})),i=e(ii.mediaSource,wt,(()=>{si.debug.log(ii.TAG_NAME,"sourceended")}));ii.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ii.sourceBuffer||(si.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ii._initSourceBuffer()),ii.audioSourceBuffer||(si.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ii._initAudioSourceBuffer()),ii._hasPendingSegments()&&ii._doAppendSegments()},decodeVideo(e,t,r,i){if(si.isDestroyed)si.debug.warn(ii.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(_r(ii.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Pe&&_r(si._opt.supportMSEDecodeHevc))return void ii.emitError(De.mediaSourceH265NotSupport);ii.videoInfo.codec=i,postMessage({cmd:L,code:i});const s=new Uint8Array(e);postMessage({cmd:M,buffer:s,codecId:i},[s.buffer]),ii.hasInit=ii._decodeConfigurationRecord(e,t,r,i)}else si.debug.warn(ii.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!ii.isDecodeFirstIIframe&&r&&(ii.isDecodeFirstIIframe=!0),ii.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Fe?r=xr(e.slice(5)):t===Pe&&(r=$r(e));const i=ii.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(si.debug.warn(ii.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ii.isWidthOrHeightChanged=!0,ii.emitError(De.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(ii.isWidthOrHeightChanged)return void si.debug.warn(ii.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(pr(e))return void si.debug.log(ii.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthii.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let s=e.slice(5),n={};if(i===Fe?n=xr(s):i===Pe&&(n=Hr(s)),ii.videoInfo.width=n.codecWidth,ii.videoInfo.height=n.codecHeight,0===n.codecWidth&&0===n.codecHeight)return si.debug.warn(ii.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(n)),ii.emitError(De.mediaSourceDecoderConfigurationError,`width is ${0===n.codecWidth} and height is ${n.codecHeight}`),!1;const a={id:Dt,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:n.codecWidth,codecHeight:n.codecHeight,videoType:n.videoType},o=hs.generateInitSegment(a);ii.isAvc=i===Fe;let d=n.codec;return ii.videoMimeType=d?`video/mp4; codecs="${n.codec}"`:ii.isAvc?pt:mt,postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),ii._initSourceBuffer(),ii.appendBuffer(o.buffer),ii.sequenceNumber=0,ii.cacheTrack={},ii.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,s=r===Ge,n=r===ze;if(_r(n||s))return si.debug.warn(ii.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ii.emitError(De.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Wt(e)){if(o=Yt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!s)return!1;if(o=ws(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;s&&_r(si._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=hs.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),_r(ii.isAudioInitInfo)&&(br=r===ze?i?16:8:0===i?8:16,postMessage({cmd:I,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:br}),ii.isAudioInitInfo=!0),ii.audioMimeType=u,ii.isAAC=n,ii._initAudioSourceBuffer(),ii.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.sourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.videoMimeType){try{si.debug.log(ii.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.videoMimeType),ii.sourceBuffer=ii.mediaSource.addSourceBuffer(ii.videoMimeType)}catch(e){return si.debug.error(ii.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(De.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.sourceBuffer){const t=e(ii.sourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,si.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ii.emitError(De.mseSourceBufferError,e.code)})),r=e(ii.sourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(si.debug.log(ii.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r)}}else si.debug.log(ii.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.isAvc === null is ${null===ii.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.audioSourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.audioMimeType){try{si.debug.log(ii.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.audioMimeType),ii._clearAudioSourceBufferCheckTimeout(),ii.audioSourceBuffer=ii.mediaSource.addSourceBuffer(ii.audioMimeType)}catch(e){return si.debug.error(ii.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(De.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.audioSourceBuffer){const t=e(ii.audioSourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,si.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ii.emitError(De.mseSourceBufferError,e.code)})),r=e(ii.audioSourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(si.debug.log(ii.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r),null===ii.audioSourceNoDataCheckTimeout&&(ii.audioSourceNoDataCheckTimeout=setTimeout((()=>{ii._clearAudioNoDataCheckTimeout(),ii.emitError(De.mediaSourceAudioNoDataTimeout)}),1e3))}}else si.debug.log(ii.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.audioMimeType is ${ii.audioMimeType}`)},_decodeVideo(e,t,r,i,s){let n=e.slice(5),a=n.byteLength;if(0===a)return void si.debug.warn(ii.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;ii.prevTimestamp||(ii.prevTimestamp=o,d=!0);const l=o-ii.prevTimestamp;if(ii.decodeDiffTimestamp=l,l>1e3&&!d&&si.isPlayer&&si.debug.log(ii.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${ii.prevTimestamp}, diff time is ${l} ms`),ii.cacheTrack.id&&t>=ii.cacheTrack.dts){let e=8+ii.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(hs.types.mdat,4),r.set(ii.cacheTrack.data,8),ii.cacheTrack.duration=t-ii.cacheTrack.dts;let i=hs.moof(ii.cacheTrack,ii.cacheTrack.dts);ii.cacheTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),ii.appendBuffer(s.buffer)}else si.debug.log(ii.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${ii.cacheTrack&&ii.cacheTrack.dts}`),ii.timeInit=!1,ii.cacheTrack={};ii.cacheTrack||(ii.cacheTrack={}),ii.cacheTrack.id=Dt,ii.cacheTrack.sequenceNumber=++ii.sequenceNumber,ii.cacheTrack.size=a,ii.cacheTrack.dts=t,ii.cacheTrack.cts=i,ii.cacheTrack.isKeyframe=r,ii.cacheTrack.data=n,ii.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ii.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ii.isAAC?e.slice(2):e.slice(1),s=i.byteLength;if(ii.cacheAudioTrack.id&&t>=ii.cacheAudioTrack.dts){let e=8+ii.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(hs.types.mdat,4),r.set(ii.cacheAudioTrack.data,8),ii.cacheAudioTrack.duration=t-ii.cacheAudioTrack.dts;let i=hs.moof(ii.cacheAudioTrack,ii.cacheAudioTrack.dts);ii.cacheAudioTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),ii.appendAudioBuffer(s.buffer)}else ii.cacheAudioTrack={};ii.cacheAudioTrack||(ii.cacheAudioTrack={}),ii.cacheAudioTrack.id=It,ii.cacheAudioTrack.sequenceNumber=++ii.audioSequenceNumber,ii.cacheAudioTrack.size=s,ii.cacheAudioTrack.dts=t,ii.cacheAudioTrack.cts=0,ii.cacheAudioTrack.data=i,ii.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){si.isDestroyed?si.debug.warn(ii.TAG_NAME,"appendBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingSegments.push(e),ii.sourceBuffer&&(si._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),_r(ii.getSourceBufferUpdating())&&ii.isStateOpen()&&_r(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){si.isDestroyed?si.debug.warn(ii.TAG_NAME,"appendAudioBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?si.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingAudioSegments.push(e),ii.audioSourceBuffer&&(si._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),_r(ii.getAudioSourceBufferUpdating())&&ii.isStateOpen()&&_r(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>ii.sourceBuffer&&ii.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ii.audioSourceBuffer&&ii.audioSourceBuffer.updating,stop(){ii.abortSourceBuffer(),ii.removeSourceBuffer(),ii.endOfStream()},clearUpAllSourceBuffer(){if(ii.sourceBuffer){const e=ii.sourceBuffer.buffered;for(let t=0;tii.pendingSegments.length>0||ii.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ii.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ii.isStateClosed()||ii.isStateEnded())si.debug.log(ii.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ii.sourceBuffer){if(ii.needInitAudio()&&null===ii.audioSourceBuffer)return si.debug.log(ii.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ii.audioSourceBufferCheckTimeout&&(ii.audioSourceBufferCheckTimeout=setTimeout((()=>{ii._clearAudioSourceBufferCheckTimeout(),ii.emitError(De.mediaSourceAudioInitTimeout)}),1e3)));if(_r(ii.getSourceBufferUpdating())&&ii.pendingSegments.length>0){const e=ii.pendingSegments.shift();try{ii.sourceBuffer.appendBuffer(e)}catch(e){si.debug.error(ii.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(De.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(De.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(_r(ii.getAudioSourceBufferUpdating())&&ii.pendingAudioSegments.length>0){const e=ii.pendingAudioSegments.shift();try{ii.audioSourceBuffer.appendBuffer(e)}catch(e){si.debug.error(ii.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(De.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(De.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(De.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else si.debug.log(ii.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ii.$video.currentTime;if(ii.sourceBuffer){const t=ii.sourceBuffer.buffered;let r=!1;for(let i=0;i=si._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-si._opt.mseAutoCleanupMinBackwardDuration;ii.pendingRemoveRanges.push({start:s,end:t})}}else n=si._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-si._opt.mseAutoCleanupMinBackwardDuration;ii.pendingAudioRemoveRanges.push({start:s,end:t})}}else nii.pendingRemoveRanges.length>0||ii.pendingAudioRemoveRanges.length>0,needInitAudio:()=>si._opt.hasAudio&&si._opt.mseDecodeAudio,_doRemoveRanges(){if(ii.sourceBuffer&&_r(ii.getSourceBufferUpdating())){let e=ii.pendingRemoveRanges;for(;e.length&&_r(ii.getSourceBufferUpdating());){let t=e.shift();try{ii.sourceBuffer.remove(t.start,t.end)}catch(e){si.debug.warn(ii.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ii.audioSourceBuffer&&_r(ii.getAudioSourceBufferUpdating())){let e=ii.pendingAudioRemoveRanges;for(;e.length&&_r(ii.getAudioSourceBufferUpdating());){let t=e.shift();try{ii.audioSourceBuffer.remove(t.start,t.end)}catch(e){si.debug.warn(ii.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(_r(si._opt.mseAutoCleanupSourceBuffer))return!1;const e=ii.$video.currentTime;if(ii.sourceBuffer){let t=ii.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=si._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ii.audioSourceBuffer){let t=ii.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=si._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ii.audioSourceBufferCheckTimeout&&(clearTimeout(ii.audioSourceBufferCheckTimeout),ii.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ii.audioSourceNoDataCheckTimeout&&(clearTimeout(ii.audioSourceNoDataCheckTimeout),ii.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ii.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let si={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:kt,_opt:Ur(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){si.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:si.getVideoBufferLength(),audioDemuxBufferDelay:si.getAudioBufferLength(),streamBufferByteLength:si.getStreamBufferLength(),netBuf:si.networkDelay||0,pushLatestDelay:si.pushLatestDelay||0,latestDelay:si.delay,isStreamTsMoreThanLocal:Xe,wasmDecodeDelay:we-Ve});postMessage({cmd:O,type:ke,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return si._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||si._opt.hasVideo&&!be)return-1;if(t===ne)return si.delay;if(si.preDelayTimestamp&&si.preDelayTimestamp>e)return si.preDelayTimestamp-e>1e3&&si.debug.warn("worker",`getDelay() and preDelayTimestamp is ${si.preDelayTimestamp} > timestamp is ${e} more than ${si.preDelayTimestamp-e}ms and return ${si.delay}`),si.preDelayTimestamp=e,si.delay;if(si.firstTimestamp){if(e){const t=Date.now()-si.startTimestamp,r=e-si.firstTimestamp;t>=r?(Xe=!1,si.delay=t-r):(Xe=!0,si.delay=r-t)}}else si.firstTimestamp=e,si.startTimestamp=Date.now(),si.delay=-1;return si.preDelayTimestamp=e,si.delay},getDelayNotUpdateDelay:function(e,t){if(!e||si._opt.hasVideo&&!be)return-1;if(t===ne)return si.pushLatestDelay;if(si.preDelayTimestamp&&si.preDelayTimestamp-e>1e3)return si.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${si.preDelayTimestamp} > timestamp is ${e} more than ${si.preDelayTimestamp-e}ms and return -1`),-1;if(si.firstTimestamp){let t=-1;if(e){const r=Date.now()-si.startTimestamp,i=e-si.firstTimestamp;r>=i?(Xe=!1,t=r-i):(Xe=!0,t=i-r)}return t}return-1},resetDelay:function(){si.firstTimestamp=null,si.startTimestamp=null,si.delay=-1,si.dropping=!1},resetAllDelay:function(){si.resetDelay(),si.preDelayTimestamp=null},doDecode:function(e){si._opt.isEmitSEI&&e.type===ae&&si.isWorkerFetch&&si.findSei(e.payload,e.ts),si.isPlayUseMSEAndDecoderInWorker()?e.type===ne?si._opt.mseDecodeAudio?ii.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&ii.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):si._opt.useWCS&&si.useOffscreen()&&e.type===ae&&n.decode?n.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,s=i[0],n=e.type===ae&&pr(e.payload);if(_r(r))n&&(si.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n isVideoSqeHeader is ${n}`),i.shift(),si.doDecode(s));else{const r=s.ts-t,a=s.type===ne&&e.type===ae;(r<=20||a||n)&&(si.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${n}`),i.shift(),si.doDecode(s))}},init:function(){si.debug.log("worker","init and opt is",JSON.stringify(si._opt));const e=si._opt.playType===y,t=si._opt.playType===v;if(Or.init(),si.isPlayer=e,si.isPlayback=t,si.isPlayUseMSEAndDecoderInWorker()&&ii&&ii.init(),n&&si._opt.useWCS&&si.useOffscreen()&&n.init(),si.isPlaybackCacheBeforeDecodeForFpsRender())si.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{si.debug.log("worker","setInterval()");const t=()=>{const t=si._opt.videoBuffer+si._opt.videoBufferDelay;let r=null;if(i.length){if(si.isPushDropping)return void si.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(si.dropping){for(r=i.shift(),si.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${si.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=si.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=si.getNotDroppingDelayTs()&&(si.debug.log("worker","loop() is dropping = false, is iFrame"),si.dropping=!1,si.doDecode(r),si.decodeNext(r))}else if(si.isPlayback||si.isPlayUseMSE()||0===si._opt.videoBuffer)for(;i.length;)r=i.shift(),si.doDecode(r);else if(r=i[0],-1===si.getDelay(r.ts,r.type))si.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),si.doDecode(r),si.decodeNext(r);else if(si.delay>t&&e)si.hasIframeInBufferList()?(si.debug.log("worker",`delay is ${si.delay} > maxDelay ${t}, set dropping is true`),si.resetAllDelay(),si.dropping=!0,postMessage({cmd:$})):(i.shift(),si.doDecode(r),si.decodeNext(r));else for(;i.length;){if(r=i[0],!(si.getDelay(r.ts,r.type)>si._opt.videoBuffer)){si.delay<0&&si.debug.warn("worker",`loop() do not decode and delay is ${si.delay}, bufferList is ${i.length}`);break}i.shift(),si.doDecode(r)}}else-1!==si.delay&&si.debug.log("worker","loop() bufferList is empty and reset delay"),si.resetAllDelay()};si.stopId=setInterval((()=>{let e=(new Date).getTime();Ze||(Ze=e);const r=e-Ze;r>100&&si.debug.warn("worker",`loop demux diff time is ${r}`),t(),Ze=(new Date).getTime()}),20)}if(_r(si._opt.checkFirstIFrame)&&(be=!0),si.isPlayUseMSEAndDecoderInWorker()&&ii){const e=ii.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){si.stopId&&(clearInterval(si.stopId),si.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),si.doDecode(e))};e();const t=Math.ceil(1e3/(si.streamFps*si._opt.playbackRate));si.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${si.streamFps}, streamAudioFps is ${si.streamAudioFps} ,streamVideoFps is ${si.streamVideoFps} playbackRate is ${si._opt.playbackRate}`),si.stopId=setInterval(e,t)},close:function(){if(si.debug.log("worker","close"),si.isDestroyed=!0,Nr(),!o||1!==o.readyState&&2!==o.readyState?o&&si.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(wr=!0,o.close(1e3,"Client disconnecting")),o=null,si.stopStreamRateAndStatsInterval(),si.stopId&&(clearInterval(si.stopId),si.stopId=null),si.mp3Demuxer&&(si.mp3Demuxer.destroy(),si.mp3Demuxer=null),si.writableStream&&_r(si.writableStream.locked)&&si.writableStream.close().catch((e=>{si.debug.log("worker","close() and writableStream.close() error",e)})),si.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){si.debug.log("worker","close() and audioDecoder.clear error",e.toString(),e)}if(ai)try{ai.clear&&ai.clear(),ai=null}catch(e){si.debug.log("worker","close() and videoDecoder.clear error",e.toString(),e)}d=null,Ze=null,Xe=!1,we=0,Ve=0,n&&(n.destroy&&n.destroy(),n=null),ii&&(ii.destroy(),ii=null),si.firstTimestamp=null,si.startTimestamp=null,si.networkDelay=0,si.streamFps=null,si.streamAudioFps=null,si.streamVideoFps=null,si.delay=-1,si.pushLatestDelay=-1,si.preDelayTimestamp=null,si.dropping=!1,si.isPushDropping=!1,si.isPlayer=!0,si.isPlayback=!1,si.isWorkerFetch=!1,si.isHevc=null,si._opt=Ur(),si.webglObj&&(si.webglObj.destroy(),si.offscreenCanvas.removeEventListener("webglcontextlost",si.onOffscreenCanvasWebglContextLost),si.offscreenCanvas.removeEventListener("webglcontextrestored",si.onOffscreenCanvasWebglContextRestored),si.offscreenCanvas=null,si.offscreenCanvasGL=null,si.offscreenCanvasCtx=null),i=[],s=[],c&&(c.buffer=null,c=null),h=null,w=null,S=!1,U=!1,be=!1,qt=!1,Zt=!1,ir=!1,vr=null,lt=[],Ut=0,zt=0,Qe=null,tt=null,Nt=null,Ot=null,br=null,Gt=0,$t=0,St=null,Et=null,si.fetchStatus=kt,Sr=!0,Or.destroy(),Vr.destroy(),ti.destroy(),ri.destroy(),postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===ne&&Wt(e)){if(si.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),si._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}si.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&pr(e)){if(si.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),si._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}si.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(si._opt.isRecording)if(si._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(si._opt.recordType===b)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&si._opt.isWasmMp4){const r=new Uint8Array(e),i=jt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(si.isPlayer){if(t.type===ae){if(Gt>0){const e=t.ts-Ot,r=Gt+Gt/2;e>r&&si.debug.log("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ot},\n diff is ${e} and preTsDuration is ${Gt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ot&&Ot>=t.ts&&(si.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ot} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${$t}`),Ot-t.ts>E&&(si.debug.warn("worker",`pushBuffer,\n preTimestamp is ${Ot}, options.ts is ${t.ts},\n diff is ${Ot-t.ts} more than 3600000,\n and resetAllDelay`),si.resetAllDelay(),Ot=null,Gt=0),si._opt.isDropSameTimestampGop&&_r(t.isIFrame)&&be)){const e=si.hasIframeInBufferList(),t=_r(si.isPushDropping);return si.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?si.dropBuffer$2():(si.clearBuffer(!0),mr(si._opt.checkFirstIFrame)&&mr(r)&&(si.isPlayUseMSEAndDecoderInWorker()?ii.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}Ot>0&&(Gt=t.ts-Ot),$t=e.byteLength,Ot=t.ts}if(be){const e=si._opt.videoBuffer+si._opt.videoBufferDelay,r=si.getDelayNotUpdateDelay(t.ts,t.type);si.pushLatestDelay=r,si.delay>0&&r>e&&si.delay({type:e.type,ts:e.ts})));si.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=si.getAudioBufferLength()>0,s=r?60:40;i.length>=s&&(si.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${s}, and hasAudio is ${r} an set streamFps is 25`),si.streamVideoFps=25,postMessage({cmd:V,value:si.streamVideoFps}),r?(si.streamAudioFps=25,si.streamFps=si.streamVideoFps+si.streamAudioFps):si.streamFps=si.streamVideoFps,si.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=si.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>si._opt.videoBuffer+si._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),si._opt.isNakedFlow?Or.lastBuf&&(e=Or.lastBuf.byteLength):si._opt.isTs?ri._remainingPacketData&&(e=ri._remainingPacketData.byteLength):si._opt.isFmp4&&Vr.mp4Box&&(e=Vr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){if(si.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),si.isWorkerFetch=!0,t.isFlv?si._opt.isFlv=!0:t.isFmp4?si._opt.isFmp4=!0:t.isMpeg4?si._opt.isMpeg4=!0:t.isNakedFlow?si._opt.isNakedFlow=!0:t.isTs&&(si._opt.isTs=!0),d=sr((e=>{postMessage({cmd:O,type:Ee,value:e})})),si.startStreamRateAndStatsInterval(),t.isFmp4&&(Vr.listenMp4Box(),si._opt.isFmp4Private&&Vr.initTransportDescarmber()),t.protocol===m){c=new Er(si.demuxFlv()),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(mr(wr))return si.debug.log("worker","request abort and run res.body.cancel()"),si.fetchStatus=kt,void e.body.cancel();if(!hr(e))return si.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Nr(),void postMessage({cmd:O,type:De.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:xe}),lr())si.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(si.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct)):mr(wr)?(si.debug.log("worker","writableStream write() and requestAbort is true so return"),void(si.fetchStatus=Ct)):void("string"!=typeof e?(si.fetchStatus=Tt,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?si.demuxFmp4(e):t.isMpeg4?si.demuxMpeg4(e):t.isTs&&si.demuxTs(e)):si.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{si.debug.log("worker","writableStream close()"),si.fetchStatus=Ct,c=null,Nr(),postMessage({cmd:O,type:Se,value:_,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return si.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct);c=null,e.name!==At?(si.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Nr(),postMessage({cmd:O,type:De.fetchError,value:e.toString()})):si.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(si.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:s}=e;return r?(si.debug.log("worker","fetchNext().then() and done is true"),si.fetchStatus=Ct,c=null,Nr(),void postMessage({cmd:O,type:Se,value:_,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(si.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct)):mr(wr)?(si.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(si.fetchStatus=Ct)):void("string"!=typeof s?(si.fetchStatus=Tt,d(s.byteLength),t.isFlv?c.write(s):t.isFmp4?si.demuxFmp4(s):t.isMpeg4?si.demuxMpeg4(s):t.isTs&&si.demuxTs(s),i()):si.debug.warn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return si.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(si.fetchStatus=Ct);c=null,e.name!==At?(si.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Nr(),postMessage({cmd:O,type:De.fetchError,value:e.toString()})):si.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?si.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==At?(si.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Nr(),postMessage({cmd:O,type:De.fetchError,value:e.toString()}),c=null):si.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===p&&(t.isFlv&&(c=new Er(si.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{si.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:xe}),postMessage({cmd:O,type:Ce})},o.onclose=e=>{si.isDestroyed?si.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):u?si.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(si.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&si.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),mr(wr)?si.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:Se,value:g,msg:e.code})))},o.onerror=e=>{si.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,si.isDestroyed?si.debug.log("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):postMessage({cmd:O,type:De.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?si.demuxFmp4(e.data):t.isMpeg4?si.demuxMpeg4(e.data):si._opt.isNakedFlow?si.demuxNakedFlow(e.data):si.demuxM7s(e.data)):si.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let n=r[0];const a=(yield s).slice();switch(i){case oe:if(a.byteLength>0){let e=a;mr(si._opt.m7sCryptoAudio)&&(e=si.cryptoPayloadAudio(a)),si.decode(e,{type:ne,ts:n})}else si.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(si._isEnhancedH265Header(e))si._decodeEnhancedH265Video(a,n);else{const e=15&a[0];let t=a[0]>>4===xt;const i=e===Pe;if(_r(t)&&mr(yr(a,i))&&(si.debug.log("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&pr(a)&&null===si.isHevc){const e=15&a[0];si.isHevc=e===Pe,vr=er(a,si.isHevc),si.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${si.isHevc} and nalUnitSize is ${vr}`)}t&&si.calcIframeIntervalTimestamp(n),si.isPlayer&&si.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let s=r[0],o=si.cryptoPayload(a,t);si.decode(o,{type:ae,ts:n,isIFrame:t,cts:s})}}else si.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:si.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?si._opt.hasAudio&&(postMessage({cmd:O,type:Ae,value:e.byteLength}),si.isPlayer?si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):si.isPlayback&&(si.isPlaybackOnlyDecodeIFrame()||(si.isPlaybackCacheBeforeDecodeForFpsRender(),si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&si._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:Ue,value:t.ts}),si.isPlayer?si.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):si.isPlayback&&(si.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(si.isPlaybackCacheBeforeDecodeForFpsRender(),si.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return si._opt.isM7sCrypto?si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?r=Mi(e,si._opt.cryptoKey,si._opt.cryptoIV,si.isHevc):si.debug.error("worker",`isM7sCrypto cryptoKey.length is ${si._opt.cryptoKey&&si._opt.cryptoKey.byteLength} or cryptoIV.length is ${si._opt.cryptoIV&&si._opt.cryptoIV.byteLength} null`):si._opt.isSm4Crypto?si._opt.sm4CryptoKey?r=si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?Js(e,si._opt.cryptoKey,si._opt.cryptoIV,si.isHevc,si._opt.isSm4CryptoH265V2):ss(e,si._opt.sm4CryptoKey,si.isHevc,si._opt.isSm4CryptoH265V2):si._opt.sm4CryptoKey||si.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):si._opt.isXorCrypto&&(si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?r=ls(e,si._opt.cryptoKey,si._opt.cryptoIV,si.isHevc):si.debug.error("worker",`isXorCrypto cryptoKey.length is ${si._opt.cryptoKey&&si._opt.cryptoKey.byteLength} or cryptoIV.length is ${si._opt.cryptoIV&&si._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return si._opt.isM7sCrypto&&(si._opt.cryptoIV&&si._opt.cryptoIV.byteLength>0&&si._opt.cryptoKey&&si._opt.cryptoKey.byteLength>0?e[0]>>4===ze&&(t=Ri(e,si._opt.cryptoKey,si._opt.cryptoIV)):si.debug.error("worker",`isM7sCrypto cryptoKey.length is ${si._opt.cryptoKey&&si._opt.cryptoKey.byteLength} or cryptoIV.length is ${si._opt.cryptoIV&&si._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(br=r===ze?i?16:8:0===i?8:16,ni&&ni.setCodec)if(Wt(e)||r===Ne||r===Oe||r===Ge){si.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${si._opt.sampleRate}`);const i=r===ze?e.slice(2):new Uint8Array(0);ni.setCodec(r,si._opt.sampleRate,i),r===ze&&postMessage({cmd:P,buffer:i},[i.buffer]),U=!0,r!==ze&&(r===Ge?(si.mp3Demuxer||(si.mp3Demuxer=new as(si),si.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),si.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{si.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),si.close(),postMessage({cmd:H})}),60*e*60*1e3)}}else si.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else si.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(si.isDestroyed)si.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(si.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ii.decodeAudio(e,t);else if(mr(r)&&mr(si._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(U){if(Wt(e))return void si.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?si.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===ze?e.slice(2):e.slice(1),t)}else si.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(ai&&ai.setCodec)if(pr(e))if(r===Fe||r===Pe){si.debug.log("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Fe&&si._opt.useSIMD){const e=xr(t);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:q,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void si.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,ai.setCodec(r,t),postMessage({cmd:L,code:r}),postMessage({cmd:M,buffer:i,codecId:r},[i.buffer])}else si.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else si.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else si.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(si.isDestroyed)si.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(si.isPlayUseMSEAndDecoderInWorker())ii.decodeVideo(e,t,i,s);else if(mr(r))postMessage({cmd:z,payload:e,isIFrame:i,ts:t,cts:s,delay:si.delay},[e.buffer]);else if(S)if(!be&&i&&(be=!0),be){if(i&&pr(e)){const t=15&e[0];let r={};t===Fe?r=xr(e.slice(5)):t===Pe&&(r=$r(e)),r.codecWidth&&r.codecHeight&&h&&w&&(r.codecWidth!==h||r.codecHeight!==w)&&(si.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${w},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:W,value:`width: ${h}->${r.codecWidth}, height: ${w}->${r.codecHeight}`}))}if(Zt)return void si.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(ir)return void si.debug.warn("worker","decodeVideo: simd decode error, and return");if(pr(e))return void si.debug.log("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];si.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),si.isPlayer&&(si.resetAllDelay(),mr(si._opt.checkFirstIFrame)&&(si.dropping=!0,postMessage({cmd:$}))),mr(si._opt.checkFirstIFrame)&&_r(r)&&(be=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>mr(e.isIFrame)&&e.type===ae));if(si.isAllIframeInBufferList())for(let t=0;t=si.getNotDroppingDelayTs()){si.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${si.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){si.isPushDropping=!0,postMessage({cmd:$});const t=i.length;i=i.slice(e);const r=i.shift();si.resetAllDelay(),si.getDelay(r.ts,r.type),si.doDecode(r),si.isPushDropping=!1,si.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${si.delay} `)}else si.isPushDropping=!1}0===i.length&&(si.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),s=new ArrayBuffer(4),n=new Uint32Array(s);switch(i){case ne:si.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(si._isEnhancedH265Header(s))si._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(si.calcIframeIntervalTimestamp(r),pr(i)&&null===si.isHevc)){const e=15&i[0];si.isHevc=e===Pe}si.isPlayer&&si.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=si.cryptoPayload(i,e);si.decode(a,{type:ae,ts:r,isIFrame:e,cts:s})}}else si.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Or.dispatch(e)},demuxFmp4:function(e){Vr.dispatch(e)},demuxMpeg4:function(e){ti.dispatch(e)},demuxTs:function(e){ri.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,s=15&r,n=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(n[0]);if(si.isHevc=_r(d),s===Pt){if(i===Rt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),vr=er(e,si.isHevc),si.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${si.isHevc} and nalUnitSize is ${vr}`),si.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(s===Lt){let r=e,s=0;const n=i===Rt;n&&si.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0],r=qr(e.slice(8),n),r=si.cryptoPayload(r,n),si.decode(r,{type:ae,ts:t,isIFrame:n,cts:s}))}else if(s===Mt){const r=i===Rt;r&&si.calcIframeIntervalTimestamp(t);let s=qr(e.slice(5),r);s=si.cryptoPayload(s,r),si.decode(s,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ft)===Ft},findSei:function(e,t){let r=4;ar(vr)&&(r=vr),Jt(e.slice(5),r).forEach((e=>{const r=si.isHevc?e[0]>>>1&63:31&e[0];(si.isHevc&&(r===ut||r===ct)||_r(si.isHevc)&&r===qe)&&postMessage({cmd:X,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(be&&e>0))return;null===Qe?(Qe=e,tt=tr()):et?r-t:0;si.networkDelay=i,i>si._opt.networkDelay&&si._opt.playType===y&&(si.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Qe} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Te,value:i}))},calcIframeIntervalTimestamp:function(e){null===Nt?Nt=e:Nt=si._opt.playbackForwardMaxRateDecodeIFrame&&!(si._opt.useMSE&&si._opt.mseDecodeAudio)},isPlayUseMSE:function(){return si.isPlayer&&si._opt.useMSE&&mr(r)},isPlayUseMSEAndDecoderInWorker:function(){return si.isPlayUseMSE()&&si._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return si.isPlayUseMSEAndDecoderInWorker()&&si._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){si.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){si.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),qt=!0,si.webglObj.destroy(),si.webglObj=null,si.offscreenCanvasGL=null,setTimeout((()=>{si.offscreenCanvasGL=si.offscreenCanvas.getContext("webgl"),si.offscreenCanvasGL&&si.offscreenCanvasGL.getContextAttributes().stencil?(si.webglObj=f(si.offscreenCanvasGL,si._opt.openWebglAlignment),qt=!1):si.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){si.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:k,w:t,h:r}),h=t,w=r,si.useOffscreen()&&(si.offscreenCanvas=new OffscreenCanvas(t,r),si.offscreenCanvasGL=si.offscreenCanvas.getContext("webgl"),si.webglObj=f(si.offscreenCanvasGL,si._opt.openWebglAlignment),si.offscreenCanvas.addEventListener("webglcontextlost",si.onOffscreenCanvasWebglContextLost,!1),si.offscreenCanvas.addEventListener("webglcontextrestored",si.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:I,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:br}),zt=r},yuvData:function(t,r){if(si.isDestroyed)return void si.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*w*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(St=null,Ve=r,si.useOffscreen())try{if(qt)return;si.webglObj.renderYUV(h,w,n);let e=si.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:si.delay,ts:r},[e])}catch(e){si.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:T,output:n,delay:si.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(si.isDestroyed)return void si.debug.log("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=si._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+n)}if(Ut){if(!(n>=(r=d-Ut)))return Ut+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==zt&&(s[1]=Float32Array.of(...s[1],...a[1])));lt[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==zt&&(lt[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:lt,ts:i},lt.map((e=>e.buffer))),o=r,n-=r}for(Ut=n;Ut>=d;Ut-=d)lt[0]=a[0].slice(o,o+=d),2==zt&&(lt[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:lt,ts:i},lt.map((e=>e.buffer)));Ut&&(s[0]=a[0].slice(o),2==zt&&(s[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===St&&(St=tr());const t=tr(),r=rr(Et>0?2*Et:5e3,1e3,5e3),i=t-St;i>r&&(si.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Et} and diff is ${i} and maxDiff is ${r}\n and replay`),ir=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){o?o.readyState===Ie?o.send(e):si.debug.error("worker","socket is not open"):si.debug.error("worker","socket is null")},timeEnd:function(){si.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),si.close(),postMessage({cmd:H})},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])}};si.debug=new Ar(si);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(si));let ai=null;e.VideoDecoder&&(ai=new e.VideoDecoder(si)),postMessage({cmd:x}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{si._opt=Object.assign(si._opt,JSON.parse(t.opt))}catch(e){}si.init();break;case ue:si.pushBuffer(t.buffer,t.options);break;case he:si.decodeAudio(t.buffer,t.ts);break;case fe:si.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:si.clearBuffer(t.needClear);break;case ge:si.fetchStream(t.url,JSON.parse(t.opt));break;case pe:si.debug.log("worker","close",JSON.stringify(t.options)),t.options&&_r(t.options.isVideoInited)&&(Sr=t.options.isVideoInited),si.close();break;case me:si.debug.log("worker","updateConfig",t.key,t.value),si._opt[t.key]=t.value,"playbackRate"===t.key&&(si.playbackUpdatePlaybackRate(),si.isPlaybackCacheBeforeDecodeForFpsRender()&&si.playbackCacheLoop());break;case ye:si.sendWebsocketMessage(t.message);break;case ve:ii.$video.currentTime=Number(t.message)}}}(e,e,!0)}))})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.js new file mode 100644 index 0000000000000000000000000000000000000000..3fb8ae2486b6a039c864c0b2ec67d36e0d5a48d2 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.js @@ -0,0 +1,5375 @@ +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( + async function (moduleArg = {}) { + + var Module = moduleArg; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise((resolve, reject) => { + readyPromiseResolve = resolve; + readyPromiseReject = reject + }); + var Module = typeof Module != "undefined" ? Module : {}; + Module["locateFile"] = function (url) { + if (url == "decoder-pro-mt-worker.wasm" + && typeof JESSIBUCA_PRO_MT_WORKER_WASM_URL != "undefined" + && JESSIBUCA_PRO_MT_WORKER_WASM_URL + != "") { + return JESSIBUCA_PRO_MT_WORKER_WASM_URL; + } else { + return url; + } + if (url == "decoder-pro-mt-worker.worker.js" + && typeof JESSIBUCA_PRO_MT_WORKER_JS_URL != "undefined" + && JESSIBUCA_PRO_MT_WORKER_JS_URL != "") { + return JESSIBUCA_PRO_MT_WORKER_JS_URL + } else { + return url + } + }; + var moduleOverrides = Object.assign({}, Module); + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = (status, toThrow) => { + throw toThrow + }; + var ENVIRONMENT_IS_WEB = typeof window == "object"; + var ENVIRONMENT_IS_WORKER = typeof importScripts == "function"; + var ENVIRONMENT_IS_NODE = typeof process == "object" + && typeof process.versions == "object" && typeof process.versions.node + == "string"; + var ENVIRONMENT_IS_PTHREAD = Module["ENVIRONMENT_IS_PTHREAD"] || false; + var scriptDirectory = ""; + + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory) + } + return scriptDirectory + path + } + + var read_, readAsync, readBinary; + if (ENVIRONMENT_IS_NODE) { + const {createRequire: createRequire} = await import("module"); + var require = createRequire(import.meta.url); + var fs = require("fs"); + var nodePath = require("path"); + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = nodePath.dirname(scriptDirectory) + "/" + } else { + scriptDirectory = require("url").fileURLToPath( + new URL("./", import.meta.url)) + } + read_ = (filename, binary) => { + filename = isFileURI(filename) ? new URL(filename) + : nodePath.normalize(filename); + return fs.readFileSync(filename, binary ? undefined : "utf8") + }; + readBinary = filename => { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret) + } + return ret + }; + readAsync = (filename, onload, onerror, binary = true) => { + filename = isFileURI(filename) ? new URL(filename) + : nodePath.normalize(filename); + fs.readFile(filename, binary ? undefined : "utf8", (err, data) => { + if (err) { + onerror(err); + } else { + onload(binary ? data.buffer : data) + } + }) + }; + if (!Module["thisProgram"] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, "/") + } + arguments_ = process.argv.slice(2); + quit_ = (status, toThrow) => { + process.exitCode = status; + throw toThrow + }; + Module["inspect"] = () => "[Emscripten Module object]"; + let nodeWorkerThreads; + try { + nodeWorkerThreads = require("worker_threads") + } catch (e) { + console.error( + 'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'); + throw e + } + global.Worker = nodeWorkerThreads.Worker + } 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 (_scriptDir) { + scriptDirectory = _scriptDir + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, + scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1) + } else { + scriptDirectory = "" + } + if (!ENVIRONMENT_IS_NODE) { + read_ = url => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response) + } + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return + } + onerror() + }; + xhr.onerror = onerror; + xhr.send(null) + } + } + } else { + } + if (ENVIRONMENT_IS_NODE) { + if (typeof performance == "undefined") { + global.performance = require("perf_hooks").performance + } + } + var defaultPrint = console.log.bind(console); + var defaultPrintErr = console.error.bind(console); + if (ENVIRONMENT_IS_NODE) { + defaultPrint = (...args) => fs.writeSync(1, args.join(" ") + "\n"); + defaultPrintErr = (...args) => fs.writeSync(2, args.join(" ") + "\n") + } + var out = Module["print"] || defaultPrint; + var err = Module["printErr"] || defaultPrintErr; + Object.assign(Module, moduleOverrides); + moduleOverrides = null; + if (Module["arguments"]) { + arguments_ = Module["arguments"]; + } + if (Module["thisProgram"]) { + thisProgram = Module["thisProgram"]; + } + if (Module["quit"]) { + quit_ = Module["quit"]; + } + 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 wasmModule; + var ABORT = false; + var EXITSTATUS; + + function assert(condition, text) { + if (!condition) { + abort(text) + } + } + + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + + function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b) + } + + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 268435456; + assert(INITIAL_MEMORY >= 65536, + "INITIAL_MEMORY should be larger than STACK_SIZE, was " + INITIAL_MEMORY + + "! (STACK_SIZE=" + 65536 + ")"); + if (ENVIRONMENT_IS_PTHREAD) { + wasmMemory = Module["wasmMemory"] + } else { + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"] + } else { + wasmMemory = new WebAssembly.Memory({ + "initial": INITIAL_MEMORY / 65536, + "maximum": INITIAL_MEMORY / 65536, + "shared": true + }); + if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) { + err( + "requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"); + if (ENVIRONMENT_IS_NODE) { + err( + "(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)") + } + throw Error("bad memory") + } + } + } + updateMemoryViews(); + INITIAL_MEMORY = wasmMemory.buffer.byteLength; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + var runtimeKeepaliveCounter = 0; + + function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0 + } + + 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 (ENVIRONMENT_IS_PTHREAD) { + return; + } + if (!Module["noFSInit"] && !FS.init.initialized) { + FS.init(); + } + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__) + } + + function postRun() { + if (ENVIRONMENT_IS_PTHREAD) { + return; + } + 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() + } + } + } + + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what) + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e + } + + var dataURIPrefix = "data:application/octet-stream;base64,"; + + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix) + } + + function isFileURI(filename) { + return filename.startsWith("file://") + } + + var wasmBinaryFile; + if (Module["locateFile"]) { + wasmBinaryFile = "decoder-pro-mt-worker.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile) + } + } else { + wasmBinaryFile = new URL("decoder-pro-mt-worker.wasm", + import.meta.url).href + } + + function getBinarySync(file) { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary) + } + if (readBinary) { + return readBinary(file) + } + throw "both async and sync fetching of the wasm failed" + } + + function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function" && !isFileURI(binaryFile)) { + return fetch(binaryFile, {credentials: "same-origin"}).then( + response => { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + + "'" + } + return response["arrayBuffer"]() + }).catch(() => getBinarySync(binaryFile)) + } else if (readAsync) { + return new Promise((resolve, reject) => { + readAsync(binaryFile, + response => resolve(new Uint8Array(response)), reject) + }) + } + } + return Promise.resolve().then(() => getBinarySync(binaryFile)) + } + + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then( + binary => WebAssembly.instantiate(binary, imports)).then( + instance => instance).then(receiver, reason => { + err(`failed to asynchronously prepare wasm: ${reason}`); + abort(reason) + }) + } + + function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" + && !isDataURI(binaryFile) && !isFileURI(binaryFile) + && !ENVIRONMENT_IS_NODE && typeof fetch == "function") { + return fetch(binaryFile, {credentials: "same-origin"}).then( + response => { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function (reason) { + err(`wasm streaming compile failed: ${reason}`); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback) + }) + }) + } + return instantiateArrayBuffer(binaryFile, imports, callback) + } + + function createWasm() { + var info = {"a": wasmImports}; + + function receiveInstance(instance, module) { + wasmExports = instance.exports; + registerTLSInit(wasmExports["V"]); + wasmTable = wasmExports["T"]; + addOnInit(wasmExports["Q"]); + wasmModule = module; + removeRunDependency("wasm-instantiate"); + return wasmExports + } + + addRunDependency("wasm-instantiate"); + + function receiveInstantiationResult(result) { + receiveInstance(result["instance"], result["module"]) + } + + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance) + } catch (e) { + err(`Module.instantiateWasm callback failed with error: ${e}`); + readyPromiseReject(e) + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, + receiveInstantiationResult).catch(readyPromiseReject); + return {} + } + + var tempDouble; + var tempI64; + + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = `Program terminated with exit(${status})`; + this.status = status + } + + var terminateWorker = worker => { + worker.terminate(); + worker.onmessage = e => { + } + }; + var killThread = pthread_ptr => { + var worker = PThread.pthreads[pthread_ptr]; + delete PThread.pthreads[pthread_ptr]; + terminateWorker(worker); + __emscripten_thread_free_data(pthread_ptr); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), + 1); + worker.pthread_ptr = 0 + }; + var cancelThread = pthread_ptr => { + var worker = PThread.pthreads[pthread_ptr]; + worker.postMessage({"cmd": "cancel"}) + }; + var cleanupThread = pthread_ptr => { + var worker = PThread.pthreads[pthread_ptr]; + assert(worker); + PThread.returnWorkerToPool(worker) + }; + var spawnThread = threadParams => { + var worker = PThread.getNewWorker(); + if (!worker) { + return 6 + } + PThread.runningWorkers.push(worker); + PThread.pthreads[threadParams.pthread_ptr] = worker; + worker.pthread_ptr = threadParams.pthread_ptr; + var msg = { + "cmd": "run", + "start_routine": threadParams.startRoutine, + "arg": threadParams.arg, + "pthread_ptr": threadParams.pthread_ptr + }; + if (ENVIRONMENT_IS_NODE) { + worker.unref() + } + worker.postMessage(msg, threadParams.transferList); + return 0 + }; + var PATH = { + isAbs: path => path.charAt(0) === "/", splitPath: filename => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1) + }, normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1) + } else if (last === "..") { + parts.splice(i, 1); + up++ + } else if (up) { + parts.splice(i, 1); + up-- + } + } + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift("..") + } + } + return parts + }, normalize: path => { + var isAbsolute = PATH.isAbs(path), + trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(p => !!p), + !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "." + } + if (path && trailingSlash) { + path += "/" + } + return (isAbsolute ? "/" : "") + path + }, dirname: path => { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "." + } + if (dir) { + dir = dir.substr(0, dir.length - 1) + } + return root + dir + }, basename: path => { + if (path === "/") { + return "/"; + } + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) { + return path; + } + return path.substr(lastSlash + 1) + }, join: function () { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")) + }, join2: (l, r) => PATH.normalize(l + "/" + r) + }; + var initRandomFill = () => { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] + == "function") { + return view => (view.set( + crypto.getRandomValues(new Uint8Array(view.byteLength))), view) + } else if (ENVIRONMENT_IS_NODE) { + try { + var crypto_module = require("crypto"); + var randomFillSync = crypto_module["randomFillSync"]; + if (randomFillSync) { + return view => crypto_module["randomFillSync"](view) + } + var randomBytes = crypto_module["randomBytes"]; + return view => (view.set(randomBytes(view.byteLength)), view) + } catch (e) { + } + } + abort("initRandomDevice") + }; + var randomFill = view => (randomFill = initRandomFill())(view); + var PATH_FS = { + resolve: function () { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; + i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings") + } else if (!path) { + return "" + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path) + } + resolvedPath = PATH.normalizeArray( + resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join( + "/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "." + }, relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== "") { + break + } + } + var end = arr.length - 1; + for (; end >= 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; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push("..") + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/") + } + }; + var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder( + "utf8") : undefined; + var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) { + ++endPtr; + } + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode( + heapOrArray.buffer instanceof SharedArrayBuffer ? heapOrArray.slice( + idx, endPtr) : heapOrArray.subarray(idx, endPtr)) + } + var str = ""; + while (idx < endPtr) { + var u0 = heapOrArray[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue + } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue + } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2 + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63 + } + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023) + } + } + return str + }; + var FS_stdin_getChar_buffer = []; + var lengthBytesUTF8 = str => { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++ + } else if (c <= 2047) { + len += 2 + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i + } else { + len += 3 + } + } + return len + }; + var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { + if (!(maxBytesToWrite > 0)) { + return 0; + } + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 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 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 FS_stdin_getChar = () => { + if (!FS_stdin_getChar_buffer.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + var BUFSIZE = 256; + var buf = Buffer.alloc(BUFSIZE); + var bytesRead = 0; + var fd = process.stdin.fd; + try { + bytesRead = fs.readSync(fd, buf) + } catch (e) { + if (e.toString().includes("EOF")) { + bytesRead = 0; + } else { + throw e + } + } + if (bytesRead > 0) { + 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 + } + FS_stdin_getChar_buffer = intArrayFromString(result, true) + } + return FS_stdin_getChar_buffer.shift() + }; + var TTY = { + ttys: [], init() { + }, shutdown() { + }, register(dev, ops) { + TTY.ttys[dev] = {input: [], output: [], ops: ops}; + FS.registerDevice(dev, TTY.stream_ops) + }, stream_ops: { + open(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43) + } + stream.tty = tty; + stream.seekable = false + }, close(stream) { + stream.tty.ops.fsync(stream.tty) + }, fsync(stream) { + stream.tty.ops.fsync(stream.tty) + }, read(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60) + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty) + } catch (e) { + throw new FS.ErrnoError(29) + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6) + } + if (result === null || result === undefined) { + break; + } + bytesRead++; + buffer[offset + i] = result + } + if (bytesRead) { + stream.node.timestamp = Date.now() + } + return bytesRead + }, write(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60) + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]) + } + } catch (e) { + throw new FS.ErrnoError(29) + } + if (length) { + stream.node.timestamp = Date.now() + } + return i + } + }, default_tty_ops: { + get_char(tty) { + return FS_stdin_getChar() + }, put_char(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = [] + } else { + if (val != 0) { + tty.output.push(val) + } + } + }, fsync(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = [] + } + }, ioctl_tcgets(tty) { + return { + c_iflag: 25856, + c_oflag: 5, + c_cflag: 191, + c_lflag: 35387, + c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + } + }, ioctl_tcsets(tty, optional_actions, data) { + return 0 + }, ioctl_tiocgwinsz(tty) { + return [24, 80] + } + }, default_tty1_ops: { + put_char(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = [] + } else { + if (val != 0) { + tty.output.push(val) + } + } + }, fsync(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = [] + } + } + } + }; + var mmapAlloc = size => { + abort() + }; + var MEMFS = { + ops_table: null, mount(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0) + }, createNode(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63) + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, stream: {llseek: MEMFS.stream_ops.llseek} + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, stream: FS.chrdev_stream_ops + } + } + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {} + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp + } + return node + }, getFileDataAsTypedArray(node) { + if (!node.contents) { + return new Uint8Array(0); + } + if (node.contents.subarray) { + return node.contents.subarray(0, + node.usedBytes); + } + return new Uint8Array(node.contents) + }, expandFileStorage(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) { + return; + } + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, + prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) + >>> 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(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(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(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(parent, name) { + throw FS.genericErrors[44] + }, mknod(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev) + }, rename(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(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now() + }, rmdir(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(node) { + var entries = [".", ".."]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue + } + entries.push(key) + } + return entries + }, symlink(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node + }, readlink(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28) + } + return node.link + } + }, stream_ops: { + read(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; i < size; i++) { + buffer[offset + + i] = contents[position + i] + } + } + return size + }, write(stream, buffer, offset, length, position, canOwn) { + if (!length) { + return 0; + } + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), + position); + return length + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), + position) + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i] + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length + }, llseek(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes + } + } + if (position < 0) { + throw new FS.ErrnoError(28) + } + return position + }, allocate(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, + offset + length) + }, mmap(stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43) + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { + allocated = false; + ptr = contents.byteOffset + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length) + } else { + contents = Array.prototype.slice.call(contents, position, + position + length) + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48) + } + HEAP8.set(contents, ptr) + } + return {ptr: ptr, allocated: allocated} + }, msync(stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0 + } + } + }; + var asyncLoad = (url, onload, onerror, noRunDep) => { + var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : ""; + readAsync(url, arrayBuffer => { + assert(arrayBuffer, + `Loading data file "${url}" failed (no arrayBuffer).`); + onload(new Uint8Array(arrayBuffer)); + if (dep) { + removeRunDependency(dep) + } + }, event => { + if (onerror) { + onerror() + } else { + throw `Loading data file "${url}" failed.` + } + }); + if (dep) { + addRunDependency(dep) + } + }; + var FS_createDataFile = (parent, name, fileData, canRead, canWrite, + canOwn) => FS.createDataFile(parent, name, fileData, canRead, canWrite, + canOwn); + var preloadPlugins = Module["preloadPlugins"] || []; + var FS_handledByPreloadPlugin = (byteArray, fullname, finish, + onerror) => { + if (typeof Browser != "undefined") { + Browser.init(); + } + var handled = false; + preloadPlugins.forEach(plugin => { + if (handled) { + return; + } + if (plugin["canHandle"](fullname)) { + plugin["handle"](byteArray, fullname, finish, onerror); + handled = true + } + }); + return handled + }; + var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, + onload, onerror, dontCreateFile, canOwn, preFinish) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) + : parent; + var dep = getUniqueRunDependency(`cp ${fullname}`); + + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) { + preFinish(); + } + if (!dontCreateFile) { + FS_createDataFile(parent, name, byteArray, canRead, canWrite, + canOwn) + } + if (onload) { + onload(); + } + removeRunDependency(dep) + } + + if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) { + onerror(); + } + removeRunDependency(dep) + })) { + return + } + finish(byteArray) + } + + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, byteArray => processData(byteArray), onerror) + } else { + processData(url) + } + }; + var FS_modeStringToFlags = str => { + var flagModes = { + "r": 0, + "r+": 2, + "w": 512 | 64 | 1, + "w+": 512 | 64 | 2, + "a": 1024 | 64 | 1, + "a+": 1024 | 64 | 2 + }; + var flags = flagModes[str]; + if (typeof flags == "undefined") { + throw new Error(`Unknown file open mode: ${str}`) + } + return flags + }; + var FS_getMode = (canRead, canWrite) => { + var mode = 0; + if (canRead) { + mode |= 292 | 73; + } + if (canWrite) { + mode |= 146; + } + return mode + }; + var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath(path, opts = {}) { + path = PATH_FS.resolve(path); + if (!path) { + return {path: "", node: null}; + } + var defaults = {follow_mount: true, recurse_count: 0}; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32) + } + var parts = path.split("/").filter(p => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), + link); + var lookup = FS.lookupPath(current_path, + {recurse_count: opts.recurse_count + 1}); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32) + } + } + } + } + return {path: current_path, node: current} + }, + getPath(node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) { + return mount; + } + return mount[mount.length - 1] !== "/" ? `${mount}/${path}` + : mount + path + } + path = path ? `${node.name}/${path}` : node.name; + node = node.parent + } + }, + hashName(parentid, name) { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0 + } + return (parentid + hash >>> 0) % FS.nameTable.length + }, + hashAddNode(node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node + }, + hashRemoveNode(node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break + } + current = current.name_next + } + } + }, + lookupNode(parent, name) { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent) + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node + } + } + return FS.lookup(parent, name) + }, + createNode(parent, name, mode, rdev) { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node + }, + destroyNode(node) { + FS.hashRemoveNode(node) + }, + isRoot(node) { + return node === node.parent + }, + isMountpoint(node) { + return !!node.mounted + }, + isFile(mode) { + return (mode & 61440) === 32768 + }, + isDir(mode) { + return (mode & 61440) === 16384 + }, + isLink(mode) { + return (mode & 61440) === 40960 + }, + isChrdev(mode) { + return (mode & 61440) === 8192 + }, + isBlkdev(mode) { + return (mode & 61440) === 24576 + }, + isFIFO(mode) { + return (mode & 61440) === 4096 + }, + isSocket(mode) { + return (mode & 49152) === 49152 + }, + flagsToPermissionString(flag) { + var perms = ["r", "w", "rw"][flag & 3]; + if (flag & 512) { + perms += "w" + } + return perms + }, + nodePermissions(node, perms) { + if (FS.ignorePermissions) { + return 0 + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2 + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2 + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2 + } + return 0 + }, + mayLookup(dir) { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) { + return errCode; + } + if (!dir.node_ops.lookup) { + return 2; + } + return 0 + }, + mayCreate(dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 20 + } catch (e) { + } + return FS.nodePermissions(dir, "wx") + }, + mayDelete(dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name) + } catch (e) { + return e.errno + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54 + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10 + } + } else { + if (FS.isDir(node.mode)) { + return 31 + } + } + return 0 + }, + mayOpen(node, flags) { + if (!node) { + return 44 + } + if (FS.isLink(node.mode)) { + return 32 + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31 + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)) + }, + MAX_OPEN_FDS: 4096, + nextfd() { + for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) { + if (!FS.streams[fd]) { + return fd + } + } + throw new FS.ErrnoError(33) + }, + getStreamChecked(fd) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8) + } + return stream + }, + getStream: fd => FS.streams[fd], + createStream(stream, fd = -1) { + if (!FS.FSStream) { + FS.FSStream = function () { + this.shared = {} + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get() { + return this.node + }, set(val) { + this.node = val + } + }, isRead: { + get() { + return (this.flags & 2097155) !== 1 + } + }, isWrite: { + get() { + return (this.flags & 2097155) !== 0 + } + }, isAppend: { + get() { + return this.flags & 1024 + } + }, flags: { + get() { + return this.shared.flags + }, set(val) { + this.shared.flags = val + } + }, position: { + get() { + return this.shared.position + }, set(val) { + this.shared.position = val + } + } + }) + } + stream = Object.assign(new FS.FSStream, stream); + if (fd == -1) { + fd = FS.nextfd() + } + stream.fd = fd; + FS.streams[fd] = stream; + return stream + }, + closeStream(fd) { + FS.streams[fd] = null + }, + chrdev_stream_ops: { + open(stream) { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream) + } + }, llseek() { + throw new FS.ErrnoError(70) + } + }, + major: dev => dev >> 8, + minor: dev => dev & 255, + makedev: (ma, mi) => ma << 8 | mi, + registerDevice(dev, ops) { + FS.devices[dev] = {stream_ops: ops} + }, + getDevice: dev => FS.devices[dev], + getMounts(mount) { + var mounts = []; + var check = [mount]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts) + } + return mounts + }, + syncfs(populate, callback) { + if (typeof populate == "function") { + callback = populate; + populate = false + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err( + `warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`) + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function doCallback(errCode) { + FS.syncFSRequests--; + return callback(errCode) + } + + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode) + } + return + } + if (++completed >= mounts.length) { + doCallback(null) + } + } + + mounts.forEach(mount => { + if (!mount.type.syncfs) { + return done(null) + } + mount.type.syncfs(mount, populate, done) + }) + }, + mount(type, opts, mountpoint) { + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10) + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, {follow_mount: false}); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10) + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54) + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount) + } + } + return mountRoot + }, + unmount(mountpoint) { + var lookup = FS.lookupPath(mountpoint, {follow_mount: false}); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28) + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(hash => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current) + } + current = next + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1) + }, + lookup(parent, name) { + return parent.node_ops.lookup(parent, name) + }, + mknod(path, mode, dev) { + var lookup = FS.lookupPath(path, {parent: true}); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28) + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63) + } + return parent.node_ops.mknod(parent, name, mode, dev) + }, + create(path, mode) { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0) + }, + mkdir(path, mode) { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0) + }, + mkdirTree(path, mode) { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) { + continue; + } + d += "/" + dirs[i]; + try { + FS.mkdir(d, mode) + } catch (e) { + if (e.errno != 20) { + throw e + } + } + } + }, + mkdev(path, mode, dev) { + if (typeof dev == "undefined") { + dev = mode; + mode = 438 + } + mode |= 8192; + return FS.mknod(path, mode, dev) + }, + symlink(oldpath, newpath) { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(44) + } + var lookup = FS.lookupPath(newpath, {parent: true}); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44) + } + var newname = PATH.basename(newpath); + var errCode = FS.mayCreate(parent, newname); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(63) + } + return parent.node_ops.symlink(parent, newname, oldpath) + }, + rename(old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + var lookup, old_dir, new_dir; + lookup = FS.lookupPath(old_path, {parent: true}); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, {parent: true}); + new_dir = lookup.node; + if (!old_dir || !new_dir) { + throw new FS.ErrnoError(44); + } + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(75) + } + var old_node = FS.lookupNode(old_dir, old_name); + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(28) + } + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(55) + } + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name) + } catch (e) { + } + if (old_node === new_node) { + return + } + var isdir = FS.isDir(old_node.mode); + var errCode = FS.mayDelete(old_dir, old_name, isdir); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) + : FS.mayCreate(new_dir, new_name); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(63) + } + if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint( + new_node)) { + throw new FS.ErrnoError(10) + } + if (new_dir !== old_dir) { + errCode = FS.nodePermissions(old_dir, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + } + FS.hashRemoveNode(old_node); + try { + old_dir.node_ops.rename(old_node, new_dir, new_name) + } catch (e) { + throw e + } finally { + FS.hashAddNode(old_node) + } + }, + rmdir(path) { + var lookup = FS.lookupPath(path, {parent: true}); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63) + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10) + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node) + }, + readdir(path) { + var lookup = FS.lookupPath(path, {follow: true}); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54) + } + return node.node_ops.readdir(node) + }, + unlink(path) { + var lookup = FS.lookupPath(path, {parent: true}); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44) + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63) + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10) + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node) + }, + readlink(path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44) + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28) + } + return PATH_FS.resolve(FS.getPath(link.parent), + link.node_ops.readlink(link)) + }, + stat(path, dontFollow) { + var lookup = FS.lookupPath(path, {follow: !dontFollow}); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44) + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63) + } + return node.node_ops.getattr(node) + }, + lstat(path) { + return FS.stat(path, true) + }, + chmod(path, mode, dontFollow) { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, {follow: !dontFollow}); + node = lookup.node + } else { + node = path + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63) + } + node.node_ops.setattr(node, + {mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now()}) + }, + lchmod(path, mode) { + FS.chmod(path, mode, true) + }, + fchmod(fd, mode) { + var stream = FS.getStreamChecked(fd); + FS.chmod(stream.node, mode) + }, + chown(path, uid, gid, dontFollow) { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, {follow: !dontFollow}); + node = lookup.node + } else { + node = path + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63) + } + node.node_ops.setattr(node, {timestamp: Date.now()}) + }, + lchown(path, uid, gid) { + FS.chown(path, uid, gid, true) + }, + fchown(fd, uid, gid) { + var stream = FS.getStreamChecked(fd); + FS.chown(stream.node, uid, gid) + }, + truncate(path, len) { + if (len < 0) { + throw new FS.ErrnoError(28) + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, {follow: true}); + node = lookup.node + } else { + node = path + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63) + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31) + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28) + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + node.node_ops.setattr(node, {size: len, timestamp: Date.now()}) + }, + ftruncate(fd, len) { + var stream = FS.getStreamChecked(fd); + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28) + } + FS.truncate(stream.node, len) + }, + utime(path, atime, mtime) { + var lookup = FS.lookupPath(path, {follow: true}); + var node = lookup.node; + node.node_ops.setattr(node, {timestamp: Math.max(atime, mtime)}) + }, + open(path, flags, mode) { + if (path === "") { + throw new FS.ErrnoError(44) + } + flags = typeof flags == "string" ? FS_modeStringToFlags(flags) + : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768 + } else { + mode = 0 + } + var node; + if (typeof path == "object") { + node = path + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, {follow: !(flags & 131072)}); + node = lookup.node + } catch (e) { + } + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20) + } + } else { + node = FS.mknod(path, mode, 0); + created = true + } + } + if (!node) { + throw new FS.ErrnoError(44) + } + if (FS.isChrdev(node.mode)) { + flags &= ~512 + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54) + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0) + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream) + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) { + FS.readFiles = {}; + } + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1 + } + } + return stream + }, + close(stream) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8) + } + if (stream.getdents) { + stream.getdents = null; + } + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream) + } + } catch (e) { + throw e + } finally { + FS.closeStream(stream.fd) + } + stream.fd = null + }, + isClosed(stream) { + return stream.fd === null + }, + llseek(stream, offset, whence) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8) + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70) + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28) + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position + }, + read(stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28) + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8) + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8) + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31) + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28) + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position + } else if (!stream.seekable) { + throw new FS.ErrnoError(70) + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, + position); + if (!seeking) { + stream.position += bytesRead; + } + return bytesRead + }, + write(stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28) + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8) + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8) + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31) + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28) + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2) + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position + } else if (!stream.seekable) { + throw new FS.ErrnoError(70) + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, + length, position, canOwn); + if (!seeking) { + stream.position += bytesWritten; + } + return bytesWritten + }, + allocate(stream, offset, length) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8) + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28) + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8) + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43) + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138) + } + stream.stream_ops.allocate(stream, offset, length) + }, + mmap(stream, length, position, prot, flags) { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) + !== 2) { + throw new FS.ErrnoError(2) + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2) + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43) + } + return stream.stream_ops.mmap(stream, length, position, prot, flags) + }, + msync(stream, buffer, offset, length, mmapFlags) { + if (!stream.stream_ops.msync) { + return 0 + } + return stream.stream_ops.msync(stream, buffer, offset, length, + mmapFlags) + }, + munmap: stream => 0, + ioctl(stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59) + } + return stream.stream_ops.ioctl(stream, cmd, arg) + }, + readFile(path, opts = {}) { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error(`Invalid encoding type "${opts.encoding}"`) + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0) + } else if (opts.encoding === "binary") { + ret = buf + } + FS.close(stream); + return ret + }, + writeFile(path, data, opts = {}) { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn) + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn) + } else { + throw new Error("Unsupported data type") + } + FS.close(stream) + }, + cwd: () => FS.currentPath, + chdir(path) { + var lookup = FS.lookupPath(path, {follow: true}); + if (lookup.node === null) { + throw new FS.ErrnoError(44) + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54) + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode) + } + FS.currentPath = lookup.path + }, + createDefaultDirectories() { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user") + }, + createDefaultDevices() { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var randomBuffer = new Uint8Array(1024), randomLeft = 0; + var randomByte = () => { + if (randomLeft === 0) { + randomLeft = randomFill(randomBuffer).byteLength + } + return randomBuffer[--randomLeft] + }; + FS.createDevice("/dev", "random", randomByte); + FS.createDevice("/dev", "urandom", randomByte); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp") + }, + createSpecialDirectories() { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount() { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup(parent, name) { + var fd = +name; + var stream = FS.getStreamChecked(fd); + var ret = { + parent: null, + mount: {mountpoint: "fake"}, + node_ops: {readlink: () => stream.path} + }; + ret.parent = ret; + return ret + } + }; + return node + } + }, {}, "/proc/self/fd") + }, + createStandardStreams() { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]) + } else { + FS.symlink("/dev/tty", "/dev/stdin") + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]) + } else { + FS.symlink("/dev/tty", "/dev/stdout") + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]) + } else { + FS.symlink("/dev/tty1", "/dev/stderr") + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1) + }, + ensureErrnoError() { + if (FS.ErrnoError) { + return; + } + FS.ErrnoError = function ErrnoError(errno, node) { + this.name = "ErrnoError"; + this.node = node; + this.setErrno = function (errno) { + this.errno = errno + }; + this.setErrno(errno); + this.message = "FS error" + }; + FS.ErrnoError.prototype = new Error; + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [44].forEach(code => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = "" + }) + }, + staticInit() { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = {"MEMFS": MEMFS} + }, + init(input, output, error) { + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams() + }, + quit() { + FS.init.initialized = false; + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue + } + FS.close(stream) + } + }, + findObject(path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (!ret.exists) { + return null + } + return ret.object + }, + analyzePath(path, dontResolveLastLink) { + try { + var lookup = FS.lookupPath(path, {follow: !dontResolveLastLink}); + path = lookup.path + } catch (e) { + } + var ret = { + isRoot: false, + exists: false, + error: 0, + name: null, + path: null, + object: null, + parentExists: false, + parentPath: null, + parentObject: null + }; + try { + var lookup = FS.lookupPath(path, {parent: true}); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, {follow: !dontResolveLastLink}); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === "/" + } catch (e) { + ret.error = e.errno + } + return ret + }, + createPath(parent, path, canRead, canWrite) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + var parts = path.split("/").reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) { + continue; + } + var current = PATH.join2(parent, part); + try { + FS.mkdir(current) + } catch (e) { + } + parent = current + } + return current + }, + createFile(parent, name, properties, canRead, canWrite) { + var path = PATH.join2( + typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS_getMode(canRead, canWrite); + return FS.create(path, mode) + }, + createDataFile(parent, name, data, canRead, canWrite, canOwn) { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent + } + var mode = FS_getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; + ++i) { + arr[i] = data.charCodeAt(i); + } + data = arr + } + FS.chmod(node, mode | 146); + var stream = FS.open(node, 577); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode) + } + return node + }, + createDevice(parent, name, input, output) { + var path = PATH.join2( + typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS_getMode(!!input, !!output); + if (!FS.createDevice.major) { + FS.createDevice.major = 64; + } + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open(stream) { + stream.seekable = false + }, close(stream) { + if (output && output.buffer && output.buffer.length) { + output(10) + } + }, read(stream, buffer, offset, length, pos) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input() + } catch (e) { + throw new FS.ErrnoError(29) + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6) + } + if (result === null || result === undefined) { + break; + } + bytesRead++; + buffer[offset + i] = result + } + if (bytesRead) { + stream.node.timestamp = Date.now() + } + return bytesRead + }, write(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]) + } catch (e) { + throw new FS.ErrnoError(29) + } + } + if (length) { + stream.node.timestamp = Date.now() + } + return i + } + }); + return FS.mkdev(path, mode, dev) + }, + forceLoadFile(obj) { + if (obj.isDevice || obj.isFolder || obj.link + || obj.contents) { + return true; + } + if (typeof XMLHttpRequest != "undefined") { + throw new Error( + "Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.") + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length + } catch (e) { + throw new FS.ErrnoError(29) + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest.") + } + }, + createLazyFile(parent, name, url, canRead, canWrite) { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = [] + } + + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset] + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest; + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status + === 304)) { + throw new Error( + "Couldn't load " + url + ". Status: " + xhr.status); + } + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader( + "Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) + && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) { + chunkSize = datalength; + } + var doXHR = (from, to) => { + if (from > to) { + throw new Error( + "invalid range (" + from + ", " + to + + ") or no bytes requested!"); + } + if (to > datalength - 1) { + throw new Error( + "only " + datalength + " bytes available! programmer error!"); + } + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + if (datalength !== chunkSize) { + xhr.setRequestHeader("Range", + "bytes=" + from + "-" + to); + } + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined") + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status + === 304)) { + throw new Error( + "Couldn't load " + url + ". Status: " + xhr.status); + } + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []) + } + return intArrayFromString(xhr.responseText || "", true) + }; + var lazyArray = this; + lazyArray.setDataGetter(chunkNum => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] == "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end) + } + if (typeof lazyArray.chunks[chunkNum] + == "undefined") { + throw new Error("doXHR failed!"); + } + return lazyArray.chunks[chunkNum] + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out( + "LazyFiles on gzip forces download of the whole file when length is accessed") + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) { + throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + } + var lazyArray = new LazyUint8Array; + Object.defineProperties(lazyArray, { + length: { + get: function () { + if (!this.lengthKnown) { + this.cacheLength() + } + return this._length + } + }, chunkSize: { + get: function () { + if (!this.lengthKnown) { + this.cacheLength() + } + return this._chunkSize + } + } + }); + var properties = {isDevice: false, contents: lazyArray} + } else { + var properties = {isDevice: false, url: url} + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents + } else if (properties.url) { + node.contents = null; + node.url = properties.url + } + Object.defineProperties(node, { + usedBytes: { + get: function () { + return this.contents.length + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(key => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments) + } + }); + + function writeChunks(stream, buffer, offset, length, position) { + 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 < size; i++) { + buffer[offset + i] = contents[position + i] + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i) + } + } + return size + } + + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position) + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48) + } + writeChunks(stream, HEAP8, ptr, length, position); + return {ptr: ptr, allocated: true} + }; + node.stream_ops = stream_ops; + return node + } + }; + var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString( + HEAPU8, ptr, maxBytesToRead) : ""; + var SYSCALLS = { + DEFAULT_POLLMASK: 5, calculateAt(dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path + } + var dir; + if (dirfd === -100) { + dir = FS.cwd() + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44) + } + return dir + } + return PATH.join2(dir, path) + }, doStat(func, path, buf) { + try { + var stat = func(path) + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize( + FS.getPath(e.node))) { + return -54 + } + throw e + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 4 >> 2] = stat.mode; + HEAPU32[buf + 8 >> 2] = stat.nlink; + HEAP32[buf + 12 >> 2] = stat.uid; + HEAP32[buf + 16 >> 2] = stat.gid; + HEAP32[buf + 20 >> 2] = stat.rdev; + tempI64 = [stat.size >>> 0, + (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 + ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0)], HEAP32[buf + 24 >> 2] = tempI64[0], HEAP32[buf + 28 + >> 2] = tempI64[1]; + HEAP32[buf + 32 >> 2] = 4096; + HEAP32[buf + 36 >> 2] = stat.blocks; + var atime = stat.atime.getTime(); + var mtime = stat.mtime.getTime(); + var ctime = stat.ctime.getTime(); + tempI64 = [Math.floor(atime / 1e3) >>> 0, + (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 + : ~~+Math.ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 + >> 2] = tempI64[1]; + HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3; + tempI64 = [Math.floor(mtime / 1e3) >>> 0, + (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 + : ~~+Math.ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0)], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 + >> 2] = tempI64[1]; + HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3; + tempI64 = [Math.floor(ctime / 1e3) >>> 0, + (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 + : ~~+Math.ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0)], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 + >> 2] = tempI64[1]; + HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3; + tempI64 = [stat.ino >>> 0, + (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 + ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0)], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 + >> 2] = tempI64[1]; + return 0 + }, doMsync(addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43) + } + if (flags & 2) { + return 0 + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags) + }, varargs: undefined, get() { + var ret = HEAP32[+SYSCALLS.varargs >> 2]; + SYSCALLS.varargs += 4; + return ret + }, getp() { + return SYSCALLS.get() + }, getStr(ptr) { + var ret = UTF8ToString(ptr); + return ret + }, getStreamFromFD(fd) { + var stream = FS.getStreamChecked(fd); + return stream + } + }; + + function _proc_exit(code) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(0, 1, code); + } + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + PThread.terminateAllThreads(); + if (Module["onExit"]) { + Module["onExit"](code); + } + ABORT = true + } + quit_(code, new ExitStatus(code)) + } + + var exitJS = (status, implicit) => { + EXITSTATUS = status; + if (ENVIRONMENT_IS_PTHREAD) { + exitOnMainThread(status); + throw "unwind" + } + _proc_exit(status) + }; + var _exit = exitJS; + var handleException = e => { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS + } + quit_(1, e) + }; + var PThread = { + unusedWorkers: [], + runningWorkers: [], + tlsInitFunctions: [], + pthreads: {}, + init() { + if (ENVIRONMENT_IS_PTHREAD) { + PThread.initWorker() + } else { + PThread.initMainThread() + } + }, + initMainThread() { + addOnPreRun(() => { + addRunDependency("loading-workers"); + PThread.loadWasmModuleToAllWorkers( + () => removeRunDependency("loading-workers")) + }) + }, + initWorker() { + noExitRuntime = false + }, + setExitStatus: status => { + EXITSTATUS = status + }, + terminateAllThreads__deps: ["$terminateWorker"], + terminateAllThreads: () => { + for (var worker of PThread.runningWorkers) { + terminateWorker(worker) + } + for (var worker of PThread.unusedWorkers) { + terminateWorker(worker) + } + PThread.unusedWorkers = []; + PThread.runningWorkers = []; + PThread.pthreads = [] + }, + returnWorkerToPool: worker => { + var pthread_ptr = worker.pthread_ptr; + delete PThread.pthreads[pthread_ptr]; + PThread.unusedWorkers.push(worker); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), + 1); + worker.pthread_ptr = 0; + __emscripten_thread_free_data(pthread_ptr) + }, + receiveObjectTransfer(data) { + }, + threadInitTLS() { + PThread.tlsInitFunctions.forEach(f => f()) + }, + loadWasmModuleToWorker: worker => new Promise(onFinishedLoading => { + worker.onmessage = e => { + var d = e["data"]; + var cmd = d["cmd"]; + if (d["targetThread"] && d["targetThread"] != _pthread_self()) { + var targetWorker = PThread.pthreads[d["targetThread"]]; + if (targetWorker) { + targetWorker.postMessage(d, d["transferList"]) + } else { + err( + `Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`) + } + return + } + if (cmd === "checkMailbox") { + checkMailbox() + } else if (cmd === "spawnThread") { + spawnThread(d) + } else if (cmd === "cleanupThread") { + cleanupThread(d["thread"]) + } else if (cmd === "killThread") { + killThread(d["thread"]) + } else if (cmd === "cancelThread") { + cancelThread(d["thread"]) + } else if (cmd === "loaded") { + worker.loaded = true; + onFinishedLoading(worker) + } else if (cmd === "alert") { + alert(`Thread ${d["threadId"]}: ${d["text"]}`) + } else if (d.target === "setimmediate") { + worker.postMessage(d) + } else if (cmd === "callHandler") { + Module[d["handler"]](...d["args"]) + } else if (cmd) { + err(`worker sent an unknown command ${cmd}`) + } + }; + worker.onerror = e => { + var message = "worker sent an error!"; + err(`${message} ${e.filename}:${e.lineno}: ${e.message}`); + throw e + }; + if (ENVIRONMENT_IS_NODE) { + worker.on("message", data => worker.onmessage({data: data})); + worker.on("error", e => worker.onerror(e)) + } + var handlers = []; + var knownHandlers = ["onExit", "onAbort", "print", "printErr"]; + for (var handler of knownHandlers) { + if (Module.hasOwnProperty(handler)) { + handlers.push(handler) + } + } + worker.postMessage({ + "cmd": "load", + "handlers": handlers, + "urlOrBlob": Module["mainScriptUrlOrBlob"], + "wasmMemory": wasmMemory, + "wasmModule": wasmModule + }) + }), + loadWasmModuleToAllWorkers(onMaybeReady) { + onMaybeReady() + }, + allocateUnusedWorker() { + var worker; + if (!Module["locateFile"]) { + worker = new Worker( + new URL("decoder-pro-mt-worker.worker.js", import.meta.url)) + } else { + var pthreadMainJs = locateFile("decoder-pro-mt-worker.worker.js"); + worker = new Worker(pthreadMainJs) + } + PThread.unusedWorkers.push(worker) + }, + getNewWorker() { + if (PThread.unusedWorkers.length == 0) { + PThread.allocateUnusedWorker(); + PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0]) + } + return PThread.unusedWorkers.pop() + } + }; + Module["PThread"] = PThread; + var callRuntimeCallbacks = callbacks => { + while (callbacks.length > 0) { + callbacks.shift()(Module) + } + }; + var establishStackSpace = () => { + var pthread_ptr = _pthread_self(); + var stackHigh = HEAPU32[pthread_ptr + 52 >> 2]; + var stackSize = HEAPU32[pthread_ptr + 56 >> 2]; + var stackLow = stackHigh - stackSize; + _emscripten_stack_set_limits(stackHigh, stackLow); + stackRestore(stackHigh) + }; + Module["establishStackSpace"] = establishStackSpace; + + function exitOnMainThread(returnCode) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(1, 0, returnCode); + } + _exit(returnCode) + } + + var wasmTableMirror = []; + var wasmTable; + var getWasmTableEntry = funcPtr => { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr + >= wasmTableMirror.length) { + wasmTableMirror.length = funcPtr + 1; + } + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr) + } + return func + }; + var invokeEntryPoint = (ptr, arg) => { + var result = getWasmTableEntry(ptr)(arg); + + function finish(result) { + if (keepRuntimeAlive()) { + PThread.setExitStatus(result) + } else { + __emscripten_thread_exit(result) + } + } + + finish(result) + }; + Module["invokeEntryPoint"] = invokeEntryPoint; + var registerTLSInit = tlsInitFunc => { + PThread.tlsInitFunctions.push(tlsInitFunc) + }; + + function ExceptionInfo(excPtr) { + this.excPtr = excPtr; + this.ptr = excPtr - 24; + this.set_type = function (type) { + HEAPU32[this.ptr + 4 >> 2] = type + }; + this.get_type = function () { + return HEAPU32[this.ptr + 4 >> 2] + }; + this.set_destructor = function (destructor) { + HEAPU32[this.ptr + 8 >> 2] = destructor + }; + this.get_destructor = function () { + return HEAPU32[this.ptr + 8 >> 2] + }; + this.set_caught = function (caught) { + caught = caught ? 1 : 0; + HEAP8[this.ptr + 12 >> 0] = caught + }; + this.get_caught = function () { + return HEAP8[this.ptr + 12 >> 0] != 0 + }; + this.set_rethrown = function (rethrown) { + rethrown = rethrown ? 1 : 0; + HEAP8[this.ptr + 13 >> 0] = rethrown + }; + this.get_rethrown = function () { + return HEAP8[this.ptr + 13 >> 0] != 0 + }; + this.init = function (type, destructor) { + this.set_adjusted_ptr(0); + this.set_type(type); + this.set_destructor(destructor) + }; + this.set_adjusted_ptr = function (adjustedPtr) { + HEAPU32[this.ptr + 16 >> 2] = adjustedPtr + }; + this.get_adjusted_ptr = function () { + return HEAPU32[this.ptr + 16 >> 2] + }; + this.get_exception_ptr = function () { + var isPointer = ___cxa_is_pointer_type(this.get_type()); + if (isPointer) { + return HEAPU32[this.excPtr >> 2] + } + var adjusted = this.get_adjusted_ptr(); + if (adjusted !== 0) { + return adjusted; + } + return this.excPtr + } + } + + var exceptionLast = 0; + var uncaughtExceptionCount = 0; + var ___cxa_throw = (ptr, type, destructor) => { + var info = new ExceptionInfo(ptr); + info.init(type, destructor); + exceptionLast = ptr; + uncaughtExceptionCount++; + throw exceptionLast + }; + var ___emscripten_init_main_thread_js = tb => { + __emscripten_thread_init(tb, !ENVIRONMENT_IS_WORKER, 1, + !ENVIRONMENT_IS_WEB, 65536, false); + PThread.threadInitTLS() + }; + var ___emscripten_thread_cleanup = thread => { + if (!ENVIRONMENT_IS_PTHREAD) { + cleanupThread(thread); + } else { + postMessage( + {"cmd": "cleanupThread", "thread": thread}) + } + }; + + function pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(2, 1, pthread_ptr, + attr, startRoutine, arg); + } + return ___pthread_create_js(pthread_ptr, attr, startRoutine, arg) + } + + var ___pthread_create_js = (pthread_ptr, attr, startRoutine, arg) => { + if (typeof SharedArrayBuffer == "undefined") { + err( + "Current environment does not support SharedArrayBuffer, pthreads are not available!"); + return 6 + } + var transferList = []; + var error = 0; + if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) { + return pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg) + } + if (error) { + return error; + } + var threadParams = { + startRoutine: startRoutine, + pthread_ptr: pthread_ptr, + arg: arg, + transferList: transferList + }; + if (ENVIRONMENT_IS_PTHREAD) { + threadParams.cmd = "spawnThread"; + postMessage(threadParams, transferList); + return 0 + } + return spawnThread(threadParams) + }; + var setErrNo = value => { + HEAP32[___errno_location() >> 2] = value; + return value + }; + + function ___syscall_fcntl64(fd, cmd, varargs) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(3, 1, 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 + } + while (FS.streams[arg]) { + arg++ + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd + } + case 1: + case 2: + return 0; + case 3: + return stream.flags; + case 4: { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0 + } + case 5: { + var arg = SYSCALLS.getp(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0 + } + case 6: + case 7: + return 0; + case 16: + case 8: + return -28; + case 9: + setErrNo(28); + return -1; + default: { + return -28 + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { + throw e; + } + return -e.errno + } + } + + function ___syscall_openat(dirfd, path, flags, varargs) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(4, 1, dirfd, path, + flags, varargs); + } + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { + throw e; + } + return -e.errno + } + } + + var __embind_register_bigint = (primitiveType, name, size, minRange, + maxRange) => { + }; + var 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; + var readLatin1String = ptr => { + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += embind_charCodes[HEAPU8[c++]] + } + return ret + }; + var awaitingDependencies = {}; + var registeredTypes = {}; + var typeDependencies = {}; + var BindingError; + var throwBindingError = message => { + throw new BindingError(message) + }; + var InternalError; + var throwInternalError = message => { + throw new InternalError(message) + }; + var 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 < myTypes.length; ++i) { + registerType(myTypes[i], myTypeConverters[i]) + } + } + + var typeConverters = new Array(dependentTypes.length); + var unregisteredTypes = []; + var registered = 0; + dependentTypes.forEach((dt, i) => { + if (registeredTypes.hasOwnProperty(dt)) { + typeConverters[i] = registeredTypes[dt] + } else { + unregisteredTypes.push(dt); + if (!awaitingDependencies.hasOwnProperty(dt)) { + awaitingDependencies[dt] = [] + } + awaitingDependencies[dt].push(() => { + typeConverters[i] = registeredTypes[dt]; + ++registered; + if (registered === unregisteredTypes.length) { + onComplete(typeConverters) + } + }) + } + }); + if (0 === unregisteredTypes.length) { + onComplete(typeConverters) + } + }; + + function sharedRegisterType(rawType, registeredInstance, options = {}) { + var name = registeredInstance.name; + if (!rawType) { + throwBindingError( + `type "${name}" must have a positive integer typeid pointer`) + } + if (registeredTypes.hasOwnProperty(rawType)) { + if (options.ignoreDuplicateRegistrations) { + return + } else { + throwBindingError(`Cannot register type '${name}' twice`) + } + } + registeredTypes[rawType] = registeredInstance; + delete typeDependencies[rawType]; + if (awaitingDependencies.hasOwnProperty(rawType)) { + var callbacks = awaitingDependencies[rawType]; + delete awaitingDependencies[rawType]; + callbacks.forEach(cb => cb()) + } + } + + function registerType(rawType, registeredInstance, options = {}) { + if (!("argPackAdvance" in registeredInstance)) { + throw new TypeError( + "registerType registeredInstance requires argPackAdvance") + } + return sharedRegisterType(rawType, registeredInstance, options) + } + + var GenericWireTypeSize = 8; + var __embind_register_bool = (rawType, name, trueValue, falseValue) => { + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": function (wt) { + return !!wt + }, + "toWireType": function (destructors, o) { + return o ? trueValue : falseValue + }, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": function (pointer) { + return this["fromWireType"](HEAPU8[pointer]) + }, + destructorFunction: null + }) + }; + var shallowCopyInternalPointer = o => ({ + count: o.count, + deleteScheduled: o.deleteScheduled, + preservePointerOnDelete: o.preservePointerOnDelete, + ptr: o.ptr, + ptrType: o.ptrType, + smartPtr: o.smartPtr, + smartPtrType: o.smartPtrType + }); + var throwInstanceAlreadyDeleted = obj => { + function getInstanceTypeName(handle) { + return handle.$$.ptrType.registeredClass.name + } + + throwBindingError( + getInstanceTypeName(obj) + " instance already deleted") + }; + var finalizationRegistry = false; + var detachFinalizer = handle => { + }; + var runDestructor = $$ => { + if ($$.smartPtr) { + $$.smartPtrType.rawDestructor($$.smartPtr) + } else { + $$.ptrType.registeredClass.rawDestructor($$.ptr) + } + }; + var releaseClassHandle = $$ => { + $$.count.value -= 1; + var toDelete = 0 === $$.count.value; + if (toDelete) { + runDestructor($$) + } + }; + var downcastPointer = (ptr, ptrClass, desiredClass) => { + if (ptrClass === desiredClass) { + return ptr + } + if (undefined === desiredClass.baseClass) { + return null + } + var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); + if (rv === null) { + return null + } + return desiredClass.downcast(rv) + }; + var registeredPointers = {}; + var getInheritedInstanceCount = () => Object.keys( + registeredInstances).length; + var getLiveInheritedInstances = () => { + var rv = []; + for (var k in registeredInstances) { + if (registeredInstances.hasOwnProperty(k)) { + rv.push(registeredInstances[k]) + } + } + return rv + }; + var deletionQueue = []; + var flushPendingDeletes = () => { + while (deletionQueue.length) { + var obj = deletionQueue.pop(); + obj.$$.deleteScheduled = false; + obj["delete"]() + } + }; + var delayFunction; + var setDelayFunction = fn => { + delayFunction = fn; + if (deletionQueue.length && delayFunction) { + delayFunction(flushPendingDeletes) + } + }; + var init_embind = () => { + Module["getInheritedInstanceCount"] = getInheritedInstanceCount; + Module["getLiveInheritedInstances"] = getLiveInheritedInstances; + Module["flushPendingDeletes"] = flushPendingDeletes; + Module["setDelayFunction"] = setDelayFunction + }; + var registeredInstances = {}; + var getBasestPointer = (class_, ptr) => { + if (ptr === undefined) { + throwBindingError("ptr should not be undefined") + } + while (class_.baseClass) { + ptr = class_.upcast(ptr); + class_ = class_.baseClass + } + return ptr + }; + var getInheritedInstance = (class_, ptr) => { + ptr = getBasestPointer(class_, ptr); + return registeredInstances[ptr] + }; + var 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}) + } + } + + var attachFinalizer = handle => { + if ("undefined" === typeof FinalizationRegistry) { + attachFinalizer = handle => handle; + return handle + } + finalizationRegistry = new FinalizationRegistry(info => { + releaseClassHandle(info.$$) + }); + attachFinalizer = handle => { + var $$ = handle.$$; + var hasSmartPtr = !!$$.smartPtr; + if (hasSmartPtr) { + var info = {$$: $$}; + finalizationRegistry.register(handle, info, handle) + } + return handle + }; + detachFinalizer = handle => finalizationRegistry.unregister(handle); + return attachFinalizer(handle) + }; + var init_ClassHandle = () => { + Object.assign(ClassHandle.prototype, { + "isAliasOf"(other) { + if (!(this instanceof ClassHandle)) { + return false + } + if (!(other instanceof ClassHandle)) { + return false + } + var leftClass = this.$$.ptrType.registeredClass; + var left = this.$$.ptr; + other.$$ = other.$$; + 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 + }, "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 + } + }, "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 + } + }, "isDeleted"() { + return !this.$$.ptr + }, "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 ClassHandle() { + } + + var char_0 = 48; + var char_9 = 57; + var makeLegalFunctionName = name => { + if (undefined === name) { + return "_unknown" + } + name = name.replace(/[^a-zA-Z0-9_]/g, "$"); + var f = name.charCodeAt(0); + if (f >= char_0 && f <= char_9) { + return `_${name}` + } + return name + }; + + function createNamedFunction(name, body) { + name = makeLegalFunctionName(name); + return { + [name]: function () { + return body.apply(this, arguments) + } + }[name] + } + + var 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 + } + }; + var 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 = [] + } + + var 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 "${embindRepr(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 "${embindRepr(handle)}" as a ${this.name}`) + } + if (!handle.$$.ptr) { + throwBindingError( + `Cannot pass deleted object as a pointer of type ${this.name}`) + } + if (!this.isConst && handle.$$.ptrType.isConst) { + throwBindingError( + `Cannot convert argument of type ${handle.$$.smartPtrType + ? handle.$$.smartPtrType.name + : handle.$$.ptrType.name} to parameter type ${this.name}`) + } + var handleClass = handle.$$.ptrType.registeredClass; + ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + if (this.isSmartPointer) { + if (undefined === handle.$$.smartPtr) { + throwBindingError("Passing raw pointer to smart pointer is illegal") + } + switch (this.sharingPolicy) { + case 0: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr + } else { + throwBindingError( + `Cannot convert argument of type ${handle.$$.smartPtrType + ? handle.$$.smartPtrType.name + : handle.$$.ptrType.name} to parameter type ${this.name}`) + } + break; + case 1: + ptr = handle.$$.smartPtr; + break; + case 2: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr + } else { + var clonedHandle = handle["clone"](); + ptr = this.rawShare(ptr, + Emval.toHandle(() => 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 "${embindRepr(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 readPointer(pointer) { + return this["fromWireType"](HEAPU32[pointer >> 2]) + } + + var init_RegisteredPointer = () => { + Object.assign(RegisteredPointer.prototype, { + getPointee(ptr) { + if (this.rawGetPointee) { + ptr = this.rawGetPointee(ptr) + } + return ptr + }, + destructor(ptr) { + if (this.rawDestructor) { + this.rawDestructor(ptr) + } + }, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": readPointer, + "deleteObject"(handle) { + if (handle !== null) { + handle["delete"]() + } + }, + "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 && registeredClass.baseClass === undefined) { + if (isConst) { + this["toWireType"] = constNoSmartPtrRawPointerToWireType; + this.destructorFunction = null + } else { + this["toWireType"] = nonConstNoSmartPtrRawPointerToWireType; + this.destructorFunction = null + } + } else { + this["toWireType"] = genericPointerToWireType + } + } + + var 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 + } + }; + var dynCallLegacy = (sig, ptr, args) => { + var f = Module["dynCall_" + sig]; + return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call( + null, ptr) + }; + var dynCall = (sig, ptr, args) => { + if (sig.includes("j")) { + return dynCallLegacy(sig, ptr, args) + } + var rtn = getWasmTableEntry(ptr).apply(null, args); + return rtn + }; + var getDynCaller = (sig, ptr) => { + var argCache = []; + return function () { + argCache.length = 0; + Object.assign(argCache, arguments); + return dynCall(sig, ptr, argCache) + } + }; + var embind__requireFunction = (signature, rawFunction) => { + signature = readLatin1String(signature); + + function makeDynCaller() { + if (signature.includes("j")) { + return getDynCaller(signature, rawFunction) + } + return getWasmTableEntry(rawFunction) + } + + var fp = makeDynCaller(); + if (typeof fp != "function") { + throwBindingError( + `unknown function pointer with signature ${signature}: ${rawFunction}`) + } + return fp + }; + var 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 UnboundTypeError; + var getTypeName = type => { + var ptr = ___getTypeName(type); + var rv = readLatin1String(ptr); + _free(ptr); + return rv + }; + var throwUnboundTypeError = (message, types) => { + var unboundTypes = []; + var seen = {}; + + function visit(type) { + if (seen[type]) { + return + } + if (registeredTypes[type]) { + return + } + if (typeDependencies[type]) { + typeDependencies[type].forEach(visit); + return + } + unboundTypes.push(type); + seen[type] = true + } + + types.forEach(visit); + throw new UnboundTypeError( + `${message}: ` + unboundTypes.map(getTypeName).join([", "])) + }; + var __embind_register_class = (rawType, rawPointerType, + rawConstPointerType, baseClassRawType, getActualTypeSignature, + getActualType, upcastSignature, upcast, downcastSignature, downcast, + name, destructorSignature, rawDestructor) => { + name = readLatin1String(name); + getActualType = embind__requireFunction(getActualTypeSignature, + getActualType); + if (upcast) { + upcast = embind__requireFunction(upcastSignature, upcast) + } + if (downcast) { + downcast = embind__requireFunction(downcastSignature, downcast) + } + rawDestructor = embind__requireFunction(destructorSignature, + rawDestructor); + var legalFunctionName = makeLegalFunctionName(name); + exposePublicSymbol(legalFunctionName, function () { + throwUnboundTypeError(`Cannot construct ${name} due to unbound types`, + [baseClassRawType]) + }); + whenDependentTypesAreResolved( + [rawType, rawPointerType, rawConstPointerType], + baseClassRawType ? [baseClassRawType] : [], function (base) { + base = base[0]; + var baseClass; + var basePrototype; + if (baseClassRawType) { + baseClass = base.registeredClass; + basePrototype = baseClass.instancePrototype + } else { + basePrototype = ClassHandle.prototype + } + var constructor = createNamedFunction(legalFunctionName, + function () { + if (Object.getPrototypeOf(this) !== instancePrototype) { + throw new BindingError("Use 'new' to construct " + name) + } + if (undefined === registeredClass.constructor_body) { + throw new BindingError( + name + " has no accessible constructor") + } + var body = registeredClass.constructor_body[arguments.length]; + if (undefined === body) { + throw new BindingError( + `Tried to invoke ctor of ${name} with invalid number of parameters (${arguments.length}) - expected (${Object.keys( + registeredClass.constructor_body).toString()}) parameters instead!`) + } + return body.apply(this, arguments) + }); + var instancePrototype = Object.create(basePrototype, + {constructor: {value: constructor}}); + constructor.prototype = instancePrototype; + var registeredClass = new RegisteredClass(name, constructor, + instancePrototype, rawDestructor, baseClass, getActualType, + upcast, downcast); + if (registeredClass.baseClass) { + if (registeredClass.baseClass.__derivedClasses === undefined) { + registeredClass.baseClass.__derivedClasses = [] + } + registeredClass.baseClass.__derivedClasses.push(registeredClass) + } + var referenceConverter = new RegisteredPointer(name, + registeredClass, true, false, false); + var pointerConverter = new RegisteredPointer(name + "*", + registeredClass, false, false, false); + var constPointerConverter = new RegisteredPointer(name + " const*", + registeredClass, false, true, false); + registeredPointers[rawType] = { + pointerType: pointerConverter, + constPointerType: constPointerConverter + }; + replacePublicSymbol(legalFunctionName, constructor); + return [referenceConverter, pointerConverter, constPointerConverter] + }) + }; + var heap32VectorToArray = (count, firstElement) => { + var array = []; + for (var i = 0; i < count; i++) { + array.push(HEAPU32[firstElement + i * 4 >> 2]) + } + return array + }; + var runDestructors = destructors => { + while (destructors.length) { + var ptr = destructors.pop(); + var del = destructors.pop(); + del(ptr) + } + }; + + function newFunc(constructor, argumentList) { + if (!(constructor instanceof Function)) { + throw new TypeError( + `new_ called with constructor type ${typeof constructor} which is not a function`) + } + var dummy = createNamedFunction( + constructor.name || "unknownFunctionName", function () { + }); + dummy.prototype = constructor.prototype; + var obj = new dummy; + var r = constructor.apply(obj, argumentList); + return r instanceof Object ? r : obj + } + + function craftInvokerFunction(humanName, argTypes, classType, + cppInvokerFunc, cppTargetFunc, isAsync) { + var argCount = argTypes.length; + if (argCount < 2) { + throwBindingError( + "argTypes array size mismatch! Must at least get return value and 'this' types!") + } + var isClassMethodFunc = argTypes[1] !== null && classType !== null; + var needsDestructorStack = false; + for (var i = 1; i < argTypes.length; ++i) { + if (argTypes[i] !== null && argTypes[i].destructorFunction + === undefined) { + needsDestructorStack = true; + break + } + } + var returns = argTypes[0].name !== "void"; + var argsList = ""; + var argsListWired = ""; + for (var i = 0; i < argCount - 2; ++i) { + argsList += (i !== 0 ? ", " : "") + "arg" + i; + argsListWired += (i !== 0 ? ", " : "") + "arg" + i + "Wired" + } + var invokerFnBody = `\n return function ${makeLegalFunctionName( + humanName)}(${argsList}) {\n if (arguments.length !== ${argCount + - 2}) {\n throwBindingError('function ${humanName} called with ' + arguments.length + ' arguments, expected ${argCount + - 2}');\n }`; + if (needsDestructorStack) { + invokerFnBody += "var destructors = [];\n" + } + var dtorStack = needsDestructorStack ? "destructors" : "null"; + var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", + "retType", "classParam"]; + var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, + runDestructors, argTypes[0], argTypes[1]]; + if (isClassMethodFunc) { + invokerFnBody += "var thisWired = classParam.toWireType(" + dtorStack + + ", this);\n" + } + for (var i = 0; i < argCount - 2; ++i) { + invokerFnBody += "var arg" + i + "Wired = argType" + i + + ".toWireType(" + dtorStack + ", arg" + i + "); // " + argTypes[i + + 2].name + "\n"; + args1.push("argType" + i); + args2.push(argTypes[i + 2]) + } + if (isClassMethodFunc) { + argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + + argsListWired + } + invokerFnBody += (returns || isAsync ? "var rv = " : "") + "invoker(fn" + + (argsListWired.length > 0 ? ", " : "") + argsListWired + ");\n"; + if (needsDestructorStack) { + invokerFnBody += "runDestructors(destructors);\n" + } else { + for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) { + var paramName = i === 1 ? "thisWired" : "arg" + (i - 2) + "Wired"; + if (argTypes[i].destructorFunction !== null) { + invokerFnBody += paramName + "_dtor(" + paramName + "); // " + + argTypes[i].name + "\n"; + args1.push(paramName + "_dtor"); + args2.push(argTypes[i].destructorFunction) + } + } + } + if (returns) { + invokerFnBody += "var ret = retType.fromWireType(rv);\n" + + "return ret;\n" + } else { + } + invokerFnBody += "}\n"; + args1.push(invokerFnBody); + return newFunc(Function, args1).apply(null, args2) + } + + var __embind_register_class_constructor = (rawClassType, argCount, + rawArgTypesAddr, invokerSignature, invoker, rawConstructor) => { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + invoker = embind__requireFunction(invokerSignature, invoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = `constructor ${classType.name}`; + if (undefined === classType.registeredClass.constructor_body) { + classType.registeredClass.constructor_body = [] + } + if (undefined !== classType.registeredClass.constructor_body[argCount + - 1]) { + throw new BindingError( + `Cannot register multiple constructors with identical number of parameters (${argCount + - 1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`) + } + classType.registeredClass.constructor_body[argCount - 1] = () => { + throwUnboundTypeError( + `Cannot construct ${classType.name} due to unbound types`, + rawArgTypes) + }; + whenDependentTypesAreResolved([], rawArgTypes, argTypes => { + argTypes.splice(1, 0, null); + classType.registeredClass.constructor_body[argCount + - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, + rawConstructor); + return [] + }); + return [] + }) + }; + var __embind_register_class_function = (rawClassType, methodName, + argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, + isPureVirtual, isAsync) => { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = `${classType.name}.${methodName}`; + if (methodName.startsWith("@@")) { + methodName = Symbol[methodName.substring(2)] + } + if (isPureVirtual) { + classType.registeredClass.pureVirtualFunctions.push(methodName) + } + + function unboundTypesHandler() { + throwUnboundTypeError( + `Cannot call ${humanName} due to unbound types`, rawArgTypes) + } + + var proto = classType.registeredClass.instancePrototype; + var method = proto[methodName]; + if (undefined === method || undefined === method.overloadTable + && method.className !== classType.name && method.argCount + === argCount - 2) { + unboundTypesHandler.argCount = argCount - 2; + unboundTypesHandler.className = classType.name; + proto[methodName] = unboundTypesHandler + } else { + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler + } + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + var memberFunction = craftInvokerFunction(humanName, argTypes, + classType, rawInvoker, context, isAsync); + if (undefined === proto[methodName].overloadTable) { + memberFunction.argCount = argCount - 2; + proto[methodName] = memberFunction + } else { + proto[methodName].overloadTable[argCount - 2] = memberFunction + } + return [] + }); + return [] + }) + }; + + function handleAllocatorInit() { + Object.assign(HandleAllocator.prototype, { + get(id) { + return this.allocated[id] + }, has(id) { + return this.allocated[id] !== undefined + }, allocate(handle) { + var id = this.freelist.pop() || this.allocated.length; + this.allocated[id] = handle; + return id + }, free(id) { + this.allocated[id] = undefined; + this.freelist.push(id) + } + }) + } + + function HandleAllocator() { + this.allocated = [undefined]; + this.freelist = [] + } + + var emval_handles = new HandleAllocator; + var __emval_decref = handle => { + if (handle >= emval_handles.reserved && 0 === --emval_handles.get( + handle).refcount) { + emval_handles.free(handle) + } + }; + var count_emval_handles = () => { + var count = 0; + for (var i = emval_handles.reserved; i < emval_handles.allocated.length; + ++i) { + if (emval_handles.allocated[i] !== undefined) { + ++count + } + } + return count + }; + var init_emval = () => { + emval_handles.allocated.push({value: undefined}, {value: null}, + {value: true}, {value: false}); + emval_handles.reserved = emval_handles.allocated.length; + Module["count_emval_handles"] = count_emval_handles + }; + var Emval = { + toValue: handle => { + if (!handle) { + throwBindingError("Cannot use deleted val. handle = " + handle) + } + return emval_handles.get(handle).value + }, toHandle: value => { + switch (value) { + case undefined: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: { + return emval_handles.allocate({refcount: 1, value: value}) + } + } + } + }; + + function simpleReadValueFromPointer(pointer) { + return this["fromWireType"](HEAP32[pointer >> 2]) + } + + var __embind_register_emval = (rawType, name) => { + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": handle => { + var rv = Emval.toValue(handle); + __emval_decref(handle); + return rv + }, + "toWireType": (destructors, value) => Emval.toHandle(value), + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": simpleReadValueFromPointer, + destructorFunction: null + }) + }; + var embindRepr = v => { + if (v === null) { + return "null" + } + var t = typeof v; + if (t === "object" || t === "array" || t === "function") { + return v.toString() + } else { + return "" + v + } + }; + var floatReadValueFromPointer = (name, width) => { + switch (width) { + case 4: + return function (pointer) { + return this["fromWireType"](HEAPF32[pointer >> 2]) + }; + case 8: + return function (pointer) { + return this["fromWireType"](HEAPF64[pointer >> 3]) + }; + default: + throw new TypeError(`invalid float width (${width}): ${name}`) + } + }; + var __embind_register_float = (rawType, name, size) => { + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": value => value, + "toWireType": (destructors, value) => value, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": floatReadValueFromPointer(name, size), + destructorFunction: null + }) + }; + var integerReadValueFromPointer = (name, width, signed) => { + switch (width) { + case 1: + return signed ? pointer => HEAP8[pointer >> 0] + : pointer => HEAPU8[pointer >> 0]; + case 2: + return signed ? pointer => HEAP16[pointer >> 1] + : pointer => HEAPU16[pointer >> 1]; + case 4: + return signed ? pointer => HEAP32[pointer >> 2] + : pointer => HEAPU32[pointer >> 2]; + default: + throw new TypeError(`invalid integer width (${width}): ${name}`) + } + }; + var __embind_register_integer = (primitiveType, name, size, minRange, + maxRange) => { + name = readLatin1String(name); + if (maxRange === -1) { + maxRange = 4294967295 + } + var fromWireType = value => value; + if (minRange === 0) { + var bitshift = 32 - 8 * size; + fromWireType = value => value << bitshift >>> bitshift + } + var isUnsignedType = name.includes("unsigned"); + var checkAssertions = (value, toTypeName) => { + }; + var toWireType; + if (isUnsignedType) { + toWireType = function (destructors, value) { + checkAssertions(value, this.name); + return value >>> 0 + } + } else { + toWireType = function (destructors, value) { + checkAssertions(value, this.name); + return value + } + } + registerType(primitiveType, { + name: name, + "fromWireType": fromWireType, + "toWireType": toWireType, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": integerReadValueFromPointer(name, size, + minRange !== 0), + destructorFunction: null + }) + }; + var __embind_register_memory_view = (rawType, dataTypeIndex, name) => { + var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, + Int32Array, Uint32Array, Float32Array, Float64Array]; + var TA = typeMapping[dataTypeIndex]; + + function decodeMemoryView(handle) { + var size = HEAPU32[handle >> 2]; + var data = HEAPU32[handle + 4 >> 2]; + return new TA(HEAP8.buffer, data, size) + } + + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": decodeMemoryView, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": decodeMemoryView + }, {ignoreDuplicateRegistrations: true}) + }; + var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array( + str, HEAPU8, outPtr, maxBytesToWrite); + var __embind_register_std_string = (rawType, name) => { + name = readLatin1String(name); + var stdStringIsUTF8 = name === "std::string"; + registerType(rawType, { + name: name, + "fromWireType"(value) { + var length = HEAPU32[value >> 2]; + var payload = value + 4; + var str; + if (stdStringIsUTF8) { + var decodeStartPtr = payload; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = payload + 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 < length; ++i) { + a[i] = String.fromCharCode(HEAPU8[payload + i]) + } + str = a.join("") + } + _free(value); + return str + }, + "toWireType"(destructors, value) { + if (value instanceof ArrayBuffer) { + value = new Uint8Array(value) + } + var length; + var valueIsOfTypeString = typeof value == "string"; + if (!(valueIsOfTypeString || value instanceof Uint8Array || value + instanceof Uint8ClampedArray || value instanceof Int8Array)) { + throwBindingError("Cannot pass non-string to std::string") + } + if (stdStringIsUTF8 && valueIsOfTypeString) { + length = lengthBytesUTF8(value) + } else { + length = value.length + } + var base = _malloc(4 + length + 1); + var ptr = base + 4; + HEAPU32[base >> 2] = length; + if (stdStringIsUTF8 && valueIsOfTypeString) { + stringToUTF8(value, ptr, length + 1) + } else { + if (valueIsOfTypeString) { + for (var i = 0; i < length; ++i) { + var charCode = value.charCodeAt(i); + if (charCode > 255) { + _free(ptr); + throwBindingError( + "String has UTF-16 code units that do not fit in 8 bits") + } + HEAPU8[ptr + i] = charCode + } + } else { + for (var i = 0; i < length; ++i) { + HEAPU8[ptr + i] = value[i] + } + } + } + if (destructors !== null) { + destructors.push(_free, base) + } + return base + }, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": readPointer, + destructorFunction(ptr) { + _free(ptr) + } + }) + }; + var UTF16Decoder = typeof TextDecoder != "undefined" ? new TextDecoder( + "utf-16le") : undefined; + var 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.slice(ptr, endPtr)); + } + 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 + }; + var stringToUTF16 = (str, outPtr, maxBytesToWrite) => { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647 + } + if (maxBytesToWrite < 2) { + return 0; + } + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite + / 2 : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + HEAP16[outPtr >> 1] = codeUnit; + outPtr += 2 + } + HEAP16[outPtr >> 1] = 0; + return outPtr - startPtr + }; + var lengthBytesUTF16 = str => str.length * 2; + var 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 + }; + var 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 < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 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 + }; + var lengthBytesUTF32 = str => { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) { + ++i; + } + len += 4 + } + return len + }; + var __embind_register_std_wstring = (rawType, charSize, name) => { + name = readLatin1String(name); + var decodeString, encodeString, getHeap, lengthBytesUTF, shift; + if (charSize === 2) { + decodeString = UTF16ToString; + encodeString = stringToUTF16; + lengthBytesUTF = lengthBytesUTF16; + getHeap = () => HEAPU16; + shift = 1 + } else if (charSize === 4) { + decodeString = UTF32ToString; + encodeString = stringToUTF32; + lengthBytesUTF = lengthBytesUTF32; + getHeap = () => HEAPU32; + shift = 2 + } + registerType(rawType, { + name: name, + "fromWireType": value => { + var length = HEAPU32[value >> 2]; + var HEAP = getHeap(); + var str; + var decodeStartPtr = value + 4; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = value + 4 + i * charSize; + if (i == length || HEAP[currentBytePtr >> shift] == 0) { + var maxReadBytes = currentBytePtr - decodeStartPtr; + var stringSegment = decodeString(decodeStartPtr, maxReadBytes); + if (str === undefined) { + str = stringSegment + } else { + str += String.fromCharCode(0); + str += stringSegment + } + decodeStartPtr = currentBytePtr + charSize + } + } + _free(value); + return str + }, + "toWireType": (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": GenericWireTypeSize, + "readValueFromPointer": simpleReadValueFromPointer, + destructorFunction(ptr) { + _free(ptr) + } + }) + }; + var __embind_register_void = (rawType, name) => { + name = readLatin1String(name); + registerType(rawType, { + isVoid: true, + name: name, + "argPackAdvance": 0, + "fromWireType": () => undefined, + "toWireType": (destructors, o) => undefined + }) + }; + var maybeExit = () => { + if (!keepRuntimeAlive()) { + try { + if (ENVIRONMENT_IS_PTHREAD) { + __emscripten_thread_exit( + EXITSTATUS); + } else { + _exit(EXITSTATUS) + } + } catch (e) { + handleException(e) + } + } + }; + var callUserCallback = func => { + if (ABORT) { + return + } + try { + func(); + maybeExit() + } catch (e) { + handleException(e) + } + }; + var __emscripten_thread_mailbox_await = pthread_ptr => { + if (typeof Atomics.waitAsync === "function") { + var wait = Atomics.waitAsync(HEAP32, pthread_ptr >> 2, pthread_ptr); + wait.value.then(checkMailbox); + var waitingAsync = pthread_ptr + 128; + Atomics.store(HEAP32, waitingAsync >> 2, 1) + } + }; + Module["__emscripten_thread_mailbox_await"] = __emscripten_thread_mailbox_await; + var checkMailbox = () => { + var pthread_ptr = _pthread_self(); + if (pthread_ptr) { + __emscripten_thread_mailbox_await(pthread_ptr); + callUserCallback(() => __emscripten_check_mailbox()) + } + }; + Module["checkMailbox"] = checkMailbox; + var __emscripten_notify_mailbox_postmessage = (targetThreadId, + currThreadId, mainThreadId) => { + if (targetThreadId == currThreadId) { + setTimeout(() => checkMailbox()) + } else if (ENVIRONMENT_IS_PTHREAD) { + postMessage({"targetThread": targetThreadId, "cmd": "checkMailbox"}) + } else { + var worker = PThread.pthreads[targetThreadId]; + if (!worker) { + return + } + worker.postMessage({"cmd": "checkMailbox"}) + } + }; + var withStackSave = f => { + var stack = stackSave(); + var ret = f(); + stackRestore(stack); + return ret + }; + var proxyToMainThread = function (index, sync) { + var numCallArgs = arguments.length - 2; + var outerArgs = arguments; + return withStackSave(() => { + var serializedNumCallArgs = numCallArgs; + var args = stackAlloc(serializedNumCallArgs * 8); + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + var arg = outerArgs[2 + i]; + HEAPF64[b + i] = arg + } + return __emscripten_run_on_main_thread_js(index, + serializedNumCallArgs, args, sync) + }) + }; + var proxiedJSCallArgs = []; + var __emscripten_receive_on_main_thread_js = (index, callingThread, + numCallArgs, args) => { + proxiedJSCallArgs.length = numCallArgs; + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + proxiedJSCallArgs[i] = HEAPF64[b + i] + } + var func = proxiedFunctionTable[index]; + PThread.currentProxiedOperationCallerThread = callingThread; + var rtn = func.apply(null, proxiedJSCallArgs); + PThread.currentProxiedOperationCallerThread = 0; + return rtn + }; + var __emscripten_thread_set_strongref = thread => { + if (ENVIRONMENT_IS_NODE) { + PThread.pthreads[thread].ref() + } + }; + var emval_symbols = {}; + var getStringOrSymbol = address => { + var symbol = emval_symbols[address]; + if (symbol === undefined) { + return readLatin1String(address) + } + return symbol + }; + var emval_methodCallers = []; + var __emval_call_void_method = (caller, handle, methodName, args) => { + caller = emval_methodCallers[caller]; + handle = Emval.toValue(handle); + methodName = getStringOrSymbol(methodName); + caller(handle, methodName, null, args) + }; + var emval_addMethodCaller = caller => { + var id = emval_methodCallers.length; + emval_methodCallers.push(caller); + return id + }; + var requireRegisteredType = (rawType, humanName) => { + var impl = registeredTypes[rawType]; + if (undefined === impl) { + throwBindingError( + humanName + " has unknown type " + getTypeName(rawType)) + } + return impl + }; + var emval_lookupTypes = (argCount, argTypes) => { + var a = new Array(argCount); + for (var i = 0; i < argCount; ++i) { + a[i] = requireRegisteredType(HEAPU32[argTypes + i * 4 >> 2], + "parameter " + i) + } + return a + }; + var emval_registeredMethods = {}; + var __emval_get_method_caller = (argCount, argTypes) => { + var types = emval_lookupTypes(argCount, argTypes); + var retType = types[0]; + var signatureName = retType.name + "_$" + types.slice(1).map( + function (t) { + return t.name + }).join("_") + "$"; + var returnId = emval_registeredMethods[signatureName]; + if (returnId !== undefined) { + return returnId + } + var params = ["retType"]; + var args = [retType]; + var argsList = ""; + for (var i = 0; i < argCount - 1; ++i) { + argsList += (i !== 0 ? ", " : "") + "arg" + i; + params.push("argType" + i); + args.push(types[1 + i]) + } + var functionName = makeLegalFunctionName( + "methodCaller_" + signatureName); + var functionBody = "return function " + functionName + + "(handle, name, destructors, args) {\n"; + var offset = 0; + for (var i = 0; i < argCount - 1; ++i) { + functionBody += " var arg" + i + " = argType" + i + + ".readValueFromPointer(args" + (offset ? "+" + offset : "") + + ");\n"; + offset += types[i + 1]["argPackAdvance"] + } + functionBody += " var rv = handle[name](" + argsList + ");\n"; + for (var i = 0; i < argCount - 1; ++i) { + if (types[i + 1]["deleteObject"]) { + functionBody += " argType" + i + ".deleteObject(arg" + i + ");\n" + } + } + if (!retType.isVoid) { + functionBody += " return retType.toWireType(destructors, rv);\n" + } + functionBody += "};\n"; + params.push(functionBody); + var invokerFunction = newFunc(Function, params).apply(null, args); + returnId = emval_addMethodCaller(invokerFunction); + emval_registeredMethods[signatureName] = returnId; + return returnId + }; + var _abort = () => { + abort("") + }; + var warnOnce = text => { + if (!warnOnce.shown) { + warnOnce.shown = {}; + } + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + if (ENVIRONMENT_IS_NODE) { + text = "warning: " + text; + } + err(text) + } + }; + var _emscripten_check_blocking_allowed = () => { + }; + var _emscripten_date_now = () => Date.now(); + var runtimeKeepalivePush = () => { + runtimeKeepaliveCounter += 1 + }; + var _emscripten_exit_with_live_runtime = () => { + runtimeKeepalivePush(); + throw "unwind" + }; + var getHeapMax = () => HEAPU8.length; + var _emscripten_get_heap_max = () => getHeapMax(); + var _emscripten_get_now; + _emscripten_get_now = () => performance.timeOrigin + performance.now(); + var _emscripten_num_logical_cores = () => { + if (ENVIRONMENT_IS_NODE) { + return require("os").cpus().length; + } + return navigator["hardwareConcurrency"] + }; + var abortOnCannotGrowMemory = requestedSize => { + abort("OOM") + }; + var _emscripten_resize_heap = requestedSize => { + var oldSize = HEAPU8.length; + requestedSize >>>= 0; + abortOnCannotGrowMemory(requestedSize) + }; + var ENV = {}; + var getExecutableName = () => thisProgram || "./this.program"; + var getEnvStrings = () => { + if (!getEnvStrings.strings) { + var lang = (typeof navigator == "object" && navigator.languages + && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8"; + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": lang, + "_": getExecutableName() + }; + for (var x in ENV) { + if (ENV[x] === undefined) { + delete env[x]; + } else { + env[x] = ENV[x] + } + } + var strings = []; + for (var x in env) { + strings.push(`${x}=${env[x]}`) + } + getEnvStrings.strings = strings + } + return getEnvStrings.strings + }; + var stringToAscii = (str, buffer) => { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >> 0] = str.charCodeAt(i) + } + HEAP8[buffer >> 0] = 0 + }; + var _environ_get = function (__environ, environ_buf) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(5, 1, __environ, + environ_buf); + } + var bufSize = 0; + getEnvStrings().forEach((string, i) => { + var ptr = environ_buf + bufSize; + HEAPU32[__environ + i * 4 >> 2] = ptr; + stringToAscii(string, ptr); + bufSize += string.length + 1 + }); + return 0 + }; + var _environ_sizes_get = function (penviron_count, penviron_buf_size) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(6, 1, + penviron_count, penviron_buf_size); + } + var strings = getEnvStrings(); + HEAPU32[penviron_count >> 2] = strings.length; + var bufSize = 0; + strings.forEach(string => bufSize += string.length + 1); + HEAPU32[penviron_buf_size >> 2] = bufSize; + return 0 + }; + + function _fd_close(fd) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(7, 1, fd); + } + try { + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0 + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { + throw e; + } + return e.errno + } + } + + function _fd_fdstat_get(fd, pbuf) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(8, 1, fd, pbuf); + } + try { + var rightsBase = 0; + var rightsInheriting = 0; + var flags = 0; + { + 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; + HEAP16[pbuf + 2 >> 1] = flags; + tempI64 = [rightsBase >>> 0, + (tempDouble = rightsBase, +Math.abs(tempDouble) >= 1 ? tempDouble + > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0)], HEAP32[pbuf + 8 >> 2] = tempI64[0], HEAP32[pbuf + 12 + >> 2] = tempI64[1]; + tempI64 = [rightsInheriting >>> 0, + (tempDouble = rightsInheriting, +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 + : ~~+Math.ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0)], HEAP32[pbuf + 16 >> 2] = tempI64[0], HEAP32[pbuf + 20 + >> 2] = tempI64[1]; + return 0 + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { + throw e; + } + return e.errno + } + } + + var doReadv = (stream, iov, iovcnt, offset) => { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.read(stream, HEAP8, ptr, len, offset); + if (curr < 0) { + return -1; + } + ret += curr; + if (curr < len) { + break; + } + if (typeof offset !== "undefined") { + offset += curr + } + } + return ret + }; + + function _fd_read(fd, iov, iovcnt, pnum) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(9, 1, fd, iov, + iovcnt, pnum); + } + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0 + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { + throw e; + } + return e.errno + } + } + + var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 + - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; + + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(10, 1, fd, + offset_low, offset_high, whence, newOffset); + } + var offset = convertI32PairToI53Checked(offset_low, offset_high); + try { + if (isNaN(offset)) { + return 61; + } + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + tempI64 = [stream.position >>> 0, + (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 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.name === "ErrnoError")) { + throw e; + } + return e.errno + } + } + + var doWritev = (stream, iov, iovcnt, offset) => { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) { + return -1; + } + ret += curr; + if (typeof offset !== "undefined") { + offset += curr + } + } + return ret + }; + + function _fd_write(fd, iov, iovcnt, pnum) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(11, 1, fd, iov, + iovcnt, pnum); + } + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0 + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { + throw e; + } + return e.errno + } + } + + PThread.init(); + 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.createPreloadedFile = FS_createPreloadedFile; + FS.staticInit(); + embind_init_charCodes(); + BindingError = Module["BindingError"] = class BindingError extends Error { + constructor(message) { + super(message); + this.name = "BindingError" + } + }; + InternalError = Module["InternalError"] = class InternalError extends Error { + constructor(message) { + super(message); + this.name = "InternalError" + } + }; + init_ClassHandle(); + init_embind(); + init_RegisteredPointer(); + UnboundTypeError = Module["UnboundTypeError"] = extendError(Error, + "UnboundTypeError"); + handleAllocatorInit(); + init_emval(); + var proxiedFunctionTable = [_proc_exit, exitOnMainThread, + pthreadCreateProxied, ___syscall_fcntl64, ___syscall_openat, + _environ_get, _environ_sizes_get, _fd_close, _fd_fdstat_get, _fd_read, + _fd_seek, _fd_write]; + var wasmImports = { + t: ___cxa_throw, + H: ___emscripten_init_main_thread_js, + l: ___emscripten_thread_cleanup, + C: ___pthread_create_js, + O: ___syscall_fcntl64, + F: ___syscall_openat, + w: __embind_register_bigint, + r: __embind_register_bool, + E: __embind_register_class, + v: __embind_register_class_constructor, + f: __embind_register_class_function, + P: __embind_register_emval, + q: __embind_register_float, + d: __embind_register_integer, + c: __embind_register_memory_view, + p: __embind_register_std_string, + i: __embind_register_std_wstring, + s: __embind_register_void, + y: __emscripten_notify_mailbox_postmessage, + D: __emscripten_receive_on_main_thread_js, + G: __emscripten_thread_mailbox_await, + M: __emscripten_thread_set_strongref, + h: __emval_call_void_method, + k: __emval_decref, + j: __emval_get_method_caller, + b: _abort, + m: _emscripten_check_blocking_allowed, + g: _emscripten_date_now, + L: _emscripten_exit_with_live_runtime, + z: _emscripten_get_heap_max, + e: _emscripten_get_now, + A: _emscripten_num_logical_cores, + x: _emscripten_resize_heap, + J: _environ_get, + K: _environ_sizes_get, + B: _exit, + o: _fd_close, + I: _fd_fdstat_get, + N: _fd_read, + u: _fd_seek, + n: _fd_write, + a: wasmMemory || Module["wasmMemory"] + }; + var wasmExports = createWasm(); + var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["Q"])(); + var _free = a0 => (_free = wasmExports["R"])(a0); + var _malloc = a0 => (_malloc = wasmExports["S"])(a0); + var ___errno_location = () => (___errno_location = wasmExports["U"])(); + var __emscripten_tls_init = Module["__emscripten_tls_init"] = () => (__emscripten_tls_init = Module["__emscripten_tls_init"] = wasmExports["V"])(); + var _pthread_self = Module["_pthread_self"] = () => (_pthread_self = Module["_pthread_self"] = wasmExports["W"])(); + var ___getTypeName = a0 => (___getTypeName = wasmExports["X"])(a0); + var __embind_initialize_bindings = Module["__embind_initialize_bindings"] = () => (__embind_initialize_bindings = Module["__embind_initialize_bindings"] = wasmExports["Y"])(); + var __emscripten_thread_init = Module["__emscripten_thread_init"] = (a0, + a1, a2, a3, a4, + a5) => (__emscripten_thread_init = Module["__emscripten_thread_init"] = wasmExports["Z"])( + a0, a1, a2, a3, a4, a5); + var __emscripten_thread_crashed = Module["__emscripten_thread_crashed"] = () => (__emscripten_thread_crashed = Module["__emscripten_thread_crashed"] = wasmExports["_"])(); + var _emscripten_main_thread_process_queued_calls = () => (_emscripten_main_thread_process_queued_calls = wasmExports["emscripten_main_thread_process_queued_calls"])(); + var _emscripten_main_runtime_thread_id = () => (_emscripten_main_runtime_thread_id = wasmExports["emscripten_main_runtime_thread_id"])(); + var __emscripten_run_on_main_thread_js = (a0, a1, a2, + a3) => (__emscripten_run_on_main_thread_js = wasmExports["$"])(a0, a1, + a2, a3); + var __emscripten_thread_free_data = a0 => (__emscripten_thread_free_data = wasmExports["aa"])( + a0); + var __emscripten_thread_exit = Module["__emscripten_thread_exit"] = a0 => (__emscripten_thread_exit = Module["__emscripten_thread_exit"] = wasmExports["ba"])( + a0); + var __emscripten_check_mailbox = Module["__emscripten_check_mailbox"] = () => (__emscripten_check_mailbox = Module["__emscripten_check_mailbox"] = wasmExports["ca"])(); + var _emscripten_stack_set_limits = (a0, + a1) => (_emscripten_stack_set_limits = wasmExports["da"])(a0, a1); + var stackSave = () => (stackSave = wasmExports["ea"])(); + var stackRestore = a0 => (stackRestore = wasmExports["fa"])(a0); + var stackAlloc = a0 => (stackAlloc = wasmExports["ga"])(a0); + var ___cxa_is_pointer_type = a0 => (___cxa_is_pointer_type = wasmExports["ha"])( + a0); + var dynCall_jiji = Module["dynCall_jiji"] = (a0, a1, a2, a3, + a4) => (dynCall_jiji = Module["dynCall_jiji"] = wasmExports["ia"])(a0, + a1, a2, a3, a4); + var _ff_h264_cabac_tables = Module["_ff_h264_cabac_tables"] = 111845; + Module["keepRuntimeAlive"] = keepRuntimeAlive; + Module["wasmMemory"] = wasmMemory; + Module["ExitStatus"] = ExitStatus; + Module["PThread"] = PThread; + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) { + run(); + } + if (!calledRun) { + dependenciesFulfilled = runCaller + } + }; + + function run() { + if (runDependencies > 0) { + return + } + if (ENVIRONMENT_IS_PTHREAD) { + readyPromiseResolve(Module); + initRuntime(); + startWorker(Module); + return + } + preRun(); + if (runDependencies > 0) { + return + } + + function doRun() { + if (calledRun) { + return; + } + calledRun = true; + Module["calledRun"] = true; + if (ABORT) { + return; + } + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) { + Module["onRuntimeInitialized"](); + } + postRun() + } + + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function () { + setTimeout(function () { + Module["setStatus"]("") + }, 1); + doRun() + }, 1) + } else { + doRun() + } + } + + if (Module["preInit"]) { + if (typeof Module["preInit"] + == "function") { + Module["preInit"] = [Module["preInit"]]; + } + while (Module["preInit"].length > 0) { + Module["preInit"].pop()() + } + } + run(); + + return moduleArg.ready + } + + ); +})(); +export default Module; \ No newline at end of file diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.wasm b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.wasm new file mode 100644 index 0000000000000000000000000000000000000000..19c4c93b6498031044945e129af6935733c50097 Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.worker.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.worker.js new file mode 100644 index 0000000000000000000000000000000000000000..380ffd30aeaf381655e80273199fb9c13aaaeed3 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt-worker.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:f=>(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f),postMessage:msg=>parentPort.postMessage(msg),performance:global.performance||{now:Date.now}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler:handler,args:args})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./decoder-pro-mt-worker.js")).then(exports=>exports.default(Module))}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["__embind_initialize_bindings"]();initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err(`worker.js received unknown command ${e.data.cmd}`);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt.js new file mode 100644 index 0000000000000000000000000000000000000000..7439e9bc0b01054be43b15a1e540d19294c39617 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-mt.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_MT_WORKER_WASM_URL?JESSIBUCA_PRO_MT_WORKER_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c=(e,t)=>{throw t},u="object"==typeof window,h="function"==typeof importScripts,f="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,p=n.ENVIRONMENT_IS_PTHREAD||!1,m="";function _(e){return n.locateFile?n.locateFile(e,m):m+e}if(f){const{createRequire:e}=await import("module");var g=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href),y=g("fs"),v=g("path");let t;m=h?v.dirname(m)+"/":g("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href)),s=(e,t)=>(e=de(e)?new URL(e):v.normalize(e),y.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=de(e)?new URL(e):v.normalize(e),y.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),c=(e,t)=>{throw process.exitCode=e,t},n.inspect=()=>"[Emscripten Module object]";try{t=g("worker_threads")}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}global.Worker=t.Worker}else(u||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),r&&(m=r),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",f||(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)}));f&&"undefined"==typeof performance&&(global.performance=g("perf_hooks").performance);var b=console.log.bind(console),w=console.error.bind(console);f&&(b=function(){for(var e=arguments.length,t=new Array(e),r=0;r=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+$+"! (STACK_SIZE=65536)"),p)x=n.wasmMemory;else if(n.wasmMemory)x=n.wasmMemory;else if(!((x=new WebAssembly.Memory({initial:$/65536,maximum:$/65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw A("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),f&&A("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");N(),$=x.buffer.byteLength;var O=[],G=[],H=[],V=0;function W(){return B||V>0}function j(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)K(n.preRun.shift());Ke(O)}function q(){p||(n.noFSInit||Oe.init.initialized||Oe.init(),Oe.ignorePermissions=!1,Ke(G))}function Y(){if(!p){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)Z(n.postRun.shift());Ke(H)}}function K(e){O.unshift(e)}function X(e){G.unshift(e)}function Z(e){H.unshift(e)}var J=0,Q=null;function ee(e){J++,n.monitorRunDependencies&&n.monitorRunDependencies(J)}function te(e){if(J--,n.monitorRunDependencies&&n.monitorRunDependencies(J),0==J&&Q){var t=Q;Q=null,t()}}function re(e){n.onAbort&&n.onAbort(e),A(e="Aborted("+e+")"),R=!0,k=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var ie,ne,se,oe="data:application/octet-stream;base64,";function ae(e){return e.startsWith(oe)}function de(e){return e.startsWith("file://")}function le(e){if(e==ie&&S)return new Uint8Array(S);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ce(e){if(!S&&(u||h)){if("function"==typeof fetch&&!de(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>le(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>le(e)))}function ue(e,t,r){return ce(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{A(`failed to asynchronously prepare wasm: ${e}`),re(e)}))}function he(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||ae(t)||de(t)||f||"function"!=typeof fetch?ue(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return A(`wasm streaming compile failed: ${e}`),A("falling back to ArrayBuffer instantiation"),ue(t,r,i)}))))}function fe(){var e={a:qi};function t(e,t){return Yi=e.exports,rt(Yi.V),Je=Yi.T,X(Yi.Q),U=t,te(),Yi}if(ee(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){A(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return he(S,ie,e,(function(e){t(e.instance,e.module)})).catch(i),{}}function pe(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?ae(ie="decoder-pro-mt-worker.wasm")||(ie=_(ie)):ie=new URL("decoder-pro-mt-worker.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href).href;var me=e=>{e.terminate(),e.onmessage=e=>{}},_e=e=>{var t=Ye.pthreads[e];delete Ye.pthreads[e],me(t),nn(e),Ye.runningWorkers.splice(Ye.runningWorkers.indexOf(t),1),t.pthread_ptr=0},ge=e=>{Ye.pthreads[e].postMessage({cmd:"cancel"})},ye=e=>{var t=Ye.pthreads[e];z(t),Ye.returnWorkerToPool(t)},ve=e=>{var t=Ye.getNewWorker();if(!t)return 6;Ye.runningWorkers.push(t),Ye.pthreads[e.pthread_ptr]=t,t.pthread_ptr=e.pthread_ptr;var r={cmd:"run",start_routine:e.startRoutine,arg:e.arg,pthread_ptr:e.pthread_ptr};return f&&t.unref(),t.postMessage(r,e.transferList),0},be={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=be.isAbs(e),r="/"===e.substr(-1);return(e=be.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=be.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=be.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return be.normalize(e.join("/"))},join2:(e,t)=>be.normalize(e+"/"+t)},we=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>(e.set(crypto.getRandomValues(new Uint8Array(e.byteLength))),e);if(f)try{var e=g("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}re("initRandomDevice")},Se=e=>(Se=we())(e),Ee={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Oe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=be.isAbs(i)}return(t?"/":"")+(e=be.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=Ee.resolve(e).substr(1),t=Ee.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&Ae)return Ae.decode(e.buffer instanceof SharedArrayBuffer?e.slice(t,n):e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s},Ue=[],Be=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},ke=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o)),a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n};function Te(e,t,r){var i=r>0?r:Be(e)+1,n=new Array(i),s=ke(e,n,0,n.length);return t&&(n.length=s),n}var Ce=()=>{if(!Ue.length){var e=null;if(f){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=y.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;Ue=Te(e,!0)}return Ue.shift()},De={ttys:[],init(){},shutdown(){},register(e,t){De.ttys[e]={input:[],output:[],ops:t},Oe.registerDevice(e,De.stream_ops)},stream_ops:{open(e){var t=De.ttys[e.node.rdev];if(!t)throw new Oe.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Oe.ErrnoError(60);for(var s=0,o=0;oCe(),put_char(e,t){null===t||10===t?(E(xe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(E(xe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(A(xe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(A(xe(e.output,0)),e.output=[])}}},Pe=e=>{re()},Fe={ops_table:null,mount:e=>Fe.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Oe.isBlkdev(r)||Oe.isFIFO(r))throw new Oe.ErrnoError(63);Fe.ops_table||(Fe.ops_table={dir:{node:{getattr:Fe.node_ops.getattr,setattr:Fe.node_ops.setattr,lookup:Fe.node_ops.lookup,mknod:Fe.node_ops.mknod,rename:Fe.node_ops.rename,unlink:Fe.node_ops.unlink,rmdir:Fe.node_ops.rmdir,readdir:Fe.node_ops.readdir,symlink:Fe.node_ops.symlink},stream:{llseek:Fe.stream_ops.llseek}},file:{node:{getattr:Fe.node_ops.getattr,setattr:Fe.node_ops.setattr},stream:{llseek:Fe.stream_ops.llseek,read:Fe.stream_ops.read,write:Fe.stream_ops.write,allocate:Fe.stream_ops.allocate,mmap:Fe.stream_ops.mmap,msync:Fe.stream_ops.msync}},link:{node:{getattr:Fe.node_ops.getattr,setattr:Fe.node_ops.setattr,readlink:Fe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Fe.node_ops.getattr,setattr:Fe.node_ops.setattr},stream:Oe.chrdev_stream_ops}});var n=Oe.createNode(e,t,r,i);return Oe.isDir(n.mode)?(n.node_ops=Fe.ops_table.dir.node,n.stream_ops=Fe.ops_table.dir.stream,n.contents={}):Oe.isFile(n.mode)?(n.node_ops=Fe.ops_table.file.node,n.stream_ops=Fe.ops_table.file.stream,n.usedBytes=0,n.contents=null):Oe.isLink(n.mode)?(n.node_ops=Fe.ops_table.link.node,n.stream_ops=Fe.ops_table.link.stream):Oe.isChrdev(n.mode)&&(n.node_ops=Fe.ops_table.chrdev.node,n.stream_ops=Fe.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=Oe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Oe.isDir(e.mode)?t.size=4096:Oe.isFile(e.mode)?t.size=e.usedBytes:Oe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Fe.resizeFileStorage(e,t.size)},lookup(e,t){throw Oe.genericErrors[44]},mknod:(e,t,r,i)=>Fe.createNode(e,t,r,i),rename(e,t,r){if(Oe.isDir(e.mode)){var i;try{i=Oe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Oe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Oe.lookupNode(e,t);for(var i in r.contents)throw new Oe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=Fe.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Oe.isLink(e.mode))throw new Oe.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t(Fe.stream_ops.write(e,t,0,i,r,!1),0)}},Ie=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{z(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&te()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&ee()},Le=(e,t,r,i,n,s)=>Oe.createDataFile(e,t,r,i,n,s),Me=n.preloadPlugins||[],Re=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Me.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},ze=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?Ee.resolve(be.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Le(e,t,r,i,n,d),s&&s(),te()}Re(r,c,u,(()=>{o&&o(),te()}))||u(r)}ee(),"string"==typeof r?Ie(r,(e=>u(e)),o):u(r)},Ne=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},$e=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Oe={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=Ee.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Oe.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Oe.root,n="/",s=0;s40)throw new Oe.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Oe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%Oe.nameTable.length},hashAddNode(e){var t=Oe.hashName(e.parent.id,e.name);e.name_next=Oe.nameTable[t],Oe.nameTable[t]=e},hashRemoveNode(e){var t=Oe.hashName(e.parent.id,e.name);if(Oe.nameTable[t]===e)Oe.nameTable[t]=e.name_next;else for(var r=Oe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Oe.mayLookup(e);if(r)throw new Oe.ErrnoError(r,e);for(var i=Oe.hashName(e.id,t),n=Oe.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Oe.lookup(e,t)},createNode(e,t,r,i){var n=new Oe.FSNode(e,t,r,i);return Oe.hashAddNode(n),n},destroyNode(e){Oe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Oe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=Oe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Oe.lookupNode(e,t),20}catch(e){}return Oe.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Oe.lookupNode(e,t)}catch(e){return e.errno}var n=Oe.nodePermissions(e,"wx");if(n)return n;if(r){if(!Oe.isDir(i.mode))return 54;if(Oe.isRoot(i)||Oe.getPath(i)===Oe.cwd())return 10}else if(Oe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Oe.isLink(e.mode)?32:Oe.isDir(e.mode)&&("r"!==Oe.flagsToPermissionString(t)||512&t)?31:Oe.nodePermissions(e,Oe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Oe.MAX_OPEN_FDS;e++)if(!Oe.streams[e])return e;throw new Oe.ErrnoError(33)},getStreamChecked(e){var t=Oe.getStream(e);if(!t)throw new Oe.ErrnoError(8);return t},getStream:e=>Oe.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Oe.FSStream||(Oe.FSStream=function(){this.shared={}},Oe.FSStream.prototype={},Object.defineProperties(Oe.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Oe.FSStream,e),-1==t&&(t=Oe.nextfd()),e.fd=t,Oe.streams[t]=e,e},closeStream(e){Oe.streams[e]=null},chrdev_stream_ops:{open(e){var t=Oe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Oe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Oe.devices[e]={stream_ops:t}},getDevice:e=>Oe.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),Oe.syncFSRequests++,Oe.syncFSRequests>1&&A(`warning: ${Oe.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Oe.getMounts(Oe.root.mount),i=0;function n(e){return Oe.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount(e,t,r){var i,n="/"===r,s=!r;if(n&&Oe.root)throw new Oe.ErrnoError(10);if(!n&&!s){var o=Oe.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Oe.isMountpoint(i))throw new Oe.ErrnoError(10);if(!Oe.isDir(i.mode))throw new Oe.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Oe.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Oe.lookupPath(e,{follow_mount:!1});if(!Oe.isMountpoint(t.node))throw new Oe.ErrnoError(28);var r=t.node,i=r.mounted,n=Oe.getMounts(i);Object.keys(Oe.nameTable).forEach((e=>{for(var t=Oe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Oe.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=Oe.lookupPath(e,{parent:!0}).node,n=be.basename(e);if(!n||"."===n||".."===n)throw new Oe.ErrnoError(28);var s=Oe.mayCreate(i,n);if(s)throw new Oe.ErrnoError(s);if(!i.node_ops.mknod)throw new Oe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Oe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Oe.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,Oe.mknod(e,t,r)),symlink(e,t){if(!Ee.resolve(e))throw new Oe.ErrnoError(44);var r=Oe.lookupPath(t,{parent:!0}).node;if(!r)throw new Oe.ErrnoError(44);var i=be.basename(t),n=Oe.mayCreate(r,i);if(n)throw new Oe.ErrnoError(n);if(!r.node_ops.symlink)throw new Oe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=be.dirname(e),s=be.dirname(t),o=be.basename(e),a=be.basename(t);if(r=Oe.lookupPath(e,{parent:!0}).node,i=Oe.lookupPath(t,{parent:!0}).node,!r||!i)throw new Oe.ErrnoError(44);if(r.mount!==i.mount)throw new Oe.ErrnoError(75);var d,l=Oe.lookupNode(r,o),c=Ee.relative(e,s);if("."!==c.charAt(0))throw new Oe.ErrnoError(28);if("."!==(c=Ee.relative(t,n)).charAt(0))throw new Oe.ErrnoError(55);try{d=Oe.lookupNode(i,a)}catch(e){}if(l!==d){var u=Oe.isDir(l.mode),h=Oe.mayDelete(r,o,u);if(h)throw new Oe.ErrnoError(h);if(h=d?Oe.mayDelete(i,a,u):Oe.mayCreate(i,a))throw new Oe.ErrnoError(h);if(!r.node_ops.rename)throw new Oe.ErrnoError(63);if(Oe.isMountpoint(l)||d&&Oe.isMountpoint(d))throw new Oe.ErrnoError(10);if(i!==r&&(h=Oe.nodePermissions(r,"w")))throw new Oe.ErrnoError(h);Oe.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Oe.hashAddNode(l)}}},rmdir(e){var t=Oe.lookupPath(e,{parent:!0}).node,r=be.basename(e),i=Oe.lookupNode(t,r),n=Oe.mayDelete(t,r,!0);if(n)throw new Oe.ErrnoError(n);if(!t.node_ops.rmdir)throw new Oe.ErrnoError(63);if(Oe.isMountpoint(i))throw new Oe.ErrnoError(10);t.node_ops.rmdir(t,r),Oe.destroyNode(i)},readdir(e){var t=Oe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Oe.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Oe.lookupPath(e,{parent:!0}).node;if(!t)throw new Oe.ErrnoError(44);var r=be.basename(e),i=Oe.lookupNode(t,r),n=Oe.mayDelete(t,r,!1);if(n)throw new Oe.ErrnoError(n);if(!t.node_ops.unlink)throw new Oe.ErrnoError(63);if(Oe.isMountpoint(i))throw new Oe.ErrnoError(10);t.node_ops.unlink(t,r),Oe.destroyNode(i)},readlink(e){var t=Oe.lookupPath(e).node;if(!t)throw new Oe.ErrnoError(44);if(!t.node_ops.readlink)throw new Oe.ErrnoError(28);return Ee.resolve(Oe.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Oe.lookupPath(e,{follow:!t}).node;if(!r)throw new Oe.ErrnoError(44);if(!r.node_ops.getattr)throw new Oe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Oe.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Oe.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Oe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Oe.chmod(e,t,!0)},fchmod(e,t){var r=Oe.getStreamChecked(e);Oe.chmod(r.node,t)},chown(e,t,r,i){var n;if(!(n="string"==typeof e?Oe.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Oe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Oe.chown(e,t,r,!0)},fchown(e,t,r){var i=Oe.getStreamChecked(e);Oe.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Oe.ErrnoError(28);var r;if(!(r="string"==typeof e?Oe.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Oe.ErrnoError(63);if(Oe.isDir(r.mode))throw new Oe.ErrnoError(31);if(!Oe.isFile(r.mode))throw new Oe.ErrnoError(28);var i=Oe.nodePermissions(r,"w");if(i)throw new Oe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Oe.getStreamChecked(e);if(0==(2097155&r.flags))throw new Oe.ErrnoError(28);Oe.truncate(r.node,t)},utime(e,t,r){var i=Oe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Oe.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Ne(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=be.normalize(e);try{i=Oe.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Oe.ErrnoError(20)}else i=Oe.mknod(e,r,0),s=!0;if(!i)throw new Oe.ErrnoError(44);if(Oe.isChrdev(i.mode)&&(t&=-513),65536&t&&!Oe.isDir(i.mode))throw new Oe.ErrnoError(54);if(!s){var o=Oe.mayOpen(i,t);if(o)throw new Oe.ErrnoError(o)}512&t&&!s&&Oe.truncate(i,0),t&=-131713;var a=Oe.createStream({node:i,path:Oe.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Oe.readFiles||(Oe.readFiles={}),e in Oe.readFiles||(Oe.readFiles[e]=1)),a},close(e){if(Oe.isClosed(e))throw new Oe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Oe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Oe.isClosed(e))throw new Oe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Oe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Oe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,n){if(i<0||n<0)throw new Oe.ErrnoError(28);if(Oe.isClosed(e))throw new Oe.ErrnoError(8);if(1==(2097155&e.flags))throw new Oe.ErrnoError(8);if(Oe.isDir(e.node.mode))throw new Oe.ErrnoError(31);if(!e.stream_ops.read)throw new Oe.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Oe.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write(e,t,r,i,n,s){if(i<0||n<0)throw new Oe.ErrnoError(28);if(Oe.isClosed(e))throw new Oe.ErrnoError(8);if(0==(2097155&e.flags))throw new Oe.ErrnoError(8);if(Oe.isDir(e.node.mode))throw new Oe.ErrnoError(31);if(!e.stream_ops.write)throw new Oe.ErrnoError(28);e.seekable&&1024&e.flags&&Oe.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Oe.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate(e,t,r){if(Oe.isClosed(e))throw new Oe.ErrnoError(8);if(t<0||r<=0)throw new Oe.ErrnoError(28);if(0==(2097155&e.flags))throw new Oe.ErrnoError(8);if(!Oe.isFile(e.node.mode)&&!Oe.isDir(e.node.mode))throw new Oe.ErrnoError(43);if(!e.stream_ops.allocate)throw new Oe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Oe.ErrnoError(2);if(1==(2097155&e.flags))throw new Oe.ErrnoError(2);if(!e.stream_ops.mmap)throw new Oe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new Oe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=Oe.open(e,t.flags),n=Oe.stat(e).size,s=new Uint8Array(n);return Oe.read(i,s,0,n,0),"utf8"===t.encoding?r=xe(s,0):"binary"===t.encoding&&(r=s),Oe.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Oe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(Be(t)+1),s=ke(t,n,0,n.length);Oe.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Oe.write(i,t,0,t.byteLength,void 0,r.canOwn)}Oe.close(i)},cwd:()=>Oe.currentPath,chdir(e){var t=Oe.lookupPath(e,{follow:!0});if(null===t.node)throw new Oe.ErrnoError(44);if(!Oe.isDir(t.node.mode))throw new Oe.ErrnoError(54);var r=Oe.nodePermissions(t.node,"x");if(r)throw new Oe.ErrnoError(r);Oe.currentPath=t.path},createDefaultDirectories(){Oe.mkdir("/tmp"),Oe.mkdir("/home"),Oe.mkdir("/home/web_user")},createDefaultDevices(){Oe.mkdir("/dev"),Oe.registerDevice(Oe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Oe.mkdev("/dev/null",Oe.makedev(1,3)),De.register(Oe.makedev(5,0),De.default_tty_ops),De.register(Oe.makedev(6,0),De.default_tty1_ops),Oe.mkdev("/dev/tty",Oe.makedev(5,0)),Oe.mkdev("/dev/tty1",Oe.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=Se(e).byteLength),e[--t]);Oe.createDevice("/dev","random",r),Oe.createDevice("/dev","urandom",r),Oe.mkdir("/dev/shm"),Oe.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Oe.mkdir("/proc");var e=Oe.mkdir("/proc/self");Oe.mkdir("/proc/self/fd"),Oe.mount({mount(){var t=Oe.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Oe.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Oe.createDevice("/dev","stdin",n.stdin):Oe.symlink("/dev/tty","/dev/stdin"),n.stdout?Oe.createDevice("/dev","stdout",null,n.stdout):Oe.symlink("/dev/tty","/dev/stdout"),n.stderr?Oe.createDevice("/dev","stderr",null,n.stderr):Oe.symlink("/dev/tty1","/dev/stderr"),Oe.open("/dev/stdin",0),Oe.open("/dev/stdout",1),Oe.open("/dev/stderr",1)},ensureErrnoError(){Oe.ErrnoError||(Oe.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Oe.ErrnoError.prototype=new Error,Oe.ErrnoError.prototype.constructor=Oe.ErrnoError,[44].forEach((e=>{Oe.genericErrors[e]=new Oe.ErrnoError(e),Oe.genericErrors[e].stack=""})))},staticInit(){Oe.ensureErrnoError(),Oe.nameTable=new Array(4096),Oe.mount(Fe,{},"/"),Oe.createDefaultDirectories(),Oe.createDefaultDevices(),Oe.createSpecialDirectories(),Oe.filesystems={MEMFS:Fe}},init(e,t,r){Oe.init.initialized=!0,Oe.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Oe.createStandardStreams()},quit(){Oe.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):Te(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,E("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var d=Oe.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return Oe.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Oe.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Oe.forceLoadFile(d);var s=Pe();if(!s)throw new Oe.ErrnoError(48);return c(e,T,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ge=(e,t)=>e?xe(C,e,t):"",He={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(be.isAbs(t))return t;var i;if(i=-100===e?Oe.cwd():He.getStreamFromFD(e).path,0==t.length){if(!r)throw new Oe.ErrnoError(44);return i}return be.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&be.normalize(t)!==be.normalize(Oe.getPath(e.node)))return-54;throw e}F[r>>2]=i.dev,F[r+4>>2]=i.mode,I[r+8>>2]=i.nlink,F[r+12>>2]=i.uid,F[r+16>>2]=i.gid,F[r+20>>2]=i.rdev,se=[i.size>>>0,(ne=i.size,+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[r+24>>2]=se[0],F[r+28>>2]=se[1],F[r+32>>2]=4096,F[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return se=[Math.floor(n/1e3)>>>0,(ne=Math.floor(n/1e3),+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[r+40>>2]=se[0],F[r+44>>2]=se[1],I[r+48>>2]=n%1e3*1e3,se=[Math.floor(s/1e3)>>>0,(ne=Math.floor(s/1e3),+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[r+56>>2]=se[0],F[r+60>>2]=se[1],I[r+64>>2]=s%1e3*1e3,se=[Math.floor(o/1e3)>>>0,(ne=Math.floor(o/1e3),+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[r+72>>2]=se[0],F[r+76>>2]=se[1],I[r+80>>2]=o%1e3*1e3,se=[i.ino>>>0,(ne=i.ino,+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[r+88>>2]=se[0],F[r+92>>2]=se[1],0},doMsync(e,t,r,i,n){if(!Oe.isFile(t.node.mode))throw new Oe.ErrnoError(43);if(2&i)return 0;var s=C.slice(e,e+r);Oe.msync(t,s,n,r,i)},varargs:void 0,get(){var e=F[+He.varargs>>2];return He.varargs+=4,e},getp:()=>He.get(),getStr:e=>Ge(e),getStreamFromFD:e=>Oe.getStreamChecked(e)};function Ve(e){if(p)return oi(0,1,e);k=e,W()||(Ye.terminateAllThreads(),n.onExit&&n.onExit(e),R=!0),c(e,new pe(e))}var We=(e,t)=>{if(k=e,p)throw Ze(e),"unwind";Ve(e)},je=We,qe=e=>{if(e instanceof pe||"unwind"==e)return k;c(1,e)},Ye={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){p?Ye.initWorker():Ye.initMainThread()},initMainThread(){K((()=>{ee(),Ye.loadWasmModuleToAllWorkers((()=>te()))}))},initWorker(){B=!1},setExitStatus:e=>{k=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of Ye.runningWorkers)me(e);for(var e of Ye.unusedWorkers)me(e);Ye.unusedWorkers=[],Ye.runningWorkers=[],Ye.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete Ye.pthreads[t],Ye.unusedWorkers.push(e),Ye.runningWorkers.splice(Ye.runningWorkers.indexOf(e),1),e.pthread_ptr=0,nn(t)},receiveObjectTransfer(e){},threadInitTLS(){Ye.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=Ji()){var o=Ye.pthreads[i.targetThread];o?o.postMessage(i,i.transferList):A(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===s?ri():"spawnThread"===s?ve(i):"cleanupThread"===s?ye(i.thread):"killThread"===s?_e(i.thread):"cancelThread"===s?ge(i.thread):"loaded"===s?(e.loaded=!0,t(e)):"alert"===s?alert(`Thread ${i.threadId}: ${i.text}`):"setimmediate"===i.target?e.postMessage(i):"callHandler"===s?n[i.handler](...i.args):s&&A(`worker sent an unknown command ${s}`)},e.onerror=e=>{throw A(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},f&&(e.on("message",(t=>e.onmessage({data:t}))),e.on("error",(t=>e.onerror(t))));var r=[];for(var i of["onExit","onAbort","print","printErr"])n.hasOwnProperty(i)&&r.push(i);e.postMessage({cmd:"load",handlers:r,urlOrBlob:n.mainScriptUrlOrBlob,wasmMemory:x,wasmModule:U})})),loadWasmModuleToAllWorkers(e){e()},allocateUnusedWorker(){var e;if(n.locateFile){var t=_("decoder-pro-mt-worker.worker.js");e=new Worker(t)}else e=new Worker(new URL("decoder-pro-mt-worker.worker.js","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href));Ye.unusedWorkers.push(e)},getNewWorker:()=>(0==Ye.unusedWorkers.length&&(Ye.allocateUnusedWorker(),Ye.loadWasmModuleToWorker(Ye.unusedWorkers[0])),Ye.unusedWorkers.pop())};n.PThread=Ye;var Ke=e=>{for(;e.length>0;)e.shift()(n)},Xe=()=>{var e=Ji(),t=I[e+52>>2],r=I[e+56>>2];an(t,t-r),ln(t)};function Ze(e){if(p)return oi(1,0,e);je(e)}n.establishStackSpace=Xe;var Je,Qe=[],et=e=>{var t=Qe[e];return t||(e>=Qe.length&&(Qe.length=e+1),Qe[e]=t=Je.get(e)),t},tt=(e,t)=>{!function(e){W()?Ye.setExitStatus(e):sn(e)}(et(e)(t))};n.invokeEntryPoint=tt;var rt=e=>{Ye.tlsInitFunctions.push(e)};function it(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){I[this.ptr+4>>2]=e},this.get_type=function(){return I[this.ptr+4>>2]},this.set_destructor=function(e){I[this.ptr+8>>2]=e},this.get_destructor=function(){return I[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,T[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=T[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,T[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=T[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){I[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return I[this.ptr+16>>2]},this.get_exception_ptr=function(){if(un(this.get_type()))return I[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var nt=(e,t,r)=>{throw new it(e).init(t,r),e},st=e=>{en(e,!h,1,!u,65536,!1),Ye.threadInitTLS()},ot=e=>{p?postMessage({cmd:"cleanupThread",thread:e}):ye(e)};function at(e,t,r,i){return p?oi(2,1,e,t,r,i):dt(e,t,r,i)}var dt=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return A("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(p&&0===n.length)return at(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return p?(s.cmd="spawnThread",postMessage(s,n),0):ve(s)},lt=e=>(F[Zi()>>2]=e,e);function ct(e,t,r){if(p)return oi(3,1,e,t,r);He.varargs=r;try{var i=He.getStreamFromFD(e);switch(t){case 0:if((n=He.get())<0)return-28;for(;Oe.streams[n];)n++;return Oe.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=He.get();return i.flags|=n,0;case 5:return n=He.getp(),D[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return lt(28),-1}}catch(e){if(void 0===Oe||"ErrnoError"!==e.name)throw e;return-e.errno}}function ut(e,t,r,i){if(p)return oi(4,1,e,t,r,i);He.varargs=i;try{t=He.getStr(t),t=He.calculateAt(e,t);var n=i?He.get():0;return Oe.open(t,r,n).fd}catch(e){if(void 0===Oe||"ErrnoError"!==e.name)throw e;return-e.errno}}var ht,ft,pt,mt=(e,t,r,i,n)=>{},_t=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ht=e},gt=e=>{for(var t="",r=e;C[r];)t+=ht[C[r++]];return t},yt={},vt={},bt={},wt=e=>{throw new ft(e)},St=e=>{throw new pt(e)},Et=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&St("Mismatched type converter count");for(var n=0;n{vt.hasOwnProperty(e)?n[t]=vt[e]:(s.push(e),yt.hasOwnProperty(e)||(yt[e]=[]),yt[e].push((()=>{n[t]=vt[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function At(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||wt(`type "${i}" must have a positive integer typeid pointer`),vt.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;wt(`Cannot register type '${i}' twice`)}if(vt[e]=t,delete bt[e],yt.hasOwnProperty(e)){var n=yt[e];delete yt[e],n.forEach((e=>e()))}}function xt(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return At(e,t,r)}var Ut,Bt=8,kt=(e,t,r,i)=>{xt(e,{name:t=gt(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Bt,readValueFromPointer:function(e){return this.fromWireType(C[e])},destructorFunction:null})},Tt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Ct=e=>{wt(e.$$.ptrType.registeredClass.name+" instance already deleted")},Dt=!1,Pt=e=>{},Ft=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},It=e=>{e.count.value-=1,0===e.count.value&&Ft(e)},Lt=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=Lt(e,t,r.baseClass);return null===i?null:r.downcast(i)},Mt={},Rt=()=>Object.keys(Ht).length,zt=()=>{var e=[];for(var t in Ht)Ht.hasOwnProperty(t)&&e.push(Ht[t]);return e},Nt=[],$t=()=>{for(;Nt.length;){var e=Nt.pop();e.$$.deleteScheduled=!1,e.delete()}},Ot=e=>{Ut=e,Nt.length&&Ut&&Ut($t)},Gt=()=>{n.getInheritedInstanceCount=Rt,n.getLiveInheritedInstances=zt,n.flushPendingDeletes=$t,n.setDelayFunction=Ot},Ht={},Vt=(e,t)=>{for(void 0===t&&wt("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Wt=(e,t)=>(t=Vt(e,t),Ht[t]),jt=(e,t)=>(t.ptrType&&t.ptr||St("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&St("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Yt(Object.create(e,{$$:{value:t}})));function qt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Wt(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?jt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):jt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=Mt[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=Lt(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?jt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):jt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Yt=e=>"undefined"==typeof FinalizationRegistry?(Yt=e=>e,e):(Dt=new FinalizationRegistry((e=>{It(e.$$)})),Yt=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Dt.register(e,r,e)}return e},Pt=e=>Dt.unregister(e),Yt(e)),Kt=()=>{Object.assign(Xt.prototype,{isAliasOf(e){if(!(this instanceof Xt))return!1;if(!(e instanceof Xt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||Ct(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Yt(Object.create(Object.getPrototypeOf(this),{$$:{value:Tt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Ct(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&wt("Object already scheduled for deletion"),Pt(this),It(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ct(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&wt("Object already scheduled for deletion"),Nt.push(this),1===Nt.length&&Ut&&Ut($t),this.$$.deleteScheduled=!0,this}})};function Xt(){}var Zt=48,Jt=57,Qt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=Zt&&t<=Jt?`_${e}`:e};function er(e,t){return{[e=Qt(e)]:function(){return t.apply(this,arguments)}}[e]}var tr=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||wt(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},rr=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&wt(`Cannot register public name '${e}' twice`),tr(n,e,e),n.hasOwnProperty(r)&&wt(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function ir(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}var nr=(e,t,r)=>{for(;t!==r;)t.upcast||wt(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function sr(e,t){if(null===t)return this.isReference&&wt(`null is not a valid ${this.name}`),0;t.$$||wt(`Cannot pass "${Mr(t)}" as a ${this.name}`),t.$$.ptr||wt(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return nr(t.$$.ptr,r,this.registeredClass)}function or(e,t){var r;if(null===t)return this.isReference&&wt(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||wt(`Cannot pass "${Mr(t)}" as a ${this.name}`),t.$$.ptr||wt(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&wt(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=nr(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&wt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:wt(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,Fr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:wt("Unsupporting sharing policy")}return r}function ar(e,t){if(null===t)return this.isReference&&wt(`null is not a valid ${this.name}`),0;t.$$||wt(`Cannot pass "${Mr(t)}" as a ${this.name}`),t.$$.ptr||wt(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&wt(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return nr(t.$$.ptr,r,this.registeredClass)}function dr(e){return this.fromWireType(I[e>>2])}var lr=()=>{Object.assign(cr.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Bt,readValueFromPointer:dr,deleteObject(e){null!==e&&e.delete()},fromWireType:qt})};function cr(e,t,r,i,n,s,o,a,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=or:i?(this.toWireType=sr,this.destructorFunction=null):(this.toWireType=ar,this.destructorFunction=null)}var ur,hr=(e,t,r)=>{n.hasOwnProperty(e)||St("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},fr=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},pr=(e,t,r)=>e.includes("j")?fr(e,t,r):et(t).apply(null,r),mr=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),pr(e,t,r)}},_r=(e,t)=>{var r=(e=gt(e)).includes("j")?mr(e,t):et(t);return"function"!=typeof r&&wt(`unknown function pointer with signature ${e}: ${t}`),r},gr=(e,t)=>{var r=er(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},yr=e=>{var t=Qi(e),r=gt(t);return Ki(t),r},vr=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||vt[t]||(bt[t]?bt[t].forEach(e):(r.push(t),i[t]=!0))})),new ur(`${e}: `+r.map(yr).join([", "]))},br=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=gt(c),s=_r(n,s),a&&(a=_r(o,a)),l&&(l=_r(d,l)),h=_r(u,h);var f=Qt(c);rr(f,(function(){vr(`Cannot construct ${c} due to unbound types`,[i])})),Et([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:Xt.prototype;var o=er(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new ft("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new ft(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new ft(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new ir(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new cr(c,u,!0,!1,!1),m=new cr(c+"*",u,!1,!1,!1),_=new cr(c+" const*",u,!1,!0,!1);return Mt[e]={pointerType:m,constPointerType:_},hr(f,o),[p,m,_]}))},wr=(e,t)=>{for(var r=[],i=0;i>2]);return r},Sr=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Er(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=er(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Ar(e,t,r,i,n,s){var o=t.length;o<2&&wt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=wr(t,r);n=_r(i,n),Et([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ft(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{vr(`Cannot construct ${e.name} due to unbound types`,o)},Et([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Ar(r,i,null,n,s),[]))),[]}))},Ur=(e,t,r,i,n,s,o,a,d)=>{var l=wr(r,i);t=gt(t),s=_r(n,s),Et([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){vr(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(tr(c,t,i),c[t].overloadTable[r-2]=n),Et([],l,(function(n){var a=Ar(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Br(){Object.assign(kr.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function kr(){this.allocated=[void 0],this.freelist=[]}var Tr=new kr,Cr=e=>{e>=Tr.reserved&&0==--Tr.get(e).refcount&&Tr.free(e)},Dr=()=>{for(var e=0,t=Tr.reserved;t{Tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Tr.reserved=Tr.allocated.length,n.count_emval_handles=Dr},Fr={toValue:e=>(e||wt("Cannot use deleted val. handle = "+e),Tr.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Tr.allocate({refcount:1,value:e})}}};function Ir(e){return this.fromWireType(F[e>>2])}var Lr=(e,t)=>{xt(e,{name:t=gt(t),fromWireType:e=>{var t=Fr.toValue(e);return Cr(e),t},toWireType:(e,t)=>Fr.toHandle(t),argPackAdvance:Bt,readValueFromPointer:Ir,destructorFunction:null})},Mr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Rr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(L[e>>2])};case 8:return function(e){return this.fromWireType(M[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},zr=(e,t,r)=>{xt(e,{name:t=gt(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Bt,readValueFromPointer:Rr(t,r),destructorFunction:null})},Nr=(e,t,r)=>{switch(t){case 1:return r?e=>T[e>>0]:e=>C[e>>0];case 2:return r?e=>D[e>>1]:e=>P[e>>1];case 4:return r?e=>F[e>>2]:e=>I[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},$r=(e,t,r,i,n)=>{t=gt(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");xt(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Bt,readValueFromPointer:Nr(t,r,0!==i),destructorFunction:null})},Or=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=I[e>>2],r=I[e+4>>2];return new i(T.buffer,r,t)}xt(e,{name:r=gt(r),fromWireType:n,argPackAdvance:Bt,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},Gr=(e,t,r)=>ke(e,C,t,r),Hr=(e,t)=>{var r="std::string"===(t=gt(t));xt(e,{name:t,fromWireType(e){var t,i=I[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==C[a]){var d=Ge(s,a-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=a+1}}else{var l=new Array(i);for(o=0;o>2]=i,r&&n)Gr(t,o,i+1);else if(n)for(var a=0;a255&&(Ki(o),wt("String has UTF-16 code units that do not fit in 8 bits")),C[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&P[i];)++i;if((r=i<<1)-e>32&&Vr)return Vr.decode(C.slice(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=D[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s},jr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return D[t>>1]=0,t-i},qr=e=>2*e.length,Yr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=F[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},Kr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s)),F[t>>2]=o,(t+=4)+4>n)break}return F[t>>2]=0,t-i},Xr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Zr=(e,t,r)=>{var i,n,s,o,a;r=gt(r),2===t?(i=Wr,n=jr,o=qr,s=()=>P,a=1):4===t&&(i=Yr,n=Kr,o=Xr,s=()=>I,a=2),xt(e,{name:r,fromWireType:e=>{for(var r,n=I[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Ki(e),r},toWireType:(e,i)=>{"string"!=typeof i&&wt(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=Xi(4+s+t);return I[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(Ki,d),d},argPackAdvance:Bt,readValueFromPointer:Ir,destructorFunction(e){Ki(e)}})},Jr=(e,t)=>{xt(e,{isVoid:!0,name:t=gt(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Qr=()=>{if(!W())try{p?sn(k):je(k)}catch(e){qe(e)}},ei=e=>{if(!R)try{e(),Qr()}catch(e){qe(e)}},ti=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(F,e>>2,e).value.then(ri);var t=e+128;Atomics.store(F,t>>2,1)}};n.__emscripten_thread_mailbox_await=ti;var ri=()=>{var e=Ji();e&&(ti(e),ei((()=>on())))};n.checkMailbox=ri;var ii,ni=(e,t,r)=>{if(e==t)setTimeout((()=>ri()));else if(p)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=Ye.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},si=e=>{var t=dn(),r=e();return ln(t),r},oi=function(e,t){var r=arguments.length-2,i=arguments;return si((()=>{for(var n=r,s=cn(8*n),o=s>>3,a=0;a{ai.length=r;for(var n=i>>3,s=0;s{f&&Ye.pthreads[e].ref()},ci={},ui=e=>{var t=ci[e];return void 0===t?gt(e):t},hi=[],fi=(e,t,r,i)=>{(e=hi[e])(t=Fr.toValue(t),r=ui(r),null,i)},pi=e=>{var t=hi.length;return hi.push(e),t},mi=(e,t)=>{var r=vt[e];return void 0===r&&wt(t+" has unknown type "+yr(e)),r},_i=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},gi={},yi=(e,t)=>{var r=_i(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=gi[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;l{re("")},bi=()=>{},wi=()=>Date.now(),Si=()=>{V+=1},Ei=()=>{throw Si(),"unwind"},Ai=()=>C.length,xi=()=>Ai();ii=()=>performance.timeOrigin+performance.now();var Ui=()=>f?g("os").cpus().length:navigator.hardwareConcurrency,Bi=e=>{re("OOM")},ki=e=>{C.length,Bi()},Ti={},Ci=()=>l||"./this.program",Di=()=>{if(!Di.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:Ci()};for(var t in Ti)void 0===Ti[t]?delete e[t]:e[t]=Ti[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Di.strings=r}return Di.strings},Pi=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);T[t>>0]=0},Fi=function(e,t){if(p)return oi(5,1,e,t);var r=0;return Di().forEach(((i,n)=>{var s=t+r;I[e+4*n>>2]=s,Pi(i,s),r+=i.length+1})),0},Ii=function(e,t){if(p)return oi(6,1,e,t);var r=Di();I[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),I[t>>2]=i,0};function Li(e){if(p)return oi(7,1,e);try{var t=He.getStreamFromFD(e);return Oe.close(t),0}catch(e){if(void 0===Oe||"ErrnoError"!==e.name)throw e;return e.errno}}function Mi(e,t){if(p)return oi(8,1,e,t);try{var r=He.getStreamFromFD(e),i=r.tty?2:Oe.isDir(r.mode)?3:Oe.isLink(r.mode)?7:4;return T[t>>0]=i,D[t+2>>1]=0,se=[0,(ne=0,+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[t+8>>2]=se[0],F[t+12>>2]=se[1],se=[0,(ne=0,+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[t+16>>2]=se[0],F[t+20>>2]=se[1],0}catch(e){if(void 0===Oe||"ErrnoError"!==e.name)throw e;return e.errno}}var Ri=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=I[t+4>>2];t+=8;var d=Oe.read(e,T,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Oe||"ErrnoError"!==e.name)throw e;return e.errno}}var Ni=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN;function $i(e,t,r,i,n){if(p)return oi(10,1,e,t,r,i,n);var s=Ni(t,r);try{if(isNaN(s))return 61;var o=He.getStreamFromFD(e);return Oe.llseek(o,s,i),se=[o.position>>>0,(ne=o.position,+Math.abs(ne)>=1?ne>0?+Math.floor(ne/4294967296)>>>0:~~+Math.ceil((ne-+(~~ne>>>0))/4294967296)>>>0:0)],F[n>>2]=se[0],F[n+4>>2]=se[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Oe||"ErrnoError"!==e.name)throw e;return e.errno}}var Oi=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=I[t+4>>2];t+=8;var d=Oe.write(e,T,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Gi(e,t,r,i){if(p)return oi(11,1,e,t,r,i);try{var n=He.getStreamFromFD(e),s=Oi(n,t,r);return I[i>>2]=s,0}catch(e){if(void 0===Oe||"ErrnoError"!==e.name)throw e;return e.errno}}Ye.init();var Hi=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Oe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Vi=365,Wi=146;Object.defineProperties(Hi.prototype,{read:{get:function(){return(this.mode&Vi)===Vi},set:function(e){e?this.mode|=Vi:this.mode&=~Vi}},write:{get:function(){return(this.mode&Wi)===Wi},set:function(e){e?this.mode|=Wi:this.mode&=~Wi}},isFolder:{get:function(){return Oe.isDir(this.mode)}},isDevice:{get:function(){return Oe.isChrdev(this.mode)}}}),Oe.FSNode=Hi,Oe.createPreloadedFile=ze,Oe.staticInit(),_t(),ft=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},pt=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Kt(),Gt(),lr(),ur=n.UnboundTypeError=gr(Error,"UnboundTypeError"),Br(),Pr();var ji=[Ve,Ze,at,ct,ut,Fi,Ii,Li,Mi,zi,$i,Gi],qi={t:nt,H:st,l:ot,C:dt,O:ct,F:ut,w:mt,r:kt,E:br,v:xr,f:Ur,P:Lr,q:zr,d:$r,c:Or,p:Hr,i:Zr,s:Jr,y:ni,D:di,G:ti,M:li,h:fi,k:Cr,j:yi,b:vi,m:bi,g:wi,L:Ei,z:xi,e:ii,A:Ui,x:ki,J:Fi,K:Ii,B:je,o:Li,I:Mi,N:zi,u:$i,n:Gi,a:x||n.wasmMemory},Yi=fe(),Ki=e=>(Ki=Yi.R)(e),Xi=e=>(Xi=Yi.S)(e),Zi=()=>(Zi=Yi.U)();n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=Yi.V)();var Ji=n._pthread_self=()=>(Ji=n._pthread_self=Yi.W)(),Qi=e=>(Qi=Yi.X)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=Yi.Y)();var en=n.__emscripten_thread_init=(e,t,r,i,s,o)=>(en=n.__emscripten_thread_init=Yi.Z)(e,t,r,i,s,o);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=Yi._)();var tn,rn=(e,t,r,i)=>(rn=Yi.$)(e,t,r,i),nn=e=>(nn=Yi.aa)(e),sn=n.__emscripten_thread_exit=e=>(sn=n.__emscripten_thread_exit=Yi.ba)(e),on=n.__emscripten_check_mailbox=()=>(on=n.__emscripten_check_mailbox=Yi.ca)(),an=(e,t)=>(an=Yi.da)(e,t),dn=()=>(dn=Yi.ea)(),ln=e=>(ln=Yi.fa)(e),cn=e=>(cn=Yi.ga)(e),un=e=>(un=Yi.ha)(e);function hn(){if(!(J>0)){if(p)return t(n),q(),void startWorker(n);j(),J>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){tn||(tn=!0,n.calledRun=!0,R||(q(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),Y()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=Yi.ia)(e,t,r,i,s),n._ff_h264_cabac_tables=111845,n.keepRuntimeAlive=W,n.wasmMemory=x,n.ExitStatus=pe,n.PThread=Ye,Q=function e(){tn||hn(),tn||(Q=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return hn(),e.ready}),o=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href;return async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var r,i,n;(n=t).ready=new Promise(((e,t)=>{r=e,i=t})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var y,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,x,U,B,k,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=x=new Uint16Array(e),n.HEAP32=U=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=k=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var F=[],I=[],L=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(I)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(L)}function N(e){F.unshift(e)}function $(e){I.unshift(e)}function O(e){L.unshift(e)}var G=0,H=null;function V(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function W(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ti};function t(e,t){return ri=e.exports,v=ri.D,P(),Ft=ri.G,$(ri.E),W(),ri}if(V(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(di(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(U[ni()>>2]=e,e),de={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ue.resolve(e).substr(1),t=ue.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o);if(a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n};function ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=Te.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&V()},Ee=(e,t,r,i,n,s)=>Te.createDataFile(e,t,r,i,n,s),Ae=n.preloadPlugins||[],xe=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},Ue=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),W()}xe(r,c,u,(()=>{o&&o(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{Te.lookupNode(e,t);return 20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount(e,t,r){var i,n="/"===r,s=!r;if(n&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=Te.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=Te.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;"string"==typeof e?r=Te.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,n){if(i<0||n<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write(e,t,r,i,n,s){if(i<0||n<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ge(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var d=Te.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=Te.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],B[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Le,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Le(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},it=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=nt[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=48,bt=57,wt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=vt&&t<=bt?`_${e}`:e};function St(e,t){return{[e=wt(e)]:function(){return t.apply(this,arguments)}}[e]}var Et=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},At=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),Et(n,e,e),n.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function xt(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,nr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,It,Lt=(e,t,r)=>{n.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=St(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Ht=e=>{var t=si(e),r=Ne(t);return ii(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=wt(c);At(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=St(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Le("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Le(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Le(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new xt(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},Lt(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Yt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=St(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),We([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Le(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,o)},We([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),s=Ot(n,s),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(Et(c,t,i),c[t].overloadTable[r-2]=n),We([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Jt(){Object.assign(Qt.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Qt(){this.allocated=[void 0],this.freelist=[]}var er=new Qt,tr=e=>{e>=er.reserved&&0==--er.get(e).refcount&&er.free(e)},rr=()=>{for(var e=0,t=er.reserved;t{er.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),er.reserved=er.allocated.length,n.count_emval_handles=rr},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),er.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return er.allocate({refcount:1,value:e})}}};function sr(e){return this.fromWireType(U[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return tr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction:null})},ar=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},dr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},lr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:dr(t,r),destructorFunction:null})},cr=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>x[e>>1];case 4:return r?e=>U[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ur=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:cr(t,r,0!==i),destructorFunction:null})},hr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},fr=(e,t,r)=>_e(e,E,t,r),pr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==E[a]){var d=Ce(s,a-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=a+1}}else{var l=new Array(i);for(o=0;o>2]=i,r&&n)fr(t,o,i+1);else if(n)for(var a=0;a255&&(ii(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&mr)return mr.decode(E.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=A[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s},gr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return A[t>>1]=0,t-i},yr=e=>2*e.length,vr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},br=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s);if(U[t>>2]=o,(t+=4)+4>n)break}return U[t>>2]=0,t-i},wr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Sr=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=_r,n=gr,o=yr,s=()=>x,a=1):4===t&&(i=vr,n=br,o=wr,s=()=>B,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ii(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=ai(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(ii,d),d},argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction(e){ii(e)}})},Er=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ar={},xr=e=>{var t=Ar[e];return void 0===t?Ne(e):t},Ur=[],Br=(e,t,r,i)=>{(e=Ur[e])(t=nr.toValue(t),r=xr(r),null,i)},kr=e=>{var t=Ur.length;return Ur.push(e),t},Tr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Cr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Dr={},Pr=(e,t)=>{var r=Cr(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Dr[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;lt+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Ir=()=>{j("")},Lr=()=>Date.now(),Mr=(e,t,r)=>E.copyWithin(e,t,t+r),Rr=e=>{j("OOM")},zr=e=>{E.length,Rr()},Nr={},$r=()=>l||"./this.program",Or=()=>{if(!Or.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:$r()};for(var t in Nr)void 0===Nr[t]?delete e[t]:e[t]=Nr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Or.strings=r}return Or.strings},Gr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Hr=(e,t)=>{var r=0;return Or().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Gr(i,s),r+=i.length+1})),0},Vr=(e,t)=>{var r=Or();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function Wr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function jr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var qr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Kr(e,t,r,i,n){var s=Fr(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[n>>2]=K[0],U[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Xr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Zr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Xr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Qr=365,ei=146;Object.defineProperties(Jr.prototype,{read:{get:function(){return(this.mode&Qr)===Qr},set:function(e){e?this.mode|=Qr:this.mode&=~Qr}},write:{get:function(){return(this.mode&ei)===ei},set:function(e){e?this.mode|=ei:this.mode&=~ei}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=Jr,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Le=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Jt(),ir();var ti={p:oe,B:Pe,v:Fe,t:Re,n:Xe,r:Wt,q:Xt,f:Zt,C:or,m:lr,c:ur,b:hr,l:pr,h:Sr,o:Er,d:Br,i:tr,e:Pr,a:Ir,g:Lr,z:Mr,u:zr,x:Hr,y:Vr,k:Wr,w:jr,A:Yr,s:Kr,j:Zr},ri=ie(),ii=e=>(ii=ri.F)(e),ni=()=>(ni=ri.H)(),si=e=>(si=ri.I)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=ri.J)();var oi,ai=e=>(ai=ri.K)(e),di=e=>(di=ri.M)(e);function li(){function e(){oi||(oi=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,o,a,d)=>(n.dynCall_viiijj=ri.N)(e,t,r,i,s,o,a,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=ri.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=ri.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=ri.Q)(e,t,r,i,s),H=function e(){oi||li(),oi||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return li(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function c(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var u,h=function(e,t,r,i,n,s,o){var a=1/(t-r),d=1/(i-n),l=1/(s-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(n+i)*d,e[14]=(o+s)*l,e[15]=1,e};function f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),o=p(),d=p(),u=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,o,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,Vt=Gt;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===Ut}function qt(e){return e[0]>>4===Ne}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Yt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=Ht[a],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Ot(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=Ht[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=nr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=s,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function or(e){return null==e}function ar(e){return!or(e)}function dr(e){return"function"==typeof e}function lr(e){let t=null,r=31&e[0];return r!==He&&r!==Ve||(t=Re),t||(r=(126&e[0])>>1,r!==nt&&r!==ot&&r!==dt||(t=ze)),t}function cr(){return"undefined"!=typeof WritableStream}function ur(e){e.close()}function hr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function fr(e){return e.ok&&e.status>=200&&e.status<=299}function pr(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(B)}function mr(e){return e[0]>>4===Bt&&e[1]===Ut}function _r(e){return!0===e||"true"===e}function gr(e){return!0!==e&&"true"!==e}function yr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}function vr(e,t){const r=Qt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Je||r===et||r===rt)||gr(t)&&r===We)&&(i=!0)})),i}var br=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}d((i=i.apply(e,t||[])).next())}))};const wr=Symbol(32),Sr=Symbol(16),Er=Symbol(8);class Ar{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return br(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(wr)}readU16(){return this.read(Sr)}readU8(){return this.read(Er)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===wr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Sr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Er){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Ar.U32=wr,Ar.U16=Sr,Ar.U8=Er;class xr{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=Ur._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Ur.getProfileString(i),o=Ur.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(a=r.readUEG(),3===a&&r.readBits(1),a<=3&&(d=l[a]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,x=2*e,S=A/x}}let U=1;1===b&&1===w||(U=b/w);let B=0,k=0;if(0===a)B=1,k=2-m;else{B=3===a?1:2,k=(1===a?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*B,C-=(y+v)*k;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Ur.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Ur._ebsp2rbsp(e),n=new Ot(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=Ur.getProfileString(s),d=Ur.getLevelString(o),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);U=n.readBool(),B=t,k=2*e,x=B/k}}let T=1;1===E&&1===A||(T=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),F=16*(g+1)*(2-y);P-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(P*T);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:o,profile_string:a,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Ur.getChromaFormatString(c),frame_rate:{fixed:U,fps:x,fps_den:k,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function Tr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Cr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Ur.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e){return 31&e[0]}function Ir(e){return e===Ye}function Lr(e){return!function(e){return e===He||e===Ve}(e)&&!Ir(e)}function Mr(e){return e===We}function Rr(e){if(0===e.length)return!1;const t=Fr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Ze||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Nr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const $r=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Or=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Gr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,o=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=$r(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),o=(e=>{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,o=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),o+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let s=!1,o=1;n||(s=r.readBool());let a=!1;if(s?r.readSEG():a=r.readBool(),a||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ot,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|dt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e){return(126&e[0])>>1}function Xr(e){return e===ct}function Zr(e){return!function(e){return e>=32&&e<=40}(e)}function Jr(e){return e>=16&&e<=21}function Qr(e){if(0===e.length)return!1;const t=Kr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ti{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ri(e){return parseInt(e)===e}function ii(e){if(!ri(e.length))return!1;for(var t=0;t255)return!1;return!0}function ni(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ii(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ri(e.length)&&ii(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function oi(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var ai,di={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},li=(ai="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ai[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},ui=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],fi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],pi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],mi=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],_i=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],gi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],yi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],vi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],bi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],wi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Si=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ei=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ai=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],xi=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Ui(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var o,a=0,d=n;d>16&255]<<24^hi[o>>8&255]<<16^hi[255&o]<<8^hi[o>>24&255]^ui[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^hi[o>>16&255]<<16^hi[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ei[o>>16&255]^Ai[o>>8&255]^xi[255&o]},Bi.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^mi[i[(n+1)%4]>>16&255]^_i[i[(n+2)%4]>>8&255]^gi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=si(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(hi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(hi[255&i[(n+3)%4]]^o);return a},Bi.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^vi[i[(n+3)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=si(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(fi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(fi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(fi[255&i[(n+1)%4]]^o);return a};var ki=function(e){if(!(this instanceof ki))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Bi(e)};ki.prototype.encrypt=function(e){if((e=ni(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Pi.prototype.setBytes=function(e){if(16!=(e=ni(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fi=function(e,t){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Bi(e)};Fi.prototype.encrypt=function(e){for(var t=ni(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],x=e[t+14],U=e[t+15],B=s[0],k=s[1],T=s[2],C=s[3];B=l(B,k,T,C,o,7,a[0]),C=l(C,B,k,T,d,12,a[1]),T=l(T,C,B,k,f,17,a[2]),k=l(k,T,C,B,p,22,a[3]),B=l(B,k,T,C,m,7,a[4]),C=l(C,B,k,T,_,12,a[5]),T=l(T,C,B,k,g,17,a[6]),k=l(k,T,C,B,y,22,a[7]),B=l(B,k,T,C,v,7,a[8]),C=l(C,B,k,T,b,12,a[9]),T=l(T,C,B,k,w,17,a[10]),k=l(k,T,C,B,S,22,a[11]),B=l(B,k,T,C,E,7,a[12]),C=l(C,B,k,T,A,12,a[13]),T=l(T,C,B,k,x,17,a[14]),B=c(B,k=l(k,T,C,B,U,22,a[15]),T,C,d,5,a[16]),C=c(C,B,k,T,g,9,a[17]),T=c(T,C,B,k,S,14,a[18]),k=c(k,T,C,B,o,20,a[19]),B=c(B,k,T,C,_,5,a[20]),C=c(C,B,k,T,w,9,a[21]),T=c(T,C,B,k,U,14,a[22]),k=c(k,T,C,B,m,20,a[23]),B=c(B,k,T,C,b,5,a[24]),C=c(C,B,k,T,x,9,a[25]),T=c(T,C,B,k,p,14,a[26]),k=c(k,T,C,B,v,20,a[27]),B=c(B,k,T,C,A,5,a[28]),C=c(C,B,k,T,f,9,a[29]),T=c(T,C,B,k,y,14,a[30]),B=u(B,k=c(k,T,C,B,E,20,a[31]),T,C,_,4,a[32]),C=u(C,B,k,T,v,11,a[33]),T=u(T,C,B,k,S,16,a[34]),k=u(k,T,C,B,x,23,a[35]),B=u(B,k,T,C,d,4,a[36]),C=u(C,B,k,T,m,11,a[37]),T=u(T,C,B,k,y,16,a[38]),k=u(k,T,C,B,w,23,a[39]),B=u(B,k,T,C,A,4,a[40]),C=u(C,B,k,T,o,11,a[41]),T=u(T,C,B,k,p,16,a[42]),k=u(k,T,C,B,g,23,a[43]),B=u(B,k,T,C,b,4,a[44]),C=u(C,B,k,T,E,11,a[45]),T=u(T,C,B,k,U,16,a[46]),B=h(B,k=u(k,T,C,B,f,23,a[47]),T,C,o,6,a[48]),C=h(C,B,k,T,y,10,a[49]),T=h(T,C,B,k,x,15,a[50]),k=h(k,T,C,B,_,21,a[51]),B=h(B,k,T,C,E,6,a[52]),C=h(C,B,k,T,p,10,a[53]),T=h(T,C,B,k,w,15,a[54]),k=h(k,T,C,B,d,21,a[55]),B=h(B,k,T,C,v,6,a[56]),C=h(C,B,k,T,U,10,a[57]),T=h(T,C,B,k,g,15,a[58]),k=h(k,T,C,B,A,21,a[59]),B=h(B,k,T,C,m,6,a[60]),C=h(C,B,k,T,S,10,a[61]),T=h(T,C,B,k,f,15,a[62]),k=h(k,T,C,B,b,21,a[63]),s[0]=s[0]+B|0,s[1]=s[1]+k|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function h(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Li).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[f]+l[f];h=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=Li).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,x=u.high,U=u.low,B=h.high,k=h.low,T=f,C=p,D=m,P=_,F=g,I=y,L=v,M=b,R=w,z=S,N=E,$=A,O=x,G=U,H=B,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],oe=se.high,ae=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&O,fe=z&$^~z&G,pe=T&D^T&F^D&F,me=C&P^C&I^P&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=O,V=G,O=N,G=$,N=R,$=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=F,M=I,F=D,I=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

          >>0?1:0),y=s.low=y+I,s.high=g+F+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+L+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),U=u.low=U+G,u.high=x+O+(U>>>0>>0?1:0),k=h.low=k+V,h.high=B+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Li).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(k=r[n]).high^=o,k.low^=s}for(var a=0;a<24;a++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var x=u[l[w]];x.high=f,x.low=p}var U=u[0],B=r[0];for(U.high=B.high,U.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var P=c[a];k.high^=P.high,k.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,f,b,w,S,E,A,x,U,B,k=this._hash.words,T=u.words,C=h.words,D=a.words,P=d.words,F=l.words,I=c.words;for(S=s=k[0],E=o=k[1],A=f=k[2],x=b=k[3],U=w=k[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(o,f,b)+T[0]:r<32?m(o,f,b)+T[1]:r<48?_(o,f,b)+T[2]:r<64?g(o,f,b)+T[3]:y(o,f,b)+T[4],B=(B=v(B|=0,F[r]))+w|0,s=w,w=b,b=v(f,10),f=o,o=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,x)+C[0]:r<32?g(E,A,x)+C[1]:r<48?_(E,A,x)+C[2]:r<64?m(E,A,x)+C[3]:p(E,A,x)+C[4],B=(B=v(B|=0,I[r]))+U|0,S=U,U=x,x=v(A,10),A=E,E=B;B=k[1]+f+x|0,k[1]=k[2]+b+U|0,k[2]=k[3]+w+S|0,k[3]=k[4]+s+E|0,k[4]=k[0]+o+A|0,k[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,n;e.exports=(i=(r=Li).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=Li).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=Li).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=Li).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^o[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^o[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[f++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[f++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[f++],y=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=e.slice(s+4+2,s+4+o);let n=new Ii.ModeOfOperation.ctr(t,new Ii.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function zi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Ii.ModeOfOperation.ctr(t,new Ii.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}$t((function(e,t){e.exports=Li}));var Ni=$t((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:a}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)o.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=o>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&o)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,o.nalu_type=63&n;var a=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),o.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:o.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(o.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)o.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),o.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var o="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a=0,d=0;for(e=0;e<=i;++e)for(a=a<<8|n[e],d+=8;d>=5;){r+=o[a>>d-5&31],a&=(1<<(d-=5))-1}d&&(r+=o[31&(a<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(o.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,o={},a=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(o.hasMoov=!0,o.duration=this.moov.mvhd.duration,o.timescale=this.moov.mvhd.timescale,o.isFragmented=null!=this.moov.mvex,o.isFragmented&&this.moov.mvex.mehd&&(o.fragment_duration=this.moov.mvex.mehd.fragment_duration),o.isProgressive=this.isProgressive,o.hasIOD=null!=this.moov.iods,o.brands=[],o.brands.push(this.ftyp.major_brand),o.brands=o.brands.concat(this.ftyp.compatible_brands),o.created=new Date(a+1e3*this.moov.mvhd.creation_time),o.modified=new Date(a+1e3*this.moov.mvhd.modification_time),o.tracks=[],o.audioTracks=[],o.videoTracks=[],o.subtitleTracks=[],o.metadataTracks=[],o.hintTracks=[],o.otherTracks=[],e=0;e0?o.mime+='video/mp4; codecs="':o.audioTracks&&o.audioTracks.length>0?o.mime+='audio/mp4; codecs="':o.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){o=d;break}switch(o){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new a(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var o=this.createSingleSampleMoof(n);return this.addBox(o),o.computeSize(),o.trafs[0].truns[0].data_offset=o.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[o].grouping_type+"/0",(a=new l(n[o].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=a))}else for(o=0;o=2&&(d=i[o].grouping_type+"/0",a=new l(i[o].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=a))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var o;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)o=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,o&&s>=0&&(t.sample_groups[n].description=o.entries[s])):o&&o.version>=2&&o.default_group_description_index>0&&(t.sample_groups[n].description=o.entries[o.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),U.cts=e.samples[t].dts+o.sample_offsets[S]):U.cts=U.dts,a?(t==a.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+x==t+1&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+x==t&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function $i(e){return e.reduce(((e,t)=>256*e+t))}function Oi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Ni.Log,Ni.MP4BoxStream,Ni.DataStream,Ni.MultiBufferStream,Ni.MPEG4DescriptorParser,Ni.BoxParser,Ni.XMLSubtitlein4Parser,Ni.Textin4Parser,Ni.ISOFile,Ni.createFile;class Gi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Oi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}function Hi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=nn(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=er(Hi(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const an={init:0,findFirstStartCode:1,findSecondStartCode:2};class dn extends class{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=an.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==an.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=an.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==an.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=an.findFirstStartCode}}}}function ln(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=ln(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class fn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{dr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class pn{static init(){pn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in pn.types)pn.types.hasOwnProperty(e)&&(pn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=pn.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return pn.box(pn.types.trak,pn.tkhd(e),pn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return pn.box(pn.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return pn.box(pn.types.mdia,pn.mdhd(e),pn.hdlr(e),pn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return pn.box(pn.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?pn.constants.HDLR_AUDIO:pn.constants.HDLR_VIDEO,pn.box(pn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?pn.box(pn.types.smhd,pn.constants.SMHD):pn.box(pn.types.vmhd,pn.constants.VMHD),pn.box(pn.types.minf,t,pn.dinf(),pn.stbl(e))}static dinf(){return pn.box(pn.types.dinf,pn.box(pn.types.dref,pn.constants.DREF))}static stbl(e){return pn.box(pn.types.stbl,pn.stsd(e),pn.box(pn.types.stts,pn.constants.STTS),pn.box(pn.types.stsc,pn.constants.STSC),pn.box(pn.types.stsz,pn.constants.STSZ),pn.box(pn.types.stco,pn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp3(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp4a(e)):"avc"===e.videoType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.avc1(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types.mp4a,i,pn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return pn.box(pn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.avc1,n,pn.box(pn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.hvc1,n,pn.box(pn.types.hvcC,t))}static mvex(e){return pn.box(pn.types.mvex,pn.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return pn.box(pn.types.trex,r)}static moof(e,t){return pn.box(pn.types.moof,pn.mfhd(e.sequenceNumber),pn.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return pn.box(pn.types.mfhd,t)}static traf(e,t){let r=e.id,i=pn.box(pn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=pn.box(pn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=pn.sdtp(e),o=pn.trun(e,s.byteLength+16+16+8+16+8+8);return pn.box(pn.types.traf,i,n,o,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,pn.box(pn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,o=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,o>>>24&255,o>>>16&255,o>>>8&255,255&o],12),pn.box(pn.types.trun,r)}static mdat(e){return pn.box(pn.types.mdat,e)}}pn.init();var mn,_n=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(mn=_n)&&mn.__esModule&&Object.prototype.hasOwnProperty.call(mn,"default")&&mn.default;const gn=[44100,48e3,32e3,0],yn=[22050,24e3,16e3,0],vn=[11025,12e3,8e3,0],bn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],wn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Sn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function En(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=vn[o];break;case 2:d=yn[o];break;case 3:d=gn[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=zn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class On{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Gn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Hn=new Array(214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72),Vn=new Array(2746333894,1453994832,1736282519,2993693404),Wn=new Array(462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257);function jn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Yn(e,t){return t+3>>19)^(i<<23|i>>>9)}function Zn(e,t){var r=new Array(36);r[0]=Yn(t,0),r[1]=Yn(t,4),r[2]=Yn(t,8),r[3]=Yn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^Jn(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function Qn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Kn(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Qn(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()});const ts=[];ts.push(o({printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc"))&&console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){e&&-1!==e.indexOf("not compiled with thread support, using thread emulation")||console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(ts).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s=null,o=null,a=null,d=null,l=null,c=null,u=!1,h=null,f=null,S=!1,E=!1,B=!!_r(r),we=0,Se=0,We=!1,Ze=null,Je=null,et=null,rt=[],ct=null,Et=null,At=0,Bt=0,Nt=null,$t=null,Ot=0,Gt=0,Ht=!1,Yt=!1,Jt=!1,nr=null,br=null,wr=!1,Sr=!0,Er=()=>{const e=pr();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,isSm4CryptoH265V2:e.isSm4CryptoH265V2,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){s.decoder=new VideoDecoder({output:function(e){if(dr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ni.delay,ts:0},[r]),ur(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ni.delay,ts:0},[t]),ur(e)}},error:function(e){ni.debug.error("worker","VideoDecoder error",e)}})},destroy(){s.reset(),s.decoder&&"closed"!==s.decoder.state&&(s.decoder.close(),s.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ft:pt});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const o=e.slice(5);t===Ie?(n=kr(o),i={codec:n.codec,description:o}):t===Le&&(n=Vr(o),i={codec:n.codec,description:o}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),s.isEmitInfo||(ni.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:n.codecWidth,h:n.codecHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d"));try{s.decoder.configure(i),s.hasInit=!0}catch(e){ni.debug.error("worker","VideoDecoder configure error",e.code,e),e.toString()}}else ni.debug.warn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let Br=function(){if(wr=!0,ni.fetchStatus!==Ct||gr(ni._opt.isChrome)){if(o)try{o.abort(),o=null}catch(e){ni.debug.log("worker","abort catch",e)}}else o=null,ni.debug.log("worker",`abort() and not abortController.abort() _status is ${ni.fetchStatus} and _isChrome is ${ni._opt.isChrome}`)},$r={init(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},destroy(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ni._opt.nakedFlowDemuxUseNew){const e=$r.extractNALu$3(t);$r.handleVideoFrames(e)}else $r.extractNALu$2(t)},getNaluDts(){const e=ni._opt.nakedFlowFps;let t=$r.localDts;return $r.localDts=$r.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ni._opt.sampleRate,t=ni._opt.audioBufferSize;return $r.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,o=[];for(;i1)for(let e=0;e{const t=Fr(e);t===Ve||t===He?$r.handleVideoH264Nalu(e):Lr(t)&&i.push(e)})),1===i.length)$r.handleVideoH264Nalu(i[0]);else if(Rr(i)){const e=Fr(i[0]),t=Mr(e);$r.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH264Nalu(e)}))}else if($r.streamType===ze)if(ni._opt.nakedFlowH265DemuxUseNew){const t=$r.handleAddNaluStartCode(e),r=$r.extractNALu(t);if(0===r.length)return void ni.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Kr(e);t===dt||t===ot||t===nt?$r.handleVideoH265Nalu(e):Zr(t)&&i.push(e)})),1===i.length)$r.handleVideoH265Nalu(i[0]);else if(Qr(i)){const e=Kr(i[0]),t=Jr(e);$r.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH265Nalu(e)}))}else Kr(e)===dt?$r.extractH265PPS(e):$r.handleVideoH265Nalu(e)},extractH264PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Ir(Fr(e))?$r.extractH264SEI(e):$r.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Xr(Kr(e))?$r.extractH265SEI(e):$r.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Fr(e);switch(t){case He:$r.sps=e;break;case Ve:$r.pps=e}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=Tr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(Lr(t)){const r=Mr(t),i=$r.getNaluDts(),n=Dr(e,r);$r.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if($r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=Tr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}},handleVideoH264NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Pr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Kr(e);switch(t){case nt:$r.vps=e;break;case ot:$r.sps=e;break;case dt:$r.pps=e}if($r.isSendSeqHeader){if($r.vps&&$r.sps&&$r.pps){const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}if(Zr(t)){const r=Jr(t),i=$r.getNaluDts(),n=qr(e,r);$r.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if($r.vps&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}},handleVideoH265NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Yr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ni.calcNetworkDelay(t.ts),t.isIFrame&&ni.calcIframeIntervalTimestamp(t.ts),ni.decode(e,t)},handleVideoFrames(e){if(!$r.streamVideoType)for(let t of e)if($r.streamVideoType=lr(t),$r.streamVideoType)break;$r.streamVideoType&&($r.streamVideoType===Re?$r.handleVideoH264Frames(e):this.streamVideoType===ze&&$r.handleVideoH265Frames(e))},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Fr(o);let a=!1,d=e===qe;e!==je&&e!==qe||(s=$r.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ve:$r.pps=e;break;case He:$r.sps=e;break;case Ye:n=e}if(Lr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=Cr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=Cr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(i){const e=$r.getNaluDts(),t=Pr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:n,ts:e},[n.buffer]),$r.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Kr(o);let a=!1,d=Jr(e);Zr(e)&&(s=this.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case dt:$r.pps=e;break;case ot:$r.sps=e;break;case nt:$r.vps=e}if(Zr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps&&$r.vps){$r.isSendSeqHeader=!0;const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps&&$r.vps){const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if(i){const e=$r.getNaluDts(),t=Yr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:null,ts:e},[null.buffer]),$r.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{$r.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new On(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new On(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Or={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Or.mp4Box=Ni.createFile(),Or.mp4Box.onReady=Or.onReady,Or.mp4Box.onError=Or.onError,Or.mp4Box.onSamples=Or.onSamples},initTransportDescarmber(){Or.transportDescarmber=new Gi},_getSeqHeader(e){const t=Or.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Ni.DataStream(void 0,0,Ni.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Or.isHevc=!0,ni.isHevc=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ni.debug.log(Or.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Or.videoTrackId=t.id;const e=Or._getSeqHeader(t);e&&(ni.debug.log(Or.LOG_NAME,"seqHeader"),ni.decodeVideo(e,0,!0,0)),Or.mp4Box.setExtractionOptions(t.id)}if(r&&ni._opt.hasAudio){Or.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Or.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ni.debug.log(Or.LOG_NAME,"aacADTSHeader"),ni.decodeAudio(n,0)}Or.mp4Box.start()},onError(e){ni.debug.error(Or.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Or.videoTrackId){for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&ni.calcIframeIntervalTimestamp(i);let n=null;n=Or.isHevc?Yr(t,r):Pr(t,r),ni.decode(n,{type:ae,ts:i,isIFrame:r,cts:0})}Or.mp4Box.removeUsedSamples(e)}else if(e===Or.audioTrackId){if(ni._opt.hasAudio){for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),ni.decode(i,{type:oe,ts:r,isIFrame:!1,cts:0})}Or.mp4Box.removeUsedSamples(e)}}else ni.debug.warn(Or.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Or.transportDescarmber&&(t=Or.transportDescarmber.transport(t)),t.buffer.fileStart=Or.offset,Or.offset+=t.byteLength,Or.mp4Box.appendBuffer(t.buffer)},destroy(){Or.mp4Box&&(Or.mp4Box.stop(),Or.mp4Box.flush(),Or.mp4Box.destroy(),Or.mp4Box=null),Or.transportDescarmber&&(Or.transportDescarmber.destroy(),Or.transportDescarmber=null),Or.offset=0,Or.videoTrackId=null,Or.audioTrackId=null,Or.isHevc=!1}},Wr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Wr.extractNALu(t)},destroy(){Wr.lastBuffer=new Uint8Array(0),Wr.parsedOffset=0,Wr.firstStartCodeOffset=0,Wr.secondStartCodeOffset=0,Wr.state="init",Wr.hasInitVideoCodec=!1,Wr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ni.debug.warn(Wr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Wr.lastBuffer.length+e.length);for(t.set(Wr.lastBuffer,0),t.set(new Uint8Array(e),Wr.lastBuffer.length),Wr.lastBuffer=t;;){if("init"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findFirstStartCode",Wr.firstStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findSecondStartCode",Wr.secondStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Wr.state){if(!(Wr.lastBuffer.length-Wr.parsedOffset>0))break;{let e,t,r=192&Wr.lastBuffer[Wr.parsedOffset];e=0==r?Wr.secondStartCodeOffset-14:Wr.secondStartCodeOffset;let i=0==(192&Wr.lastBuffer[Wr.firstStartCodeOffset+4]);if(i){if(Wr.firstStartCodeOffset-14<0)return void ni.debug.warn(Wr.LOG_NAME,"firstStartCodeOffset -14 is",Wr.firstStartCodeOffset-14);Wr.hasInitVideoCodec||(Wr.hasInitVideoCodec=!0,ni.debug.log(Wr.LOG_NAME,"setCodec"),oi.setCodec(Me,"")),t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset-14,e)}else t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset,e);let n=Wr.getNaluDts();Wr.hasInitVideoCodec?(postMessage({cmd:O,type:Ue,value:t.byteLength}),postMessage({cmd:O,type:Be,value:n}),we=n,oi.decode(t,i?1:0,n)):ni.debug.warn(Wr.LOG_NAME,"has not init video codec"),Wr.lastBuffer=Wr.lastBuffer.subarray(e),Wr.firstStartCodeOffset=0==r?14:0,Wr.parsedOffset=Wr.firstStartCodeOffset+4,Wr.state="findFirstStartCode"}}}},getNaluDts(){let e=Wr.localDts;return Wr.localDts=Wr.localDts+40,e}},ri={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Nn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){ri.media_info_=null,ri.pes_slice_queues_=null,ri.section_slice_queues_=null,ri.video_metadata_=null,ri.audio_metadata_=null,ri.aac_last_incomplete_data_=null,ri.video_track_=null,ri.audio_track_=null,ri._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){ri._remainingPacketData&&(e=hn(ri._remainingPacketData,e),ri._remainingPacketData=null);let t=e.buffer;const r=ri.parseChunks(t);r?ri._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!ri.pmt_||ri.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);ri.last_pcr_=e}if(2==o||5+e===188){t+=188,204===ri.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===ri.current_pmt_pid_||null!=ri.pmt_&&ri.pmt_.pid_stream_type[s]===Pn){let r=188-c;ri.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=ri.pmt_&&null!=ri.pmt_.pid_stream_type[s]){let r=188-c,i=ri.pmt_.pid_stream_type[s];s!==ri.pmt_.common_pids.h264&&s!==ri.pmt_.common_pids.h265&&s!==ri.pmt_.common_pids.adts_aac&&s!==ri.pmt_.common_pids.loas_aac&&s!==ri.pmt_.common_pids.ac3&&s!==ri.pmt_.common_pids.eac3&&s!==ri.pmt_.common_pids.opus&&s!==ri.pmt_.common_pids.mp3&&!0!==ri.pmt_.pes_private_data_pids[s]&&!0!==ri.pmt_.timed_id3_pids[s]&&!0!==ri.pmt_.synchronous_klv_pids[s]&&!0!==ri.pmt_.asynchronous_klv_pids[s]||ri.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===ri.tsPacketSize&&(t+=16)}return ri.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=ri.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):ri.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&ri.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):s.total_length>=s.expected_length&&ri.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ni.debug.warn(ri.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=ri.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?ri.emitPESSlices(e,i):ri.clearSlices(e,i)),ri.pes_slice_queues_[i.pid]=new Ln,ri.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==ri.pes_slice_queues_[i.pid])return;let a=ri.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?ri.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ni.debug.warn(ri.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case An:case xn:ri.parseMP3Payload(c,r);break;case Un:ri.pmt_.common_pids.opus===e.pid||ri.pmt_.common_pids.ac3===e.pid||ri.pmt_.common_pids.eac3===e.pid||(ri.pmt_.asynchronous_klv_pids[e.pid]?ri.parseAsynchronousKLVMetadataPayload(c,e.pid,i):ri.pmt_.smpte2038_pids[e.pid]?ri.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):ri.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Bn:ri.parseADTSAACPayload(c,r);break;case kn:ri.parseLOASAACPayload(c,r);break;case Tn:case Cn:break;case Dn:ri.pmt_.timed_id3_pids[e.pid]?ri.parseTimedID3MetadataPayload(c,r,s,e.pid,i):ri.pmt_.synchronous_klv_pids[e.pid]&&ri.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Fn:ri.parseH264Payload(c,r,s,e.random_access_indicator);break;case In:ri.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Un){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);ri.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ni.debug.error(ri.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(ri.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=ri.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==ri.pat_&&ni.debug.log(ri.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),ri.pat_=o,ri.current_program_=d,ri.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ni.debug.error(ri.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=ri._initPmt(),r.program_number=n,r.version_number=s,ri.program_pmt_map_[n]=r;else if(r=ri.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iri.has_video_&&ri.has_audio_?ri.video_init_segment_dispatched_&&ri.audio_init_segment_dispatched_:ri.has_video_&&!ri.has_audio_?ri.video_init_segment_dispatched_:!(ri.has_video_||!ri.has_audio_)&&ri.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=ri.video_metadata_.details,t={type:"video"};t.id=ri.video_track_.id,t.timescale=1e3,t.duration=ri.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,ri.video_metadata_.vps){ni.isHevc=!0;let e=ri.video_metadata_.vps.data.subarray(4),r=ri.video_metadata_.sps.data.subarray(4),i=ri.video_metadata_.pps.data.subarray(4);t.hvcc=jr({vps:e,sps:r,pps:i}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ni.decodeVideo(t.hvcc,0,!0,0)}else{let e=ri.video_metadata_.sps.data.subarray(4),r=ri.video_metadata_.pps.data.subarray(4);t.avcc=Cr({sps:e,pps:r}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ni.decodeVideo(t.avcc,0,!0,0)}ri.video_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let n=ri.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){ri.isInitSegmentDispatched()&&ri.video_track_.length&&ri._preDoDecode()},dispatchAudioMediaSegment(){ri.isInitSegmentDispatched()&&ri.audio_track_.length&&ri._preDoDecode()},dispatchAudioVideoMediaSegment(){ri.isInitSegmentDispatched()&&(ri.audio_track_.length||ri.video_track_.length)&&ri._preDoDecode()},parseADTSAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Zt(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(or(this.loas_previous_frame)?void 0:this.loas_previous_frame));){ri.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},ri.dispatchAudioInitSegment(h)):ri.detectAudioMetadataChange(h)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/ri.timescale_,dts:t/ri.timescale_,type:oe};ri.audio_track_.samples.push(f),ri.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==ri.audio_metadata_.codec)return ni.debug.log(ri.TAG_NAME,`Audio: Audio Codecs changed from ${ri.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===ri.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==ri.audio_metadata_.audio_object_type)return ni.debug.log(ri.TAG_NAME,`AAC: AudioObjectType changed from ${ri.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==ri.audio_metadata_.sampling_freq_index)return ni.debug.log(ri.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==ri.audio_metadata_.channel_config)return ni.debug.log(ri.TAG_NAME,`AAC: Channel configuration changed from ${ri.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===ri.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==ri.audio_metadata_.sampling_frequency)return ni.debug.log(ri.TAG_NAME,`AC3: Sampling Frequency changed from ${ri.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==ri.audio_metadata_.bit_stream_identification)return ni.debug.log(ri.TAG_NAME,`AC3: Bit Stream Identification changed from ${ri.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==ri.audio_metadata_.bit_stream_mode)return ni.debug.log(ri.TAG_NAME,`AC3: BitStream Mode changed from ${ri.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==ri.audio_metadata_.channel_mode)return ni.debug.log(ri.TAG_NAME,`AC3: Channel Mode changed from ${ri.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==ri.audio_metadata_.low_frequency_effects_channel_on)return ni.debug.log(ri.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${ri.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===ri.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`Opus: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===ri.audio_metadata_.codec){const t=e.data;if(t.object_type!==ri.audio_metadata_.object_type)return ni.debug.log(ri.TAG_NAME,`MP3: AudioObjectType changed from ${ri.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`MP3: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=ri.audio_track_.id,t.timescale=1e3,t.duration=ri.duration_,"aac"===ri.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $n(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ni._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ni.decodeAudio(n,0)}else"ac-3"===ri.audio_metadata_.codec||"ec-3"===ri.audio_metadata_.codec||"opus"===ri.audio_metadata_.codec||"mp3"===ri.audio_metadata_.codec&&(t.audioSampleRate=ri.audio_metadata_.sample_rate,t.channelCount=ri.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==ri.audio_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),ri.audio_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let r=ri.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Rn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/ri.timescale_);s.pts=e}else s.nearest_pts=ri.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/ri.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ni.debug.log(ri.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=ri.audio_last_sample_pts_?Math.floor(ri.audio_last_sample_pts_):null!=ri.last_pcr_?Math.floor(ri.last_pcr_/300/ri.timescale_):void 0,_preDoDecode(){const e=ri.video_track_,t=ri.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?ri._doDecodeVideo({...e,payload:t}):e.type===oe&&ri._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Yr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ni.calcIframeIntervalTimestamp(e.dts);let i=ni.cryptoPayload(r,e.isIFrame);ni.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;_r(ni._opt.m7sCryptoAudio)&&(r=ni.cryptoPayloadAudio(t)),ni.decode(r,{type:oe,ts:e.dts,isIFrame:!1,cts:0})}},ii=null;yr()&&(ii={TAG_NAME:"worker MediaSource",_resetInIt(){ii.isAvc=null,ii.isAAC=null,ii.videoInfo={},ii.videoMeta={},ii.audioMeta={},ii.sourceBuffer=null,ii.audioSourceBuffer=null,ii.hasInit=!1,ii.hasAudioInit=!1,ii.isAudioInitInfo=!1,ii.videoMimeType="",ii.audioMimeType="",ii.cacheTrack={},ii.cacheAudioTrack={},ii.timeInit=!1,ii.sequenceNumber=0,ii.audioSequenceNumber=0,ii.firstRenderTime=null,ii.firstAudioTime=null,ii.mediaSourceAppendBufferFull=!1,ii.mediaSourceAppendBufferError=!1,ii.mediaSourceAddSourceBufferError=!1,ii.mediaSourceBufferError=!1,ii.mediaSourceError=!1,ii.prevTimestamp=null,ii.decodeDiffTimestamp=null,ii.prevDts=null,ii.prevAudioDts=null,ii.prevPayloadBufferSize=0,ii.isWidthOrHeightChanged=!1,ii.prevTs=null,ii.prevAudioTs=null,ii.eventListenList=[],ii.pendingRemoveRanges=[],ii.pendingSegments=[],ii.pendingAudioRemoveRanges=[],ii.pendingAudioSegments=[],ii.supportVideoFrameCallbackHandle=null,ii.audioSourceBufferCheckTimeout=null,ii.audioSourceNoDataCheckTimeout=null,ii.hasPendingEos=!1,ii.$video={currentTime:0,readyState:0}},init(){ii.events=new fn,ii._resetInIt(),ii.mediaSource=new self.MediaSource,ii.isDecodeFirstIIframe=!!gr(ni._opt.checkFirstIFrame),ii._bindMediaSourceEvents()},destroy(){ii.stop(),ii._clearAudioSourceBufferCheckTimeout(),ii.eventListenList&&ii.eventListenList.length&&(ii.eventListenList.forEach((e=>e())),ii.eventListenList=[]),ii._resetInIt(),ii.mediaSource=null},getState:()=>ii.mediaSource&&ii.mediaSource.readyState,isStateOpen:()=>ii.getState()===yt,isStateClosed:()=>ii.getState()===vt,isStateEnded:()=>ii.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=ii.events,t=e(ii.mediaSource,wt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceOpen"),ii._onMediaSourceSourceOpen()})),r=e(ii.mediaSource,bt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceClose")})),i=e(ii.mediaSource,St,(()=>{ni.debug.log(ii.TAG_NAME,"sourceended")}));ii.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ii.sourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ii._initSourceBuffer()),ii.audioSourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ii._initAudioSourceBuffer()),ii._hasPendingSegments()&&ii._doAppendSegments()},decodeVideo(e,t,r,i){if(ni.isDestroyed)ni.debug.warn(ii.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(gr(ii.hasInit))if(r&&e[1]===Ut){const i=15&e[0];if(i===Le&&gr(ni._opt.supportMSEDecodeHevc))return void ii.emitError(Pe.mediaSourceH265NotSupport);ii.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),ii.hasInit=ii._decodeConfigurationRecord(e,t,r,i)}else ni.debug.warn(ii.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!ii.isDecodeFirstIIframe&&r&&(ii.isDecodeFirstIIframe=!0),ii.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Le&&(r=Hr(e));const i=ii.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ni.debug.warn(ii.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ii.isWidthOrHeightChanged=!0,ii.emitError(Pe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(ii.isWidthOrHeightChanged)return void ni.debug.warn(ii.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mr(e))return void ni.debug.log(ii.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthii.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Ie?s=kr(n):i===Le&&(s=Vr(n)),ii.videoInfo.width=s.codecWidth,ii.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ni.debug.warn(ii.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),ii.emitError(Pe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=pn.generateInitSegment(o);ii.isAvc=i===Ie;let d=s.codec;return ii.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:ii.isAvc?mt:_t,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),ii._initSourceBuffer(),ii.appendBuffer(a.buffer),ii.sequenceNumber=0,ii.cacheTrack={},ii.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ge,s=r===Ne;if(gr(s||n))return ni.debug.warn(ii.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ii.emitError(Pe.mediaSourceAudioG711NotSupport),!1;const o={id:Ft,type:"audio",timescale:1e3};let a={};if(jt(e)){if(a=Kt(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=En(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&gr(ni._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=pn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),gr(ii.isAudioInitInfo)&&(br=r===Ne?i?16:8:0===i?8:16,postMessage({cmd:F,code:r}),postMessage({cmd:P,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:br}),ii.isAudioInitInfo=!0),ii.audioMimeType=u,ii.isAAC=s,ii._initAudioSourceBuffer(),ii.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.sourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.videoMimeType){try{ni.debug.log(ii.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.videoMimeType),ii.sourceBuffer=ii.mediaSource.addSourceBuffer(ii.videoMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.sourceBuffer){const t=e(ii.sourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.sourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r)}}else ni.debug.log(ii.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.isAvc === null is ${null===ii.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.audioSourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.audioMimeType){try{ni.debug.log(ii.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.audioMimeType),ii._clearAudioSourceBufferCheckTimeout(),ii.audioSourceBuffer=ii.mediaSource.addSourceBuffer(ii.audioMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.audioSourceBuffer){const t=e(ii.audioSourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.audioSourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r),null===ii.audioSourceNoDataCheckTimeout&&(ii.audioSourceNoDataCheckTimeout=setTimeout((()=>{ii._clearAudioNoDataCheckTimeout(),ii.emitError(Pe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ni.debug.log(ii.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.audioMimeType is ${ii.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ni.debug.warn(ii.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;ii.prevTimestamp||(ii.prevTimestamp=a,d=!0);const l=a-ii.prevTimestamp;if(ii.decodeDiffTimestamp=l,l>1e3&&!d&&ni.isPlayer&&ni.debug.log(ii.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${ii.prevTimestamp}, diff time is ${l} ms`),ii.cacheTrack.id&&t>=ii.cacheTrack.dts){let e=8+ii.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheTrack.data,8),ii.cacheTrack.duration=t-ii.cacheTrack.dts;let i=pn.moof(ii.cacheTrack,ii.cacheTrack.dts);ii.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendBuffer(n.buffer)}else ni.debug.log(ii.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${ii.cacheTrack&&ii.cacheTrack.dts}`),ii.timeInit=!1,ii.cacheTrack={};ii.cacheTrack||(ii.cacheTrack={}),ii.cacheTrack.id=Pt,ii.cacheTrack.sequenceNumber=++ii.sequenceNumber,ii.cacheTrack.size=o,ii.cacheTrack.dts=t,ii.cacheTrack.cts=i,ii.cacheTrack.isKeyframe=r,ii.cacheTrack.data=s,ii.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ii.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ii.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(ii.cacheAudioTrack.id&&t>=ii.cacheAudioTrack.dts){let e=8+ii.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheAudioTrack.data,8),ii.cacheAudioTrack.duration=t-ii.cacheAudioTrack.dts;let i=pn.moof(ii.cacheAudioTrack,ii.cacheAudioTrack.dts);ii.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendAudioBuffer(n.buffer)}else ii.cacheAudioTrack={};ii.cacheAudioTrack||(ii.cacheAudioTrack={}),ii.cacheAudioTrack.id=Ft,ii.cacheAudioTrack.sequenceNumber=++ii.audioSequenceNumber,ii.cacheAudioTrack.size=n,ii.cacheAudioTrack.dts=t,ii.cacheAudioTrack.cts=0,ii.cacheAudioTrack.data=i,ii.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingSegments.push(e),ii.sourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendAudioBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingAudioSegments.push(e),ii.audioSourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getAudioSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>ii.sourceBuffer&&ii.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ii.audioSourceBuffer&&ii.audioSourceBuffer.updating,stop(){ii.abortSourceBuffer(),ii.removeSourceBuffer(),ii.endOfStream()},clearUpAllSourceBuffer(){if(ii.sourceBuffer){const e=ii.sourceBuffer.buffered;for(let t=0;tii.pendingSegments.length>0||ii.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ii.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ii.isStateClosed()||ii.isStateEnded())ni.debug.log(ii.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ii.sourceBuffer){if(ii.needInitAudio()&&null===ii.audioSourceBuffer)return ni.debug.log(ii.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ii.audioSourceBufferCheckTimeout&&(ii.audioSourceBufferCheckTimeout=setTimeout((()=>{ii._clearAudioSourceBufferCheckTimeout(),ii.emitError(Pe.mediaSourceAudioInitTimeout)}),1e3)));if(gr(ii.getSourceBufferUpdating())&&ii.pendingSegments.length>0){const e=ii.pendingSegments.shift();try{ii.sourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(gr(ii.getAudioSourceBufferUpdating())&&ii.pendingAudioSegments.length>0){const e=ii.pendingAudioSegments.shift();try{ii.audioSourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ni.debug.log(ii.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ii.$video.currentTime;if(ii.sourceBuffer){const t=ii.sourceBuffer.buffered;let r=!1;for(let i=0;i=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingRemoveRanges.push({start:n,end:t})}}else s=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingAudioRemoveRanges.push({start:n,end:t})}}else sii.pendingRemoveRanges.length>0||ii.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ni._opt.hasAudio&&ni._opt.mseDecodeAudio,_doRemoveRanges(){if(ii.sourceBuffer&&gr(ii.getSourceBufferUpdating())){let e=ii.pendingRemoveRanges;for(;e.length&&gr(ii.getSourceBufferUpdating());){let t=e.shift();try{ii.sourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ii.audioSourceBuffer&&gr(ii.getAudioSourceBufferUpdating())){let e=ii.pendingAudioRemoveRanges;for(;e.length&&gr(ii.getAudioSourceBufferUpdating());){let t=e.shift();try{ii.audioSourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(gr(ni._opt.mseAutoCleanupSourceBuffer))return!1;const e=ii.$video.currentTime;if(ii.sourceBuffer){let t=ii.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ii.audioSourceBuffer){let t=ii.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ii.audioSourceBufferCheckTimeout&&(clearTimeout(ii.audioSourceBufferCheckTimeout),ii.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ii.audioSourceNoDataCheckTimeout&&(clearTimeout(ii.audioSourceNoDataCheckTimeout),ii.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ii.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ni={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:Er(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ni.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ni.getVideoBufferLength(),audioDemuxBufferDelay:ni.getAudioBufferLength(),streamBufferByteLength:ni.getStreamBufferLength(),netBuf:ni.networkDelay||0,pushLatestDelay:ni.pushLatestDelay||0,latestDelay:ni.delay,isStreamTsMoreThanLocal:We,wasmDecodeDelay:we-Se});postMessage({cmd:O,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ni._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ni._opt.hasVideo&&!B)return-1;if(t===oe)return ni.delay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp>e)return ni.preDelayTimestamp-e>1e3&&ni.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return ${ni.delay}`),ni.preDelayTimestamp=e,ni.delay;if(ni.firstTimestamp){if(e){const t=Date.now()-ni.startTimestamp,r=e-ni.firstTimestamp;t>=r?(We=!1,ni.delay=t-r):(We=!0,ni.delay=r-t)}}else ni.firstTimestamp=e,ni.startTimestamp=Date.now(),ni.delay=-1;return ni.preDelayTimestamp=e,ni.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ni._opt.hasVideo&&!B)return-1;if(t===oe)return ni.pushLatestDelay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp-e>1e3)return ni.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return -1`),-1;if(ni.firstTimestamp){let t=-1;if(e){const r=Date.now()-ni.startTimestamp,i=e-ni.firstTimestamp;r>=i?(We=!1,t=r-i):(We=!0,t=i-r)}return t}return-1},resetDelay:function(){ni.firstTimestamp=null,ni.startTimestamp=null,ni.delay=-1,ni.dropping=!1},resetAllDelay:function(){ni.resetDelay(),ni.preDelayTimestamp=null},doDecode:function(e){ni._opt.isEmitSEI&&e.type===ae&&ni.isWorkerFetch&&ni.findSei(e.payload,e.ts),ni.isPlayUseMSEAndDecoderInWorker()?e.type===oe?ni._opt.mseDecodeAudio?ii.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&ii.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ni._opt.useWCS&&ni.useOffscreen()&&e.type===ae&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===ae&&mr(e.payload);if(gr(r))s&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n));else{const r=n.ts-t,o=n.type===oe&&e.type===ae;(r<=20||o||s)&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${o} and isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n))}},init:function(){ni.debug.log("worker","init and opt is",JSON.stringify(ni._opt));const e=ni._opt.playType===v,t=ni._opt.playType===b;if($r.init(),ni.isPlayer=e,ni.isPlayback=t,ni.isPlayUseMSEAndDecoderInWorker()&&ii&&ii.init(),s&&ni._opt.useWCS&&ni.useOffscreen()&&s.init(),ni.isPlaybackCacheBeforeDecodeForFpsRender())ni.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ni.debug.log("worker","setInterval()");const t=()=>{const t=ni._opt.videoBuffer+ni._opt.videoBufferDelay;let r=null;if(i.length){if(ni.isPushDropping)return void ni.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ni.dropping){for(r=i.shift(),ni.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ni.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ni.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ni.getNotDroppingDelayTs()&&(ni.debug.log("worker","loop() is dropping = false, is iFrame"),ni.dropping=!1,ni.doDecode(r),ni.decodeNext(r))}else if(ni.isPlayback||ni.isPlayUseMSE()||0===ni._opt.videoBuffer)for(;i.length;)r=i.shift(),ni.doDecode(r);else if(r=i[0],-1===ni.getDelay(r.ts,r.type))ni.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ni.doDecode(r),ni.decodeNext(r);else if(ni.delay>t&&e)ni.hasIframeInBufferList()?(ni.debug.log("worker",`delay is ${ni.delay} > maxDelay ${t}, set dropping is true`),ni.resetAllDelay(),ni.dropping=!0,postMessage({cmd:H})):(i.shift(),ni.doDecode(r),ni.decodeNext(r));else for(;i.length;){if(r=i[0],!(ni.getDelay(r.ts,r.type)>ni._opt.videoBuffer)){ni.delay<0&&ni.debug.warn("worker",`loop() do not decode and delay is ${ni.delay}, bufferList is ${i.length}`);break}i.shift(),ni.doDecode(r)}}else-1!==ni.delay&&ni.debug.log("worker","loop() bufferList is empty and reset delay"),ni.resetAllDelay()};ni.stopId=setInterval((()=>{let e=(new Date).getTime();Ze||(Ze=e);const r=e-Ze;r>100&&ni.debug.warn("worker",`loop demux diff time is ${r}`),t(),Ze=(new Date).getTime()}),20)}if(gr(ni._opt.checkFirstIFrame)&&(B=!0),ni.isPlayUseMSEAndDecoderInWorker()&&ii){const e=ii.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ni.doDecode(e))};e();const t=Math.ceil(1e3/(ni.streamFps*ni._opt.playbackRate));ni.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ni.streamFps}, streamAudioFps is ${ni.streamAudioFps} ,streamVideoFps is ${ni.streamVideoFps} playbackRate is ${ni._opt.playbackRate}`),ni.stopId=setInterval(e,t)},close:function(){if(ni.debug.log("worker","close"),ni.isDestroyed=!0,Br(),!a||1!==a.readyState&&2!==a.readyState?a&&ni.debug.log("worker",`close() and socket.readyState is ${a.readyState}`):(wr=!0,a.close(1e3,"Client disconnecting")),a=null,ni.stopStreamRateAndStatsInterval(),ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null),ni.mp3Demuxer&&(ni.mp3Demuxer.destroy(),ni.mp3Demuxer=null),ni.writableStream&&gr(ni.writableStream.locked)&&ni.writableStream.close().catch((e=>{ni.debug.log("worker","close() and writableStream.close() error",e)})),ni.writableStream=null,si)try{si.clear&&si.clear(),si=null}catch(e){ni.debug.log("worker","close() and audioDecoder.clear error",e.toString(),e)}if(oi)try{oi.clear&&oi.clear(),oi=null}catch(e){ni.debug.log("worker","close() and videoDecoder.clear error",e.toString(),e)}d=null,Ze=null,We=!1,we=0,Se=0,s&&(s.destroy&&s.destroy(),s=null),ii&&(ii.destroy(),ii=null),ni.firstTimestamp=null,ni.startTimestamp=null,ni.networkDelay=0,ni.streamFps=null,ni.streamAudioFps=null,ni.streamVideoFps=null,ni.delay=-1,ni.pushLatestDelay=-1,ni.preDelayTimestamp=null,ni.dropping=!1,ni.isPushDropping=!1,ni.isPlayer=!0,ni.isPlayback=!1,ni.isWorkerFetch=!1,ni.isHevc=null,ni._opt=Er(),ni.webglObj&&(ni.webglObj.destroy(),ni.offscreenCanvas.removeEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost),ni.offscreenCanvas.removeEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored),ni.offscreenCanvas=null,ni.offscreenCanvasGL=null,ni.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,f=null,S=!1,E=!1,B=!1,Ht=!1,Yt=!1,Jt=!1,nr=null,rt=[],At=0,Bt=0,Je=null,et=null,Nt=null,$t=null,br=null,Ot=0,Gt=0,ct=null,Et=null,ni.fetchStatus=Tt,Sr=!0,$r.destroy(),Or.destroy(),Wr.destroy(),ri.destroy(),postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===oe&&jt(e)){if(ni.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ni.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&mr(e)){if(ni.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ni.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ni._opt.isRecording)if(ni._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ni._opt.recordType===w)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===oe&&ni._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:I,buffer:i,ts:t.ts},[i.buffer])}if(ni.isPlayer){if(t.type===ae){if(Ot>0){const e=t.ts-$t,r=Ot+Ot/2;e>r&&ni.debug.log("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${$t},\n diff is ${e} and preTsDuration is ${Ot} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==$t&&$t>=t.ts&&(ni.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${$t} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Gt}`),$t-t.ts>A&&(ni.debug.warn("worker",`pushBuffer,\n preTimestamp is ${$t}, options.ts is ${t.ts},\n diff is ${$t-t.ts} more than 3600000,\n and resetAllDelay`),ni.resetAllDelay(),$t=null,Ot=0),ni._opt.isDropSameTimestampGop&&gr(t.isIFrame)&&B)){const e=ni.hasIframeInBufferList(),t=gr(ni.isPushDropping);return ni.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ni.dropBuffer$2():(ni.clearBuffer(!0),_r(ni._opt.checkFirstIFrame)&&_r(r)&&(ni.isPlayUseMSEAndDecoderInWorker()?ii.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}$t>0&&(Ot=t.ts-$t),Gt=e.byteLength,$t=t.ts}if(B){const e=ni._opt.videoBuffer+ni._opt.videoBufferDelay,r=ni.getDelayNotUpdateDelay(t.ts,t.type);ni.pushLatestDelay=r,ni.delay>0&&r>e&&ni.delay({type:e.type,ts:e.ts})));ni.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ni.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ni.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ni.streamVideoFps=25,postMessage({cmd:W,value:ni.streamVideoFps}),r?(ni.streamAudioFps=25,ni.streamFps=ni.streamVideoFps+ni.streamAudioFps):ni.streamFps=ni.streamVideoFps,ni.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ni.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ni._opt.videoBuffer+ni._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===oe&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ni._opt.isNakedFlow?$r.lastBuf&&(e=$r.lastBuf.byteLength):ni._opt.isTs?ri._remainingPacketData&&(e=ri._remainingPacketData.byteLength):ni._opt.isFmp4&&Or.mp4Box&&(e=Or.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){if(ni.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ni.isWorkerFetch=!0,t.isFlv?ni._opt.isFlv=!0:t.isFmp4?ni._opt.isFmp4=!0:t.isMpeg4?ni._opt.isMpeg4=!0:t.isNakedFlow?ni._opt.isNakedFlow=!0:t.isTs&&(ni._opt.isTs=!0),d=sr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ni.startStreamRateAndStatsInterval(),t.isFmp4&&(Or.listenMp4Box(),ni._opt.isFmp4Private&&Or.initTransportDescarmber()),t.protocol===_){c=new Ar(ni.demuxFlv()),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(_r(wr))return ni.debug.log("worker","request abort and run res.body.cancel()"),ni.fetchStatus=Tt,void e.body.cancel();if(!fr(e))return ni.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Br(),void postMessage({cmd:O,type:Pe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),cr())ni.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ni.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof e?(ni.fetchStatus=Ct,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ni.demuxFmp4(e):t.isMpeg4?ni.demuxMpeg4(e):t.isTs&&ni.demuxTs(e)):ni.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ni.debug.log("worker","writableStream close()"),ni.fetchStatus=Dt,c=null,Br(),postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ni.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==xt?(ni.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ni.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ni.debug.log("worker","fetchNext().then() and done is true"),ni.fetchStatus=Dt,c=null,Br(),void postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})):o&&o.signal&&o.signal.aborted?(ni.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof n?(ni.fetchStatus=Ct,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ni.demuxFmp4(n):t.isMpeg4?ni.demuxMpeg4(n):t.isTs&&ni.demuxTs(n),i()):ni.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ni.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==xt?(ni.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ni.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==xt?(ni.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()}),c=null):ni.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(c=new Ar(ni.demuxFlv())),a=new WebSocket(e),a.binaryType="arraybuffer",a.onopen=()=>{ni.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:De})},a.onclose=e=>{ni.isDestroyed?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):u?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ni.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),_r(wr)?ni.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:Ee,value:y,msg:e.code})))},a.onerror=e=>{ni.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,ni.isDestroyed?ni.debug.log("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):postMessage({cmd:O,type:Pe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},a.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ni.demuxFmp4(e.data):t.isMpeg4?ni.demuxMpeg4(e.data):ni._opt.isNakedFlow?ni.demuxNakedFlow(e.data):ni.demuxM7s(e.data)):ni.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const o=(yield n).slice();switch(i){case de:if(o.byteLength>0){let e=o;_r(ni._opt.m7sCryptoAudio)&&(e=ni.cryptoPayloadAudio(o)),ni.decode(e,{type:oe,ts:s})}else ni.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case le:if(o.byteLength>=6){const e=o[0];if(ni._isEnhancedH265Header(e))ni._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===kt;const i=e===Le;if(gr(t)&&_r(vr(o,i))&&(ni.debug.log("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&mr(o)&&null===ni.isHevc){const e=15&o[0];ni.isHevc=e===Le,nr=tr(o,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`)}t&&ni.calcIframeIntervalTimestamp(s),ni.isPlayer&&ni.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ni.cryptoPayload(o,t);ni.decode(a,{type:ae,ts:s,isIFrame:t,cts:n})}}else ni.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:o},[o.buffer]);break;default:ni.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===oe?ni._opt.hasAudio&&(postMessage({cmd:O,type:xe,value:e.byteLength}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()||(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ni._opt.hasVideo&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),postMessage({cmd:O,type:Be,value:t.ts}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ni._opt.isM7sCrypto?ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=Ri(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`):ni._opt.isSm4Crypto?ni._opt.sm4CryptoKey?r=ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?es(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc,ni._opt.isSm4CryptoH265V2):on(e,ni._opt.sm4CryptoKey,ni.isHevc,ni._opt.isSm4CryptoH265V2):ni._opt.sm4CryptoKey||ni.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ni._opt.isXorCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=un(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isXorCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ni._opt.isM7sCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?e[0]>>4===Ne&&(t=zi(e,ni._opt.cryptoKey,ni._opt.cryptoIV)):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(br=r===Ne?i?16:8:0===i?8:16,si&&si.setCodec)if(jt(e)||r===$e||r===Oe||r===Ge){ni.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ni._opt.sampleRate}`);const i=r===Ne?e.slice(2):new Uint8Array(0);si.setCodec(r,ni._opt.sampleRate,i),r===Ne&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==Ne&&(r===Ge?(ni.mp3Demuxer||(ni.mp3Demuxer=new dn(ni),ni.mp3Demuxer.on("data",((e,t)=>{si.decode(e,t)}))),ni.mp3Demuxer.dispatch(e.slice(1),t)):si.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})}),60*e*60*1e3)}}else ni.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ni.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ni.isDestroyed)ni.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ii.decodeAudio(e,t);else if(_r(r)&&_r(ni._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ni.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?ni.mp3Demuxer.dispatch(e.slice(1),t):si.decode(r===Ne?e.slice(2):e.slice(1),t)}else ni.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(oi&&oi.setCodec)if(mr(e))if(r===Ie||r===Le){ni.debug.log("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Ie&&ni._opt.useSIMD){const e=kr(t);if(e.codecWidth>x||e.codecHeight>x)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ni.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,oi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:i,codecId:r},[i.buffer])}else ni.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ni.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ni.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ni.isDestroyed)ni.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorker())ii.decodeVideo(e,t,i,n);else if(_r(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ni.delay},[e.buffer]);else if(S)if(!B&&i&&(B=!0),B){if(i&&mr(e)){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Le&&(r=Hr(e)),r.codecWidth&&r.codecHeight&&h&&f&&(r.codecWidth!==h||r.codecHeight!==f)&&(ni.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${f},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Yt=!0,postMessage({cmd:j,value:`width: ${h}->${r.codecWidth}, height: ${f}->${r.codecHeight}`}))}if(Yt)return void ni.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Jt)return void ni.debug.warn("worker","decodeVideo: simd decode error, and return");if(mr(e))return void ni.debug.log("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ni.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ni.isPlayer&&(ni.resetAllDelay(),_r(ni._opt.checkFirstIFrame)&&(ni.dropping=!0,postMessage({cmd:H}))),_r(ni._opt.checkFirstIFrame)&&gr(r)&&(B=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>_r(e.isIFrame)&&e.type===ae));if(ni.isAllIframeInBufferList())for(let t=0;t=ni.getNotDroppingDelayTs()){ni.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ni.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ni.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ni.resetAllDelay(),ni.getDelay(r.ts,r.type),ni.doDecode(r),ni.isPushDropping=!1,ni.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ni.delay} `)}else ni.isPushDropping=!1}0===i.length&&(ni.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case oe:ni.decode(new Uint8Array(e,5),{type:oe,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ni._isEnhancedH265Header(n))ni._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ni.calcIframeIntervalTimestamp(r),mr(i)&&null===ni.isHevc)){const e=15&i[0];ni.isHevc=e===Le}ni.isPlayer&&ni.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ni.cryptoPayload(i,e);ni.decode(o,{type:ae,ts:r,isIFrame:e,cts:n})}}else ni.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){$r.dispatch(e)},demuxFmp4:function(e){Or.dispatch(e)},demuxMpeg4:function(e){Wr.dispatch(e)},demuxTs:function(e){ri.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),o=new ArrayBuffer(4),a=new Uint32Array(o),d="a"==String.fromCharCode(s[0]);if(ni.isHevc=gr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),nr=tr(e,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`),ni.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(n===Mt){let r=e,n=0;const s=i===zt;s&&ni.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Yr(e.slice(8),s),r=ni.cryptoPayload(r,s),ni.decode(r,{type:ae,ts:t,isIFrame:s,cts:n}))}else if(n===Rt){const r=i===zt;r&&ni.calcIframeIntervalTimestamp(t);let n=Yr(e.slice(5),r);n=ni.cryptoPayload(n,r),ni.decode(n,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&It)===It},findSei:function(e,t){let r=4;ar(nr)&&(r=nr),Qt(e.slice(5),r).forEach((e=>{const r=ni.isHevc?e[0]>>>1&63:31&e[0];(ni.isHevc&&(r===ht||r===ut)||gr(ni.isHevc)&&r===Ye)&&postMessage({cmd:Z,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(B&&e>0))return;null===Je?(Je=e,et=rr()):et?r-t:0;ni.networkDelay=i,i>ni._opt.networkDelay&&ni._opt.playType===v&&(ni.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Je} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Ce,value:i}))},calcIframeIntervalTimestamp:function(e){null===Nt?Nt=e:Nt=ni._opt.playbackForwardMaxRateDecodeIFrame&&!(ni._opt.useMSE&&ni._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ni.isPlayer&&ni._opt.useMSE&&_r(r)},isPlayUseMSEAndDecoderInWorker:function(){return ni.isPlayUseMSE()&&ni._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ni.isPlayUseMSEAndDecoderInWorker()&&ni._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ni.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ni.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ht=!0,ni.webglObj.destroy(),ni.webglObj=null,ni.offscreenCanvasGL=null,setTimeout((()=>{ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.offscreenCanvasGL&&ni.offscreenCanvasGL.getContextAttributes().stencil?(ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),Ht=!1):ni.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ni.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),h=t,f=r,ni.useOffscreen()&&(ni.offscreenCanvas=new OffscreenCanvas(t,r),ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),ni.offscreenCanvas.addEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost,!1),ni.offscreenCanvas.addEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:F,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:br}),Bt=r},yuvData:function(t,r){if(ni.isDestroyed)return void ni.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*f*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ct=null,Se=r,ni.useOffscreen())try{if(Ht)return;ni.webglObj.renderYUV(h,f,s);let e=ni.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ni.delay,ts:r},[e])}catch(e){ni.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:s,delay:ni.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ni.isDestroyed)return void ni.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,o=[],a=0,d=ni._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+s)}if(At){if(!(s>=(r=d-At)))return At+=s,n[0]=Float32Array.of(...n[0],...o[0]),void(2==Bt&&(n[1]=Float32Array.of(...n[1],...o[1])));rt[0]=Float32Array.of(...n[0],...o[0].subarray(0,r)),2==Bt&&(rt[1]=Float32Array.of(...n[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer))),a=r,s-=r}for(At=s;At>=d;At-=d)rt[0]=o[0].slice(a,a+=d),2==Bt&&(rt[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer)));At&&(n[0]=o[0].slice(a),2==Bt&&(n[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===ct&&(ct=rr());const t=rr(),r=ir(Et>0?2*Et:5e3,1e3,5e3),i=t-ct;i>r&&(ni.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Et} and diff is ${i} and maxDiff is ${r}\n and replay`),Jt=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){a?a.readyState===Fe?a.send(e):ni.debug.error("worker","socket is not open"):ni.debug.error("worker","socket is null")},timeEnd:function(){ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])}};ni.debug=new xr(ni);let si=null;t.AudioDecoder&&(si=new t.AudioDecoder(ni));let oi=null;e.VideoDecoder&&(oi=new e.VideoDecoder(ni)),postMessage({cmd:k}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ni._opt=Object.assign(ni._opt,JSON.parse(t.opt))}catch(e){}ni.init();break;case he:ni.pushBuffer(t.buffer,t.options);break;case fe:ni.decodeAudio(t.buffer,t.ts);break;case pe:ni.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ni.clearBuffer(t.needClear);break;case ye:ni.fetchStream(t.url,JSON.parse(t.opt));break;case me:ni.debug.log("worker","close",JSON.stringify(t.options)),t.options&&gr(t.options.isVideoInited)&&(Sr=t.options.isVideoInited),ni.close();break;case _e:ni.debug.log("worker","updateConfig",t.key,t.value),ni._opt[t.key]=t.value,"playbackRate"===t.key&&(ni.playbackUpdatePlaybackRate(),ni.isPlaybackCacheBeforeDecodeForFpsRender()&&ni.playbackCacheLoop());break;case ve:ni.sendWebsocketMessage(t.message);break;case be:ii.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.js new file mode 100644 index 0000000000000000000000000000000000000000..9afe19cd4beca370a164afc6806b79acf12e2df4 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.js @@ -0,0 +1,2832 @@ +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( + async function (moduleArg = {}) { + + var Module = moduleArg; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise((resolve, reject) => { + readyPromiseResolve = resolve; + readyPromiseReject = reject + }); + var Module = typeof Module != "undefined" ? Module : {}; + Module["locateFile"] = function (url) { + if (url == "decoder-pro-simd-mt-worker.wasm" + && typeof JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL != "undefined" + && JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL + != "") { + return JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL; + } else { + return url; + } + if (url == "decoder-pro-simd-mt-worker.worker.js" + && typeof JESSIBUCA_PRO_SIMD_MT_WORKER_JS_URL != "undefined" + && JESSIBUCA_PRO_SIMD_MT_WORKER_JS_URL != "") { + return JESSIBUCA_PRO_SIMD_MT_WORKER_JS_URL + } else { + return url + } + }; + var moduleOverrides = Object.assign({}, Module); + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = (status, toThrow) => { + throw toThrow + }; + var ENVIRONMENT_IS_WEB = typeof window == "object"; + var ENVIRONMENT_IS_WORKER = typeof importScripts == "function"; + var ENVIRONMENT_IS_NODE = typeof process == "object" + && typeof process.versions == "object" && typeof process.versions.node + == "string"; + var ENVIRONMENT_IS_PTHREAD = Module["ENVIRONMENT_IS_PTHREAD"] || false; + var scriptDirectory = ""; + + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory) + } + return scriptDirectory + path + } + + var read_, readAsync, readBinary; + if (ENVIRONMENT_IS_NODE) { + const {createRequire: createRequire} = await import("module"); + var require = createRequire(import.meta.url); + var fs = require("fs"); + var nodePath = require("path"); + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = nodePath.dirname(scriptDirectory) + "/" + } else { + scriptDirectory = require("url").fileURLToPath( + new URL("./", import.meta.url)) + } + read_ = (filename, binary) => { + filename = isFileURI(filename) ? new URL(filename) + : nodePath.normalize(filename); + return fs.readFileSync(filename, binary ? undefined : "utf8") + }; + readBinary = filename => { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret) + } + return ret + }; + readAsync = (filename, onload, onerror, binary = true) => { + filename = isFileURI(filename) ? new URL(filename) + : nodePath.normalize(filename); + fs.readFile(filename, binary ? undefined : "utf8", (err, data) => { + if (err) { + onerror(err); + } else { + onload(binary ? data.buffer : data) + } + }) + }; + if (!Module["thisProgram"] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, "/") + } + arguments_ = process.argv.slice(2); + quit_ = (status, toThrow) => { + process.exitCode = status; + throw toThrow + }; + Module["inspect"] = () => "[Emscripten Module object]"; + let nodeWorkerThreads; + try { + nodeWorkerThreads = require("worker_threads") + } catch (e) { + console.error( + 'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'); + throw e + } + global.Worker = nodeWorkerThreads.Worker + } 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 (_scriptDir) { + scriptDirectory = _scriptDir + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, + scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1) + } else { + scriptDirectory = "" + } + if (!ENVIRONMENT_IS_NODE) { + read_ = url => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response) + } + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return + } + onerror() + }; + xhr.onerror = onerror; + xhr.send(null) + } + } + } else { + } + if (ENVIRONMENT_IS_NODE) { + if (typeof performance == "undefined") { + global.performance = require("perf_hooks").performance + } + } + var defaultPrint = console.log.bind(console); + var defaultPrintErr = console.error.bind(console); + if (ENVIRONMENT_IS_NODE) { + defaultPrint = (...args) => fs.writeSync(1, args.join(" ") + "\n"); + defaultPrintErr = (...args) => fs.writeSync(2, args.join(" ") + "\n") + } + var out = Module["print"] || defaultPrint; + var err = Module["printErr"] || defaultPrintErr; + Object.assign(Module, moduleOverrides); + moduleOverrides = null; + if (Module["arguments"]) { + arguments_ = Module["arguments"]; + } + if (Module["thisProgram"]) { + thisProgram = Module["thisProgram"]; + } + if (Module["quit"]) { + quit_ = Module["quit"]; + } + 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 wasmModule; + var ABORT = false; + var EXITSTATUS; + + function assert(condition, text) { + if (!condition) { + abort(text) + } + } + + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + + function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b) + } + + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 536870912; + assert(INITIAL_MEMORY >= 16777216, + "INITIAL_MEMORY should be larger than STACK_SIZE, was " + INITIAL_MEMORY + + "! (STACK_SIZE=" + 16777216 + ")"); + if (ENVIRONMENT_IS_PTHREAD) { + wasmMemory = Module["wasmMemory"] + } else { + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"] + } else { + wasmMemory = new WebAssembly.Memory({ + "initial": INITIAL_MEMORY / 65536, + "maximum": INITIAL_MEMORY / 65536, + "shared": true + }); + if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) { + err( + "requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"); + if (ENVIRONMENT_IS_NODE) { + err( + "(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)") + } + throw Error("bad memory") + } + } + } + updateMemoryViews(); + INITIAL_MEMORY = wasmMemory.buffer.byteLength; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + var runtimeKeepaliveCounter = 0; + + function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0 + } + + 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 (ENVIRONMENT_IS_PTHREAD) { + return; + } + callRuntimeCallbacks(__ATINIT__) + } + + function postRun() { + if (ENVIRONMENT_IS_PTHREAD) { + return; + } + 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 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() + } + } + } + + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what) + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e + } + + var dataURIPrefix = "data:application/octet-stream;base64,"; + + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix) + } + + function isFileURI(filename) { + return filename.startsWith("file://") + } + + var wasmBinaryFile; + if (Module["locateFile"]) { + wasmBinaryFile = "decoder-pro-simd-mt-worker.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile) + } + } else { + wasmBinaryFile = new URL("decoder-pro-simd-mt-worker.wasm", + import.meta.url).href + } + + function getBinarySync(file) { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary) + } + if (readBinary) { + return readBinary(file) + } + throw "both async and sync fetching of the wasm failed" + } + + function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function" && !isFileURI(binaryFile)) { + return fetch(binaryFile, {credentials: "same-origin"}).then( + response => { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + + "'" + } + return response["arrayBuffer"]() + }).catch(() => getBinarySync(binaryFile)) + } else if (readAsync) { + return new Promise((resolve, reject) => { + readAsync(binaryFile, + response => resolve(new Uint8Array(response)), reject) + }) + } + } + return Promise.resolve().then(() => getBinarySync(binaryFile)) + } + + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then( + binary => WebAssembly.instantiate(binary, imports)).then( + instance => instance).then(receiver, reason => { + err(`failed to asynchronously prepare wasm: ${reason}`); + abort(reason) + }) + } + + function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" + && !isDataURI(binaryFile) && !isFileURI(binaryFile) + && !ENVIRONMENT_IS_NODE && typeof fetch == "function") { + return fetch(binaryFile, {credentials: "same-origin"}).then( + response => { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function (reason) { + err(`wasm streaming compile failed: ${reason}`); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback) + }) + }) + } + return instantiateArrayBuffer(binaryFile, imports, callback) + } + + function createWasm() { + var info = {"a": wasmImports}; + + function receiveInstance(instance, module) { + wasmExports = instance.exports; + registerTLSInit(wasmExports["O"]); + wasmTable = wasmExports["T"]; + addOnInit(wasmExports["L"]); + wasmModule = module; + removeRunDependency("wasm-instantiate"); + return wasmExports + } + + addRunDependency("wasm-instantiate"); + + function receiveInstantiationResult(result) { + receiveInstance(result["instance"], result["module"]) + } + + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance) + } catch (e) { + err(`Module.instantiateWasm callback failed with error: ${e}`); + readyPromiseReject(e) + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, + receiveInstantiationResult).catch(readyPromiseReject); + return {} + } + + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = `Program terminated with exit(${status})`; + this.status = status + } + + var terminateWorker = worker => { + worker.terminate(); + worker.onmessage = e => { + } + }; + var killThread = pthread_ptr => { + var worker = PThread.pthreads[pthread_ptr]; + delete PThread.pthreads[pthread_ptr]; + terminateWorker(worker); + __emscripten_thread_free_data(pthread_ptr); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), + 1); + worker.pthread_ptr = 0 + }; + var cancelThread = pthread_ptr => { + var worker = PThread.pthreads[pthread_ptr]; + worker.postMessage({"cmd": "cancel"}) + }; + var cleanupThread = pthread_ptr => { + var worker = PThread.pthreads[pthread_ptr]; + assert(worker); + PThread.returnWorkerToPool(worker) + }; + var spawnThread = threadParams => { + var worker = PThread.getNewWorker(); + if (!worker) { + return 6 + } + PThread.runningWorkers.push(worker); + PThread.pthreads[threadParams.pthread_ptr] = worker; + worker.pthread_ptr = threadParams.pthread_ptr; + var msg = { + "cmd": "run", + "start_routine": threadParams.startRoutine, + "arg": threadParams.arg, + "pthread_ptr": threadParams.pthread_ptr + }; + if (ENVIRONMENT_IS_NODE) { + worker.unref() + } + worker.postMessage(msg, threadParams.transferList); + return 0 + }; + var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder( + "utf8") : undefined; + var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) { + ++endPtr; + } + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode( + heapOrArray.buffer instanceof SharedArrayBuffer ? heapOrArray.slice( + idx, endPtr) : heapOrArray.subarray(idx, endPtr)) + } + var str = ""; + while (idx < endPtr) { + var u0 = heapOrArray[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue + } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue + } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2 + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63 + } + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023) + } + } + return str + }; + var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString( + HEAPU8, ptr, maxBytesToRead) : ""; + var SYSCALLS = { + varargs: undefined, get() { + var ret = HEAP32[+SYSCALLS.varargs >> 2]; + SYSCALLS.varargs += 4; + return ret + }, getp() { + return SYSCALLS.get() + }, getStr(ptr) { + var ret = UTF8ToString(ptr); + return ret + } + }; + + function _proc_exit(code) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(0, 1, code); + } + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + PThread.terminateAllThreads(); + if (Module["onExit"]) { + Module["onExit"](code); + } + ABORT = true + } + quit_(code, new ExitStatus(code)) + } + + var exitJS = (status, implicit) => { + EXITSTATUS = status; + if (ENVIRONMENT_IS_PTHREAD) { + exitOnMainThread(status); + throw "unwind" + } + _proc_exit(status) + }; + var _exit = exitJS; + var handleException = e => { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS + } + quit_(1, e) + }; + var PThread = { + unusedWorkers: [], + runningWorkers: [], + tlsInitFunctions: [], + pthreads: {}, + init() { + if (ENVIRONMENT_IS_PTHREAD) { + PThread.initWorker() + } else { + PThread.initMainThread() + } + }, + initMainThread() { + var pthreadPoolSize = 8; + while (pthreadPoolSize--) { + PThread.allocateUnusedWorker() + } + addOnPreRun(() => { + addRunDependency("loading-workers"); + PThread.loadWasmModuleToAllWorkers( + () => removeRunDependency("loading-workers")) + }) + }, + initWorker() { + noExitRuntime = false + }, + setExitStatus: status => { + EXITSTATUS = status + }, + terminateAllThreads__deps: ["$terminateWorker"], + terminateAllThreads: () => { + for (var worker of PThread.runningWorkers) { + terminateWorker(worker) + } + for (var worker of PThread.unusedWorkers) { + terminateWorker(worker) + } + PThread.unusedWorkers = []; + PThread.runningWorkers = []; + PThread.pthreads = [] + }, + returnWorkerToPool: worker => { + var pthread_ptr = worker.pthread_ptr; + delete PThread.pthreads[pthread_ptr]; + PThread.unusedWorkers.push(worker); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), + 1); + worker.pthread_ptr = 0; + __emscripten_thread_free_data(pthread_ptr) + }, + receiveObjectTransfer(data) { + }, + threadInitTLS() { + PThread.tlsInitFunctions.forEach(f => f()) + }, + loadWasmModuleToWorker: worker => new Promise(onFinishedLoading => { + worker.onmessage = e => { + var d = e["data"]; + var cmd = d["cmd"]; + if (d["targetThread"] && d["targetThread"] != _pthread_self()) { + var targetWorker = PThread.pthreads[d["targetThread"]]; + if (targetWorker) { + targetWorker.postMessage(d, d["transferList"]) + } else { + err( + `Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`) + } + return + } + if (cmd === "checkMailbox") { + checkMailbox() + } else if (cmd === "spawnThread") { + spawnThread(d) + } else if (cmd === "cleanupThread") { + cleanupThread(d["thread"]) + } else if (cmd === "killThread") { + killThread(d["thread"]) + } else if (cmd === "cancelThread") { + cancelThread(d["thread"]) + } else if (cmd === "loaded") { + worker.loaded = true; + if (ENVIRONMENT_IS_NODE && !worker.pthread_ptr) { + worker.unref() + } + onFinishedLoading(worker) + } else if (cmd === "alert") { + alert(`Thread ${d["threadId"]}: ${d["text"]}`) + } else if (d.target === "setimmediate") { + worker.postMessage(d) + } else if (cmd === "callHandler") { + Module[d["handler"]](...d["args"]) + } else if (cmd) { + err(`worker sent an unknown command ${cmd}`) + } + }; + worker.onerror = e => { + var message = "worker sent an error!"; + err(`${message} ${e.filename}:${e.lineno}: ${e.message}`); + throw e + }; + if (ENVIRONMENT_IS_NODE) { + worker.on("message", data => worker.onmessage({data: data})); + worker.on("error", e => worker.onerror(e)) + } + var handlers = []; + var knownHandlers = ["onExit", "onAbort", "print", "printErr"]; + for (var handler of knownHandlers) { + if (Module.hasOwnProperty(handler)) { + handlers.push(handler) + } + } + worker.postMessage({ + "cmd": "load", + "handlers": handlers, + "urlOrBlob": Module["mainScriptUrlOrBlob"], + "wasmMemory": wasmMemory, + "wasmModule": wasmModule + }) + }), + loadWasmModuleToAllWorkers(onMaybeReady) { + if (ENVIRONMENT_IS_PTHREAD) { + return onMaybeReady() + } + let pthreadPoolReady = Promise.all( + PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker)); + pthreadPoolReady.then(onMaybeReady) + }, + allocateUnusedWorker() { + var worker; + if (!Module["locateFile"]) { + worker = new Worker( + new URL("decoder-pro-simd-mt-worker.worker.js", import.meta.url)) + } else { + var pthreadMainJs = locateFile( + "decoder-pro-simd-mt-worker.worker.js"); + worker = new Worker(pthreadMainJs) + } + PThread.unusedWorkers.push(worker) + }, + getNewWorker() { + if (PThread.unusedWorkers.length == 0) { + PThread.allocateUnusedWorker(); + PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0]) + } + return PThread.unusedWorkers.pop() + } + }; + Module["PThread"] = PThread; + var callRuntimeCallbacks = callbacks => { + while (callbacks.length > 0) { + callbacks.shift()(Module) + } + }; + var establishStackSpace = () => { + var pthread_ptr = _pthread_self(); + var stackHigh = HEAPU32[pthread_ptr + 52 >> 2]; + var stackSize = HEAPU32[pthread_ptr + 56 >> 2]; + var stackLow = stackHigh - stackSize; + _emscripten_stack_set_limits(stackHigh, stackLow); + stackRestore(stackHigh) + }; + Module["establishStackSpace"] = establishStackSpace; + + function exitOnMainThread(returnCode) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(1, 0, returnCode); + } + _exit(returnCode) + } + + var wasmTableMirror = []; + var wasmTable; + var getWasmTableEntry = funcPtr => { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr + >= wasmTableMirror.length) { + wasmTableMirror.length = funcPtr + 1; + } + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr) + } + return func + }; + var invokeEntryPoint = (ptr, arg) => { + var result = getWasmTableEntry(ptr)(arg); + + function finish(result) { + if (keepRuntimeAlive()) { + PThread.setExitStatus(result) + } else { + __emscripten_thread_exit(result) + } + } + + finish(result) + }; + Module["invokeEntryPoint"] = invokeEntryPoint; + var registerTLSInit = tlsInitFunc => { + PThread.tlsInitFunctions.push(tlsInitFunc) + }; + + function ExceptionInfo(excPtr) { + this.excPtr = excPtr; + this.ptr = excPtr - 24; + this.set_type = function (type) { + HEAPU32[this.ptr + 4 >> 2] = type + }; + this.get_type = function () { + return HEAPU32[this.ptr + 4 >> 2] + }; + this.set_destructor = function (destructor) { + HEAPU32[this.ptr + 8 >> 2] = destructor + }; + this.get_destructor = function () { + return HEAPU32[this.ptr + 8 >> 2] + }; + this.set_caught = function (caught) { + caught = caught ? 1 : 0; + HEAP8[this.ptr + 12 >> 0] = caught + }; + this.get_caught = function () { + return HEAP8[this.ptr + 12 >> 0] != 0 + }; + this.set_rethrown = function (rethrown) { + rethrown = rethrown ? 1 : 0; + HEAP8[this.ptr + 13 >> 0] = rethrown + }; + this.get_rethrown = function () { + return HEAP8[this.ptr + 13 >> 0] != 0 + }; + this.init = function (type, destructor) { + this.set_adjusted_ptr(0); + this.set_type(type); + this.set_destructor(destructor) + }; + this.set_adjusted_ptr = function (adjustedPtr) { + HEAPU32[this.ptr + 16 >> 2] = adjustedPtr + }; + this.get_adjusted_ptr = function () { + return HEAPU32[this.ptr + 16 >> 2] + }; + this.get_exception_ptr = function () { + var isPointer = ___cxa_is_pointer_type(this.get_type()); + if (isPointer) { + return HEAPU32[this.excPtr >> 2] + } + var adjusted = this.get_adjusted_ptr(); + if (adjusted !== 0) { + return adjusted; + } + return this.excPtr + } + } + + var exceptionLast = 0; + var uncaughtExceptionCount = 0; + var ___cxa_throw = (ptr, type, destructor) => { + var info = new ExceptionInfo(ptr); + info.init(type, destructor); + exceptionLast = ptr; + uncaughtExceptionCount++; + throw exceptionLast + }; + var ___emscripten_init_main_thread_js = tb => { + __emscripten_thread_init(tb, !ENVIRONMENT_IS_WORKER, 1, + !ENVIRONMENT_IS_WEB, 16777216, false); + PThread.threadInitTLS() + }; + var ___emscripten_thread_cleanup = thread => { + if (!ENVIRONMENT_IS_PTHREAD) { + cleanupThread(thread); + } else { + postMessage( + {"cmd": "cleanupThread", "thread": thread}) + } + }; + + function pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(2, 1, pthread_ptr, + attr, startRoutine, arg); + } + return ___pthread_create_js(pthread_ptr, attr, startRoutine, arg) + } + + var ___pthread_create_js = (pthread_ptr, attr, startRoutine, arg) => { + if (typeof SharedArrayBuffer == "undefined") { + err( + "Current environment does not support SharedArrayBuffer, pthreads are not available!"); + return 6 + } + var transferList = []; + var error = 0; + if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) { + return pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg) + } + if (error) { + return error; + } + var threadParams = { + startRoutine: startRoutine, + pthread_ptr: pthread_ptr, + arg: arg, + transferList: transferList + }; + if (ENVIRONMENT_IS_PTHREAD) { + threadParams.cmd = "spawnThread"; + postMessage(threadParams, transferList); + return 0 + } + return spawnThread(threadParams) + }; + var __embind_register_bigint = (primitiveType, name, size, minRange, + maxRange) => { + }; + var 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; + var readLatin1String = ptr => { + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += embind_charCodes[HEAPU8[c++]] + } + return ret + }; + var awaitingDependencies = {}; + var registeredTypes = {}; + var typeDependencies = {}; + var BindingError; + var throwBindingError = message => { + throw new BindingError(message) + }; + var InternalError; + var throwInternalError = message => { + throw new InternalError(message) + }; + var 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 < myTypes.length; ++i) { + registerType(myTypes[i], myTypeConverters[i]) + } + } + + var typeConverters = new Array(dependentTypes.length); + var unregisteredTypes = []; + var registered = 0; + dependentTypes.forEach((dt, i) => { + if (registeredTypes.hasOwnProperty(dt)) { + typeConverters[i] = registeredTypes[dt] + } else { + unregisteredTypes.push(dt); + if (!awaitingDependencies.hasOwnProperty(dt)) { + awaitingDependencies[dt] = [] + } + awaitingDependencies[dt].push(() => { + typeConverters[i] = registeredTypes[dt]; + ++registered; + if (registered === unregisteredTypes.length) { + onComplete(typeConverters) + } + }) + } + }); + if (0 === unregisteredTypes.length) { + onComplete(typeConverters) + } + }; + + function sharedRegisterType(rawType, registeredInstance, options = {}) { + var name = registeredInstance.name; + if (!rawType) { + throwBindingError( + `type "${name}" must have a positive integer typeid pointer`) + } + if (registeredTypes.hasOwnProperty(rawType)) { + if (options.ignoreDuplicateRegistrations) { + return + } else { + throwBindingError(`Cannot register type '${name}' twice`) + } + } + registeredTypes[rawType] = registeredInstance; + delete typeDependencies[rawType]; + if (awaitingDependencies.hasOwnProperty(rawType)) { + var callbacks = awaitingDependencies[rawType]; + delete awaitingDependencies[rawType]; + callbacks.forEach(cb => cb()) + } + } + + function registerType(rawType, registeredInstance, options = {}) { + if (!("argPackAdvance" in registeredInstance)) { + throw new TypeError( + "registerType registeredInstance requires argPackAdvance") + } + return sharedRegisterType(rawType, registeredInstance, options) + } + + var GenericWireTypeSize = 8; + var __embind_register_bool = (rawType, name, trueValue, falseValue) => { + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": function (wt) { + return !!wt + }, + "toWireType": function (destructors, o) { + return o ? trueValue : falseValue + }, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": function (pointer) { + return this["fromWireType"](HEAPU8[pointer]) + }, + destructorFunction: null + }) + }; + var shallowCopyInternalPointer = o => ({ + count: o.count, + deleteScheduled: o.deleteScheduled, + preservePointerOnDelete: o.preservePointerOnDelete, + ptr: o.ptr, + ptrType: o.ptrType, + smartPtr: o.smartPtr, + smartPtrType: o.smartPtrType + }); + var throwInstanceAlreadyDeleted = obj => { + function getInstanceTypeName(handle) { + return handle.$$.ptrType.registeredClass.name + } + + throwBindingError( + getInstanceTypeName(obj) + " instance already deleted") + }; + var finalizationRegistry = false; + var detachFinalizer = handle => { + }; + var runDestructor = $$ => { + if ($$.smartPtr) { + $$.smartPtrType.rawDestructor($$.smartPtr) + } else { + $$.ptrType.registeredClass.rawDestructor($$.ptr) + } + }; + var releaseClassHandle = $$ => { + $$.count.value -= 1; + var toDelete = 0 === $$.count.value; + if (toDelete) { + runDestructor($$) + } + }; + var downcastPointer = (ptr, ptrClass, desiredClass) => { + if (ptrClass === desiredClass) { + return ptr + } + if (undefined === desiredClass.baseClass) { + return null + } + var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); + if (rv === null) { + return null + } + return desiredClass.downcast(rv) + }; + var registeredPointers = {}; + var getInheritedInstanceCount = () => Object.keys( + registeredInstances).length; + var getLiveInheritedInstances = () => { + var rv = []; + for (var k in registeredInstances) { + if (registeredInstances.hasOwnProperty(k)) { + rv.push(registeredInstances[k]) + } + } + return rv + }; + var deletionQueue = []; + var flushPendingDeletes = () => { + while (deletionQueue.length) { + var obj = deletionQueue.pop(); + obj.$$.deleteScheduled = false; + obj["delete"]() + } + }; + var delayFunction; + var setDelayFunction = fn => { + delayFunction = fn; + if (deletionQueue.length && delayFunction) { + delayFunction(flushPendingDeletes) + } + }; + var init_embind = () => { + Module["getInheritedInstanceCount"] = getInheritedInstanceCount; + Module["getLiveInheritedInstances"] = getLiveInheritedInstances; + Module["flushPendingDeletes"] = flushPendingDeletes; + Module["setDelayFunction"] = setDelayFunction + }; + var registeredInstances = {}; + var getBasestPointer = (class_, ptr) => { + if (ptr === undefined) { + throwBindingError("ptr should not be undefined") + } + while (class_.baseClass) { + ptr = class_.upcast(ptr); + class_ = class_.baseClass + } + return ptr + }; + var getInheritedInstance = (class_, ptr) => { + ptr = getBasestPointer(class_, ptr); + return registeredInstances[ptr] + }; + var 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}) + } + } + + var attachFinalizer = handle => { + if ("undefined" === typeof FinalizationRegistry) { + attachFinalizer = handle => handle; + return handle + } + finalizationRegistry = new FinalizationRegistry(info => { + releaseClassHandle(info.$$) + }); + attachFinalizer = handle => { + var $$ = handle.$$; + var hasSmartPtr = !!$$.smartPtr; + if (hasSmartPtr) { + var info = {$$: $$}; + finalizationRegistry.register(handle, info, handle) + } + return handle + }; + detachFinalizer = handle => finalizationRegistry.unregister(handle); + return attachFinalizer(handle) + }; + var init_ClassHandle = () => { + Object.assign(ClassHandle.prototype, { + "isAliasOf"(other) { + if (!(this instanceof ClassHandle)) { + return false + } + if (!(other instanceof ClassHandle)) { + return false + } + var leftClass = this.$$.ptrType.registeredClass; + var left = this.$$.ptr; + other.$$ = other.$$; + 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 + }, "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 + } + }, "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 + } + }, "isDeleted"() { + return !this.$$.ptr + }, "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 ClassHandle() { + } + + var char_0 = 48; + var char_9 = 57; + var makeLegalFunctionName = name => { + if (undefined === name) { + return "_unknown" + } + name = name.replace(/[^a-zA-Z0-9_]/g, "$"); + var f = name.charCodeAt(0); + if (f >= char_0 && f <= char_9) { + return `_${name}` + } + return name + }; + + function createNamedFunction(name, body) { + name = makeLegalFunctionName(name); + return { + [name]: function () { + return body.apply(this, arguments) + } + }[name] + } + + var 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 + } + }; + var 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 = [] + } + + var 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 "${embindRepr(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 "${embindRepr(handle)}" as a ${this.name}`) + } + if (!handle.$$.ptr) { + throwBindingError( + `Cannot pass deleted object as a pointer of type ${this.name}`) + } + if (!this.isConst && handle.$$.ptrType.isConst) { + throwBindingError( + `Cannot convert argument of type ${handle.$$.smartPtrType + ? handle.$$.smartPtrType.name + : handle.$$.ptrType.name} to parameter type ${this.name}`) + } + var handleClass = handle.$$.ptrType.registeredClass; + ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + if (this.isSmartPointer) { + if (undefined === handle.$$.smartPtr) { + throwBindingError("Passing raw pointer to smart pointer is illegal") + } + switch (this.sharingPolicy) { + case 0: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr + } else { + throwBindingError( + `Cannot convert argument of type ${handle.$$.smartPtrType + ? handle.$$.smartPtrType.name + : handle.$$.ptrType.name} to parameter type ${this.name}`) + } + break; + case 1: + ptr = handle.$$.smartPtr; + break; + case 2: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr + } else { + var clonedHandle = handle["clone"](); + ptr = this.rawShare(ptr, + Emval.toHandle(() => 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 "${embindRepr(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 readPointer(pointer) { + return this["fromWireType"](HEAPU32[pointer >> 2]) + } + + var init_RegisteredPointer = () => { + Object.assign(RegisteredPointer.prototype, { + getPointee(ptr) { + if (this.rawGetPointee) { + ptr = this.rawGetPointee(ptr) + } + return ptr + }, + destructor(ptr) { + if (this.rawDestructor) { + this.rawDestructor(ptr) + } + }, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": readPointer, + "deleteObject"(handle) { + if (handle !== null) { + handle["delete"]() + } + }, + "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 && registeredClass.baseClass === undefined) { + if (isConst) { + this["toWireType"] = constNoSmartPtrRawPointerToWireType; + this.destructorFunction = null + } else { + this["toWireType"] = nonConstNoSmartPtrRawPointerToWireType; + this.destructorFunction = null + } + } else { + this["toWireType"] = genericPointerToWireType + } + } + + var 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 + } + }; + var dynCallLegacy = (sig, ptr, args) => { + var f = Module["dynCall_" + sig]; + return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call( + null, ptr) + }; + var dynCall = (sig, ptr, args) => { + if (sig.includes("j")) { + return dynCallLegacy(sig, ptr, args) + } + var rtn = getWasmTableEntry(ptr).apply(null, args); + return rtn + }; + var getDynCaller = (sig, ptr) => { + var argCache = []; + return function () { + argCache.length = 0; + Object.assign(argCache, arguments); + return dynCall(sig, ptr, argCache) + } + }; + var embind__requireFunction = (signature, rawFunction) => { + signature = readLatin1String(signature); + + function makeDynCaller() { + if (signature.includes("j")) { + return getDynCaller(signature, rawFunction) + } + return getWasmTableEntry(rawFunction) + } + + var fp = makeDynCaller(); + if (typeof fp != "function") { + throwBindingError( + `unknown function pointer with signature ${signature}: ${rawFunction}`) + } + return fp + }; + var 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 UnboundTypeError; + var getTypeName = type => { + var ptr = ___getTypeName(type); + var rv = readLatin1String(ptr); + _free(ptr); + return rv + }; + var throwUnboundTypeError = (message, types) => { + var unboundTypes = []; + var seen = {}; + + function visit(type) { + if (seen[type]) { + return + } + if (registeredTypes[type]) { + return + } + if (typeDependencies[type]) { + typeDependencies[type].forEach(visit); + return + } + unboundTypes.push(type); + seen[type] = true + } + + types.forEach(visit); + throw new UnboundTypeError( + `${message}: ` + unboundTypes.map(getTypeName).join([", "])) + }; + var __embind_register_class = (rawType, rawPointerType, + rawConstPointerType, baseClassRawType, getActualTypeSignature, + getActualType, upcastSignature, upcast, downcastSignature, downcast, + name, destructorSignature, rawDestructor) => { + name = readLatin1String(name); + getActualType = embind__requireFunction(getActualTypeSignature, + getActualType); + if (upcast) { + upcast = embind__requireFunction(upcastSignature, upcast) + } + if (downcast) { + downcast = embind__requireFunction(downcastSignature, downcast) + } + rawDestructor = embind__requireFunction(destructorSignature, + rawDestructor); + var legalFunctionName = makeLegalFunctionName(name); + exposePublicSymbol(legalFunctionName, function () { + throwUnboundTypeError(`Cannot construct ${name} due to unbound types`, + [baseClassRawType]) + }); + whenDependentTypesAreResolved( + [rawType, rawPointerType, rawConstPointerType], + baseClassRawType ? [baseClassRawType] : [], function (base) { + base = base[0]; + var baseClass; + var basePrototype; + if (baseClassRawType) { + baseClass = base.registeredClass; + basePrototype = baseClass.instancePrototype + } else { + basePrototype = ClassHandle.prototype + } + var constructor = createNamedFunction(legalFunctionName, + function () { + if (Object.getPrototypeOf(this) !== instancePrototype) { + throw new BindingError("Use 'new' to construct " + name) + } + if (undefined === registeredClass.constructor_body) { + throw new BindingError( + name + " has no accessible constructor") + } + var body = registeredClass.constructor_body[arguments.length]; + if (undefined === body) { + throw new BindingError( + `Tried to invoke ctor of ${name} with invalid number of parameters (${arguments.length}) - expected (${Object.keys( + registeredClass.constructor_body).toString()}) parameters instead!`) + } + return body.apply(this, arguments) + }); + var instancePrototype = Object.create(basePrototype, + {constructor: {value: constructor}}); + constructor.prototype = instancePrototype; + var registeredClass = new RegisteredClass(name, constructor, + instancePrototype, rawDestructor, baseClass, getActualType, + upcast, downcast); + if (registeredClass.baseClass) { + if (registeredClass.baseClass.__derivedClasses === undefined) { + registeredClass.baseClass.__derivedClasses = [] + } + registeredClass.baseClass.__derivedClasses.push(registeredClass) + } + var referenceConverter = new RegisteredPointer(name, + registeredClass, true, false, false); + var pointerConverter = new RegisteredPointer(name + "*", + registeredClass, false, false, false); + var constPointerConverter = new RegisteredPointer(name + " const*", + registeredClass, false, true, false); + registeredPointers[rawType] = { + pointerType: pointerConverter, + constPointerType: constPointerConverter + }; + replacePublicSymbol(legalFunctionName, constructor); + return [referenceConverter, pointerConverter, constPointerConverter] + }) + }; + var heap32VectorToArray = (count, firstElement) => { + var array = []; + for (var i = 0; i < count; i++) { + array.push(HEAPU32[firstElement + i * 4 >> 2]) + } + return array + }; + var runDestructors = destructors => { + while (destructors.length) { + var ptr = destructors.pop(); + var del = destructors.pop(); + del(ptr) + } + }; + + function newFunc(constructor, argumentList) { + if (!(constructor instanceof Function)) { + throw new TypeError( + `new_ called with constructor type ${typeof constructor} which is not a function`) + } + var dummy = createNamedFunction( + constructor.name || "unknownFunctionName", function () { + }); + dummy.prototype = constructor.prototype; + var obj = new dummy; + var r = constructor.apply(obj, argumentList); + return r instanceof Object ? r : obj + } + + function craftInvokerFunction(humanName, argTypes, classType, + cppInvokerFunc, cppTargetFunc, isAsync) { + var argCount = argTypes.length; + if (argCount < 2) { + throwBindingError( + "argTypes array size mismatch! Must at least get return value and 'this' types!") + } + var isClassMethodFunc = argTypes[1] !== null && classType !== null; + var needsDestructorStack = false; + for (var i = 1; i < argTypes.length; ++i) { + if (argTypes[i] !== null && argTypes[i].destructorFunction + === undefined) { + needsDestructorStack = true; + break + } + } + var returns = argTypes[0].name !== "void"; + var argsList = ""; + var argsListWired = ""; + for (var i = 0; i < argCount - 2; ++i) { + argsList += (i !== 0 ? ", " : "") + "arg" + i; + argsListWired += (i !== 0 ? ", " : "") + "arg" + i + "Wired" + } + var invokerFnBody = `\n return function ${makeLegalFunctionName( + humanName)}(${argsList}) {\n if (arguments.length !== ${argCount + - 2}) {\n throwBindingError('function ${humanName} called with ' + arguments.length + ' arguments, expected ${argCount + - 2}');\n }`; + if (needsDestructorStack) { + invokerFnBody += "var destructors = [];\n" + } + var dtorStack = needsDestructorStack ? "destructors" : "null"; + var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", + "retType", "classParam"]; + var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, + runDestructors, argTypes[0], argTypes[1]]; + if (isClassMethodFunc) { + invokerFnBody += "var thisWired = classParam.toWireType(" + dtorStack + + ", this);\n" + } + for (var i = 0; i < argCount - 2; ++i) { + invokerFnBody += "var arg" + i + "Wired = argType" + i + + ".toWireType(" + dtorStack + ", arg" + i + "); // " + argTypes[i + + 2].name + "\n"; + args1.push("argType" + i); + args2.push(argTypes[i + 2]) + } + if (isClassMethodFunc) { + argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + + argsListWired + } + invokerFnBody += (returns || isAsync ? "var rv = " : "") + "invoker(fn" + + (argsListWired.length > 0 ? ", " : "") + argsListWired + ");\n"; + if (needsDestructorStack) { + invokerFnBody += "runDestructors(destructors);\n" + } else { + for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) { + var paramName = i === 1 ? "thisWired" : "arg" + (i - 2) + "Wired"; + if (argTypes[i].destructorFunction !== null) { + invokerFnBody += paramName + "_dtor(" + paramName + "); // " + + argTypes[i].name + "\n"; + args1.push(paramName + "_dtor"); + args2.push(argTypes[i].destructorFunction) + } + } + } + if (returns) { + invokerFnBody += "var ret = retType.fromWireType(rv);\n" + + "return ret;\n" + } else { + } + invokerFnBody += "}\n"; + args1.push(invokerFnBody); + return newFunc(Function, args1).apply(null, args2) + } + + var __embind_register_class_constructor = (rawClassType, argCount, + rawArgTypesAddr, invokerSignature, invoker, rawConstructor) => { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + invoker = embind__requireFunction(invokerSignature, invoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = `constructor ${classType.name}`; + if (undefined === classType.registeredClass.constructor_body) { + classType.registeredClass.constructor_body = [] + } + if (undefined !== classType.registeredClass.constructor_body[argCount + - 1]) { + throw new BindingError( + `Cannot register multiple constructors with identical number of parameters (${argCount + - 1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`) + } + classType.registeredClass.constructor_body[argCount - 1] = () => { + throwUnboundTypeError( + `Cannot construct ${classType.name} due to unbound types`, + rawArgTypes) + }; + whenDependentTypesAreResolved([], rawArgTypes, argTypes => { + argTypes.splice(1, 0, null); + classType.registeredClass.constructor_body[argCount + - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, + rawConstructor); + return [] + }); + return [] + }) + }; + var __embind_register_class_function = (rawClassType, methodName, + argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, + isPureVirtual, isAsync) => { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = `${classType.name}.${methodName}`; + if (methodName.startsWith("@@")) { + methodName = Symbol[methodName.substring(2)] + } + if (isPureVirtual) { + classType.registeredClass.pureVirtualFunctions.push(methodName) + } + + function unboundTypesHandler() { + throwUnboundTypeError( + `Cannot call ${humanName} due to unbound types`, rawArgTypes) + } + + var proto = classType.registeredClass.instancePrototype; + var method = proto[methodName]; + if (undefined === method || undefined === method.overloadTable + && method.className !== classType.name && method.argCount + === argCount - 2) { + unboundTypesHandler.argCount = argCount - 2; + unboundTypesHandler.className = classType.name; + proto[methodName] = unboundTypesHandler + } else { + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler + } + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + var memberFunction = craftInvokerFunction(humanName, argTypes, + classType, rawInvoker, context, isAsync); + if (undefined === proto[methodName].overloadTable) { + memberFunction.argCount = argCount - 2; + proto[methodName] = memberFunction + } else { + proto[methodName].overloadTable[argCount - 2] = memberFunction + } + return [] + }); + return [] + }) + }; + + function handleAllocatorInit() { + Object.assign(HandleAllocator.prototype, { + get(id) { + return this.allocated[id] + }, has(id) { + return this.allocated[id] !== undefined + }, allocate(handle) { + var id = this.freelist.pop() || this.allocated.length; + this.allocated[id] = handle; + return id + }, free(id) { + this.allocated[id] = undefined; + this.freelist.push(id) + } + }) + } + + function HandleAllocator() { + this.allocated = [undefined]; + this.freelist = [] + } + + var emval_handles = new HandleAllocator; + var __emval_decref = handle => { + if (handle >= emval_handles.reserved && 0 === --emval_handles.get( + handle).refcount) { + emval_handles.free(handle) + } + }; + var count_emval_handles = () => { + var count = 0; + for (var i = emval_handles.reserved; i < emval_handles.allocated.length; + ++i) { + if (emval_handles.allocated[i] !== undefined) { + ++count + } + } + return count + }; + var init_emval = () => { + emval_handles.allocated.push({value: undefined}, {value: null}, + {value: true}, {value: false}); + emval_handles.reserved = emval_handles.allocated.length; + Module["count_emval_handles"] = count_emval_handles + }; + var Emval = { + toValue: handle => { + if (!handle) { + throwBindingError("Cannot use deleted val. handle = " + handle) + } + return emval_handles.get(handle).value + }, toHandle: value => { + switch (value) { + case undefined: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: { + return emval_handles.allocate({refcount: 1, value: value}) + } + } + } + }; + + function simpleReadValueFromPointer(pointer) { + return this["fromWireType"](HEAP32[pointer >> 2]) + } + + var __embind_register_emval = (rawType, name) => { + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": handle => { + var rv = Emval.toValue(handle); + __emval_decref(handle); + return rv + }, + "toWireType": (destructors, value) => Emval.toHandle(value), + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": simpleReadValueFromPointer, + destructorFunction: null + }) + }; + var embindRepr = v => { + if (v === null) { + return "null" + } + var t = typeof v; + if (t === "object" || t === "array" || t === "function") { + return v.toString() + } else { + return "" + v + } + }; + var floatReadValueFromPointer = (name, width) => { + switch (width) { + case 4: + return function (pointer) { + return this["fromWireType"](HEAPF32[pointer >> 2]) + }; + case 8: + return function (pointer) { + return this["fromWireType"](HEAPF64[pointer >> 3]) + }; + default: + throw new TypeError(`invalid float width (${width}): ${name}`) + } + }; + var __embind_register_float = (rawType, name, size) => { + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": value => value, + "toWireType": (destructors, value) => value, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": floatReadValueFromPointer(name, size), + destructorFunction: null + }) + }; + var integerReadValueFromPointer = (name, width, signed) => { + switch (width) { + case 1: + return signed ? pointer => HEAP8[pointer >> 0] + : pointer => HEAPU8[pointer >> 0]; + case 2: + return signed ? pointer => HEAP16[pointer >> 1] + : pointer => HEAPU16[pointer >> 1]; + case 4: + return signed ? pointer => HEAP32[pointer >> 2] + : pointer => HEAPU32[pointer >> 2]; + default: + throw new TypeError(`invalid integer width (${width}): ${name}`) + } + }; + var __embind_register_integer = (primitiveType, name, size, minRange, + maxRange) => { + name = readLatin1String(name); + if (maxRange === -1) { + maxRange = 4294967295 + } + var fromWireType = value => value; + if (minRange === 0) { + var bitshift = 32 - 8 * size; + fromWireType = value => value << bitshift >>> bitshift + } + var isUnsignedType = name.includes("unsigned"); + var checkAssertions = (value, toTypeName) => { + }; + var toWireType; + if (isUnsignedType) { + toWireType = function (destructors, value) { + checkAssertions(value, this.name); + return value >>> 0 + } + } else { + toWireType = function (destructors, value) { + checkAssertions(value, this.name); + return value + } + } + registerType(primitiveType, { + name: name, + "fromWireType": fromWireType, + "toWireType": toWireType, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": integerReadValueFromPointer(name, size, + minRange !== 0), + destructorFunction: null + }) + }; + var __embind_register_memory_view = (rawType, dataTypeIndex, name) => { + var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, + Int32Array, Uint32Array, Float32Array, Float64Array]; + var TA = typeMapping[dataTypeIndex]; + + function decodeMemoryView(handle) { + var size = HEAPU32[handle >> 2]; + var data = HEAPU32[handle + 4 >> 2]; + return new TA(HEAP8.buffer, data, size) + } + + name = readLatin1String(name); + registerType(rawType, { + name: name, + "fromWireType": decodeMemoryView, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": decodeMemoryView + }, {ignoreDuplicateRegistrations: true}) + }; + var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { + if (!(maxBytesToWrite > 0)) { + return 0; + } + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 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 + }; + var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array( + str, HEAPU8, outPtr, maxBytesToWrite); + var lengthBytesUTF8 = str => { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++ + } else if (c <= 2047) { + len += 2 + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i + } else { + len += 3 + } + } + return len + }; + var __embind_register_std_string = (rawType, name) => { + name = readLatin1String(name); + var stdStringIsUTF8 = name === "std::string"; + registerType(rawType, { + name: name, + "fromWireType"(value) { + var length = HEAPU32[value >> 2]; + var payload = value + 4; + var str; + if (stdStringIsUTF8) { + var decodeStartPtr = payload; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = payload + 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 < length; ++i) { + a[i] = String.fromCharCode(HEAPU8[payload + i]) + } + str = a.join("") + } + _free(value); + return str + }, + "toWireType"(destructors, value) { + if (value instanceof ArrayBuffer) { + value = new Uint8Array(value) + } + var length; + var valueIsOfTypeString = typeof value == "string"; + if (!(valueIsOfTypeString || value instanceof Uint8Array || value + instanceof Uint8ClampedArray || value instanceof Int8Array)) { + throwBindingError("Cannot pass non-string to std::string") + } + if (stdStringIsUTF8 && valueIsOfTypeString) { + length = lengthBytesUTF8(value) + } else { + length = value.length + } + var base = _malloc(4 + length + 1); + var ptr = base + 4; + HEAPU32[base >> 2] = length; + if (stdStringIsUTF8 && valueIsOfTypeString) { + stringToUTF8(value, ptr, length + 1) + } else { + if (valueIsOfTypeString) { + for (var i = 0; i < length; ++i) { + var charCode = value.charCodeAt(i); + if (charCode > 255) { + _free(ptr); + throwBindingError( + "String has UTF-16 code units that do not fit in 8 bits") + } + HEAPU8[ptr + i] = charCode + } + } else { + for (var i = 0; i < length; ++i) { + HEAPU8[ptr + i] = value[i] + } + } + } + if (destructors !== null) { + destructors.push(_free, base) + } + return base + }, + "argPackAdvance": GenericWireTypeSize, + "readValueFromPointer": readPointer, + destructorFunction(ptr) { + _free(ptr) + } + }) + }; + var UTF16Decoder = typeof TextDecoder != "undefined" ? new TextDecoder( + "utf-16le") : undefined; + var 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.slice(ptr, endPtr)); + } + 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 + }; + var stringToUTF16 = (str, outPtr, maxBytesToWrite) => { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647 + } + if (maxBytesToWrite < 2) { + return 0; + } + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite + / 2 : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + HEAP16[outPtr >> 1] = codeUnit; + outPtr += 2 + } + HEAP16[outPtr >> 1] = 0; + return outPtr - startPtr + }; + var lengthBytesUTF16 = str => str.length * 2; + var 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 + }; + var 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 < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 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 + }; + var lengthBytesUTF32 = str => { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) { + ++i; + } + len += 4 + } + return len + }; + var __embind_register_std_wstring = (rawType, charSize, name) => { + name = readLatin1String(name); + var decodeString, encodeString, getHeap, lengthBytesUTF, shift; + if (charSize === 2) { + decodeString = UTF16ToString; + encodeString = stringToUTF16; + lengthBytesUTF = lengthBytesUTF16; + getHeap = () => HEAPU16; + shift = 1 + } else if (charSize === 4) { + decodeString = UTF32ToString; + encodeString = stringToUTF32; + lengthBytesUTF = lengthBytesUTF32; + getHeap = () => HEAPU32; + shift = 2 + } + registerType(rawType, { + name: name, + "fromWireType": value => { + var length = HEAPU32[value >> 2]; + var HEAP = getHeap(); + var str; + var decodeStartPtr = value + 4; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = value + 4 + i * charSize; + if (i == length || HEAP[currentBytePtr >> shift] == 0) { + var maxReadBytes = currentBytePtr - decodeStartPtr; + var stringSegment = decodeString(decodeStartPtr, maxReadBytes); + if (str === undefined) { + str = stringSegment + } else { + str += String.fromCharCode(0); + str += stringSegment + } + decodeStartPtr = currentBytePtr + charSize + } + } + _free(value); + return str + }, + "toWireType": (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": GenericWireTypeSize, + "readValueFromPointer": simpleReadValueFromPointer, + destructorFunction(ptr) { + _free(ptr) + } + }) + }; + var __embind_register_void = (rawType, name) => { + name = readLatin1String(name); + registerType(rawType, { + isVoid: true, + name: name, + "argPackAdvance": 0, + "fromWireType": () => undefined, + "toWireType": (destructors, o) => undefined + }) + }; + var maybeExit = () => { + if (!keepRuntimeAlive()) { + try { + if (ENVIRONMENT_IS_PTHREAD) { + __emscripten_thread_exit( + EXITSTATUS); + } else { + _exit(EXITSTATUS) + } + } catch (e) { + handleException(e) + } + } + }; + var callUserCallback = func => { + if (ABORT) { + return + } + try { + func(); + maybeExit() + } catch (e) { + handleException(e) + } + }; + var __emscripten_thread_mailbox_await = pthread_ptr => { + if (typeof Atomics.waitAsync === "function") { + var wait = Atomics.waitAsync(HEAP32, pthread_ptr >> 2, pthread_ptr); + wait.value.then(checkMailbox); + var waitingAsync = pthread_ptr + 128; + Atomics.store(HEAP32, waitingAsync >> 2, 1) + } + }; + Module["__emscripten_thread_mailbox_await"] = __emscripten_thread_mailbox_await; + var checkMailbox = () => { + var pthread_ptr = _pthread_self(); + if (pthread_ptr) { + __emscripten_thread_mailbox_await(pthread_ptr); + callUserCallback(() => __emscripten_check_mailbox()) + } + }; + Module["checkMailbox"] = checkMailbox; + var __emscripten_notify_mailbox_postmessage = (targetThreadId, + currThreadId, mainThreadId) => { + if (targetThreadId == currThreadId) { + setTimeout(() => checkMailbox()) + } else if (ENVIRONMENT_IS_PTHREAD) { + postMessage({"targetThread": targetThreadId, "cmd": "checkMailbox"}) + } else { + var worker = PThread.pthreads[targetThreadId]; + if (!worker) { + return + } + worker.postMessage({"cmd": "checkMailbox"}) + } + }; + var withStackSave = f => { + var stack = stackSave(); + var ret = f(); + stackRestore(stack); + return ret + }; + var proxyToMainThread = function (index, sync) { + var numCallArgs = arguments.length - 2; + var outerArgs = arguments; + return withStackSave(() => { + var serializedNumCallArgs = numCallArgs; + var args = stackAlloc(serializedNumCallArgs * 8); + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + var arg = outerArgs[2 + i]; + HEAPF64[b + i] = arg + } + return __emscripten_run_on_main_thread_js(index, + serializedNumCallArgs, args, sync) + }) + }; + var proxiedJSCallArgs = []; + var __emscripten_receive_on_main_thread_js = (index, callingThread, + numCallArgs, args) => { + proxiedJSCallArgs.length = numCallArgs; + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + proxiedJSCallArgs[i] = HEAPF64[b + i] + } + var func = proxiedFunctionTable[index]; + PThread.currentProxiedOperationCallerThread = callingThread; + var rtn = func.apply(null, proxiedJSCallArgs); + PThread.currentProxiedOperationCallerThread = 0; + return rtn + }; + var __emscripten_thread_set_strongref = thread => { + if (ENVIRONMENT_IS_NODE) { + PThread.pthreads[thread].ref() + } + }; + var emval_symbols = {}; + var getStringOrSymbol = address => { + var symbol = emval_symbols[address]; + if (symbol === undefined) { + return readLatin1String(address) + } + return symbol + }; + var emval_methodCallers = []; + var __emval_call_void_method = (caller, handle, methodName, args) => { + caller = emval_methodCallers[caller]; + handle = Emval.toValue(handle); + methodName = getStringOrSymbol(methodName); + caller(handle, methodName, null, args) + }; + var emval_addMethodCaller = caller => { + var id = emval_methodCallers.length; + emval_methodCallers.push(caller); + return id + }; + var requireRegisteredType = (rawType, humanName) => { + var impl = registeredTypes[rawType]; + if (undefined === impl) { + throwBindingError( + humanName + " has unknown type " + getTypeName(rawType)) + } + return impl + }; + var emval_lookupTypes = (argCount, argTypes) => { + var a = new Array(argCount); + for (var i = 0; i < argCount; ++i) { + a[i] = requireRegisteredType(HEAPU32[argTypes + i * 4 >> 2], + "parameter " + i) + } + return a + }; + var emval_registeredMethods = {}; + var __emval_get_method_caller = (argCount, argTypes) => { + var types = emval_lookupTypes(argCount, argTypes); + var retType = types[0]; + var signatureName = retType.name + "_$" + types.slice(1).map( + function (t) { + return t.name + }).join("_") + "$"; + var returnId = emval_registeredMethods[signatureName]; + if (returnId !== undefined) { + return returnId + } + var params = ["retType"]; + var args = [retType]; + var argsList = ""; + for (var i = 0; i < argCount - 1; ++i) { + argsList += (i !== 0 ? ", " : "") + "arg" + i; + params.push("argType" + i); + args.push(types[1 + i]) + } + var functionName = makeLegalFunctionName( + "methodCaller_" + signatureName); + var functionBody = "return function " + functionName + + "(handle, name, destructors, args) {\n"; + var offset = 0; + for (var i = 0; i < argCount - 1; ++i) { + functionBody += " var arg" + i + " = argType" + i + + ".readValueFromPointer(args" + (offset ? "+" + offset : "") + + ");\n"; + offset += types[i + 1]["argPackAdvance"] + } + functionBody += " var rv = handle[name](" + argsList + ");\n"; + for (var i = 0; i < argCount - 1; ++i) { + if (types[i + 1]["deleteObject"]) { + functionBody += " argType" + i + ".deleteObject(arg" + i + ");\n" + } + } + if (!retType.isVoid) { + functionBody += " return retType.toWireType(destructors, rv);\n" + } + functionBody += "};\n"; + params.push(functionBody); + var invokerFunction = newFunc(Function, params).apply(null, args); + returnId = emval_addMethodCaller(invokerFunction); + emval_registeredMethods[signatureName] = returnId; + return returnId + }; + var __emval_incref = handle => { + if (handle > 4) { + emval_handles.get(handle).refcount += 1 + } + }; + var __emval_new_cstring = v => Emval.toHandle(getStringOrSymbol(v)); + var __emval_new_object = () => Emval.toHandle({}); + var __emval_new_u8string = v => Emval.toHandle(UTF8ToString(v)); + var __emval_set_property = (handle, key, value) => { + handle = Emval.toValue(handle); + key = Emval.toValue(key); + value = Emval.toValue(value); + handle[key] = value + }; + var __emval_take_value = (type, arg) => { + type = requireRegisteredType(type, "_emval_take_value"); + var v = type["readValueFromPointer"](arg); + return Emval.toHandle(v) + }; + var _abort = () => { + abort("") + }; + var warnOnce = text => { + if (!warnOnce.shown) { + warnOnce.shown = {}; + } + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + if (ENVIRONMENT_IS_NODE) { + text = "warning: " + text; + } + err(text) + } + }; + var _emscripten_check_blocking_allowed = () => { + }; + var runtimeKeepalivePush = () => { + runtimeKeepaliveCounter += 1 + }; + var _emscripten_exit_with_live_runtime = () => { + runtimeKeepalivePush(); + throw "unwind" + }; + var _emscripten_get_now; + _emscripten_get_now = () => performance.timeOrigin + performance.now(); + var abortOnCannotGrowMemory = requestedSize => { + abort("OOM") + }; + var _emscripten_resize_heap = requestedSize => { + var oldSize = HEAPU8.length; + requestedSize >>>= 0; + abortOnCannotGrowMemory(requestedSize) + }; + var printCharBuffers = [null, [], []]; + var printChar = (stream, curr) => { + var buffer = printCharBuffers[stream]; + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); + buffer.length = 0 + } else { + buffer.push(curr) + } + }; + + function _fd_write(fd, iov, iovcnt, pnum) { + if (ENVIRONMENT_IS_PTHREAD) { + return proxyToMainThread(3, 1, fd, iov, + iovcnt, pnum); + } + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + for (var j = 0; j < len; j++) { + printChar(fd, HEAPU8[ptr + j]) + } + num += len + } + HEAPU32[pnum >> 2] = num; + return 0 + } + + PThread.init(); + embind_init_charCodes(); + BindingError = Module["BindingError"] = class BindingError extends Error { + constructor(message) { + super(message); + this.name = "BindingError" + } + }; + InternalError = Module["InternalError"] = class InternalError extends Error { + constructor(message) { + super(message); + this.name = "InternalError" + } + }; + init_ClassHandle(); + init_embind(); + init_RegisteredPointer(); + UnboundTypeError = Module["UnboundTypeError"] = extendError(Error, + "UnboundTypeError"); + handleAllocatorInit(); + init_emval(); + var proxiedFunctionTable = [_proc_exit, exitOnMainThread, + pthreadCreateProxied, _fd_write]; + var wasmImports = { + q: ___cxa_throw, + A: ___emscripten_init_main_thread_js, + l: ___emscripten_thread_cleanup, + y: ___pthread_create_js, + s: __embind_register_bigint, + G: __embind_register_bool, + w: __embind_register_class, + r: __embind_register_class_constructor, + h: __embind_register_class_function, + F: __embind_register_emval, + n: __embind_register_float, + c: __embind_register_integer, + b: __embind_register_memory_view, + o: __embind_register_std_string, + i: __embind_register_std_wstring, + H: __embind_register_void, + u: __emscripten_notify_mailbox_postmessage, + B: __emscripten_receive_on_main_thread_js, + z: __emscripten_thread_mailbox_await, + D: __emscripten_thread_set_strongref, + g: __emval_call_void_method, + d: __emval_decref, + f: __emval_get_method_caller, + I: __emval_incref, + p: __emval_new_cstring, + K: __emval_new_object, + E: __emval_new_u8string, + j: __emval_set_property, + J: __emval_take_value, + k: _abort, + m: _emscripten_check_blocking_allowed, + C: _emscripten_exit_with_live_runtime, + e: _emscripten_get_now, + t: _emscripten_resize_heap, + x: _exit, + v: _fd_write, + a: wasmMemory || Module["wasmMemory"] + }; + var wasmExports = createWasm(); + var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["L"])(); + var _free = a0 => (_free = wasmExports["M"])(a0); + var _malloc = a0 => (_malloc = wasmExports["N"])(a0); + var __emscripten_tls_init = Module["__emscripten_tls_init"] = () => (__emscripten_tls_init = Module["__emscripten_tls_init"] = wasmExports["O"])(); + var _pthread_self = Module["_pthread_self"] = () => (_pthread_self = Module["_pthread_self"] = wasmExports["P"])(); + var ___getTypeName = a0 => (___getTypeName = wasmExports["Q"])(a0); + var __embind_initialize_bindings = Module["__embind_initialize_bindings"] = () => (__embind_initialize_bindings = Module["__embind_initialize_bindings"] = wasmExports["R"])(); + var ___errno_location = () => (___errno_location = wasmExports["__errno_location"])(); + var __emscripten_thread_init = Module["__emscripten_thread_init"] = (a0, + a1, a2, a3, a4, + a5) => (__emscripten_thread_init = Module["__emscripten_thread_init"] = wasmExports["S"])( + a0, a1, a2, a3, a4, a5); + var __emscripten_thread_crashed = Module["__emscripten_thread_crashed"] = () => (__emscripten_thread_crashed = Module["__emscripten_thread_crashed"] = wasmExports["U"])(); + var _emscripten_main_runtime_thread_id = () => (_emscripten_main_runtime_thread_id = wasmExports["emscripten_main_runtime_thread_id"])(); + var _emscripten_main_thread_process_queued_calls = () => (_emscripten_main_thread_process_queued_calls = wasmExports["emscripten_main_thread_process_queued_calls"])(); + var __emscripten_run_on_main_thread_js = (a0, a1, a2, + a3) => (__emscripten_run_on_main_thread_js = wasmExports["V"])(a0, a1, + a2, a3); + var __emscripten_thread_free_data = a0 => (__emscripten_thread_free_data = wasmExports["W"])( + a0); + var __emscripten_thread_exit = Module["__emscripten_thread_exit"] = a0 => (__emscripten_thread_exit = Module["__emscripten_thread_exit"] = wasmExports["X"])( + a0); + var __emscripten_check_mailbox = Module["__emscripten_check_mailbox"] = () => (__emscripten_check_mailbox = Module["__emscripten_check_mailbox"] = wasmExports["Y"])(); + var _emscripten_stack_set_limits = (a0, + a1) => (_emscripten_stack_set_limits = wasmExports["Z"])(a0, a1); + var stackSave = () => (stackSave = wasmExports["_"])(); + var stackRestore = a0 => (stackRestore = wasmExports["$"])(a0); + var stackAlloc = a0 => (stackAlloc = wasmExports["aa"])(a0); + var ___cxa_increment_exception_refcount = a0 => (___cxa_increment_exception_refcount = wasmExports["__cxa_increment_exception_refcount"])( + a0); + var ___cxa_is_pointer_type = a0 => (___cxa_is_pointer_type = wasmExports["ba"])( + a0); + var dynCall_jiji = Module["dynCall_jiji"] = (a0, a1, a2, a3, + a4) => (dynCall_jiji = Module["dynCall_jiji"] = wasmExports["ca"])(a0, + a1, a2, a3, a4); + var ___start_em_js = Module["___start_em_js"] = 143356; + var ___stop_em_js = Module["___stop_em_js"] = 143413; + Module["keepRuntimeAlive"] = keepRuntimeAlive; + Module["wasmMemory"] = wasmMemory; + Module["ExitStatus"] = ExitStatus; + Module["PThread"] = PThread; + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) { + run(); + } + if (!calledRun) { + dependenciesFulfilled = runCaller + } + }; + + function run() { + if (runDependencies > 0) { + return + } + if (ENVIRONMENT_IS_PTHREAD) { + readyPromiseResolve(Module); + initRuntime(); + startWorker(Module); + return + } + preRun(); + if (runDependencies > 0) { + return + } + + function doRun() { + if (calledRun) { + return; + } + calledRun = true; + Module["calledRun"] = true; + if (ABORT) { + return; + } + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) { + Module["onRuntimeInitialized"](); + } + postRun() + } + + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function () { + setTimeout(function () { + Module["setStatus"]("") + }, 1); + doRun() + }, 1) + } else { + doRun() + } + } + + if (Module["preInit"]) { + if (typeof Module["preInit"] + == "function") { + Module["preInit"] = [Module["preInit"]]; + } + while (Module["preInit"].length > 0) { + Module["preInit"].pop()() + } + } + run(); + + return moduleArg.ready + } + + ); +})(); +export default Module; \ No newline at end of file diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.wasm b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ddb26f72a0219a05b5f044c159c240f60cfc0228 Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.worker.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.worker.js new file mode 100644 index 0000000000000000000000000000000000000000..8cd9920f96a61e5593e09d76aa4042edac566bca --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt-worker.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:f=>(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f),postMessage:msg=>parentPort.postMessage(msg),performance:global.performance||{now:Date.now}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler:handler,args:args})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./decoder-pro-simd-mt-worker.js")).then(exports=>exports.default(Module))}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["__embind_initialize_bindings"]();initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err(`worker.js received unknown command ${e.data.cmd}`);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt.js new file mode 100644 index 0000000000000000000000000000000000000000..b2ced84fa35d534f5e84fc748692b6ed7646c10c --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd-mt.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL?JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL:e};var s,a,o,d=Object.assign({},n),l=(e,t)=>{throw t},c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f=n.ENVIRONMENT_IS_PTHREAD||!1,p="";function m(e){return n.locateFile?n.locateFile(e,p):p+e}if(h){const{createRequire:e}=await import("module");var _=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href),g=_("fs"),y=_("path");let t;p=u?y.dirname(p)+"/":_("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href)),s=(e,t)=>(e=se(e)?new URL(e):y.normalize(e),g.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=se(e)?new URL(e):y.normalize(e),g.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),l=(e,t)=>{throw process.exitCode=e,t},n.inspect=()=>"[Emscripten Module object]";try{t=_("worker_threads")}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}global.Worker=t.Worker}else(c||u)&&(u?p=self.location.href:"undefined"!=typeof document&&document.currentScript&&(p=document.currentScript.src),r&&(p=r),p=0!==p.indexOf("blob:")?p.substr(0,p.replace(/[?#].*/,"").lastIndexOf("/")+1):"",h||(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)}));h&&"undefined"==typeof performance&&(global.performance=_("perf_hooks").performance);var v=console.log.bind(console),b=console.error.bind(console);h&&(v=function(){for(var e=arguments.length,t=new Array(e),r=0;r=16777216,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+N+"! (STACK_SIZE=16777216)"),f)A=n.wasmMemory;else if(n.wasmMemory)A=n.wasmMemory;else if(!((A=new WebAssembly.Memory({initial:N/65536,maximum:N/65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw E("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),h&&E("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");z(),N=A.buffer.byteLength;var $=[],O=[],G=[],H=0;function V(){return x||H>0}function W(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)Y(n.preRun.shift());Ue($)}function j(){f||Ue(O)}function q(){if(!f){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)X(n.postRun.shift());Ue(G)}}function Y(e){$.unshift(e)}function K(e){O.unshift(e)}function X(e){G.unshift(e)}var Z=0,J=null;function Q(e){Z++,n.monitorRunDependencies&&n.monitorRunDependencies(Z)}function ee(e){if(Z--,n.monitorRunDependencies&&n.monitorRunDependencies(Z),0==Z&&J){var t=J;J=null,t()}}function te(e){n.onAbort&&n.onAbort(e),E(e="Aborted("+e+")"),M=!0,B=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var re,ie="data:application/octet-stream;base64,";function ne(e){return e.startsWith(ie)}function se(e){return e.startsWith("file://")}function ae(e){if(e==re&&w)return new Uint8Array(w);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function oe(e){if(!w&&(c||u)){if("function"==typeof fetch&&!se(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>ae(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>ae(e)))}function de(e,t,r){return oe(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{E(`failed to asynchronously prepare wasm: ${e}`),te(e)}))}function le(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||ne(t)||se(t)||h||"function"!=typeof fetch?de(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return E(`wasm streaming compile failed: ${e}`),E("falling back to ArrayBuffer instantiation"),de(t,r,i)}))))}function ce(){var e={a:ci};function t(e,t){return ui=e.exports,Pe(ui.O),Te=ui.T,K(ui.L),U=t,ee(),ui}if(Q(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){E(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return le(w,re,e,(function(e){t(e.instance,e.module)})).catch(i),{}}function ue(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?ne(re="decoder-pro-simd-mt-worker.wasm")||(re=m(re)):re=new URL("decoder-pro-simd-mt-worker.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href).href;var he=e=>{e.terminate(),e.onmessage=e=>{}},fe=e=>{var t=Ae.pthreads[e];delete Ae.pthreads[e],he(t),vi(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(t),1),t.pthread_ptr=0},pe=e=>{Ae.pthreads[e].postMessage({cmd:"cancel"})},me=e=>{var t=Ae.pthreads[e];R(t),Ae.returnWorkerToPool(t)},_e=e=>{var t=Ae.getNewWorker();if(!t)return 6;Ae.runningWorkers.push(t),Ae.pthreads[e.pthread_ptr]=t,t.pthread_ptr=e.pthread_ptr;var r={cmd:"run",start_routine:e.startRoutine,arg:e.arg,pthread_ptr:e.pthread_ptr};return h&&t.unref(),t.postMessage(r,e.transferList),0},ge="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,ye=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&ge)return ge.decode(e.buffer instanceof SharedArrayBuffer?e.slice(t,n):e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},ve=(e,t)=>e?ye(k,e,t):"";function be(e){if(f)return Lr(0,1,e);B=e,V()||(Ae.terminateAllThreads(),n.onExit&&n.onExit(e),M=!0),l(e,new ue(e))}var we=(e,t)=>{if(B=e,f)throw Be(e),"unwind";be(e)},Se=we,Ee=e=>{if(e instanceof ue||"unwind"==e)return B;l(1,e)},Ae={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){f?Ae.initWorker():Ae.initMainThread()},initMainThread(){for(var e=8;e--;)Ae.allocateUnusedWorker();Y((()=>{Q(),Ae.loadWasmModuleToAllWorkers((()=>ee()))}))},initWorker(){x=!1},setExitStatus:e=>{B=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of Ae.runningWorkers)he(e);for(var e of Ae.unusedWorkers)he(e);Ae.unusedWorkers=[],Ae.runningWorkers=[],Ae.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete Ae.pthreads[t],Ae.unusedWorkers.push(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(e),1),e.pthread_ptr=0,vi(t)},receiveObjectTransfer(e){},threadInitTLS(){Ae.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=pi()){var a=Ae.pthreads[i.targetThread];a?a.postMessage(i,i.transferList):E(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===s?Dr():"spawnThread"===s?_e(i):"cleanupThread"===s?me(i.thread):"killThread"===s?fe(i.thread):"cancelThread"===s?pe(i.thread):"loaded"===s?(e.loaded=!0,h&&!e.pthread_ptr&&e.unref(),t(e)):"alert"===s?alert(`Thread ${i.threadId}: ${i.text}`):"setimmediate"===i.target?e.postMessage(i):"callHandler"===s?n[i.handler](...i.args):s&&E(`worker sent an unknown command ${s}`)},e.onerror=e=>{throw E(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},h&&(e.on("message",(t=>e.onmessage({data:t}))),e.on("error",(t=>e.onerror(t))));var r=[];for(var i of["onExit","onAbort","print","printErr"])n.hasOwnProperty(i)&&r.push(i);e.postMessage({cmd:"load",handlers:r,urlOrBlob:n.mainScriptUrlOrBlob,wasmMemory:A,wasmModule:U})})),loadWasmModuleToAllWorkers(e){if(f)return e();Promise.all(Ae.unusedWorkers.map(Ae.loadWasmModuleToWorker)).then(e)},allocateUnusedWorker(){var e;if(n.locateFile){var t=m("decoder-pro-simd-mt-worker.worker.js");e=new Worker(t)}else e=new Worker(new URL("decoder-pro-simd-mt-worker.worker.js","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href));Ae.unusedWorkers.push(e)},getNewWorker:()=>(0==Ae.unusedWorkers.length&&(Ae.allocateUnusedWorker(),Ae.loadWasmModuleToWorker(Ae.unusedWorkers[0])),Ae.unusedWorkers.pop())};n.PThread=Ae;var Ue=e=>{for(;e.length>0;)e.shift()(n)},xe=()=>{var e=pi(),t=I[e+52>>2],r=I[e+56>>2];Si(t,t-r),Ai(t)};function Be(e){if(f)return Lr(1,0,e);Se(e)}n.establishStackSpace=xe;var Te,ke=[],Ce=e=>{var t=ke[e];return t||(e>=ke.length&&(ke.length=e+1),ke[e]=t=Te.get(e)),t},De=(e,t)=>{!function(e){V()?Ae.setExitStatus(e):bi(e)}(Ce(e)(t))};n.invokeEntryPoint=De;var Pe=e=>{Ae.tlsInitFunctions.push(e)};function Ie(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){I[this.ptr+4>>2]=e},this.get_type=function(){return I[this.ptr+4>>2]},this.set_destructor=function(e){I[this.ptr+8>>2]=e},this.get_destructor=function(){return I[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,T[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=T[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,T[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=T[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){I[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return I[this.ptr+16>>2]},this.get_exception_ptr=function(){if(xi(this.get_type()))return I[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var Fe=(e,t,r)=>{throw new Ie(e).init(t,r),e},Le=e=>{_i(e,!u,1,!c,16777216,!1),Ae.threadInitTLS()},Me=e=>{f?postMessage({cmd:"cleanupThread",thread:e}):me(e)};function Re(e,t,r,i){return f?Lr(2,1,e,t,r,i):Oe(e,t,r,i)}var ze,Ne,$e,Oe=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return E("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(f&&0===n.length)return Re(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return f?(s.cmd="spawnThread",postMessage(s,n),0):_e(s)},Ge=(e,t,r,i,n)=>{},He=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ze=e},Ve=e=>{for(var t="",r=e;k[r];)t+=ze[k[r++]];return t},We={},je={},qe={},Ye=e=>{throw new Ne(e)},Ke=e=>{throw new $e(e)},Xe=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ke("Mismatched type converter count");for(var n=0;n{je.hasOwnProperty(e)?n[t]=je[e]:(s.push(e),We.hasOwnProperty(e)||(We[e]=[]),We[e].push((()=>{n[t]=je[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function Ze(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||Ye(`type "${i}" must have a positive integer typeid pointer`),je.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ye(`Cannot register type '${i}' twice`)}if(je[e]=t,delete qe[e],We.hasOwnProperty(e)){var n=We[e];delete We[e],n.forEach((e=>e()))}}function Je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Ze(e,t,r)}var Qe,et=8,tt=(e,t,r,i)=>{Je(e,{name:t=Ve(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:et,readValueFromPointer:function(e){return this.fromWireType(k[e])},destructorFunction:null})},rt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),it=e=>{Ye(e.$$.ptrType.registeredClass.name+" instance already deleted")},nt=!1,st=e=>{},at=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},ot=e=>{e.count.value-=1,0===e.count.value&&at(e)},dt=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=dt(e,t,r.baseClass);return null===i?null:r.downcast(i)},lt={},ct=()=>Object.keys(_t).length,ut=()=>{var e=[];for(var t in _t)_t.hasOwnProperty(t)&&e.push(_t[t]);return e},ht=[],ft=()=>{for(;ht.length;){var e=ht.pop();e.$$.deleteScheduled=!1,e.delete()}},pt=e=>{Qe=e,ht.length&&Qe&&Qe(ft)},mt=()=>{n.getInheritedInstanceCount=ct,n.getLiveInheritedInstances=ut,n.flushPendingDeletes=ft,n.setDelayFunction=pt},_t={},gt=(e,t)=>{for(void 0===t&&Ye("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},yt=(e,t)=>(t=gt(e,t),_t[t]),vt=(e,t)=>(t.ptrType&&t.ptr||Ke("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ke("Both smartPtrType and smartPtr must be specified"),t.count={value:1},wt(Object.create(e,{$$:{value:t}})));function bt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=yt(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?vt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):vt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=lt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=dt(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?vt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):vt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var wt=e=>"undefined"==typeof FinalizationRegistry?(wt=e=>e,e):(nt=new FinalizationRegistry((e=>{ot(e.$$)})),wt=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};nt.register(e,r,e)}return e},st=e=>nt.unregister(e),wt(e)),St=()=>{Object.assign(Et.prototype,{isAliasOf(e){if(!(this instanceof Et))return!1;if(!(e instanceof Et))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||it(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=wt(Object.create(Object.getPrototypeOf(this),{$$:{value:rt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||it(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),st(this),ot(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||it(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),ht.push(this),1===ht.length&&Qe&&Qe(ft),this.$$.deleteScheduled=!0,this}})};function Et(){}var At=48,Ut=57,xt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=At&&t<=Ut?`_${e}`:e};function Bt(e,t){return{[e=xt(e)]:function(){return t.apply(this,arguments)}}[e]}var Tt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ye(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},kt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&Ye(`Cannot register public name '${e}' twice`),Tt(n,e,e),n.hasOwnProperty(r)&&Ye(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function Ct(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var Dt=(e,t,r)=>{for(;t!==r;)t.upcast||Ye(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Pt(e,t){if(null===t)return this.isReference&&Ye(`null is not a valid ${this.name}`),0;t.$$||Ye(`Cannot pass "${lr(t)}" as a ${this.name}`),t.$$.ptr||Ye(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Dt(t.$$.ptr,r,this.registeredClass)}function It(e,t){var r;if(null===t)return this.isReference&&Ye(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ye(`Cannot pass "${lr(t)}" as a ${this.name}`),t.$$.ptr||Ye(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&Ye(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=Dt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ye("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ye(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,ar.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ye("Unsupporting sharing policy")}return r}function Ft(e,t){if(null===t)return this.isReference&&Ye(`null is not a valid ${this.name}`),0;t.$$||Ye(`Cannot pass "${lr(t)}" as a ${this.name}`),t.$$.ptr||Ye(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&Ye(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Dt(t.$$.ptr,r,this.registeredClass)}function Lt(e){return this.fromWireType(I[e>>2])}var Mt=()=>{Object.assign(Rt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:et,readValueFromPointer:Lt,deleteObject(e){null!==e&&e.delete()},fromWireType:bt})};function Rt(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=It:i?(this.toWireType=Pt,this.destructorFunction=null):(this.toWireType=Ft,this.destructorFunction=null)}var zt,Nt=(e,t,r)=>{n.hasOwnProperty(e)||Ke("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},$t=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Ot=(e,t,r)=>e.includes("j")?$t(e,t,r):Ce(t).apply(null,r),Gt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Ot(e,t,r)}},Ht=(e,t)=>{var r=(e=Ve(e)).includes("j")?Gt(e,t):Ce(t);return"function"!=typeof r&&Ye(`unknown function pointer with signature ${e}: ${t}`),r},Vt=(e,t)=>{var r=Bt(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Wt=e=>{var t=mi(e),r=Ve(t);return hi(t),r},jt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||je[t]||(qe[t]?qe[t].forEach(e):(r.push(t),i[t]=!0))})),new zt(`${e}: `+r.map(Wt).join([", "]))},qt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=Ve(c),s=Ht(n,s),o&&(o=Ht(a,o)),l&&(l=Ht(d,l)),h=Ht(u,h);var f=xt(c);kt(f,(function(){jt(`Cannot construct ${c} due to unbound types`,[i])})),Xe([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:Et.prototype;var a=Bt(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ne("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ne(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ne(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ct(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Rt(c,u,!0,!1,!1),m=new Rt(c+"*",u,!1,!1,!1),_=new Rt(c+" const*",u,!1,!0,!1);return lt[e]={pointerType:m,constPointerType:_},Nt(f,a),[p,m,_]}))},Yt=(e,t)=>{for(var r=[],i=0;i>2]);return r},Kt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Xt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=Bt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Zt(e,t,r,i,n,s){var a=t.length;a<2&&Ye("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=Yt(t,r);n=Ht(i,n),Xe([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Ne(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{jt(`Cannot construct ${e.name} due to unbound types`,a)},Xe([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Zt(r,i,null,n,s),[]))),[]}))},Qt=(e,t,r,i,n,s,a,o,d)=>{var l=Yt(r,i);t=Ve(t),s=Ht(n,s),Xe([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){jt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(Tt(c,t,i),c[t].overloadTable[r-2]=n),Xe([],l,(function(n){var o=Zt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function er(){Object.assign(tr.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function tr(){this.allocated=[void 0],this.freelist=[]}var rr=new tr,ir=e=>{e>=rr.reserved&&0==--rr.get(e).refcount&&rr.free(e)},nr=()=>{for(var e=0,t=rr.reserved;t{rr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),rr.reserved=rr.allocated.length,n.count_emval_handles=nr},ar={toValue:e=>(e||Ye("Cannot use deleted val. handle = "+e),rr.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return rr.allocate({refcount:1,value:e})}}};function or(e){return this.fromWireType(P[e>>2])}var dr=(e,t)=>{Je(e,{name:t=Ve(t),fromWireType:e=>{var t=ar.toValue(e);return ir(e),t},toWireType:(e,t)=>ar.toHandle(t),argPackAdvance:et,readValueFromPointer:or,destructorFunction:null})},lr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},cr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(F[e>>2])};case 8:return function(e){return this.fromWireType(L[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},ur=(e,t,r)=>{Je(e,{name:t=Ve(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:et,readValueFromPointer:cr(t,r),destructorFunction:null})},hr=(e,t,r)=>{switch(t){case 1:return r?e=>T[e>>0]:e=>k[e>>0];case 2:return r?e=>C[e>>1]:e=>D[e>>1];case 4:return r?e=>P[e>>2]:e=>I[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},fr=(e,t,r,i,n)=>{t=Ve(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");Je(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:et,readValueFromPointer:hr(t,r,0!==i),destructorFunction:null})},pr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=I[e>>2],r=I[e+4>>2];return new i(T.buffer,r,t)}Je(e,{name:r=Ve(r),fromWireType:n,argPackAdvance:et,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},mr=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n},_r=(e,t,r)=>mr(e,k,t,r),gr=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},yr=(e,t)=>{var r="std::string"===(t=Ve(t));Je(e,{name:t,fromWireType(e){var t,i=I[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==k[o]){var d=ve(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)_r(t,a,i+1);else if(n)for(var o=0;o255&&(hi(a),Ye("String has UTF-16 code units that do not fit in 8 bits")),k[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&D[i];)++i;if((r=i<<1)-e>32&&vr)return vr.decode(k.slice(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=C[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},wr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return C[t>>1]=0,t-i},Sr=e=>2*e.length,Er=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=P[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},Ar=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),P[t>>2]=a,(t+=4)+4>n)break}return P[t>>2]=0,t-i},Ur=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},xr=(e,t,r)=>{var i,n,s,a,o;r=Ve(r),2===t?(i=br,n=wr,a=Sr,s=()=>D,o=1):4===t&&(i=Er,n=Ar,a=Ur,s=()=>I,o=2),Je(e,{name:r,fromWireType:e=>{for(var r,n=I[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return hi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&Ye(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=fi(4+s+t);return I[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(hi,d),d},argPackAdvance:et,readValueFromPointer:or,destructorFunction(e){hi(e)}})},Br=(e,t)=>{Je(e,{isVoid:!0,name:t=Ve(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Tr=()=>{if(!V())try{f?bi(B):Se(B)}catch(e){Ee(e)}},kr=e=>{if(!M)try{e(),Tr()}catch(e){Ee(e)}},Cr=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(P,e>>2,e).value.then(Dr);var t=e+128;Atomics.store(P,t>>2,1)}};n.__emscripten_thread_mailbox_await=Cr;var Dr=()=>{var e=pi();e&&(Cr(e),kr((()=>wi())))};n.checkMailbox=Dr;var Pr,Ir=(e,t,r)=>{if(e==t)setTimeout((()=>Dr()));else if(f)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=Ae.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},Fr=e=>{var t=Ei(),r=e();return Ai(t),r},Lr=function(e,t){var r=arguments.length-2,i=arguments;return Fr((()=>{for(var n=r,s=Ui(8*n),a=s>>3,o=0;o{Mr.length=r;for(var n=i>>3,s=0;s{h&&Ae.pthreads[e].ref()},Nr={},$r=e=>{var t=Nr[e];return void 0===t?Ve(e):t},Or=[],Gr=(e,t,r,i)=>{(e=Or[e])(t=ar.toValue(t),r=$r(r),null,i)},Hr=e=>{var t=Or.length;return Or.push(e),t},Vr=(e,t)=>{var r=je[e];return void 0===r&&Ye(t+" has unknown type "+Wt(e)),r},Wr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},jr={},qr=(e,t)=>{var r=Wr(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=jr[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;l{e>4&&(rr.get(e).refcount+=1)},Kr=e=>ar.toHandle($r(e)),Xr=()=>ar.toHandle({}),Zr=e=>ar.toHandle(ve(e)),Jr=(e,t,r)=>{e=ar.toValue(e),t=ar.toValue(t),r=ar.toValue(r),e[t]=r},Qr=(e,t)=>{var r=(e=Vr(e,"_emval_take_value")).readValueFromPointer(t);return ar.toHandle(r)},ei=()=>{te("")},ti=()=>{},ri=()=>{H+=1},ii=()=>{throw ri(),"unwind"};Pr=()=>performance.timeOrigin+performance.now();var ni=e=>{te("OOM")},si=e=>{k.length,ni()},ai=[null,[],[]],oi=(e,t)=>{var r=ai[e];0===t||10===t?((1===e?S:E)(ye(r,0)),r.length=0):r.push(t)};function di(e,t,r,i){if(f)return Lr(3,1,e,t,r,i);for(var n=0,s=0;s>2],o=I[t+4>>2];t+=8;for(var d=0;d>2]=n,0}Ae.init(),He(),Ne=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},$e=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},St(),mt(),Mt(),zt=n.UnboundTypeError=Vt(Error,"UnboundTypeError"),er(),sr();var li=[be,Be,Re,di],ci={q:Fe,A:Le,l:Me,y:Oe,s:Ge,G:tt,w:qt,r:Jt,h:Qt,F:dr,n:ur,c:fr,b:pr,o:yr,i:xr,H:Br,u:Ir,B:Rr,z:Cr,D:zr,g:Gr,d:ir,f:qr,I:Yr,p:Kr,K:Xr,E:Zr,j:Jr,J:Qr,k:ei,m:ti,C:ii,e:Pr,t:si,x:Se,v:di,a:A||n.wasmMemory},ui=ce(),hi=e=>(hi=ui.M)(e),fi=e=>(fi=ui.N)(e);n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=ui.O)();var pi=n._pthread_self=()=>(pi=n._pthread_self=ui.P)(),mi=e=>(mi=ui.Q)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=ui.R)();var _i=n.__emscripten_thread_init=(e,t,r,i,s,a)=>(_i=n.__emscripten_thread_init=ui.S)(e,t,r,i,s,a);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=ui.U)();var gi,yi=(e,t,r,i)=>(yi=ui.V)(e,t,r,i),vi=e=>(vi=ui.W)(e),bi=n.__emscripten_thread_exit=e=>(bi=n.__emscripten_thread_exit=ui.X)(e),wi=n.__emscripten_check_mailbox=()=>(wi=n.__emscripten_check_mailbox=ui.Y)(),Si=(e,t)=>(Si=ui.Z)(e,t),Ei=()=>(Ei=ui._)(),Ai=e=>(Ai=ui.$)(e),Ui=e=>(Ui=ui.aa)(e),xi=e=>(xi=ui.ba)(e);function Bi(){if(!(Z>0)){if(f)return t(n),j(),void startWorker(n);W(),Z>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){gi||(gi=!0,n.calledRun=!0,M||(j(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),q()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=ui.ca)(e,t,r,i,s),n.___start_em_js=143356,n.___stop_em_js=143413,n.keepRuntimeAlive=V,n.wasmMemory=A,n.ExitStatus=ue,n.PThread=Ae,J=function e(){gi||Bi(),gi||(J=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return Bi(),e.ready}),a=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href;return async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var r,i,n;(n=t).ready=new Promise(((e,t)=>{r=e,i=t})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var y,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,T,k,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=T=new Float32Array(e),n.HEAPF64=k=new Float64Array(e)}var I=[],F=[],L=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(I)}function R(){n.noFSInit||ke.init.initialized||ke.init(),ke.ignorePermissions=!1,ne(F)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(L)}function N(e){I.unshift(e)}function $(e){F.unshift(e)}function O(e){L.unshift(e)}var G=0,H=null;function V(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function W(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ti};function t(e,t){return ri=e.exports,v=ri.D,P(),It=ri.G,$(ri.E),W(),ri}if(V(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(di(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var ae=(e,t,r)=>{throw new se(e).init(t,r),e},oe=e=>(x[ni()>>2]=e,e),de={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ke.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ue.resolve(e).substr(1),t=ue.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a);if(o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n};function ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},ke.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new ke.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ke.ErrnoError(60);for(var s=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(ke.isBlkdev(r)||ke.isFIFO(r))throw new ke.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:ke.chrdev_stream_ops}});var n=ke.createNode(e,t,r,i);return ke.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):ke.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):ke.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):ke.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=ke.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ke.isDir(e.mode)?t.size=4096:ke.isFile(e.mode)?t.size=e.usedBytes:ke.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw ke.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(ke.isDir(e.mode)){var i;try{i=ke.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ke.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=ke.lookupNode(e,t);for(var i in r.contents)throw new ke.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!ke.isLink(e.mode))throw new ke.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&V()},Ee=(e,t,r,i,n,s)=>ke.createDataFile(e,t,r,i,n,s),Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,n,d),s&&s(),W()}Ue(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Te=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},ke={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new ke.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=ke.root,n="/",s=0;s40)throw new ke.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(ke.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%ke.nameTable.length},hashAddNode(e){var t=ke.hashName(e.parent.id,e.name);e.name_next=ke.nameTable[t],ke.nameTable[t]=e},hashRemoveNode(e){var t=ke.hashName(e.parent.id,e.name);if(ke.nameTable[t]===e)ke.nameTable[t]=e.name_next;else for(var r=ke.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=ke.mayLookup(e);if(r)throw new ke.ErrnoError(r,e);for(var i=ke.hashName(e.id,t),n=ke.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return ke.lookup(e,t)},createNode(e,t,r,i){var n=new ke.FSNode(e,t,r,i);return ke.hashAddNode(n),n},destroyNode(e){ke.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ke.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=ke.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{ke.lookupNode(e,t);return 20}catch(e){}return ke.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=ke.lookupNode(e,t)}catch(e){return e.errno}var n=ke.nodePermissions(e,"wx");if(n)return n;if(r){if(!ke.isDir(i.mode))return 54;if(ke.isRoot(i)||ke.getPath(i)===ke.cwd())return 10}else if(ke.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ke.isLink(e.mode)?32:ke.isDir(e.mode)&&("r"!==ke.flagsToPermissionString(t)||512&t)?31:ke.nodePermissions(e,ke.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=ke.MAX_OPEN_FDS;e++)if(!ke.streams[e])return e;throw new ke.ErrnoError(33)},getStreamChecked(e){var t=ke.getStream(e);if(!t)throw new ke.ErrnoError(8);return t},getStream:e=>ke.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return ke.FSStream||(ke.FSStream=function(){this.shared={}},ke.FSStream.prototype={},Object.defineProperties(ke.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new ke.FSStream,e),-1==t&&(t=ke.nextfd()),e.fd=t,ke.streams[t]=e,e},closeStream(e){ke.streams[e]=null},chrdev_stream_ops:{open(e){var t=ke.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new ke.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){ke.devices[e]={stream_ops:t}},getDevice:e=>ke.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),ke.syncFSRequests++,ke.syncFSRequests>1&&w(`warning: ${ke.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=ke.getMounts(ke.root.mount),i=0;function n(e){return ke.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount(e,t,r){var i,n="/"===r,s=!r;if(n&&ke.root)throw new ke.ErrnoError(10);if(!n&&!s){var a=ke.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,ke.isMountpoint(i))throw new ke.ErrnoError(10);if(!ke.isDir(i.mode))throw new ke.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?ke.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=ke.lookupPath(e,{follow_mount:!1});if(!ke.isMountpoint(t.node))throw new ke.ErrnoError(28);var r=t.node,i=r.mounted,n=ke.getMounts(i);Object.keys(ke.nameTable).forEach((e=>{for(var t=ke.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ke.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=ke.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new ke.ErrnoError(28);var s=ke.mayCreate(i,n);if(s)throw new ke.ErrnoError(s);if(!i.node_ops.mknod)throw new ke.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ke.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ke.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ke.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new ke.ErrnoError(44);var r=ke.lookupPath(t,{parent:!0}).node;if(!r)throw new ke.ErrnoError(44);var i=de.basename(t),n=ke.mayCreate(r,i);if(n)throw new ke.ErrnoError(n);if(!r.node_ops.symlink)throw new ke.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=ke.lookupPath(e,{parent:!0}).node,i=ke.lookupPath(t,{parent:!0}).node,!r||!i)throw new ke.ErrnoError(44);if(r.mount!==i.mount)throw new ke.ErrnoError(75);var d,l=ke.lookupNode(r,a),c=ue.relative(e,s);if("."!==c.charAt(0))throw new ke.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new ke.ErrnoError(55);try{d=ke.lookupNode(i,o)}catch(e){}if(l!==d){var u=ke.isDir(l.mode),h=ke.mayDelete(r,a,u);if(h)throw new ke.ErrnoError(h);if(h=d?ke.mayDelete(i,o,u):ke.mayCreate(i,o))throw new ke.ErrnoError(h);if(!r.node_ops.rename)throw new ke.ErrnoError(63);if(ke.isMountpoint(l)||d&&ke.isMountpoint(d))throw new ke.ErrnoError(10);if(i!==r&&(h=ke.nodePermissions(r,"w")))throw new ke.ErrnoError(h);ke.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{ke.hashAddNode(l)}}},rmdir(e){var t=ke.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!0);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.rmdir)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.rmdir(t,r),ke.destroyNode(i)},readdir(e){var t=ke.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ke.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=ke.lookupPath(e,{parent:!0}).node;if(!t)throw new ke.ErrnoError(44);var r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!1);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.unlink)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.unlink(t,r),ke.destroyNode(i)},readlink(e){var t=ke.lookupPath(e).node;if(!t)throw new ke.ErrnoError(44);if(!t.node_ops.readlink)throw new ke.ErrnoError(28);return ue.resolve(ke.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=ke.lookupPath(e,{follow:!t}).node;if(!r)throw new ke.ErrnoError(44);if(!r.node_ops.getattr)throw new ke.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ke.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=ke.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ke.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){ke.chmod(e,t,!0)},fchmod(e,t){var r=ke.getStreamChecked(e);ke.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=ke.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ke.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){ke.chown(e,t,r,!0)},fchown(e,t,r){var i=ke.getStreamChecked(e);ke.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new ke.ErrnoError(28);var r;"string"==typeof e?r=ke.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ke.ErrnoError(63);if(ke.isDir(r.mode))throw new ke.ErrnoError(31);if(!ke.isFile(r.mode))throw new ke.ErrnoError(28);var i=ke.nodePermissions(r,"w");if(i)throw new ke.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=ke.getStreamChecked(e);if(0==(2097155&r.flags))throw new ke.ErrnoError(28);ke.truncate(r.node,t)},utime(e,t,r){var i=ke.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new ke.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=ke.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new ke.ErrnoError(20)}else i=ke.mknod(e,r,0),s=!0;if(!i)throw new ke.ErrnoError(44);if(ke.isChrdev(i.mode)&&(t&=-513),65536&t&&!ke.isDir(i.mode))throw new ke.ErrnoError(54);if(!s){var a=ke.mayOpen(i,t);if(a)throw new ke.ErrnoError(a)}512&t&&!s&&ke.truncate(i,0),t&=-131713;var o=ke.createStream({node:i,path:ke.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!n.logReadFiles||1&t||(ke.readFiles||(ke.readFiles={}),e in ke.readFiles||(ke.readFiles[e]=1)),o},close(e){if(ke.isClosed(e))throw new ke.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ke.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ke.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ke.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,n){if(i<0||n<0)throw new ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(1==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.read)throw new ke.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new ke.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write(e,t,r,i,n,s){if(i<0||n<0)throw new ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.write)throw new ke.ErrnoError(28);e.seekable&&1024&e.flags&&ke.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new ke.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(t<0||r<=0)throw new ke.ErrnoError(28);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(!ke.isFile(e.node.mode)&&!ke.isDir(e.node.mode))throw new ke.ErrnoError(43);if(!e.stream_ops.allocate)throw new ke.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ke.ErrnoError(2);if(1==(2097155&e.flags))throw new ke.ErrnoError(2);if(!e.stream_ops.mmap)throw new ke.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new ke.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=ke.open(e,t.flags),n=ke.stat(e).size,s=new Uint8Array(n);return ke.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),ke.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ke.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);ke.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ke.write(i,t,0,t.byteLength,void 0,r.canOwn)}ke.close(i)},cwd:()=>ke.currentPath,chdir(e){var t=ke.lookupPath(e,{follow:!0});if(null===t.node)throw new ke.ErrnoError(44);if(!ke.isDir(t.node.mode))throw new ke.ErrnoError(54);var r=ke.nodePermissions(t.node,"x");if(r)throw new ke.ErrnoError(r);ke.currentPath=t.path},createDefaultDirectories(){ke.mkdir("/tmp"),ke.mkdir("/home"),ke.mkdir("/home/web_user")},createDefaultDevices(){ke.mkdir("/dev"),ke.registerDevice(ke.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ke.mkdev("/dev/null",ke.makedev(1,3)),ve.register(ke.makedev(5,0),ve.default_tty_ops),ve.register(ke.makedev(6,0),ve.default_tty1_ops),ke.mkdev("/dev/tty",ke.makedev(5,0)),ke.mkdev("/dev/tty1",ke.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);ke.createDevice("/dev","random",r),ke.createDevice("/dev","urandom",r),ke.mkdir("/dev/shm"),ke.mkdir("/dev/shm/tmp")},createSpecialDirectories(){ke.mkdir("/proc");var e=ke.mkdir("/proc/self");ke.mkdir("/proc/self/fd"),ke.mount({mount(){var t=ke.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=ke.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?ke.createDevice("/dev","stdin",n.stdin):ke.symlink("/dev/tty","/dev/stdin"),n.stdout?ke.createDevice("/dev","stdout",null,n.stdout):ke.symlink("/dev/tty","/dev/stdout"),n.stderr?ke.createDevice("/dev","stderr",null,n.stderr):ke.symlink("/dev/tty1","/dev/stderr"),ke.open("/dev/stdin",0),ke.open("/dev/stdout",1),ke.open("/dev/stderr",1)},ensureErrnoError(){ke.ErrnoError||(ke.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ke.ErrnoError.prototype=new Error,ke.ErrnoError.prototype.constructor=ke.ErrnoError,[44].forEach((e=>{ke.genericErrors[e]=new ke.ErrnoError(e),ke.genericErrors[e].stack=""})))},staticInit(){ke.ensureErrnoError(),ke.nameTable=new Array(4096),ke.mount(we,{},"/"),ke.createDefaultDirectories(),ke.createDefaultDevices(),ke.createSpecialDirectories(),ke.filesystems={MEMFS:we}},init(e,t,r){ke.init.initialized=!0,ke.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,ke.createStandardStreams()},quit(){ke.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ge(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=ke.createFile(e,t,o,i,n);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return ke.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ke.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ke.forceLoadFile(d);var s=be();if(!s)throw new ke.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=ke.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new ke.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(ke.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!ke.isFile(t.node.mode))throw new ke.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);ke.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>ke.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;ke.streams[n];)n++;return ke.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}function Ie(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return ke.open(t,r,n).fd}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}var Fe,Le,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Fe[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Le(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},it=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)},nt={},st=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=at,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=nt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=48,bt=57,wt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=vt&&t<=bt?`_${e}`:e};function St(e,t){return{[e=wt(e)]:function(){return t.apply(this,arguments)}}[e]}var Et=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},At=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),Et(n,e,e),n.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function Ut(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Tt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,nr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Tt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=kt,this.destructorFunction=null)}var It,Ft,Lt=(e,t,r)=>{n.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=It.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=St(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Ht=e=>{var t=si(e),r=Ne(t);return ii(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),o&&(o=Ot(a,o)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=wt(c);At(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=St(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Le("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Le(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Le(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ut(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},Lt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Yt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=St(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var a=t.length;a<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);n=Ot(i,n),We([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Le(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=(e,t,r,i,n,s,a,o,d)=>{var l=jt(r,i);t=Ne(t),s=Ot(n,s),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(Et(c,t,i),c[t].overloadTable[r-2]=n),We([],l,(function(n){var o=Kt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Jt(){Object.assign(Qt.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Qt(){this.allocated=[void 0],this.freelist=[]}var er=new Qt,tr=e=>{e>=er.reserved&&0==--er.get(e).refcount&&er.free(e)},rr=()=>{for(var e=0,t=er.reserved;t{er.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),er.reserved=er.allocated.length,n.count_emval_handles=rr},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),er.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return er.allocate({refcount:1,value:e})}}};function sr(e){return this.fromWireType(x[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return tr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction:null})},or=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},dr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(T[e>>2])};case 8:return function(e){return this.fromWireType(k[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},lr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:dr(t,r),destructorFunction:null})},cr=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ur=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:cr(t,r,0!==i),destructorFunction:null})},hr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},fr=(e,t,r)=>_e(e,E,t,r),pr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==E[o]){var d=Ce(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)fr(t,a,i+1);else if(n)for(var o=0;o255&&(ii(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&mr)return mr.decode(E.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},gr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return A[t>>1]=0,t-i},yr=e=>2*e.length,vr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},br=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(x[t>>2]=a,(t+=4)+4>n)break}return x[t>>2]=0,t-i},wr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Sr=(e,t,r)=>{var i,n,s,a,o;r=Ne(r),2===t?(i=_r,n=gr,a=yr,s=()=>U,o=1):4===t&&(i=vr,n=br,a=wr,s=()=>B,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ii(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=oi(4+s+t);return B[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(ii,d),d},argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction(e){ii(e)}})},Er=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ar={},Ur=e=>{var t=Ar[e];return void 0===t?Ne(e):t},xr=[],Br=(e,t,r,i)=>{(e=xr[e])(t=nr.toValue(t),r=Ur(r),null,i)},Tr=e=>{var t=xr.length;return xr.push(e),t},kr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Cr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Dr={},Pr=(e,t)=>{var r=Cr(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Dr[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;lt+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Fr=()=>{j("")},Lr=()=>Date.now(),Mr=(e,t,r)=>E.copyWithin(e,t,t+r),Rr=e=>{j("OOM")},zr=e=>{E.length,Rr()},Nr={},$r=()=>l||"./this.program",Or=()=>{if(!Or.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:$r()};for(var t in Nr)void 0===Nr[t]?delete e[t]:e[t]=Nr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Or.strings=r}return Or.strings},Gr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Hr=(e,t)=>{var r=0;return Or().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Gr(i,s),r+=i.length+1})),0},Vr=(e,t)=>{var r=Or();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function Wr(e){try{var t=De.getStreamFromFD(e);return ke.close(t),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function jr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:ke.isDir(r.mode)?3:ke.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var qr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.read(e,S,a,o,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Kr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var a=De.getStreamFromFD(e);return ke.llseek(a,s,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Xr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.write(e,S,a,o,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Zr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Xr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ke.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Qr=365,ei=146;Object.defineProperties(Jr.prototype,{read:{get:function(){return(this.mode&Qr)===Qr},set:function(e){e?this.mode|=Qr:this.mode&=~Qr}},write:{get:function(){return(this.mode&ei)===ei},set:function(e){e?this.mode|=ei:this.mode&=~ei}},isFolder:{get:function(){return ke.isDir(this.mode)}},isDevice:{get:function(){return ke.isChrdev(this.mode)}}}),ke.FSNode=Jr,ke.createPreloadedFile=xe,ke.staticInit(),ze(),Le=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Ft=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Jt(),ir();var ti={p:ae,B:Pe,v:Ie,t:Re,n:Xe,r:Wt,q:Xt,f:Zt,C:ar,m:lr,c:ur,b:hr,l:pr,h:Sr,o:Er,d:Br,i:tr,e:Pr,a:Fr,g:Lr,z:Mr,u:zr,x:Hr,y:Vr,k:Wr,w:jr,A:Yr,s:Kr,j:Zr},ri=ie(),ii=e=>(ii=ri.F)(e),ni=()=>(ni=ri.H)(),si=e=>(si=ri.I)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=ri.J)();var ai,oi=e=>(oi=ri.K)(e),di=e=>(di=ri.M)(e);function li(){function e(){ai||(ai=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,a,o,d)=>(n.dynCall_viiijj=ri.N)(e,t,r,i,s,a,o,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=ri.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=ri.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=ri.Q)(e,t,r,i,s),H=function e(){ai||li(),ai||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return li(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function c(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var u,h=function(e,t,r,i,n,s,a){var o=1/(t-r),d=1/(i-n),l=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*d,e[14]=(a+s)*l,e[15]=1,e};function f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),a=p(),d=p(),u=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,Vt=Gt;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===xt}function qt(e){return e[0]>>4===Ne}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Yt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Ht[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Ot(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Ht[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=nr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function ar(e){return null==e}function or(e){return!ar(e)}function dr(e){return"function"==typeof e}function lr(e){let t=null,r=31&e[0];return r!==He&&r!==Ve||(t=Re),t||(r=(126&e[0])>>1,r!==nt&&r!==at&&r!==dt||(t=ze)),t}function cr(){return"undefined"!=typeof WritableStream}function ur(e){e.close()}function hr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function fr(e){return e.ok&&e.status>=200&&e.status<=299}function pr(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(B)}function mr(e){return e[0]>>4===Bt&&e[1]===xt}function _r(e){return!0===e||"true"===e}function gr(e){return!0!==e&&"true"!==e}function yr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}function vr(e,t){const r=Qt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Je||r===et||r===rt)||gr(t)&&r===We)&&(i=!0)})),i}var br=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const wr=Symbol(32),Sr=Symbol(16),Er=Symbol(8);class Ar{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return br(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(wr)}readU16(){return this.read(Sr)}readU8(){return this.read(Er)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===wr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Sr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Er){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Ar.U32=wr,Ar.U16=Sr,Ar.U8=Er;class Ur{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=xr._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=xr.getProfileString(i),a=xr.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/w);let B=0,T=0;if(0===o)B=1,T=2-m;else{B=3===o?1:2,T=(1===o?2:1)*(2-m)}let k=16*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*B,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:xr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=xr._ebsp2rbsp(e),n=new Ot(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=xr.getProfileString(s),d=xr.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);x=n.readBool(),B=t,T=2*e,U=B/T}}let k=1;1===E&&1===A||(k=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),I=16*(g+1)*(2-y);P-=(v+b)*C,I-=(w+S)*D;let F=Math.ceil(P*k);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:xr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:T,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:I},present_size:{width:F,height:I}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function kr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Cr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=xr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e){return 31&e[0]}function Fr(e){return e===Ye}function Lr(e){return!function(e){return e===He||e===Ve}(e)&&!Fr(e)}function Mr(e){return e===We}function Rr(e){if(0===e.length)return!1;const t=Ir(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Ze||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Nr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const $r=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Or=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Gr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(F=t[e-1],L=i[e-1]):255===e&&(F=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=$r(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(F=t[e-1],L=i[e-1]):255===e&&(F=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|at,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|dt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e){return(126&e[0])>>1}function Xr(e){return e===ct}function Zr(e){return!function(e){return e>=32&&e<=40}(e)}function Jr(e){return e>=16&&e<=21}function Qr(e){if(0===e.length)return!1;const t=Kr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ti{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ri(e){return parseInt(e)===e}function ii(e){if(!ri(e.length))return!1;for(var t=0;t255)return!1;return!0}function ni(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ii(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ri(e.length)&&ii(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ai(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var oi,di={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},li=(oi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+oi[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},ui=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],fi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],pi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],mi=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],_i=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],gi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],yi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],vi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],bi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],wi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Si=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ei=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ai=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Ui=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function xi(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,d=n;d>16&255]<<24^hi[a>>8&255]<<16^hi[255&a]<<8^hi[a>>24&255]^ui[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^hi[a>>16&255]<<16^hi[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ei[a>>16&255]^Ai[a>>8&255]^Ui[255&a]},Bi.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^mi[i[(n+1)%4]>>16&255]^_i[i[(n+2)%4]>>8&255]^gi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(hi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(hi[255&i[(n+3)%4]]^a);return o},Bi.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^vi[i[(n+3)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(fi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(fi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(fi[255&i[(n+1)%4]]^a);return o};var Ti=function(e){if(!(this instanceof Ti))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Bi(e)};Ti.prototype.encrypt=function(e){if((e=ni(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Pi.prototype.setBytes=function(e){if(16!=(e=ni(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ii=function(e,t){if(!(this instanceof Ii))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Bi(e)};Ii.prototype.encrypt=function(e){for(var t=ni(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],T=s[1],k=s[2],C=s[3];B=l(B,T,k,C,a,7,o[0]),C=l(C,B,T,k,d,12,o[1]),k=l(k,C,B,T,f,17,o[2]),T=l(T,k,C,B,p,22,o[3]),B=l(B,T,k,C,m,7,o[4]),C=l(C,B,T,k,_,12,o[5]),k=l(k,C,B,T,g,17,o[6]),T=l(T,k,C,B,y,22,o[7]),B=l(B,T,k,C,v,7,o[8]),C=l(C,B,T,k,b,12,o[9]),k=l(k,C,B,T,w,17,o[10]),T=l(T,k,C,B,S,22,o[11]),B=l(B,T,k,C,E,7,o[12]),C=l(C,B,T,k,A,12,o[13]),k=l(k,C,B,T,U,17,o[14]),B=c(B,T=l(T,k,C,B,x,22,o[15]),k,C,d,5,o[16]),C=c(C,B,T,k,g,9,o[17]),k=c(k,C,B,T,S,14,o[18]),T=c(T,k,C,B,a,20,o[19]),B=c(B,T,k,C,_,5,o[20]),C=c(C,B,T,k,w,9,o[21]),k=c(k,C,B,T,x,14,o[22]),T=c(T,k,C,B,m,20,o[23]),B=c(B,T,k,C,b,5,o[24]),C=c(C,B,T,k,U,9,o[25]),k=c(k,C,B,T,p,14,o[26]),T=c(T,k,C,B,v,20,o[27]),B=c(B,T,k,C,A,5,o[28]),C=c(C,B,T,k,f,9,o[29]),k=c(k,C,B,T,y,14,o[30]),B=u(B,T=c(T,k,C,B,E,20,o[31]),k,C,_,4,o[32]),C=u(C,B,T,k,v,11,o[33]),k=u(k,C,B,T,S,16,o[34]),T=u(T,k,C,B,U,23,o[35]),B=u(B,T,k,C,d,4,o[36]),C=u(C,B,T,k,m,11,o[37]),k=u(k,C,B,T,y,16,o[38]),T=u(T,k,C,B,w,23,o[39]),B=u(B,T,k,C,A,4,o[40]),C=u(C,B,T,k,a,11,o[41]),k=u(k,C,B,T,p,16,o[42]),T=u(T,k,C,B,g,23,o[43]),B=u(B,T,k,C,b,4,o[44]),C=u(C,B,T,k,E,11,o[45]),k=u(k,C,B,T,x,16,o[46]),B=h(B,T=u(T,k,C,B,f,23,o[47]),k,C,a,6,o[48]),C=h(C,B,T,k,y,10,o[49]),k=h(k,C,B,T,U,15,o[50]),T=h(T,k,C,B,_,21,o[51]),B=h(B,T,k,C,E,6,o[52]),C=h(C,B,T,k,p,10,o[53]),k=h(k,C,B,T,w,15,o[54]),T=h(T,k,C,B,d,21,o[55]),B=h(B,T,k,C,v,6,o[56]),C=h(C,B,T,k,x,10,o[57]),k=h(k,C,B,T,g,15,o[58]),T=h(T,k,C,B,A,21,o[59]),B=h(B,T,k,C,m,6,o[60]),C=h(C,B,T,k,S,10,o[61]),k=h(k,C,B,T,f,15,o[62]),T=h(T,k,C,B,b,21,o[63]),s[0]=s[0]+B|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=Li).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,T=h.low,k=f,C=p,D=m,P=_,I=g,F=y,L=v,M=b,R=w,z=S,N=E,$=A,O=U,G=x,H=B,V=T,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],ae=se.high,oe=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&O,fe=z&$^~z&G,pe=k&D^k&I^D&I,me=C&P^C&F^P&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=O,V=G,O=N,G=$,N=R,$=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=I,M=F,I=D,F=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

          >>0?1:0),y=s.low=y+F,s.high=g+I+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),T=h.low=T+V,h.high=B+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,U,x,B,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,I=l.words,F=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],U=b=T[3],x=w=T[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],B=(B=v(B|=0,I[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,F[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=T[1]+f+U|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,n;e.exports=(i=(r=Li).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=Li).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=Li).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=Li).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(s+4+2,s+4+a);let n=new Fi.ModeOfOperation.ctr(t,new Fi.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function zi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Fi.ModeOfOperation.ctr(t,new Fi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}$t((function(e,t){e.exports=Li}));var Ni=$t((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[a].grouping_type+"/0",(o=new l(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function $i(e){return e.reduce(((e,t)=>256*e+t))}function Oi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Ni.Log,Ni.MP4BoxStream,Ni.DataStream,Ni.MultiBufferStream,Ni.MPEG4DescriptorParser,Ni.BoxParser,Ni.XMLSubtitlein4Parser,Ni.Textin4Parser,Ni.ISOFile,Ni.createFile;class Gi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Oi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}function Hi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),a=5;for(;an){const t=new Uint8Array(s.length+e.length-a);t.set(s,0),t.set(e.slice(a),s.length),s=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=nn(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(a+4,a+4+u),0);const o=er(Hi(n,new Uint8Array(r))),l=new Uint8Array(s.length+o.length);l.set(s,0),l.set(o,s.length),s=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(o,s.length),r.set(t,s.length+4),s=r}a=a+4+d}return s}const on={init:0,findFirstStartCode:1,findSecondStartCode:2};class dn extends class{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=on.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=on.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=on.findFirstStartCode}}}}function ln(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=ln(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class fn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{dr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class pn{static init(){pn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in pn.types)pn.types.hasOwnProperty(e)&&(pn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=pn.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return pn.box(pn.types.trak,pn.tkhd(e),pn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return pn.box(pn.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return pn.box(pn.types.mdia,pn.mdhd(e),pn.hdlr(e),pn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return pn.box(pn.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?pn.constants.HDLR_AUDIO:pn.constants.HDLR_VIDEO,pn.box(pn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?pn.box(pn.types.smhd,pn.constants.SMHD):pn.box(pn.types.vmhd,pn.constants.VMHD),pn.box(pn.types.minf,t,pn.dinf(),pn.stbl(e))}static dinf(){return pn.box(pn.types.dinf,pn.box(pn.types.dref,pn.constants.DREF))}static stbl(e){return pn.box(pn.types.stbl,pn.stsd(e),pn.box(pn.types.stts,pn.constants.STTS),pn.box(pn.types.stsc,pn.constants.STSC),pn.box(pn.types.stsz,pn.constants.STSZ),pn.box(pn.types.stco,pn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp3(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp4a(e)):"avc"===e.videoType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.avc1(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types.mp4a,i,pn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return pn.box(pn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.avc1,n,pn.box(pn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.hvc1,n,pn.box(pn.types.hvcC,t))}static mvex(e){return pn.box(pn.types.mvex,pn.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return pn.box(pn.types.trex,r)}static moof(e,t){return pn.box(pn.types.moof,pn.mfhd(e.sequenceNumber),pn.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return pn.box(pn.types.mfhd,t)}static traf(e,t){let r=e.id,i=pn.box(pn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=pn.box(pn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=pn.sdtp(e),a=pn.trun(e,s.byteLength+16+16+8+16+8+8);return pn.box(pn.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,pn.box(pn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),pn.box(pn.types.trun,r)}static mdat(e){return pn.box(pn.types.mdat,e)}}pn.init();var mn,_n=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(mn=_n)&&mn.__esModule&&Object.prototype.hasOwnProperty.call(mn,"default")&&mn.default;const gn=[44100,48e3,32e3,0],yn=[22050,24e3,16e3,0],vn=[11025,12e3,8e3,0],bn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],wn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Sn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function En(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=vn[a];break;case 2:d=yn[a];break;case 3:d=gn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=zn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class On{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Gn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Hn=new Array(214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72),Vn=new Array(2746333894,1453994832,1736282519,2993693404),Wn=new Array(462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257);function jn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Yn(e,t){return t+3>>19)^(i<<23|i>>>9)}function Zn(e,t){var r=new Array(36);r[0]=Yn(t,0),r[1]=Yn(t,4),r[2]=Yn(t,8),r[3]=Yn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^Jn(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function Qn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Kn(e),n=Math.ceil(r.length/16),s=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let a=5;for(;as)break;let d=e[a+4],l=!1,c=2;if(i?(n&&(c=3),d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Qn(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()});const ts=[];ts.push(a({printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc"))&&console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){e&&-1!==e.indexOf("not compiled with thread support, using thread emulation")||console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(ts).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s=null,a=null,o=null,d=null,l=null,c=null,u=!1,h=null,f=null,S=!1,E=!1,B=!!_r(r),we=0,Se=0,We=!1,Ze=null,Je=null,et=null,rt=[],ct=null,Et=null,At=0,Bt=0,Nt=null,$t=null,Ot=0,Gt=0,Ht=!1,Yt=!1,Jt=!1,nr=null,br=null,wr=!1,Sr=!0,Er=()=>{const e=pr();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,isSm4CryptoH265V2:e.isSm4CryptoH265V2,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){s.decoder=new VideoDecoder({output:function(e){if(dr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ni.delay,ts:0},[r]),ur(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ni.delay,ts:0},[t]),ur(e)}},error:function(e){ni.debug.error("worker","VideoDecoder error",e)}})},destroy(){s.reset(),s.decoder&&"closed"!==s.decoder.state&&(s.decoder.close(),s.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ft:pt});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const a=e.slice(5);t===Fe?(n=Tr(a),i={codec:n.codec,description:a}):t===Le&&(n=Vr(a),i={codec:n.codec,description:a}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),s.isEmitInfo||(ni.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d"));try{s.decoder.configure(i),s.hasInit=!0}catch(e){ni.debug.error("worker","VideoDecoder configure error",e.code,e),e.toString()}}else ni.debug.warn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let Br=function(){if(wr=!0,ni.fetchStatus!==Ct||gr(ni._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){ni.debug.log("worker","abort catch",e)}}else a=null,ni.debug.log("worker",`abort() and not abortController.abort() _status is ${ni.fetchStatus} and _isChrome is ${ni._opt.isChrome}`)},$r={init(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},destroy(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ni._opt.nakedFlowDemuxUseNew){const e=$r.extractNALu$3(t);$r.handleVideoFrames(e)}else $r.extractNALu$2(t)},getNaluDts(){const e=ni._opt.nakedFlowFps;let t=$r.localDts;return $r.localDts=$r.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ni._opt.sampleRate,t=ni._opt.audioBufferSize;return $r.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e{const t=Ir(e);t===Ve||t===He?$r.handleVideoH264Nalu(e):Lr(t)&&i.push(e)})),1===i.length)$r.handleVideoH264Nalu(i[0]);else if(Rr(i)){const e=Ir(i[0]),t=Mr(e);$r.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH264Nalu(e)}))}else if($r.streamType===ze)if(ni._opt.nakedFlowH265DemuxUseNew){const t=$r.handleAddNaluStartCode(e),r=$r.extractNALu(t);if(0===r.length)return void ni.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Kr(e);t===dt||t===at||t===nt?$r.handleVideoH265Nalu(e):Zr(t)&&i.push(e)})),1===i.length)$r.handleVideoH265Nalu(i[0]);else if(Qr(i)){const e=Kr(i[0]),t=Jr(e);$r.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH265Nalu(e)}))}else Kr(e)===dt?$r.extractH265PPS(e):$r.handleVideoH265Nalu(e)},extractH264PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Fr(Ir(e))?$r.extractH264SEI(e):$r.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Xr(Kr(e))?$r.extractH265SEI(e):$r.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Ir(e);switch(t){case He:$r.sps=e;break;case Ve:$r.pps=e}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=kr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(Lr(t)){const r=Mr(t),i=$r.getNaluDts(),n=Dr(e,r);$r.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if($r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=kr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}},handleVideoH264NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Pr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Kr(e);switch(t){case nt:$r.vps=e;break;case at:$r.sps=e;break;case dt:$r.pps=e}if($r.isSendSeqHeader){if($r.vps&&$r.sps&&$r.pps){const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}if(Zr(t)){const r=Jr(t),i=$r.getNaluDts(),n=qr(e,r);$r.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if($r.vps&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}},handleVideoH265NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Yr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ni.calcNetworkDelay(t.ts),t.isIFrame&&ni.calcIframeIntervalTimestamp(t.ts),ni.decode(e,t)},handleVideoFrames(e){if(!$r.streamVideoType)for(let t of e)if($r.streamVideoType=lr(t),$r.streamVideoType)break;$r.streamVideoType&&($r.streamVideoType===Re?$r.handleVideoH264Frames(e):this.streamVideoType===ze&&$r.handleVideoH265Frames(e))},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Ir(a);let o=!1,d=e===qe;e!==je&&e!==qe||(s=$r.parseVideo264Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ve:$r.pps=e;break;case He:$r.sps=e;break;case Ye:n=e}if(Lr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=Cr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=Cr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(i){const e=$r.getNaluDts(),t=Pr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:n,ts:e},[n.buffer]),$r.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Kr(a);let o=!1,d=Jr(e);Zr(e)&&(s=this.parseVideo265Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case dt:$r.pps=e;break;case at:$r.sps=e;break;case nt:$r.vps=e}if(Zr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps&&$r.vps){$r.isSendSeqHeader=!0;const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps&&$r.vps){const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if(i){const e=$r.getNaluDts(),t=Yr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:null,ts:e},[null.buffer]),$r.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{$r.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new On(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new On(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Or={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Or.mp4Box=Ni.createFile(),Or.mp4Box.onReady=Or.onReady,Or.mp4Box.onError=Or.onError,Or.mp4Box.onSamples=Or.onSamples},initTransportDescarmber(){Or.transportDescarmber=new Gi},_getSeqHeader(e){const t=Or.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Ni.DataStream(void 0,0,Ni.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Or.isHevc=!0,ni.isHevc=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ni.debug.log(Or.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Or.videoTrackId=t.id;const e=Or._getSeqHeader(t);e&&(ni.debug.log(Or.LOG_NAME,"seqHeader"),ni.decodeVideo(e,0,!0,0)),Or.mp4Box.setExtractionOptions(t.id)}if(r&&ni._opt.hasAudio){Or.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Or.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ni.debug.log(Or.LOG_NAME,"aacADTSHeader"),ni.decodeAudio(n,0)}Or.mp4Box.start()},onError(e){ni.debug.error(Or.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Or.videoTrackId){for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&ni.calcIframeIntervalTimestamp(i);let n=null;n=Or.isHevc?Yr(t,r):Pr(t,r),ni.decode(n,{type:oe,ts:i,isIFrame:r,cts:0})}Or.mp4Box.removeUsedSamples(e)}else if(e===Or.audioTrackId){if(ni._opt.hasAudio){for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),ni.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}Or.mp4Box.removeUsedSamples(e)}}else ni.debug.warn(Or.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Or.transportDescarmber&&(t=Or.transportDescarmber.transport(t)),t.buffer.fileStart=Or.offset,Or.offset+=t.byteLength,Or.mp4Box.appendBuffer(t.buffer)},destroy(){Or.mp4Box&&(Or.mp4Box.stop(),Or.mp4Box.flush(),Or.mp4Box.destroy(),Or.mp4Box=null),Or.transportDescarmber&&(Or.transportDescarmber.destroy(),Or.transportDescarmber=null),Or.offset=0,Or.videoTrackId=null,Or.audioTrackId=null,Or.isHevc=!1}},Wr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Wr.extractNALu(t)},destroy(){Wr.lastBuffer=new Uint8Array(0),Wr.parsedOffset=0,Wr.firstStartCodeOffset=0,Wr.secondStartCodeOffset=0,Wr.state="init",Wr.hasInitVideoCodec=!1,Wr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ni.debug.warn(Wr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Wr.lastBuffer.length+e.length);for(t.set(Wr.lastBuffer,0),t.set(new Uint8Array(e),Wr.lastBuffer.length),Wr.lastBuffer=t;;){if("init"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findFirstStartCode",Wr.firstStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findSecondStartCode",Wr.secondStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Wr.state){if(!(Wr.lastBuffer.length-Wr.parsedOffset>0))break;{let e,t,r=192&Wr.lastBuffer[Wr.parsedOffset];e=0==r?Wr.secondStartCodeOffset-14:Wr.secondStartCodeOffset;let i=0==(192&Wr.lastBuffer[Wr.firstStartCodeOffset+4]);if(i){if(Wr.firstStartCodeOffset-14<0)return void ni.debug.warn(Wr.LOG_NAME,"firstStartCodeOffset -14 is",Wr.firstStartCodeOffset-14);Wr.hasInitVideoCodec||(Wr.hasInitVideoCodec=!0,ni.debug.log(Wr.LOG_NAME,"setCodec"),ai.setCodec(Me,"")),t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset-14,e)}else t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset,e);let n=Wr.getNaluDts();Wr.hasInitVideoCodec?(postMessage({cmd:O,type:xe,value:t.byteLength}),postMessage({cmd:O,type:Be,value:n}),we=n,ai.decode(t,i?1:0,n)):ni.debug.warn(Wr.LOG_NAME,"has not init video codec"),Wr.lastBuffer=Wr.lastBuffer.subarray(e),Wr.firstStartCodeOffset=0==r?14:0,Wr.parsedOffset=Wr.firstStartCodeOffset+4,Wr.state="findFirstStartCode"}}}},getNaluDts(){let e=Wr.localDts;return Wr.localDts=Wr.localDts+40,e}},ri={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Nn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){ri.media_info_=null,ri.pes_slice_queues_=null,ri.section_slice_queues_=null,ri.video_metadata_=null,ri.audio_metadata_=null,ri.aac_last_incomplete_data_=null,ri.video_track_=null,ri.audio_track_=null,ri._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){ri._remainingPacketData&&(e=hn(ri._remainingPacketData,e),ri._remainingPacketData=null);let t=e.buffer;const r=ri.parseChunks(t);r?ri._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!ri.pmt_||ri.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);ri.last_pcr_=e}if(2==a||5+e===188){t+=188,204===ri.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===ri.current_pmt_pid_||null!=ri.pmt_&&ri.pmt_.pid_stream_type[s]===Pn){let r=188-c;ri.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=ri.pmt_&&null!=ri.pmt_.pid_stream_type[s]){let r=188-c,i=ri.pmt_.pid_stream_type[s];s!==ri.pmt_.common_pids.h264&&s!==ri.pmt_.common_pids.h265&&s!==ri.pmt_.common_pids.adts_aac&&s!==ri.pmt_.common_pids.loas_aac&&s!==ri.pmt_.common_pids.ac3&&s!==ri.pmt_.common_pids.eac3&&s!==ri.pmt_.common_pids.opus&&s!==ri.pmt_.common_pids.mp3&&!0!==ri.pmt_.pes_private_data_pids[s]&&!0!==ri.pmt_.timed_id3_pids[s]&&!0!==ri.pmt_.synchronous_klv_pids[s]&&!0!==ri.pmt_.asynchronous_klv_pids[s]||ri.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===ri.tsPacketSize&&(t+=16)}return ri.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=ri.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):ri.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&ri.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):s.total_length>=s.expected_length&&ri.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ni.debug.warn(ri.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=ri.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?ri.emitPESSlices(e,i):ri.clearSlices(e,i)),ri.pes_slice_queues_[i.pid]=new Ln,ri.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==ri.pes_slice_queues_[i.pid])return;let o=ri.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?ri.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ni.debug.warn(ri.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case An:case Un:ri.parseMP3Payload(c,r);break;case xn:ri.pmt_.common_pids.opus===e.pid||ri.pmt_.common_pids.ac3===e.pid||ri.pmt_.common_pids.eac3===e.pid||(ri.pmt_.asynchronous_klv_pids[e.pid]?ri.parseAsynchronousKLVMetadataPayload(c,e.pid,i):ri.pmt_.smpte2038_pids[e.pid]?ri.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):ri.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Bn:ri.parseADTSAACPayload(c,r);break;case Tn:ri.parseLOASAACPayload(c,r);break;case kn:case Cn:break;case Dn:ri.pmt_.timed_id3_pids[e.pid]?ri.parseTimedID3MetadataPayload(c,r,s,e.pid,i):ri.pmt_.synchronous_klv_pids[e.pid]&&ri.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case In:ri.parseH264Payload(c,r,s,e.random_access_indicator);break;case Fn:ri.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===xn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);ri.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ni.debug.error(ri.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(ri.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=ri.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==ri.pat_&&ni.debug.log(ri.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),ri.pat_=a,ri.current_program_=d,ri.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ni.debug.error(ri.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=ri._initPmt(),r.program_number=n,r.version_number=s,ri.program_pmt_map_[n]=r;else if(r=ri.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iri.has_video_&&ri.has_audio_?ri.video_init_segment_dispatched_&&ri.audio_init_segment_dispatched_:ri.has_video_&&!ri.has_audio_?ri.video_init_segment_dispatched_:!(ri.has_video_||!ri.has_audio_)&&ri.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=ri.video_metadata_.details,t={type:"video"};t.id=ri.video_track_.id,t.timescale=1e3,t.duration=ri.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,ri.video_metadata_.vps){ni.isHevc=!0;let e=ri.video_metadata_.vps.data.subarray(4),r=ri.video_metadata_.sps.data.subarray(4),i=ri.video_metadata_.pps.data.subarray(4);t.hvcc=jr({vps:e,sps:r,pps:i}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ni.decodeVideo(t.hvcc,0,!0,0)}else{let e=ri.video_metadata_.sps.data.subarray(4),r=ri.video_metadata_.pps.data.subarray(4);t.avcc=Cr({sps:e,pps:r}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ni.decodeVideo(t.avcc,0,!0,0)}ri.video_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let n=ri.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){ri.isInitSegmentDispatched()&&ri.video_track_.length&&ri._preDoDecode()},dispatchAudioMediaSegment(){ri.isInitSegmentDispatched()&&ri.audio_track_.length&&ri._preDoDecode()},dispatchAudioVideoMediaSegment(){ri.isInitSegmentDispatched()&&(ri.audio_track_.length||ri.video_track_.length)&&ri._preDoDecode()},parseADTSAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Zt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(ar(this.loas_previous_frame)?void 0:this.loas_previous_frame));){ri.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},ri.dispatchAudioInitSegment(h)):ri.detectAudioMetadataChange(h)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/ri.timescale_,dts:t/ri.timescale_,type:ae};ri.audio_track_.samples.push(f),ri.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==ri.audio_metadata_.codec)return ni.debug.log(ri.TAG_NAME,`Audio: Audio Codecs changed from ${ri.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===ri.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==ri.audio_metadata_.audio_object_type)return ni.debug.log(ri.TAG_NAME,`AAC: AudioObjectType changed from ${ri.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==ri.audio_metadata_.sampling_freq_index)return ni.debug.log(ri.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==ri.audio_metadata_.channel_config)return ni.debug.log(ri.TAG_NAME,`AAC: Channel configuration changed from ${ri.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===ri.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==ri.audio_metadata_.sampling_frequency)return ni.debug.log(ri.TAG_NAME,`AC3: Sampling Frequency changed from ${ri.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==ri.audio_metadata_.bit_stream_identification)return ni.debug.log(ri.TAG_NAME,`AC3: Bit Stream Identification changed from ${ri.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==ri.audio_metadata_.bit_stream_mode)return ni.debug.log(ri.TAG_NAME,`AC3: BitStream Mode changed from ${ri.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==ri.audio_metadata_.channel_mode)return ni.debug.log(ri.TAG_NAME,`AC3: Channel Mode changed from ${ri.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==ri.audio_metadata_.low_frequency_effects_channel_on)return ni.debug.log(ri.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${ri.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===ri.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`Opus: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===ri.audio_metadata_.codec){const t=e.data;if(t.object_type!==ri.audio_metadata_.object_type)return ni.debug.log(ri.TAG_NAME,`MP3: AudioObjectType changed from ${ri.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`MP3: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=ri.audio_track_.id,t.timescale=1e3,t.duration=ri.duration_,"aac"===ri.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $n(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ni._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ni.decodeAudio(n,0)}else"ac-3"===ri.audio_metadata_.codec||"ec-3"===ri.audio_metadata_.codec||"opus"===ri.audio_metadata_.codec||"mp3"===ri.audio_metadata_.codec&&(t.audioSampleRate=ri.audio_metadata_.sample_rate,t.channelCount=ri.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==ri.audio_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),ri.audio_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let r=ri.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Rn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/ri.timescale_);s.pts=e}else s.nearest_pts=ri.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/ri.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ni.debug.log(ri.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=ri.audio_last_sample_pts_?Math.floor(ri.audio_last_sample_pts_):null!=ri.last_pcr_?Math.floor(ri.last_pcr_/300/ri.timescale_):void 0,_preDoDecode(){const e=ri.video_track_,t=ri.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===oe?ri._doDecodeVideo({...e,payload:t}):e.type===ae&&ri._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Yr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ni.calcIframeIntervalTimestamp(e.dts);let i=ni.cryptoPayload(r,e.isIFrame);ni.decode(i,{type:oe,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;_r(ni._opt.m7sCryptoAudio)&&(r=ni.cryptoPayloadAudio(t)),ni.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},ii=null;yr()&&(ii={TAG_NAME:"worker MediaSource",_resetInIt(){ii.isAvc=null,ii.isAAC=null,ii.videoInfo={},ii.videoMeta={},ii.audioMeta={},ii.sourceBuffer=null,ii.audioSourceBuffer=null,ii.hasInit=!1,ii.hasAudioInit=!1,ii.isAudioInitInfo=!1,ii.videoMimeType="",ii.audioMimeType="",ii.cacheTrack={},ii.cacheAudioTrack={},ii.timeInit=!1,ii.sequenceNumber=0,ii.audioSequenceNumber=0,ii.firstRenderTime=null,ii.firstAudioTime=null,ii.mediaSourceAppendBufferFull=!1,ii.mediaSourceAppendBufferError=!1,ii.mediaSourceAddSourceBufferError=!1,ii.mediaSourceBufferError=!1,ii.mediaSourceError=!1,ii.prevTimestamp=null,ii.decodeDiffTimestamp=null,ii.prevDts=null,ii.prevAudioDts=null,ii.prevPayloadBufferSize=0,ii.isWidthOrHeightChanged=!1,ii.prevTs=null,ii.prevAudioTs=null,ii.eventListenList=[],ii.pendingRemoveRanges=[],ii.pendingSegments=[],ii.pendingAudioRemoveRanges=[],ii.pendingAudioSegments=[],ii.supportVideoFrameCallbackHandle=null,ii.audioSourceBufferCheckTimeout=null,ii.audioSourceNoDataCheckTimeout=null,ii.hasPendingEos=!1,ii.$video={currentTime:0,readyState:0}},init(){ii.events=new fn,ii._resetInIt(),ii.mediaSource=new self.MediaSource,ii.isDecodeFirstIIframe=!!gr(ni._opt.checkFirstIFrame),ii._bindMediaSourceEvents()},destroy(){ii.stop(),ii._clearAudioSourceBufferCheckTimeout(),ii.eventListenList&&ii.eventListenList.length&&(ii.eventListenList.forEach((e=>e())),ii.eventListenList=[]),ii._resetInIt(),ii.mediaSource=null},getState:()=>ii.mediaSource&&ii.mediaSource.readyState,isStateOpen:()=>ii.getState()===yt,isStateClosed:()=>ii.getState()===vt,isStateEnded:()=>ii.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=ii.events,t=e(ii.mediaSource,wt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceOpen"),ii._onMediaSourceSourceOpen()})),r=e(ii.mediaSource,bt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceClose")})),i=e(ii.mediaSource,St,(()=>{ni.debug.log(ii.TAG_NAME,"sourceended")}));ii.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ii.sourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ii._initSourceBuffer()),ii.audioSourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ii._initAudioSourceBuffer()),ii._hasPendingSegments()&&ii._doAppendSegments()},decodeVideo(e,t,r,i){if(ni.isDestroyed)ni.debug.warn(ii.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(gr(ii.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Le&&gr(ni._opt.supportMSEDecodeHevc))return void ii.emitError(Pe.mediaSourceH265NotSupport);ii.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),ii.hasInit=ii._decodeConfigurationRecord(e,t,r,i)}else ni.debug.warn(ii.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!ii.isDecodeFirstIIframe&&r&&(ii.isDecodeFirstIIframe=!0),ii.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Fe?r=Tr(e.slice(5)):t===Le&&(r=Hr(e));const i=ii.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ni.debug.warn(ii.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ii.isWidthOrHeightChanged=!0,ii.emitError(Pe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(ii.isWidthOrHeightChanged)return void ni.debug.warn(ii.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mr(e))return void ni.debug.log(ii.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthii.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Fe?s=Tr(n):i===Le&&(s=Vr(n)),ii.videoInfo.width=s.codecWidth,ii.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ni.debug.warn(ii.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),ii.emitError(Pe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const a={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=pn.generateInitSegment(a);ii.isAvc=i===Fe;let d=s.codec;return ii.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:ii.isAvc?mt:_t,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),ii._initSourceBuffer(),ii.appendBuffer(o.buffer),ii.sequenceNumber=0,ii.cacheTrack={},ii.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ge,s=r===Ne;if(gr(s||n))return ni.debug.warn(ii.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ii.emitError(Pe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(jt(e)){if(o=Kt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=En(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&gr(ni._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=pn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),gr(ii.isAudioInitInfo)&&(br=r===Ne?i?16:8:0===i?8:16,postMessage({cmd:I,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:br}),ii.isAudioInitInfo=!0),ii.audioMimeType=u,ii.isAAC=s,ii._initAudioSourceBuffer(),ii.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.sourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.videoMimeType){try{ni.debug.log(ii.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.videoMimeType),ii.sourceBuffer=ii.mediaSource.addSourceBuffer(ii.videoMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.sourceBuffer){const t=e(ii.sourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.sourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r)}}else ni.debug.log(ii.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.isAvc === null is ${null===ii.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.audioSourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.audioMimeType){try{ni.debug.log(ii.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.audioMimeType),ii._clearAudioSourceBufferCheckTimeout(),ii.audioSourceBuffer=ii.mediaSource.addSourceBuffer(ii.audioMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.audioSourceBuffer){const t=e(ii.audioSourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.audioSourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r),null===ii.audioSourceNoDataCheckTimeout&&(ii.audioSourceNoDataCheckTimeout=setTimeout((()=>{ii._clearAudioNoDataCheckTimeout(),ii.emitError(Pe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ni.debug.log(ii.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.audioMimeType is ${ii.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ni.debug.warn(ii.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;ii.prevTimestamp||(ii.prevTimestamp=o,d=!0);const l=o-ii.prevTimestamp;if(ii.decodeDiffTimestamp=l,l>1e3&&!d&&ni.isPlayer&&ni.debug.log(ii.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${ii.prevTimestamp}, diff time is ${l} ms`),ii.cacheTrack.id&&t>=ii.cacheTrack.dts){let e=8+ii.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheTrack.data,8),ii.cacheTrack.duration=t-ii.cacheTrack.dts;let i=pn.moof(ii.cacheTrack,ii.cacheTrack.dts);ii.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendBuffer(n.buffer)}else ni.debug.log(ii.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${ii.cacheTrack&&ii.cacheTrack.dts}`),ii.timeInit=!1,ii.cacheTrack={};ii.cacheTrack||(ii.cacheTrack={}),ii.cacheTrack.id=Pt,ii.cacheTrack.sequenceNumber=++ii.sequenceNumber,ii.cacheTrack.size=a,ii.cacheTrack.dts=t,ii.cacheTrack.cts=i,ii.cacheTrack.isKeyframe=r,ii.cacheTrack.data=s,ii.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ii.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ii.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(ii.cacheAudioTrack.id&&t>=ii.cacheAudioTrack.dts){let e=8+ii.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheAudioTrack.data,8),ii.cacheAudioTrack.duration=t-ii.cacheAudioTrack.dts;let i=pn.moof(ii.cacheAudioTrack,ii.cacheAudioTrack.dts);ii.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendAudioBuffer(n.buffer)}else ii.cacheAudioTrack={};ii.cacheAudioTrack||(ii.cacheAudioTrack={}),ii.cacheAudioTrack.id=It,ii.cacheAudioTrack.sequenceNumber=++ii.audioSequenceNumber,ii.cacheAudioTrack.size=n,ii.cacheAudioTrack.dts=t,ii.cacheAudioTrack.cts=0,ii.cacheAudioTrack.data=i,ii.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingSegments.push(e),ii.sourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendAudioBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingAudioSegments.push(e),ii.audioSourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getAudioSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>ii.sourceBuffer&&ii.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ii.audioSourceBuffer&&ii.audioSourceBuffer.updating,stop(){ii.abortSourceBuffer(),ii.removeSourceBuffer(),ii.endOfStream()},clearUpAllSourceBuffer(){if(ii.sourceBuffer){const e=ii.sourceBuffer.buffered;for(let t=0;tii.pendingSegments.length>0||ii.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ii.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ii.isStateClosed()||ii.isStateEnded())ni.debug.log(ii.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ii.sourceBuffer){if(ii.needInitAudio()&&null===ii.audioSourceBuffer)return ni.debug.log(ii.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ii.audioSourceBufferCheckTimeout&&(ii.audioSourceBufferCheckTimeout=setTimeout((()=>{ii._clearAudioSourceBufferCheckTimeout(),ii.emitError(Pe.mediaSourceAudioInitTimeout)}),1e3)));if(gr(ii.getSourceBufferUpdating())&&ii.pendingSegments.length>0){const e=ii.pendingSegments.shift();try{ii.sourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(gr(ii.getAudioSourceBufferUpdating())&&ii.pendingAudioSegments.length>0){const e=ii.pendingAudioSegments.shift();try{ii.audioSourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ni.debug.log(ii.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ii.$video.currentTime;if(ii.sourceBuffer){const t=ii.sourceBuffer.buffered;let r=!1;for(let i=0;i=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingRemoveRanges.push({start:n,end:t})}}else s=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingAudioRemoveRanges.push({start:n,end:t})}}else sii.pendingRemoveRanges.length>0||ii.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ni._opt.hasAudio&&ni._opt.mseDecodeAudio,_doRemoveRanges(){if(ii.sourceBuffer&&gr(ii.getSourceBufferUpdating())){let e=ii.pendingRemoveRanges;for(;e.length&&gr(ii.getSourceBufferUpdating());){let t=e.shift();try{ii.sourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ii.audioSourceBuffer&&gr(ii.getAudioSourceBufferUpdating())){let e=ii.pendingAudioRemoveRanges;for(;e.length&&gr(ii.getAudioSourceBufferUpdating());){let t=e.shift();try{ii.audioSourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(gr(ni._opt.mseAutoCleanupSourceBuffer))return!1;const e=ii.$video.currentTime;if(ii.sourceBuffer){let t=ii.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ii.audioSourceBuffer){let t=ii.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ii.audioSourceBufferCheckTimeout&&(clearTimeout(ii.audioSourceBufferCheckTimeout),ii.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ii.audioSourceNoDataCheckTimeout&&(clearTimeout(ii.audioSourceNoDataCheckTimeout),ii.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ii.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ni={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:kt,_opt:Er(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ni.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ni.getVideoBufferLength(),audioDemuxBufferDelay:ni.getAudioBufferLength(),streamBufferByteLength:ni.getStreamBufferLength(),netBuf:ni.networkDelay||0,pushLatestDelay:ni.pushLatestDelay||0,latestDelay:ni.delay,isStreamTsMoreThanLocal:We,wasmDecodeDelay:we-Se});postMessage({cmd:O,type:ke,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ni._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ni._opt.hasVideo&&!B)return-1;if(t===ae)return ni.delay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp>e)return ni.preDelayTimestamp-e>1e3&&ni.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return ${ni.delay}`),ni.preDelayTimestamp=e,ni.delay;if(ni.firstTimestamp){if(e){const t=Date.now()-ni.startTimestamp,r=e-ni.firstTimestamp;t>=r?(We=!1,ni.delay=t-r):(We=!0,ni.delay=r-t)}}else ni.firstTimestamp=e,ni.startTimestamp=Date.now(),ni.delay=-1;return ni.preDelayTimestamp=e,ni.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ni._opt.hasVideo&&!B)return-1;if(t===ae)return ni.pushLatestDelay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp-e>1e3)return ni.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return -1`),-1;if(ni.firstTimestamp){let t=-1;if(e){const r=Date.now()-ni.startTimestamp,i=e-ni.firstTimestamp;r>=i?(We=!1,t=r-i):(We=!0,t=i-r)}return t}return-1},resetDelay:function(){ni.firstTimestamp=null,ni.startTimestamp=null,ni.delay=-1,ni.dropping=!1},resetAllDelay:function(){ni.resetDelay(),ni.preDelayTimestamp=null},doDecode:function(e){ni._opt.isEmitSEI&&e.type===oe&&ni.isWorkerFetch&&ni.findSei(e.payload,e.ts),ni.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ni._opt.mseDecodeAudio?ii.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===oe&&ii.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ni._opt.useWCS&&ni.useOffscreen()&&e.type===oe&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===oe&&mr(e.payload);if(gr(r))s&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n));else{const r=n.ts-t,a=n.type===ae&&e.type===oe;(r<=20||a||s)&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n))}},init:function(){ni.debug.log("worker","init and opt is",JSON.stringify(ni._opt));const e=ni._opt.playType===v,t=ni._opt.playType===b;if($r.init(),ni.isPlayer=e,ni.isPlayback=t,ni.isPlayUseMSEAndDecoderInWorker()&&ii&&ii.init(),s&&ni._opt.useWCS&&ni.useOffscreen()&&s.init(),ni.isPlaybackCacheBeforeDecodeForFpsRender())ni.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ni.debug.log("worker","setInterval()");const t=()=>{const t=ni._opt.videoBuffer+ni._opt.videoBufferDelay;let r=null;if(i.length){if(ni.isPushDropping)return void ni.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ni.dropping){for(r=i.shift(),ni.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ni.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ni.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ni.getNotDroppingDelayTs()&&(ni.debug.log("worker","loop() is dropping = false, is iFrame"),ni.dropping=!1,ni.doDecode(r),ni.decodeNext(r))}else if(ni.isPlayback||ni.isPlayUseMSE()||0===ni._opt.videoBuffer)for(;i.length;)r=i.shift(),ni.doDecode(r);else if(r=i[0],-1===ni.getDelay(r.ts,r.type))ni.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ni.doDecode(r),ni.decodeNext(r);else if(ni.delay>t&&e)ni.hasIframeInBufferList()?(ni.debug.log("worker",`delay is ${ni.delay} > maxDelay ${t}, set dropping is true`),ni.resetAllDelay(),ni.dropping=!0,postMessage({cmd:H})):(i.shift(),ni.doDecode(r),ni.decodeNext(r));else for(;i.length;){if(r=i[0],!(ni.getDelay(r.ts,r.type)>ni._opt.videoBuffer)){ni.delay<0&&ni.debug.warn("worker",`loop() do not decode and delay is ${ni.delay}, bufferList is ${i.length}`);break}i.shift(),ni.doDecode(r)}}else-1!==ni.delay&&ni.debug.log("worker","loop() bufferList is empty and reset delay"),ni.resetAllDelay()};ni.stopId=setInterval((()=>{let e=(new Date).getTime();Ze||(Ze=e);const r=e-Ze;r>100&&ni.debug.warn("worker",`loop demux diff time is ${r}`),t(),Ze=(new Date).getTime()}),20)}if(gr(ni._opt.checkFirstIFrame)&&(B=!0),ni.isPlayUseMSEAndDecoderInWorker()&&ii){const e=ii.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ni.doDecode(e))};e();const t=Math.ceil(1e3/(ni.streamFps*ni._opt.playbackRate));ni.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ni.streamFps}, streamAudioFps is ${ni.streamAudioFps} ,streamVideoFps is ${ni.streamVideoFps} playbackRate is ${ni._opt.playbackRate}`),ni.stopId=setInterval(e,t)},close:function(){if(ni.debug.log("worker","close"),ni.isDestroyed=!0,Br(),!o||1!==o.readyState&&2!==o.readyState?o&&ni.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(wr=!0,o.close(1e3,"Client disconnecting")),o=null,ni.stopStreamRateAndStatsInterval(),ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null),ni.mp3Demuxer&&(ni.mp3Demuxer.destroy(),ni.mp3Demuxer=null),ni.writableStream&&gr(ni.writableStream.locked)&&ni.writableStream.close().catch((e=>{ni.debug.log("worker","close() and writableStream.close() error",e)})),ni.writableStream=null,si)try{si.clear&&si.clear(),si=null}catch(e){ni.debug.log("worker","close() and audioDecoder.clear error",e.toString(),e)}if(ai)try{ai.clear&&ai.clear(),ai=null}catch(e){ni.debug.log("worker","close() and videoDecoder.clear error",e.toString(),e)}d=null,Ze=null,We=!1,we=0,Se=0,s&&(s.destroy&&s.destroy(),s=null),ii&&(ii.destroy(),ii=null),ni.firstTimestamp=null,ni.startTimestamp=null,ni.networkDelay=0,ni.streamFps=null,ni.streamAudioFps=null,ni.streamVideoFps=null,ni.delay=-1,ni.pushLatestDelay=-1,ni.preDelayTimestamp=null,ni.dropping=!1,ni.isPushDropping=!1,ni.isPlayer=!0,ni.isPlayback=!1,ni.isWorkerFetch=!1,ni.isHevc=null,ni._opt=Er(),ni.webglObj&&(ni.webglObj.destroy(),ni.offscreenCanvas.removeEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost),ni.offscreenCanvas.removeEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored),ni.offscreenCanvas=null,ni.offscreenCanvasGL=null,ni.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,f=null,S=!1,E=!1,B=!1,Ht=!1,Yt=!1,Jt=!1,nr=null,rt=[],At=0,Bt=0,Je=null,et=null,Nt=null,$t=null,br=null,Ot=0,Gt=0,ct=null,Et=null,ni.fetchStatus=kt,Sr=!0,$r.destroy(),Or.destroy(),Wr.destroy(),ri.destroy(),postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&jt(e)){if(ni.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ni.decodeAudio(e,t.ts)}else if(t.type===oe&&t.isIFrame&&mr(e)){if(ni.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ni.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ni._opt.isRecording)if(ni._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ni._opt.recordType===w)if(t.type===oe){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ni._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ni.isPlayer){if(t.type===oe){if(Ot>0){const e=t.ts-$t,r=Ot+Ot/2;e>r&&ni.debug.log("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${$t},\n diff is ${e} and preTsDuration is ${Ot} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==$t&&$t>=t.ts&&(ni.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${$t} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Gt}`),$t-t.ts>A&&(ni.debug.warn("worker",`pushBuffer,\n preTimestamp is ${$t}, options.ts is ${t.ts},\n diff is ${$t-t.ts} more than 3600000,\n and resetAllDelay`),ni.resetAllDelay(),$t=null,Ot=0),ni._opt.isDropSameTimestampGop&&gr(t.isIFrame)&&B)){const e=ni.hasIframeInBufferList(),t=gr(ni.isPushDropping);return ni.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ni.dropBuffer$2():(ni.clearBuffer(!0),_r(ni._opt.checkFirstIFrame)&&_r(r)&&(ni.isPlayUseMSEAndDecoderInWorker()?ii.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}$t>0&&(Ot=t.ts-$t),Gt=e.byteLength,$t=t.ts}if(B){const e=ni._opt.videoBuffer+ni._opt.videoBufferDelay,r=ni.getDelayNotUpdateDelay(t.ts,t.type);ni.pushLatestDelay=r,ni.delay>0&&r>e&&ni.delay({type:e.type,ts:e.ts})));ni.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ni.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ni.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ni.streamVideoFps=25,postMessage({cmd:W,value:ni.streamVideoFps}),r?(ni.streamAudioFps=25,ni.streamFps=ni.streamVideoFps+ni.streamAudioFps):ni.streamFps=ni.streamVideoFps,ni.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===oe&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===oe&&e.isIFrame)),isAllIframeInBufferList(){const e=ni.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===oe&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ni._opt.videoBuffer+ni._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ni._opt.isNakedFlow?$r.lastBuf&&(e=$r.lastBuf.byteLength):ni._opt.isTs?ri._remainingPacketData&&(e=ri._remainingPacketData.byteLength):ni._opt.isFmp4&&Or.mp4Box&&(e=Or.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){if(ni.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ni.isWorkerFetch=!0,t.isFlv?ni._opt.isFlv=!0:t.isFmp4?ni._opt.isFmp4=!0:t.isMpeg4?ni._opt.isMpeg4=!0:t.isNakedFlow?ni._opt.isNakedFlow=!0:t.isTs&&(ni._opt.isTs=!0),d=sr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ni.startStreamRateAndStatsInterval(),t.isFmp4&&(Or.listenMp4Box(),ni._opt.isFmp4Private&&Or.initTransportDescarmber()),t.protocol===_){c=new Ar(ni.demuxFlv()),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(_r(wr))return ni.debug.log("worker","request abort and run res.body.cancel()"),ni.fetchStatus=kt,void e.body.cancel();if(!fr(e))return ni.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Br(),void postMessage({cmd:O,type:Pe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:Te}),cr())ni.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ni.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof e?(ni.fetchStatus=Ct,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ni.demuxFmp4(e):t.isMpeg4?ni.demuxMpeg4(e):t.isTs&&ni.demuxTs(e)):ni.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ni.debug.log("worker","writableStream close()"),ni.fetchStatus=Dt,c=null,Br(),postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ni.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==Ut?(ni.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ni.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ni.debug.log("worker","fetchNext().then() and done is true"),ni.fetchStatus=Dt,c=null,Br(),void postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(ni.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof n?(ni.fetchStatus=Ct,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ni.demuxFmp4(n):t.isMpeg4?ni.demuxMpeg4(n):t.isTs&&ni.demuxTs(n),i()):ni.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ni.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==Ut?(ni.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ni.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ut?(ni.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()}),c=null):ni.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(c=new Ar(ni.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{ni.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:Te}),postMessage({cmd:O,type:De})},o.onclose=e=>{ni.isDestroyed?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):u?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ni.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),_r(wr)?ni.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:Ee,value:y,msg:e.code})))},o.onerror=e=>{ni.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,ni.isDestroyed?ni.debug.log("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):postMessage({cmd:O,type:Pe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ni.demuxFmp4(e.data):t.isMpeg4?ni.demuxMpeg4(e.data):ni._opt.isNakedFlow?ni.demuxNakedFlow(e.data):ni.demuxM7s(e.data)):ni.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case de:if(a.byteLength>0){let e=a;_r(ni._opt.m7sCryptoAudio)&&(e=ni.cryptoPayloadAudio(a)),ni.decode(e,{type:ae,ts:s})}else ni.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case le:if(a.byteLength>=6){const e=a[0];if(ni._isEnhancedH265Header(e))ni._decodeEnhancedH265Video(a,s);else{const e=15&a[0];let t=a[0]>>4===Tt;const i=e===Le;if(gr(t)&&_r(vr(a,i))&&(ni.debug.log("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&mr(a)&&null===ni.isHevc){const e=15&a[0];ni.isHevc=e===Le,nr=tr(a,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`)}t&&ni.calcIframeIntervalTimestamp(s),ni.isPlayer&&ni.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let n=r[0],o=ni.cryptoPayload(a,t);ni.decode(o,{type:oe,ts:s,isIFrame:t,cts:n})}}else ni.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:a},[a.buffer]);break;default:ni.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ni._opt.hasAudio&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()||(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===oe&&ni._opt.hasVideo&&(postMessage({cmd:O,type:xe,value:e.byteLength}),postMessage({cmd:O,type:Be,value:t.ts}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ni._opt.isM7sCrypto?ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=Ri(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`):ni._opt.isSm4Crypto?ni._opt.sm4CryptoKey?r=ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?es(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc,ni._opt.isSm4CryptoH265V2):an(e,ni._opt.sm4CryptoKey,ni.isHevc,ni._opt.isSm4CryptoH265V2):ni._opt.sm4CryptoKey||ni.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ni._opt.isXorCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=un(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isXorCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ni._opt.isM7sCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?e[0]>>4===Ne&&(t=zi(e,ni._opt.cryptoKey,ni._opt.cryptoIV)):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(br=r===Ne?i?16:8:0===i?8:16,si&&si.setCodec)if(jt(e)||r===$e||r===Oe||r===Ge){ni.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ni._opt.sampleRate}`);const i=r===Ne?e.slice(2):new Uint8Array(0);si.setCodec(r,ni._opt.sampleRate,i),r===Ne&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==Ne&&(r===Ge?(ni.mp3Demuxer||(ni.mp3Demuxer=new dn(ni),ni.mp3Demuxer.on("data",((e,t)=>{si.decode(e,t)}))),ni.mp3Demuxer.dispatch(e.slice(1),t)):si.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})}),60*e*60*1e3)}}else ni.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ni.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ni.isDestroyed)ni.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ii.decodeAudio(e,t);else if(_r(r)&&_r(ni._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ni.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?ni.mp3Demuxer.dispatch(e.slice(1),t):si.decode(r===Ne?e.slice(2):e.slice(1),t)}else ni.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(ai&&ai.setCodec)if(mr(e))if(r===Fe||r===Le){ni.debug.log("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Fe&&ni._opt.useSIMD){const e=Tr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ni.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,ai.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:i,codecId:r},[i.buffer])}else ni.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ni.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ni.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ni.isDestroyed)ni.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorker())ii.decodeVideo(e,t,i,n);else if(_r(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ni.delay},[e.buffer]);else if(S)if(!B&&i&&(B=!0),B){if(i&&mr(e)){const t=15&e[0];let r={};t===Fe?r=Tr(e.slice(5)):t===Le&&(r=Hr(e)),r.codecWidth&&r.codecHeight&&h&&f&&(r.codecWidth!==h||r.codecHeight!==f)&&(ni.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${f},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Yt=!0,postMessage({cmd:j,value:`width: ${h}->${r.codecWidth}, height: ${f}->${r.codecHeight}`}))}if(Yt)return void ni.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Jt)return void ni.debug.warn("worker","decodeVideo: simd decode error, and return");if(mr(e))return void ni.debug.log("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ni.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ni.isPlayer&&(ni.resetAllDelay(),_r(ni._opt.checkFirstIFrame)&&(ni.dropping=!0,postMessage({cmd:H}))),_r(ni._opt.checkFirstIFrame)&&gr(r)&&(B=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>_r(e.isIFrame)&&e.type===oe));if(ni.isAllIframeInBufferList())for(let t=0;t=ni.getNotDroppingDelayTs()){ni.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ni.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ni.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ni.resetAllDelay(),ni.getDelay(r.ts,r.type),ni.doDecode(r),ni.isPushDropping=!1,ni.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ni.delay} `)}else ni.isPushDropping=!1}0===i.length&&(ni.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case ae:ni.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case oe:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ni._isEnhancedH265Header(n))ni._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ni.calcIframeIntervalTimestamp(r),mr(i)&&null===ni.isHevc)){const e=15&i[0];ni.isHevc=e===Le}ni.isPlayer&&ni.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ni.cryptoPayload(i,e);ni.decode(a,{type:oe,ts:r,isIFrame:e,cts:n})}}else ni.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){$r.dispatch(e)},demuxFmp4:function(e){Or.dispatch(e)},demuxMpeg4:function(e){Wr.dispatch(e)},demuxTs:function(e){ri.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(s[0]);if(ni.isHevc=gr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),nr=tr(e,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`),ni.decode(i,{type:oe,ts:t,isIFrame:!0,cts:0})}}}else if(n===Mt){let r=e,n=0;const s=i===zt;s&&ni.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Yr(e.slice(8),s),r=ni.cryptoPayload(r,s),ni.decode(r,{type:oe,ts:t,isIFrame:s,cts:n}))}else if(n===Rt){const r=i===zt;r&&ni.calcIframeIntervalTimestamp(t);let n=Yr(e.slice(5),r);n=ni.cryptoPayload(n,r),ni.decode(n,{type:oe,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ft)===Ft},findSei:function(e,t){let r=4;or(nr)&&(r=nr),Qt(e.slice(5),r).forEach((e=>{const r=ni.isHevc?e[0]>>>1&63:31&e[0];(ni.isHevc&&(r===ht||r===ut)||gr(ni.isHevc)&&r===Ye)&&postMessage({cmd:Z,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(B&&e>0))return;null===Je?(Je=e,et=rr()):et?r-t:0;ni.networkDelay=i,i>ni._opt.networkDelay&&ni._opt.playType===v&&(ni.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Je} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Ce,value:i}))},calcIframeIntervalTimestamp:function(e){null===Nt?Nt=e:Nt=ni._opt.playbackForwardMaxRateDecodeIFrame&&!(ni._opt.useMSE&&ni._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ni.isPlayer&&ni._opt.useMSE&&_r(r)},isPlayUseMSEAndDecoderInWorker:function(){return ni.isPlayUseMSE()&&ni._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ni.isPlayUseMSEAndDecoderInWorker()&&ni._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ni.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ni.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ht=!0,ni.webglObj.destroy(),ni.webglObj=null,ni.offscreenCanvasGL=null,setTimeout((()=>{ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.offscreenCanvasGL&&ni.offscreenCanvasGL.getContextAttributes().stencil?(ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),Ht=!1):ni.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ni.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:k,w:t,h:r}),h=t,f=r,ni.useOffscreen()&&(ni.offscreenCanvas=new OffscreenCanvas(t,r),ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),ni.offscreenCanvas.addEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost,!1),ni.offscreenCanvas.addEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:I,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:br}),Bt=r},yuvData:function(t,r){if(ni.isDestroyed)return void ni.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*f*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ct=null,Se=r,ni.useOffscreen())try{if(Ht)return;ni.webglObj.renderYUV(h,f,s);let e=ni.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ni.delay,ts:r},[e])}catch(e){ni.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:s,delay:ni.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ni.isDestroyed)return void ni.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ni._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(At){if(!(s>=(r=d-At)))return At+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Bt&&(n[1]=Float32Array.of(...n[1],...a[1])));rt[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Bt&&(rt[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer))),o=r,s-=r}for(At=s;At>=d;At-=d)rt[0]=a[0].slice(o,o+=d),2==Bt&&(rt[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer)));At&&(n[0]=a[0].slice(o),2==Bt&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===ct&&(ct=rr());const t=rr(),r=ir(Et>0?2*Et:5e3,1e3,5e3),i=t-ct;i>r&&(ni.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Et} and diff is ${i} and maxDiff is ${r}\n and replay`),Jt=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){o?o.readyState===Ie?o.send(e):ni.debug.error("worker","socket is not open"):ni.debug.error("worker","socket is null")},timeEnd:function(){ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])}};ni.debug=new Ur(ni);let si=null;t.AudioDecoder&&(si=new t.AudioDecoder(ni));let ai=null;e.VideoDecoder&&(ai=new e.VideoDecoder(ni)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ni._opt=Object.assign(ni._opt,JSON.parse(t.opt))}catch(e){}ni.init();break;case he:ni.pushBuffer(t.buffer,t.options);break;case fe:ni.decodeAudio(t.buffer,t.ts);break;case pe:ni.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ni.clearBuffer(t.needClear);break;case ye:ni.fetchStream(t.url,JSON.parse(t.opt));break;case me:ni.debug.log("worker","close",JSON.stringify(t.options)),t.options&&gr(t.options.isVideoInited)&&(Sr=t.options.isVideoInited),ni.close();break;case _e:ni.debug.log("worker","updateConfig",t.key,t.value),ni._opt[t.key]=t.value,"playbackRate"===t.key&&(ni.playbackUpdatePlaybackRate(),ni.isPlaybackCacheBeforeDecodeForFpsRender()&&ni.playbackCacheLoop());break;case ve:ni.sendWebsocketMessage(t.message);break;case be:ii.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd.js new file mode 100644 index 0000000000000000000000000000000000000000..fe4c1ab650628a6cc5aaee6191792136ac749ae6 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_WASM_URL?JESSIBUCA_PRO_SIMD_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="object"==typeof window,c="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,h="";function f(e){return n.locateFile?n.locateFile(e,h):h+e}if(u){const{createRequire:e}=await import("module");var p=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href),m=p("fs"),_=p("path");h=c?_.dirname(h)+"/":p("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href)),s=(e,t)=>(e=Y(e)?new URL(e):_.normalize(e),m.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=Y(e)?new URL(e):_.normalize(e),m.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(l||c)&&(c?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),r&&(h=r),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var g,y,v=n.print||console.log.bind(console),b=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(g=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&V("no native wasm support detected");var w,S,E,A,U,B,x,T,k=!1;function C(){var e=y.buffer;n.HEAP8=w=new Int8Array(e),n.HEAP16=E=new Int16Array(e),n.HEAPU8=S=new Uint8Array(e),n.HEAPU16=A=new Uint16Array(e),n.HEAP32=U=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=x=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var D=[],P=[],F=[];function I(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)M(n.preRun.shift());ee(D)}function L(){ee(P)}function R(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)N(n.postRun.shift());ee(F)}function M(e){D.unshift(e)}function z(e){P.unshift(e)}function N(e){F.unshift(e)}var $=0,O=null;function G(e){$++,n.monitorRunDependencies&&n.monitorRunDependencies($)}function H(e){if($--,n.monitorRunDependencies&&n.monitorRunDependencies($),0==$&&O){var t=O;O=null,t()}}function V(e){n.onAbort&&n.onAbort(e),b(e="Aborted("+e+")"),k=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var W,j="data:application/octet-stream;base64,";function q(e){return e.startsWith(j)}function Y(e){return e.startsWith("file://")}function K(e){if(e==W&&g)return new Uint8Array(g);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function X(e){if(!g&&(l||c)){if("function"==typeof fetch&&!Y(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>K(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>K(e)))}function Z(e,t,r){return X(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{b(`failed to asynchronously prepare wasm: ${e}`),V(e)}))}function J(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||q(t)||Y(t)||u||"function"!=typeof fetch?Z(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return b(`wasm streaming compile failed: ${e}`),b("falling back to ArrayBuffer instantiation"),Z(t,r,i)}))))}function Q(){var e={a:wr};function t(e,t){return Sr=e.exports,y=Sr.B,C(),rt=Sr.F,z(Sr.C),H(),Sr}if(G(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){b(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return J(g,W,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?q(W="decoder-pro-simd.wasm")||(W=f(W)):W=new URL("decoder-pro-simd.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href).href;var ee=e=>{for(;e.length>0;)e.shift()(n)};function te(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,w[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=w[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,w[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=w[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(xr(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var re,ie,ne,se=(e,t,r)=>{throw new te(e).init(t,r),e},ae=(e,t,r,i,n)=>{},oe=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);re=e},de=e=>{for(var t="",r=e;S[r];)t+=re[S[r++]];return t},le={},ce={},ue={},he=e=>{throw new ie(e)},fe=e=>{throw new ne(e)},pe=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&fe("Mismatched type converter count");for(var n=0;n{ce.hasOwnProperty(e)?n[t]=ce[e]:(s.push(e),le.hasOwnProperty(e)||(le[e]=[]),le[e].push((()=>{n[t]=ce[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function me(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||he(`type "${i}" must have a positive integer typeid pointer`),ce.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;he(`Cannot register type '${i}' twice`)}if(ce[e]=t,delete ue[e],le.hasOwnProperty(e)){var n=le[e];delete le[e],n.forEach((e=>e()))}}function _e(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return me(e,t,r)}var ge,ye=8,ve=(e,t,r,i)=>{_e(e,{name:t=de(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:ye,readValueFromPointer:function(e){return this.fromWireType(S[e])},destructorFunction:null})},be=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),we=e=>{he(e.$$.ptrType.registeredClass.name+" instance already deleted")},Se=!1,Ee=e=>{},Ae=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Ue=e=>{e.count.value-=1,0===e.count.value&&Ae(e)},Be=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=Be(e,t,r.baseClass);return null===i?null:r.downcast(i)},xe={},Te=()=>Object.keys(Ie).length,ke=()=>{var e=[];for(var t in Ie)Ie.hasOwnProperty(t)&&e.push(Ie[t]);return e},Ce=[],De=()=>{for(;Ce.length;){var e=Ce.pop();e.$$.deleteScheduled=!1,e.delete()}},Pe=e=>{ge=e,Ce.length&&ge&&ge(De)},Fe=()=>{n.getInheritedInstanceCount=Te,n.getLiveInheritedInstances=ke,n.flushPendingDeletes=De,n.setDelayFunction=Pe},Ie={},Le=(e,t)=>{for(void 0===t&&he("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Re=(e,t)=>(t=Le(e,t),Ie[t]),Me=(e,t)=>(t.ptrType&&t.ptr||fe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&fe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ne(Object.create(e,{$$:{value:t}})));function ze(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Re(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Me(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Me(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=xe[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=Be(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Ne=e=>"undefined"==typeof FinalizationRegistry?(Ne=e=>e,e):(Se=new FinalizationRegistry((e=>{Ue(e.$$)})),Ne=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Se.register(e,r,e)}return e},Ee=e=>Se.unregister(e),Ne(e)),$e=()=>{Object.assign(Oe.prototype,{isAliasOf(e){if(!(this instanceof Oe))return!1;if(!(e instanceof Oe))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||we(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Ne(Object.create(Object.getPrototypeOf(this),{$$:{value:be(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ee(this),Ue(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ce.push(this),1===Ce.length&&ge&&ge(De),this.$$.deleteScheduled=!0,this}})};function Oe(){}var Ge=48,He=57,Ve=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=Ge&&t<=He?`_${e}`:e};function We(e,t){return{[e=Ve(e)]:function(){return t.apply(this,arguments)}}[e]}var je=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||he(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},qe=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&he(`Cannot register public name '${e}' twice`),je(n,e,e),n.hasOwnProperty(r)&&he(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function Ye(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var Ke=(e,t,r)=>{for(;t!==r;)t.upcast||he(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Xe(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Dt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||he(`Cannot pass "${Dt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&he(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&he("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:he(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,xt.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:he("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Dt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&he(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(B[e>>2])}var et=()=>{Object.assign(tt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:ye,readValueFromPointer:Qe,deleteObject(e){null!==e&&e.delete()},fromWireType:ze})};function tt(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var rt,it,nt=(e,t,r)=>{n.hasOwnProperty(e)||fe("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},st=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},at=[],ot=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=rt.get(e)),t},dt=(e,t,r)=>e.includes("j")?st(e,t,r):ot(t).apply(null,r),lt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),dt(e,t,r)}},ct=(e,t)=>{var r=(e=de(e)).includes("j")?lt(e,t):ot(t);return"function"!=typeof r&&he(`unknown function pointer with signature ${e}: ${t}`),r},ut=(e,t)=>{var r=We(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},ht=e=>{var t=Ur(e),r=de(t);return Er(t),r},ft=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||ce[t]||(ue[t]?ue[t].forEach(e):(r.push(t),i[t]=!0))})),new it(`${e}: `+r.map(ht).join([", "]))},pt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=de(c),s=ct(n,s),o&&(o=ct(a,o)),l&&(l=ct(d,l)),h=ct(u,h);var f=Ve(c);qe(f,(function(){ft(`Cannot construct ${c} due to unbound types`,[i])})),pe([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:Oe.prototype;var a=We(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ye(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new tt(c,u,!0,!1,!1),m=new tt(c+"*",u,!1,!1,!1),_=new tt(c+" const*",u,!1,!0,!1);return xe[e]={pointerType:m,constPointerType:_},nt(f,a),[p,m,_]}))},mt=(e,t)=>{for(var r=[],i=0;i>2]);return r},_t=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function gt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=We(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function yt(e,t,r,i,n,s){var a=t.length;a<2&&he("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=mt(t,r);n=ct(i,n),pe([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ie(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{ft(`Cannot construct ${e.name} due to unbound types`,a)},pe([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=yt(r,i,null,n,s),[]))),[]}))},bt=(e,t,r,i,n,s,a,o,d)=>{var l=mt(r,i);t=de(t),s=ct(n,s),pe([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){ft(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(je(c,t,i),c[t].overloadTable[r-2]=n),pe([],l,(function(n){var o=yt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function wt(){Object.assign(St.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function St(){this.allocated=[void 0],this.freelist=[]}var Et=new St,At=e=>{e>=Et.reserved&&0==--Et.get(e).refcount&&Et.free(e)},Ut=()=>{for(var e=0,t=Et.reserved;t{Et.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Et.reserved=Et.allocated.length,n.count_emval_handles=Ut},xt={toValue:e=>(e||he("Cannot use deleted val. handle = "+e),Et.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Et.allocate({refcount:1,value:e})}}};function Tt(e){return this.fromWireType(U[e>>2])}var kt,Ct=(e,t)=>{_e(e,{name:t=de(t),fromWireType:e=>{var t=xt.toValue(e);return At(e),t},toWireType:(e,t)=>xt.toHandle(t),argPackAdvance:ye,readValueFromPointer:Tt,destructorFunction:null})},Dt=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Pt=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(x[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},Ft=(e,t,r)=>{_e(e,{name:t=de(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:ye,readValueFromPointer:Pt(t,r),destructorFunction:null})},It=(e,t,r)=>{switch(t){case 1:return r?e=>w[e>>0]:e=>S[e>>0];case 2:return r?e=>E[e>>1]:e=>A[e>>1];case 4:return r?e=>U[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Lt=(e,t,r,i,n)=>{t=de(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");_e(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:ye,readValueFromPointer:It(t,r,0!==i),destructorFunction:null})},Rt=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(w.buffer,r,t)}_e(e,{name:r=de(r),fromWireType:n,argPackAdvance:ye,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},Mt=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n},zt=(e,t,r)=>Mt(e,S,t,r),Nt=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},$t="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,Ot=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&$t)return $t.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},Gt=(e,t)=>e?Ot(S,e,t):"",Ht=(e,t)=>{var r="std::string"===(t=de(t));_e(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==S[o]){var d=Gt(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)zt(t,a,i+1);else if(n)for(var o=0;o255&&(Er(a),he("String has UTF-16 code units that do not fit in 8 bits")),S[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&A[i];)++i;if((r=i<<1)-e>32&&Vt)return Vt.decode(S.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=E[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},jt=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return E[t>>1]=0,t-i},qt=e=>2*e.length,Yt=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},Kt=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),U[t>>2]=a,(t+=4)+4>n)break}return U[t>>2]=0,t-i},Xt=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Zt=(e,t,r)=>{var i,n,s,a,o;r=de(r),2===t?(i=Wt,n=jt,a=qt,s=()=>A,o=1):4===t&&(i=Yt,n=Kt,a=Xt,s=()=>B,o=2),_e(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Er(e),r},toWireType:(e,i)=>{"string"!=typeof i&&he(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=Ar(4+s+t);return B[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(Er,d),d},argPackAdvance:ye,readValueFromPointer:Tt,destructorFunction(e){Er(e)}})},Jt=(e,t)=>{_e(e,{isVoid:!0,name:t=de(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Qt={},er=e=>{var t=Qt[e];return void 0===t?de(e):t},tr=[],rr=(e,t,r,i)=>{(e=tr[e])(t=xt.toValue(t),r=er(r),null,i)},ir=e=>{var t=tr.length;return tr.push(e),t},nr=(e,t)=>{var r=ce[e];return void 0===r&&he(t+" has unknown type "+ht(e)),r},sr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},ar={},or=(e,t)=>{var r=sr(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=ar[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;l{e>4&&(Et.get(e).refcount+=1)},lr=e=>xt.toHandle(er(e)),cr=()=>xt.toHandle({}),ur=e=>xt.toHandle(Gt(e)),hr=(e,t,r)=>{e=xt.toValue(e),t=xt.toValue(t),r=xt.toValue(r),e[t]=r},fr=(e,t)=>{var r=(e=nr(e,"_emval_take_value")).readValueFromPointer(t);return xt.toHandle(r)},pr=()=>{V("")};kt=()=>performance.now();var mr=(e,t,r)=>S.copyWithin(e,t,t+r),_r=e=>{V("OOM")},gr=e=>{S.length,_r()},yr=[null,[],[]],vr=(e,t)=>{var r=yr[e];0===t||10===t?((1===e?v:b)(Ot(r,0)),r.length=0):r.push(t)},br=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;for(var d=0;d>2]=n,0};oe(),ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},ne=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},$e(),Fe(),et(),it=n.UnboundTypeError=ut(Error,"UnboundTypeError"),wt(),Bt();var wr={n:se,q:ae,w:ve,p:pt,o:vt,g:bt,v:Ct,k:Ft,b:Lt,a:Rt,l:Ht,h:Zt,x:Jt,f:rr,c:At,e:or,y:dr,m:lr,A:cr,u:ur,i:hr,z:fr,j:pr,d:kt,t:mr,r:gr,s:br},Sr=Q(),Er=e=>(Er=Sr.D)(e),Ar=e=>(Ar=Sr.E)(e),Ur=e=>(Ur=Sr.G)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=Sr.H)();var Br,xr=e=>(xr=Sr.I)(e);function Tr(){function e(){Br||(Br=!0,n.calledRun=!0,k||(L(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),R()))}$>0||(I(),$>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=Sr.J)(e,t,r,i,s),n.___start_em_js=143316,n.___stop_em_js=143373,O=function e(){Br||Tr(),Br||(O=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return Tr(),e.ready}),a=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href;return async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var r,i,n;(n=t).ready=new Promise(((e,t)=>{r=e,i=t})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var y,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,B,x,T,k,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=B=new Int32Array(e),n.HEAPU32=x=new Uint32Array(e),n.HEAPF32=T=new Float32Array(e),n.HEAPF64=k=new Float64Array(e)}var F=[],I=[],L=[];function R(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function M(){n.noFSInit||ke.init.initialized||ke.init(),ke.ignorePermissions=!1,ne(I)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(L)}function N(e){F.unshift(e)}function $(e){I.unshift(e)}function O(e){L.unshift(e)}var G=0,H=null;function V(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function W(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ti};function t(e,t){return ri=e.exports,v=ri.D,P(),Ft=ri.G,$(ri.E),W(),ri}if(V(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){x[this.ptr+4>>2]=e},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(e){x[this.ptr+8>>2]=e},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){x[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){if(di(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var ae=(e,t,r)=>{throw new se(e).init(t,r),e},oe=e=>(B[ni()>>2]=e,e),de={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ke.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ue.resolve(e).substr(1),t=ue.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a);if(o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n};function ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},ke.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new ke.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ke.ErrnoError(60);for(var s=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(ke.isBlkdev(r)||ke.isFIFO(r))throw new ke.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:ke.chrdev_stream_ops}});var n=ke.createNode(e,t,r,i);return ke.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):ke.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):ke.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):ke.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=ke.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ke.isDir(e.mode)?t.size=4096:ke.isFile(e.mode)?t.size=e.usedBytes:ke.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw ke.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(ke.isDir(e.mode)){var i;try{i=ke.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ke.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=ke.lookupNode(e,t);for(var i in r.contents)throw new ke.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!ke.isLink(e.mode))throw new ke.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&V()},Ee=(e,t,r,i,n,s)=>ke.createDataFile(e,t,r,i,n,s),Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},Be=(e,t,r,i,n,s,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,n,d),s&&s(),W()}Ue(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},xe=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Te=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},ke={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new ke.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=ke.root,n="/",s=0;s40)throw new ke.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(ke.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%ke.nameTable.length},hashAddNode(e){var t=ke.hashName(e.parent.id,e.name);e.name_next=ke.nameTable[t],ke.nameTable[t]=e},hashRemoveNode(e){var t=ke.hashName(e.parent.id,e.name);if(ke.nameTable[t]===e)ke.nameTable[t]=e.name_next;else for(var r=ke.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=ke.mayLookup(e);if(r)throw new ke.ErrnoError(r,e);for(var i=ke.hashName(e.id,t),n=ke.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return ke.lookup(e,t)},createNode(e,t,r,i){var n=new ke.FSNode(e,t,r,i);return ke.hashAddNode(n),n},destroyNode(e){ke.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ke.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=ke.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{ke.lookupNode(e,t);return 20}catch(e){}return ke.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=ke.lookupNode(e,t)}catch(e){return e.errno}var n=ke.nodePermissions(e,"wx");if(n)return n;if(r){if(!ke.isDir(i.mode))return 54;if(ke.isRoot(i)||ke.getPath(i)===ke.cwd())return 10}else if(ke.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ke.isLink(e.mode)?32:ke.isDir(e.mode)&&("r"!==ke.flagsToPermissionString(t)||512&t)?31:ke.nodePermissions(e,ke.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=ke.MAX_OPEN_FDS;e++)if(!ke.streams[e])return e;throw new ke.ErrnoError(33)},getStreamChecked(e){var t=ke.getStream(e);if(!t)throw new ke.ErrnoError(8);return t},getStream:e=>ke.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return ke.FSStream||(ke.FSStream=function(){this.shared={}},ke.FSStream.prototype={},Object.defineProperties(ke.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new ke.FSStream,e),-1==t&&(t=ke.nextfd()),e.fd=t,ke.streams[t]=e,e},closeStream(e){ke.streams[e]=null},chrdev_stream_ops:{open(e){var t=ke.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new ke.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){ke.devices[e]={stream_ops:t}},getDevice:e=>ke.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),ke.syncFSRequests++,ke.syncFSRequests>1&&w(`warning: ${ke.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=ke.getMounts(ke.root.mount),i=0;function n(e){return ke.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount(e,t,r){var i,n="/"===r,s=!r;if(n&&ke.root)throw new ke.ErrnoError(10);if(!n&&!s){var a=ke.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,ke.isMountpoint(i))throw new ke.ErrnoError(10);if(!ke.isDir(i.mode))throw new ke.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?ke.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=ke.lookupPath(e,{follow_mount:!1});if(!ke.isMountpoint(t.node))throw new ke.ErrnoError(28);var r=t.node,i=r.mounted,n=ke.getMounts(i);Object.keys(ke.nameTable).forEach((e=>{for(var t=ke.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ke.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=ke.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new ke.ErrnoError(28);var s=ke.mayCreate(i,n);if(s)throw new ke.ErrnoError(s);if(!i.node_ops.mknod)throw new ke.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ke.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ke.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ke.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new ke.ErrnoError(44);var r=ke.lookupPath(t,{parent:!0}).node;if(!r)throw new ke.ErrnoError(44);var i=de.basename(t),n=ke.mayCreate(r,i);if(n)throw new ke.ErrnoError(n);if(!r.node_ops.symlink)throw new ke.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=ke.lookupPath(e,{parent:!0}).node,i=ke.lookupPath(t,{parent:!0}).node,!r||!i)throw new ke.ErrnoError(44);if(r.mount!==i.mount)throw new ke.ErrnoError(75);var d,l=ke.lookupNode(r,a),c=ue.relative(e,s);if("."!==c.charAt(0))throw new ke.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new ke.ErrnoError(55);try{d=ke.lookupNode(i,o)}catch(e){}if(l!==d){var u=ke.isDir(l.mode),h=ke.mayDelete(r,a,u);if(h)throw new ke.ErrnoError(h);if(h=d?ke.mayDelete(i,o,u):ke.mayCreate(i,o))throw new ke.ErrnoError(h);if(!r.node_ops.rename)throw new ke.ErrnoError(63);if(ke.isMountpoint(l)||d&&ke.isMountpoint(d))throw new ke.ErrnoError(10);if(i!==r&&(h=ke.nodePermissions(r,"w")))throw new ke.ErrnoError(h);ke.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{ke.hashAddNode(l)}}},rmdir(e){var t=ke.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!0);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.rmdir)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.rmdir(t,r),ke.destroyNode(i)},readdir(e){var t=ke.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ke.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=ke.lookupPath(e,{parent:!0}).node;if(!t)throw new ke.ErrnoError(44);var r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!1);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.unlink)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.unlink(t,r),ke.destroyNode(i)},readlink(e){var t=ke.lookupPath(e).node;if(!t)throw new ke.ErrnoError(44);if(!t.node_ops.readlink)throw new ke.ErrnoError(28);return ue.resolve(ke.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=ke.lookupPath(e,{follow:!t}).node;if(!r)throw new ke.ErrnoError(44);if(!r.node_ops.getattr)throw new ke.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ke.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=ke.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ke.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){ke.chmod(e,t,!0)},fchmod(e,t){var r=ke.getStreamChecked(e);ke.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=ke.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ke.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){ke.chown(e,t,r,!0)},fchown(e,t,r){var i=ke.getStreamChecked(e);ke.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new ke.ErrnoError(28);var r;"string"==typeof e?r=ke.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ke.ErrnoError(63);if(ke.isDir(r.mode))throw new ke.ErrnoError(31);if(!ke.isFile(r.mode))throw new ke.ErrnoError(28);var i=ke.nodePermissions(r,"w");if(i)throw new ke.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=ke.getStreamChecked(e);if(0==(2097155&r.flags))throw new ke.ErrnoError(28);ke.truncate(r.node,t)},utime(e,t,r){var i=ke.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new ke.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?xe(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=ke.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new ke.ErrnoError(20)}else i=ke.mknod(e,r,0),s=!0;if(!i)throw new ke.ErrnoError(44);if(ke.isChrdev(i.mode)&&(t&=-513),65536&t&&!ke.isDir(i.mode))throw new ke.ErrnoError(54);if(!s){var a=ke.mayOpen(i,t);if(a)throw new ke.ErrnoError(a)}512&t&&!s&&ke.truncate(i,0),t&=-131713;var o=ke.createStream({node:i,path:ke.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!n.logReadFiles||1&t||(ke.readFiles||(ke.readFiles={}),e in ke.readFiles||(ke.readFiles[e]=1)),o},close(e){if(ke.isClosed(e))throw new ke.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ke.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ke.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ke.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,n){if(i<0||n<0)throw new ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(1==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.read)throw new ke.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new ke.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write(e,t,r,i,n,s){if(i<0||n<0)throw new ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.write)throw new ke.ErrnoError(28);e.seekable&&1024&e.flags&&ke.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new ke.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(t<0||r<=0)throw new ke.ErrnoError(28);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(!ke.isFile(e.node.mode)&&!ke.isDir(e.node.mode))throw new ke.ErrnoError(43);if(!e.stream_ops.allocate)throw new ke.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ke.ErrnoError(2);if(1==(2097155&e.flags))throw new ke.ErrnoError(2);if(!e.stream_ops.mmap)throw new ke.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new ke.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=ke.open(e,t.flags),n=ke.stat(e).size,s=new Uint8Array(n);return ke.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),ke.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ke.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);ke.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ke.write(i,t,0,t.byteLength,void 0,r.canOwn)}ke.close(i)},cwd:()=>ke.currentPath,chdir(e){var t=ke.lookupPath(e,{follow:!0});if(null===t.node)throw new ke.ErrnoError(44);if(!ke.isDir(t.node.mode))throw new ke.ErrnoError(54);var r=ke.nodePermissions(t.node,"x");if(r)throw new ke.ErrnoError(r);ke.currentPath=t.path},createDefaultDirectories(){ke.mkdir("/tmp"),ke.mkdir("/home"),ke.mkdir("/home/web_user")},createDefaultDevices(){ke.mkdir("/dev"),ke.registerDevice(ke.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ke.mkdev("/dev/null",ke.makedev(1,3)),ve.register(ke.makedev(5,0),ve.default_tty_ops),ve.register(ke.makedev(6,0),ve.default_tty1_ops),ke.mkdev("/dev/tty",ke.makedev(5,0)),ke.mkdev("/dev/tty1",ke.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);ke.createDevice("/dev","random",r),ke.createDevice("/dev","urandom",r),ke.mkdir("/dev/shm"),ke.mkdir("/dev/shm/tmp")},createSpecialDirectories(){ke.mkdir("/proc");var e=ke.mkdir("/proc/self");ke.mkdir("/proc/self/fd"),ke.mount({mount(){var t=ke.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=ke.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?ke.createDevice("/dev","stdin",n.stdin):ke.symlink("/dev/tty","/dev/stdin"),n.stdout?ke.createDevice("/dev","stdout",null,n.stdout):ke.symlink("/dev/tty","/dev/stdout"),n.stderr?ke.createDevice("/dev","stderr",null,n.stderr):ke.symlink("/dev/tty1","/dev/stderr"),ke.open("/dev/stdin",0),ke.open("/dev/stdout",1),ke.open("/dev/stderr",1)},ensureErrnoError(){ke.ErrnoError||(ke.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ke.ErrnoError.prototype=new Error,ke.ErrnoError.prototype.constructor=ke.ErrnoError,[44].forEach((e=>{ke.genericErrors[e]=new ke.ErrnoError(e),ke.genericErrors[e].stack=""})))},staticInit(){ke.ensureErrnoError(),ke.nameTable=new Array(4096),ke.mount(we,{},"/"),ke.createDefaultDirectories(),ke.createDefaultDevices(),ke.createSpecialDirectories(),ke.filesystems={MEMFS:we}},init(e,t,r){ke.init.initialized=!0,ke.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,ke.createStandardStreams()},quit(){ke.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ge(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=ke.createFile(e,t,o,i,n);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return ke.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ke.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ke.forceLoadFile(d);var s=be();if(!s)throw new ke.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=ke.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new ke.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(ke.getPath(e.node)))return-54;throw e}B[r>>2]=i.dev,B[r+4>>2]=i.mode,x[r+8>>2]=i.nlink,B[r+12>>2]=i.uid,B[r+16>>2]=i.gid,B[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[r+24>>2]=K[0],B[r+28>>2]=K[1],B[r+32>>2]=4096,B[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[r+40>>2]=K[0],B[r+44>>2]=K[1],x[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[r+56>>2]=K[0],B[r+60>>2]=K[1],x[r+64>>2]=s%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[r+72>>2]=K[0],B[r+76>>2]=K[1],x[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[r+88>>2]=K[0],B[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!ke.isFile(t.node.mode))throw new ke.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);ke.msync(t,s,n,r,i)},varargs:void 0,get(){var e=B[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>ke.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;ke.streams[n];)n++;return ke.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return ke.open(t,r,n).fd}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Le,Re,Me=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Le(e)},Ve=e=>{throw new Re(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},it=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)},nt={},st=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=at,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=nt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=48,bt=57,wt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=vt&&t<=bt?`_${e}`:e};function St(e,t){return{[e=wt(e)]:function(){return t.apply(this,arguments)}}[e]}var Et=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},At=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),Et(n,e,e),n.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function Ut(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var Bt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function xt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Bt(t.$$.ptr,r,this.registeredClass)}function Tt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=Bt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,nr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${or(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Bt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(x[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Tt:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=kt,this.destructorFunction=null)}var Ft,It,Lt=(e,t,r)=>{n.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Rt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Mt=[],zt=e=>{var t=Mt[e];return t||(e>=Mt.length&&(Mt.length=e+1),Mt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Rt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=St(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Ht=e=>{var t=si(e),r=Ne(t);return ii(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),o&&(o=Ot(a,o)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=wt(c);At(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=St(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Le("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Le(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Le(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ut(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},Lt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Yt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=St(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var a=t.length;a<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);n=Ot(i,n),We([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Le(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=(e,t,r,i,n,s,a,o,d)=>{var l=jt(r,i);t=Ne(t),s=Ot(n,s),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(Et(c,t,i),c[t].overloadTable[r-2]=n),We([],l,(function(n){var o=Kt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Jt(){Object.assign(Qt.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Qt(){this.allocated=[void 0],this.freelist=[]}var er=new Qt,tr=e=>{e>=er.reserved&&0==--er.get(e).refcount&&er.free(e)},rr=()=>{for(var e=0,t=er.reserved;t{er.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),er.reserved=er.allocated.length,n.count_emval_handles=rr},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),er.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return er.allocate({refcount:1,value:e})}}};function sr(e){return this.fromWireType(B[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return tr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction:null})},or=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},dr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(T[e>>2])};case 8:return function(e){return this.fromWireType(k[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},lr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:dr(t,r),destructorFunction:null})},cr=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>B[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ur=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:cr(t,r,0!==i),destructorFunction:null})},hr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=x[e>>2],r=x[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},fr=(e,t,r)=>_e(e,E,t,r),pr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=x[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==E[o]){var d=Ce(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)fr(t,a,i+1);else if(n)for(var o=0;o255&&(ii(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&mr)return mr.decode(E.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},gr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return A[t>>1]=0,t-i},yr=e=>2*e.length,vr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=B[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},br=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(B[t>>2]=a,(t+=4)+4>n)break}return B[t>>2]=0,t-i},wr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Sr=(e,t,r)=>{var i,n,s,a,o;r=Ne(r),2===t?(i=_r,n=gr,a=yr,s=()=>U,o=1):4===t&&(i=vr,n=br,a=wr,s=()=>x,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=x[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ii(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=oi(4+s+t);return x[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(ii,d),d},argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction(e){ii(e)}})},Er=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ar={},Ur=e=>{var t=Ar[e];return void 0===t?Ne(e):t},Br=[],xr=(e,t,r,i)=>{(e=Br[e])(t=nr.toValue(t),r=Ur(r),null,i)},Tr=e=>{var t=Br.length;return Br.push(e),t},kr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Cr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Dr={},Pr=(e,t)=>{var r=Cr(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Dr[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;lt+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Ir=()=>{j("")},Lr=()=>Date.now(),Rr=(e,t,r)=>E.copyWithin(e,t,t+r),Mr=e=>{j("OOM")},zr=e=>{E.length,Mr()},Nr={},$r=()=>l||"./this.program",Or=()=>{if(!Or.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:$r()};for(var t in Nr)void 0===Nr[t]?delete e[t]:e[t]=Nr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Or.strings=r}return Or.strings},Gr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Hr=(e,t)=>{var r=0;return Or().forEach(((i,n)=>{var s=t+r;x[e+4*n>>2]=s,Gr(i,s),r+=i.length+1})),0},Vr=(e,t)=>{var r=Or();x[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),x[t>>2]=i,0};function Wr(e){try{var t=De.getStreamFromFD(e);return ke.close(t),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function jr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:ke.isDir(r.mode)?3:ke.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[t+8>>2]=K[0],B[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[t+16>>2]=K[0],B[t+20>>2]=K[1],0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var qr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=x[t+4>>2];t+=8;var d=ke.read(e,S,a,o,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Kr(e,t,r,i,n){var s=Fr(t,r);try{if(isNaN(s))return 61;var a=De.getStreamFromFD(e);return ke.llseek(a,s,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],B[n>>2]=K[0],B[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Xr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=x[t+4>>2];t+=8;var d=ke.write(e,S,a,o,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Zr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Xr(n,t,r);return x[i>>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ke.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Qr=365,ei=146;Object.defineProperties(Jr.prototype,{read:{get:function(){return(this.mode&Qr)===Qr},set:function(e){e?this.mode|=Qr:this.mode&=~Qr}},write:{get:function(){return(this.mode&ei)===ei},set:function(e){e?this.mode|=ei:this.mode&=~ei}},isFolder:{get:function(){return ke.isDir(this.mode)}},isDevice:{get:function(){return ke.isChrdev(this.mode)}}}),ke.FSNode=Jr,ke.createPreloadedFile=Be,ke.staticInit(),ze(),Le=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Re=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Jt(),ir();var ti={p:ae,B:Pe,v:Fe,t:Me,n:Xe,r:Wt,q:Xt,f:Zt,C:ar,m:lr,c:ur,b:hr,l:pr,h:Sr,o:Er,d:xr,i:tr,e:Pr,a:Ir,g:Lr,z:Rr,u:zr,x:Hr,y:Vr,k:Wr,w:jr,A:Yr,s:Kr,j:Zr},ri=ie(),ii=e=>(ii=ri.F)(e),ni=()=>(ni=ri.H)(),si=e=>(si=ri.I)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=ri.J)();var ai,oi=e=>(oi=ri.K)(e),di=e=>(di=ri.M)(e);function li(){function e(){ai||(ai=!0,n.calledRun=!0,C||(M(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(R(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,a,o,d)=>(n.dynCall_viiijj=ri.N)(e,t,r,i,s,a,o,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=ri.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=ri.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=ri.Q)(e,t,r,i,s),H=function e(){ai||li(),ai||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return li(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function c(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var u,h=function(e,t,r,i,n,s,a){var o=1/(t-r),d=1/(i-n),l=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*d,e[14]=(a+s)*l,e[15]=1,e};function f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),a=p(),d=p(),u=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,Vt=Gt;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===Bt}function qt(e){return e[0]>>4===Ne}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Yt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Ht[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Ot(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Ht[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=nr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function ar(e){return null==e}function or(e){return!ar(e)}function dr(e){return"function"==typeof e}function lr(e){let t=null,r=31&e[0];return r!==He&&r!==Ve||(t=Me),t||(r=(126&e[0])>>1,r!==nt&&r!==at&&r!==dt||(t=ze)),t}function cr(){return"undefined"!=typeof WritableStream}function ur(e){e.close()}function hr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function fr(e){return e.ok&&e.status>=200&&e.status<=299}function pr(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(x)}function mr(e){return e[0]>>4===xt&&e[1]===Bt}function _r(e){return!0===e||"true"===e}function gr(e){return!0!==e&&"true"!==e}function yr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}function vr(e,t){const r=Qt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Je||r===et||r===rt)||gr(t)&&r===We)&&(i=!0)})),i}var br=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const wr=Symbol(32),Sr=Symbol(16),Er=Symbol(8);class Ar{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return br(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(wr)}readU16(){return this.read(Sr)}readU8(){return this.read(Er)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===wr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Sr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Er){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Ar.U32=wr,Ar.U16=Sr,Ar.U8=Er;class Ur{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=Br._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Br.getProfileString(i),a=Br.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,U=2*e,S=A/U}}let B=1;1===b&&1===w||(B=b/w);let x=0,T=0;if(0===o)x=1,T=2-m;else{x=3===o?1:2,T=(1===o?2:1)*(2-m)}let k=16*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*x,C-=(y+v)*T;let D=Math.ceil(k*B);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Br.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Br._ebsp2rbsp(e),n=new Ot(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=Br.getProfileString(s),d=Br.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);B=n.readBool(),x=t,T=2*e,U=x/T}}let k=1;1===E&&1===A||(k=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),F=16*(g+1)*(2-y);P-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(P*k);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Br.getChromaFormatString(c),frame_rate:{fixed:B,fps:U,fps_den:T,fps_num:x},sar_ratio:{width:E,height:A},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function kr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Cr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Br.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e){return 31&e[0]}function Ir(e){return e===Ye}function Lr(e){return!function(e){return e===He||e===Ve}(e)&&!Ir(e)}function Rr(e){return e===We}function Mr(e){if(0===e.length)return!1;const t=Fr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Ze||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Nr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const $r=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Or=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Gr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(M=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();R=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=$r(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(M=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();R=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|at,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|dt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e){return(126&e[0])>>1}function Xr(e){return e===ct}function Zr(e){return!function(e){return e>=32&&e<=40}(e)}function Jr(e){return e>=16&&e<=21}function Qr(e){if(0===e.length)return!1;const t=Kr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ti{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ri(e){return parseInt(e)===e}function ii(e){if(!ri(e.length))return!1;for(var t=0;t255)return!1;return!0}function ni(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ii(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ri(e.length)&&ii(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ai(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var oi,di={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},li=(oi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+oi[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},ui=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],fi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],pi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],mi=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],_i=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],gi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],yi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],vi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],bi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],wi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Si=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ei=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ai=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Ui=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Bi(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,d=n;d>16&255]<<24^hi[a>>8&255]<<16^hi[255&a]<<8^hi[a>>24&255]^ui[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^hi[a>>16&255]<<16^hi[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ei[a>>16&255]^Ai[a>>8&255]^Ui[255&a]},xi.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Bi(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^mi[i[(n+1)%4]>>16&255]^_i[i[(n+2)%4]>>8&255]^gi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(hi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(hi[255&i[(n+3)%4]]^a);return o},xi.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Bi(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^vi[i[(n+3)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(fi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(fi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(fi[255&i[(n+1)%4]]^a);return o};var Ti=function(e){if(!(this instanceof Ti))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new xi(e)};Ti.prototype.encrypt=function(e){if((e=ni(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Pi.prototype.setBytes=function(e){if(16!=(e=ni(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fi=function(e,t){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new xi(e)};Fi.prototype.encrypt=function(e){for(var t=ni(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],B=e[t+15],x=s[0],T=s[1],k=s[2],C=s[3];x=l(x,T,k,C,a,7,o[0]),C=l(C,x,T,k,d,12,o[1]),k=l(k,C,x,T,f,17,o[2]),T=l(T,k,C,x,p,22,o[3]),x=l(x,T,k,C,m,7,o[4]),C=l(C,x,T,k,_,12,o[5]),k=l(k,C,x,T,g,17,o[6]),T=l(T,k,C,x,y,22,o[7]),x=l(x,T,k,C,v,7,o[8]),C=l(C,x,T,k,b,12,o[9]),k=l(k,C,x,T,w,17,o[10]),T=l(T,k,C,x,S,22,o[11]),x=l(x,T,k,C,E,7,o[12]),C=l(C,x,T,k,A,12,o[13]),k=l(k,C,x,T,U,17,o[14]),x=c(x,T=l(T,k,C,x,B,22,o[15]),k,C,d,5,o[16]),C=c(C,x,T,k,g,9,o[17]),k=c(k,C,x,T,S,14,o[18]),T=c(T,k,C,x,a,20,o[19]),x=c(x,T,k,C,_,5,o[20]),C=c(C,x,T,k,w,9,o[21]),k=c(k,C,x,T,B,14,o[22]),T=c(T,k,C,x,m,20,o[23]),x=c(x,T,k,C,b,5,o[24]),C=c(C,x,T,k,U,9,o[25]),k=c(k,C,x,T,p,14,o[26]),T=c(T,k,C,x,v,20,o[27]),x=c(x,T,k,C,A,5,o[28]),C=c(C,x,T,k,f,9,o[29]),k=c(k,C,x,T,y,14,o[30]),x=u(x,T=c(T,k,C,x,E,20,o[31]),k,C,_,4,o[32]),C=u(C,x,T,k,v,11,o[33]),k=u(k,C,x,T,S,16,o[34]),T=u(T,k,C,x,U,23,o[35]),x=u(x,T,k,C,d,4,o[36]),C=u(C,x,T,k,m,11,o[37]),k=u(k,C,x,T,y,16,o[38]),T=u(T,k,C,x,w,23,o[39]),x=u(x,T,k,C,A,4,o[40]),C=u(C,x,T,k,a,11,o[41]),k=u(k,C,x,T,p,16,o[42]),T=u(T,k,C,x,g,23,o[43]),x=u(x,T,k,C,b,4,o[44]),C=u(C,x,T,k,E,11,o[45]),k=u(k,C,x,T,B,16,o[46]),x=h(x,T=u(T,k,C,x,f,23,o[47]),k,C,a,6,o[48]),C=h(C,x,T,k,y,10,o[49]),k=h(k,C,x,T,U,15,o[50]),T=h(T,k,C,x,_,21,o[51]),x=h(x,T,k,C,E,6,o[52]),C=h(C,x,T,k,p,10,o[53]),k=h(k,C,x,T,w,15,o[54]),T=h(T,k,C,x,d,21,o[55]),x=h(x,T,k,C,v,6,o[56]),C=h(C,x,T,k,B,10,o[57]),k=h(k,C,x,T,g,15,o[58]),T=h(T,k,C,x,A,21,o[59]),x=h(x,T,k,C,m,6,o[60]),C=h(C,x,T,k,S,10,o[61]),k=h(k,C,x,T,f,15,o[62]),T=h(T,k,C,x,b,21,o[63]),s[0]=s[0]+x|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=Li).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,U=u.high,B=u.low,x=h.high,T=h.low,k=f,C=p,D=m,P=_,F=g,I=y,L=v,R=b,M=w,z=S,N=E,$=A,O=U,G=B,H=x,V=T,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],ae=se.high,oe=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=M&N^~M&O,fe=z&$^~z&G,pe=k&D^k&F^D&F,me=C&P^C&I^P&I,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(M>>>14|z<<18)^(M>>>18|z<<14)^(M<<23|z>>>9),ve=(z>>>14|M<<18)^(z>>>18|M<<14)^(z<<23|M>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=O,V=G,O=N,G=$,N=M,$=z,M=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=R+ue|0)>>>0>>0?1:0)|0,L=F,R=I,F=D,I=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

          >>0?1:0),y=s.low=y+I,s.high=g+F+(y>>>0>>0?1:0),b=a.low=b+R,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+M+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),B=u.low=B+G,u.high=U+O+(B>>>0>>0?1:0),T=h.low=T+V,h.high=x+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var B=u[0],x=r[0];for(B.high=x.high,B.low=x.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,U,B,x,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,F=l.words,I=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],U=b=T[3],B=w=T[4],r=0;r<80;r+=1)x=s+e[t+D[r]]|0,x+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],x=(x=v(x|=0,F[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=x,x=S+e[t+P[r]]|0,x+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],x=(x=v(x|=0,I[r]))+B|0,S=B,B=U,U=v(A,10),A=E,E=x;x=T[1]+f+U|0,T[1]=T[2]+b+B|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=x},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,n;e.exports=(i=(r=Li).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=Li).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=Li).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=Li).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(s+4+2,s+4+a);let n=new Ii.ModeOfOperation.ctr(t,new Ii.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function zi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Ii.ModeOfOperation.ctr(t,new Ii.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}$t((function(e,t){e.exports=Li}));var Ni=$t((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[a].grouping_type+"/0",(o=new l(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,B.dts=e.samples[t-1].dts+e.samples[t-1].duration):B.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),B.cts=e.samples[t].dts+a.sample_offsets[S]):B.cts=B.dts,o?(t==o.sample_numbers[E]-1?(B.is_sync=!0,E++):(B.is_sync=!1,B.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(B.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):B.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,B,B.number),B.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(B.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,B,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function $i(e){return e.reduce(((e,t)=>256*e+t))}function Oi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Ni.Log,Ni.MP4BoxStream,Ni.DataStream,Ni.MultiBufferStream,Ni.MPEG4DescriptorParser,Ni.BoxParser,Ni.XMLSubtitlein4Parser,Ni.Textin4Parser,Ni.ISOFile,Ni.createFile;class Gi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Oi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}function Hi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),a=5;for(;an){const t=new Uint8Array(s.length+e.length-a);t.set(s,0),t.set(e.slice(a),s.length),s=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=nn(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(a+4,a+4+u),0);const o=er(Hi(n,new Uint8Array(r))),l=new Uint8Array(s.length+o.length);l.set(s,0),l.set(o,s.length),s=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(o,s.length),r.set(t,s.length+4),s=r}a=a+4+d}return s}const on={init:0,findFirstStartCode:1,findSecondStartCode:2};class dn extends class{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=on.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=on.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=on.findFirstStartCode}}}}function ln(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=ln(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class fn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{dr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class pn{static init(){pn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in pn.types)pn.types.hasOwnProperty(e)&&(pn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=pn.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return pn.box(pn.types.trak,pn.tkhd(e),pn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return pn.box(pn.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return pn.box(pn.types.mdia,pn.mdhd(e),pn.hdlr(e),pn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return pn.box(pn.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?pn.constants.HDLR_AUDIO:pn.constants.HDLR_VIDEO,pn.box(pn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?pn.box(pn.types.smhd,pn.constants.SMHD):pn.box(pn.types.vmhd,pn.constants.VMHD),pn.box(pn.types.minf,t,pn.dinf(),pn.stbl(e))}static dinf(){return pn.box(pn.types.dinf,pn.box(pn.types.dref,pn.constants.DREF))}static stbl(e){return pn.box(pn.types.stbl,pn.stsd(e),pn.box(pn.types.stts,pn.constants.STTS),pn.box(pn.types.stsc,pn.constants.STSC),pn.box(pn.types.stsz,pn.constants.STSZ),pn.box(pn.types.stco,pn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp3(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp4a(e)):"avc"===e.videoType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.avc1(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types.mp4a,i,pn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return pn.box(pn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.avc1,n,pn.box(pn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.hvc1,n,pn.box(pn.types.hvcC,t))}static mvex(e){return pn.box(pn.types.mvex,pn.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return pn.box(pn.types.trex,r)}static moof(e,t){return pn.box(pn.types.moof,pn.mfhd(e.sequenceNumber),pn.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return pn.box(pn.types.mfhd,t)}static traf(e,t){let r=e.id,i=pn.box(pn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=pn.box(pn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=pn.sdtp(e),a=pn.trun(e,s.byteLength+16+16+8+16+8+8);return pn.box(pn.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,pn.box(pn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),pn.box(pn.types.trun,r)}static mdat(e){return pn.box(pn.types.mdat,e)}}pn.init();var mn,_n=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(mn=_n)&&mn.__esModule&&Object.prototype.hasOwnProperty.call(mn,"default")&&mn.default;const gn=[44100,48e3,32e3,0],yn=[22050,24e3,16e3,0],vn=[11025,12e3,8e3,0],bn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],wn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Sn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function En(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=vn[a];break;case 2:d=yn[a];break;case 3:d=gn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=zn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class On{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Gn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Hn=new Array(214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72),Vn=new Array(2746333894,1453994832,1736282519,2993693404),Wn=new Array(462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257);function jn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Yn(e,t){return t+3>>19)^(i<<23|i>>>9)}function Zn(e,t){var r=new Array(36);r[0]=Yn(t,0),r[1]=Yn(t,4),r[2]=Yn(t,8),r[3]=Yn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^Jn(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function Qn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Kn(e),n=Math.ceil(r.length/16),s=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let a=5;for(;as)break;let d=e[a+4],l=!1,c=2;if(i?(n&&(c=3),d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Qn(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()});const ts=[];ts.push(a({printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc"))&&console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){e&&-1!==e.indexOf("not compiled with thread support, using thread emulation")||console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(ts).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s=null,a=null,o=null,d=null,l=null,c=null,u=!1,h=null,f=null,S=!1,E=!1,x=!!_r(r),we=0,Se=0,We=!1,Ze=null,Je=null,et=null,rt=[],ct=null,Et=null,At=0,xt=0,Nt=null,$t=null,Ot=0,Gt=0,Ht=!1,Yt=!1,Jt=!1,nr=null,br=null,wr=!1,Sr=!0,Er=()=>{const e=pr();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,isSm4CryptoH265V2:e.isSm4CryptoH265V2,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){s.decoder=new VideoDecoder({output:function(e){if(dr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ni.delay,ts:0},[r]),ur(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ni.delay,ts:0},[t]),ur(e)}},error:function(e){ni.debug.error("worker","VideoDecoder error",e)}})},destroy(){s.reset(),s.decoder&&"closed"!==s.decoder.state&&(s.decoder.close(),s.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ft:pt});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:R,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const a=e.slice(5);t===Ie?(n=Tr(a),i={codec:n.codec,description:a}):t===Le&&(n=Vr(a),i={codec:n.codec,description:a}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),s.isEmitInfo||(ni.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d"));try{s.decoder.configure(i),s.hasInit=!0}catch(e){ni.debug.error("worker","VideoDecoder configure error",e.code,e),e.toString()}}else ni.debug.warn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let xr=function(){if(wr=!0,ni.fetchStatus!==Ct||gr(ni._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){ni.debug.log("worker","abort catch",e)}}else a=null,ni.debug.log("worker",`abort() and not abortController.abort() _status is ${ni.fetchStatus} and _isChrome is ${ni._opt.isChrome}`)},$r={init(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},destroy(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ni._opt.nakedFlowDemuxUseNew){const e=$r.extractNALu$3(t);$r.handleVideoFrames(e)}else $r.extractNALu$2(t)},getNaluDts(){const e=ni._opt.nakedFlowFps;let t=$r.localDts;return $r.localDts=$r.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ni._opt.sampleRate,t=ni._opt.audioBufferSize;return $r.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e{const t=Fr(e);t===Ve||t===He?$r.handleVideoH264Nalu(e):Lr(t)&&i.push(e)})),1===i.length)$r.handleVideoH264Nalu(i[0]);else if(Mr(i)){const e=Fr(i[0]),t=Rr(e);$r.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH264Nalu(e)}))}else if($r.streamType===ze)if(ni._opt.nakedFlowH265DemuxUseNew){const t=$r.handleAddNaluStartCode(e),r=$r.extractNALu(t);if(0===r.length)return void ni.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Kr(e);t===dt||t===at||t===nt?$r.handleVideoH265Nalu(e):Zr(t)&&i.push(e)})),1===i.length)$r.handleVideoH265Nalu(i[0]);else if(Qr(i)){const e=Kr(i[0]),t=Jr(e);$r.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH265Nalu(e)}))}else Kr(e)===dt?$r.extractH265PPS(e):$r.handleVideoH265Nalu(e)},extractH264PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Ir(Fr(e))?$r.extractH264SEI(e):$r.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Xr(Kr(e))?$r.extractH265SEI(e):$r.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Fr(e);switch(t){case He:$r.sps=e;break;case Ve:$r.pps=e}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=kr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(Lr(t)){const r=Rr(t),i=$r.getNaluDts(),n=Dr(e,r);$r.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if($r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=kr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}},handleVideoH264NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Pr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Kr(e);switch(t){case nt:$r.vps=e;break;case at:$r.sps=e;break;case dt:$r.pps=e}if($r.isSendSeqHeader){if($r.vps&&$r.sps&&$r.pps){const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}if(Zr(t)){const r=Jr(t),i=$r.getNaluDts(),n=qr(e,r);$r.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if($r.vps&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}},handleVideoH265NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Yr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ni.calcNetworkDelay(t.ts),t.isIFrame&&ni.calcIframeIntervalTimestamp(t.ts),ni.decode(e,t)},handleVideoFrames(e){if(!$r.streamVideoType)for(let t of e)if($r.streamVideoType=lr(t),$r.streamVideoType)break;$r.streamVideoType&&($r.streamVideoType===Me?$r.handleVideoH264Frames(e):this.streamVideoType===ze&&$r.handleVideoH265Frames(e))},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Fr(a);let o=!1,d=e===qe;e!==je&&e!==qe||(s=$r.parseVideo264Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ve:$r.pps=e;break;case He:$r.sps=e;break;case Ye:n=e}if(Lr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=Cr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=Cr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(i){const e=$r.getNaluDts(),t=Pr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:n,ts:e},[n.buffer]),$r.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Kr(a);let o=!1,d=Jr(e);Zr(e)&&(s=this.parseVideo265Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case dt:$r.pps=e;break;case at:$r.sps=e;break;case nt:$r.vps=e}if(Zr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps&&$r.vps){$r.isSendSeqHeader=!0;const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps});ni.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps&&$r.vps){const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps}),t=$r.localDts;ni.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if(i){const e=$r.getNaluDts(),t=Yr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:null,ts:e},[null.buffer]),$r.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{$r.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new On(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new On(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Or={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Or.mp4Box=Ni.createFile(),Or.mp4Box.onReady=Or.onReady,Or.mp4Box.onError=Or.onError,Or.mp4Box.onSamples=Or.onSamples},initTransportDescarmber(){Or.transportDescarmber=new Gi},_getSeqHeader(e){const t=Or.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Ni.DataStream(void 0,0,Ni.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Or.isHevc=!0,ni.isHevc=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ni.debug.log(Or.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Or.videoTrackId=t.id;const e=Or._getSeqHeader(t);e&&(ni.debug.log(Or.LOG_NAME,"seqHeader"),ni.decodeVideo(e,0,!0,0)),Or.mp4Box.setExtractionOptions(t.id)}if(r&&ni._opt.hasAudio){Or.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Or.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ni.debug.log(Or.LOG_NAME,"aacADTSHeader"),ni.decodeAudio(n,0)}Or.mp4Box.start()},onError(e){ni.debug.error(Or.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Or.videoTrackId){for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&ni.calcIframeIntervalTimestamp(i);let n=null;n=Or.isHevc?Yr(t,r):Pr(t,r),ni.decode(n,{type:oe,ts:i,isIFrame:r,cts:0})}Or.mp4Box.removeUsedSamples(e)}else if(e===Or.audioTrackId){if(ni._opt.hasAudio){for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),ni.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}Or.mp4Box.removeUsedSamples(e)}}else ni.debug.warn(Or.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Or.transportDescarmber&&(t=Or.transportDescarmber.transport(t)),t.buffer.fileStart=Or.offset,Or.offset+=t.byteLength,Or.mp4Box.appendBuffer(t.buffer)},destroy(){Or.mp4Box&&(Or.mp4Box.stop(),Or.mp4Box.flush(),Or.mp4Box.destroy(),Or.mp4Box=null),Or.transportDescarmber&&(Or.transportDescarmber.destroy(),Or.transportDescarmber=null),Or.offset=0,Or.videoTrackId=null,Or.audioTrackId=null,Or.isHevc=!1}},Wr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Wr.extractNALu(t)},destroy(){Wr.lastBuffer=new Uint8Array(0),Wr.parsedOffset=0,Wr.firstStartCodeOffset=0,Wr.secondStartCodeOffset=0,Wr.state="init",Wr.hasInitVideoCodec=!1,Wr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ni.debug.warn(Wr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Wr.lastBuffer.length+e.length);for(t.set(Wr.lastBuffer,0),t.set(new Uint8Array(e),Wr.lastBuffer.length),Wr.lastBuffer=t;;){if("init"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findFirstStartCode",Wr.firstStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findSecondStartCode",Wr.secondStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Wr.state){if(!(Wr.lastBuffer.length-Wr.parsedOffset>0))break;{let e,t,r=192&Wr.lastBuffer[Wr.parsedOffset];e=0==r?Wr.secondStartCodeOffset-14:Wr.secondStartCodeOffset;let i=0==(192&Wr.lastBuffer[Wr.firstStartCodeOffset+4]);if(i){if(Wr.firstStartCodeOffset-14<0)return void ni.debug.warn(Wr.LOG_NAME,"firstStartCodeOffset -14 is",Wr.firstStartCodeOffset-14);Wr.hasInitVideoCodec||(Wr.hasInitVideoCodec=!0,ni.debug.log(Wr.LOG_NAME,"setCodec"),ai.setCodec(Re,"")),t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset-14,e)}else t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset,e);let n=Wr.getNaluDts();Wr.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:xe,value:n}),we=n,ai.decode(t,i?1:0,n)):ni.debug.warn(Wr.LOG_NAME,"has not init video codec"),Wr.lastBuffer=Wr.lastBuffer.subarray(e),Wr.firstStartCodeOffset=0==r?14:0,Wr.parsedOffset=Wr.firstStartCodeOffset+4,Wr.state="findFirstStartCode"}}}},getNaluDts(){let e=Wr.localDts;return Wr.localDts=Wr.localDts+40,e}},ri={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Nn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){ri.media_info_=null,ri.pes_slice_queues_=null,ri.section_slice_queues_=null,ri.video_metadata_=null,ri.audio_metadata_=null,ri.aac_last_incomplete_data_=null,ri.video_track_=null,ri.audio_track_=null,ri._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){ri._remainingPacketData&&(e=hn(ri._remainingPacketData,e),ri._remainingPacketData=null);let t=e.buffer;const r=ri.parseChunks(t);r?ri._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!ri.pmt_||ri.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);ri.last_pcr_=e}if(2==a||5+e===188){t+=188,204===ri.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===ri.current_pmt_pid_||null!=ri.pmt_&&ri.pmt_.pid_stream_type[s]===Pn){let r=188-c;ri.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=ri.pmt_&&null!=ri.pmt_.pid_stream_type[s]){let r=188-c,i=ri.pmt_.pid_stream_type[s];s!==ri.pmt_.common_pids.h264&&s!==ri.pmt_.common_pids.h265&&s!==ri.pmt_.common_pids.adts_aac&&s!==ri.pmt_.common_pids.loas_aac&&s!==ri.pmt_.common_pids.ac3&&s!==ri.pmt_.common_pids.eac3&&s!==ri.pmt_.common_pids.opus&&s!==ri.pmt_.common_pids.mp3&&!0!==ri.pmt_.pes_private_data_pids[s]&&!0!==ri.pmt_.timed_id3_pids[s]&&!0!==ri.pmt_.synchronous_klv_pids[s]&&!0!==ri.pmt_.asynchronous_klv_pids[s]||ri.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===ri.tsPacketSize&&(t+=16)}return ri.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=ri.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):ri.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&ri.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):s.total_length>=s.expected_length&&ri.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ni.debug.warn(ri.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=ri.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?ri.emitPESSlices(e,i):ri.clearSlices(e,i)),ri.pes_slice_queues_[i.pid]=new Ln,ri.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==ri.pes_slice_queues_[i.pid])return;let o=ri.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?ri.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ni.debug.warn(ri.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case An:case Un:ri.parseMP3Payload(c,r);break;case Bn:ri.pmt_.common_pids.opus===e.pid||ri.pmt_.common_pids.ac3===e.pid||ri.pmt_.common_pids.eac3===e.pid||(ri.pmt_.asynchronous_klv_pids[e.pid]?ri.parseAsynchronousKLVMetadataPayload(c,e.pid,i):ri.pmt_.smpte2038_pids[e.pid]?ri.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):ri.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case xn:ri.parseADTSAACPayload(c,r);break;case Tn:ri.parseLOASAACPayload(c,r);break;case kn:case Cn:break;case Dn:ri.pmt_.timed_id3_pids[e.pid]?ri.parseTimedID3MetadataPayload(c,r,s,e.pid,i):ri.pmt_.synchronous_klv_pids[e.pid]&&ri.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Fn:ri.parseH264Payload(c,r,s,e.random_access_indicator);break;case In:ri.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Bn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);ri.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ni.debug.error(ri.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(ri.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=ri.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==ri.pat_&&ni.debug.log(ri.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),ri.pat_=a,ri.current_program_=d,ri.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ni.debug.error(ri.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=ri._initPmt(),r.program_number=n,r.version_number=s,ri.program_pmt_map_[n]=r;else if(r=ri.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iri.has_video_&&ri.has_audio_?ri.video_init_segment_dispatched_&&ri.audio_init_segment_dispatched_:ri.has_video_&&!ri.has_audio_?ri.video_init_segment_dispatched_:!(ri.has_video_||!ri.has_audio_)&&ri.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=ri.video_metadata_.details,t={type:"video"};t.id=ri.video_track_.id,t.timescale=1e3,t.duration=ri.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,ri.video_metadata_.vps){ni.isHevc=!0;let e=ri.video_metadata_.vps.data.subarray(4),r=ri.video_metadata_.sps.data.subarray(4),i=ri.video_metadata_.pps.data.subarray(4);t.hvcc=jr({vps:e,sps:r,pps:i}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ni.decodeVideo(t.hvcc,0,!0,0)}else{let e=ri.video_metadata_.sps.data.subarray(4),r=ri.video_metadata_.pps.data.subarray(4);t.avcc=Cr({sps:e,pps:r}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ni.decodeVideo(t.avcc,0,!0,0)}ri.video_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let n=ri.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){ri.isInitSegmentDispatched()&&ri.video_track_.length&&ri._preDoDecode()},dispatchAudioMediaSegment(){ri.isInitSegmentDispatched()&&ri.audio_track_.length&&ri._preDoDecode()},dispatchAudioVideoMediaSegment(){ri.isInitSegmentDispatched()&&(ri.audio_track_.length||ri.video_track_.length)&&ri._preDoDecode()},parseADTSAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Zt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(ar(this.loas_previous_frame)?void 0:this.loas_previous_frame));){ri.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},ri.dispatchAudioInitSegment(h)):ri.detectAudioMetadataChange(h)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/ri.timescale_,dts:t/ri.timescale_,type:ae};ri.audio_track_.samples.push(f),ri.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==ri.audio_metadata_.codec)return ni.debug.log(ri.TAG_NAME,`Audio: Audio Codecs changed from ${ri.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===ri.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==ri.audio_metadata_.audio_object_type)return ni.debug.log(ri.TAG_NAME,`AAC: AudioObjectType changed from ${ri.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==ri.audio_metadata_.sampling_freq_index)return ni.debug.log(ri.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==ri.audio_metadata_.channel_config)return ni.debug.log(ri.TAG_NAME,`AAC: Channel configuration changed from ${ri.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===ri.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==ri.audio_metadata_.sampling_frequency)return ni.debug.log(ri.TAG_NAME,`AC3: Sampling Frequency changed from ${ri.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==ri.audio_metadata_.bit_stream_identification)return ni.debug.log(ri.TAG_NAME,`AC3: Bit Stream Identification changed from ${ri.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==ri.audio_metadata_.bit_stream_mode)return ni.debug.log(ri.TAG_NAME,`AC3: BitStream Mode changed from ${ri.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==ri.audio_metadata_.channel_mode)return ni.debug.log(ri.TAG_NAME,`AC3: Channel Mode changed from ${ri.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==ri.audio_metadata_.low_frequency_effects_channel_on)return ni.debug.log(ri.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${ri.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===ri.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`Opus: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===ri.audio_metadata_.codec){const t=e.data;if(t.object_type!==ri.audio_metadata_.object_type)return ni.debug.log(ri.TAG_NAME,`MP3: AudioObjectType changed from ${ri.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`MP3: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=ri.audio_track_.id,t.timescale=1e3,t.duration=ri.duration_,"aac"===ri.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $n(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ni._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ni.decodeAudio(n,0)}else"ac-3"===ri.audio_metadata_.codec||"ec-3"===ri.audio_metadata_.codec||"opus"===ri.audio_metadata_.codec||"mp3"===ri.audio_metadata_.codec&&(t.audioSampleRate=ri.audio_metadata_.sample_rate,t.channelCount=ri.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==ri.audio_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),ri.audio_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let r=ri.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Mn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/ri.timescale_);s.pts=e}else s.nearest_pts=ri.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/ri.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ni.debug.log(ri.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=ri.audio_last_sample_pts_?Math.floor(ri.audio_last_sample_pts_):null!=ri.last_pcr_?Math.floor(ri.last_pcr_/300/ri.timescale_):void 0,_preDoDecode(){const e=ri.video_track_,t=ri.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===oe?ri._doDecodeVideo({...e,payload:t}):e.type===ae&&ri._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Yr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ni.calcIframeIntervalTimestamp(e.dts);let i=ni.cryptoPayload(r,e.isIFrame);ni.decode(i,{type:oe,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;_r(ni._opt.m7sCryptoAudio)&&(r=ni.cryptoPayloadAudio(t)),ni.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},ii=null;yr()&&(ii={TAG_NAME:"worker MediaSource",_resetInIt(){ii.isAvc=null,ii.isAAC=null,ii.videoInfo={},ii.videoMeta={},ii.audioMeta={},ii.sourceBuffer=null,ii.audioSourceBuffer=null,ii.hasInit=!1,ii.hasAudioInit=!1,ii.isAudioInitInfo=!1,ii.videoMimeType="",ii.audioMimeType="",ii.cacheTrack={},ii.cacheAudioTrack={},ii.timeInit=!1,ii.sequenceNumber=0,ii.audioSequenceNumber=0,ii.firstRenderTime=null,ii.firstAudioTime=null,ii.mediaSourceAppendBufferFull=!1,ii.mediaSourceAppendBufferError=!1,ii.mediaSourceAddSourceBufferError=!1,ii.mediaSourceBufferError=!1,ii.mediaSourceError=!1,ii.prevTimestamp=null,ii.decodeDiffTimestamp=null,ii.prevDts=null,ii.prevAudioDts=null,ii.prevPayloadBufferSize=0,ii.isWidthOrHeightChanged=!1,ii.prevTs=null,ii.prevAudioTs=null,ii.eventListenList=[],ii.pendingRemoveRanges=[],ii.pendingSegments=[],ii.pendingAudioRemoveRanges=[],ii.pendingAudioSegments=[],ii.supportVideoFrameCallbackHandle=null,ii.audioSourceBufferCheckTimeout=null,ii.audioSourceNoDataCheckTimeout=null,ii.hasPendingEos=!1,ii.$video={currentTime:0,readyState:0}},init(){ii.events=new fn,ii._resetInIt(),ii.mediaSource=new self.MediaSource,ii.isDecodeFirstIIframe=!!gr(ni._opt.checkFirstIFrame),ii._bindMediaSourceEvents()},destroy(){ii.stop(),ii._clearAudioSourceBufferCheckTimeout(),ii.eventListenList&&ii.eventListenList.length&&(ii.eventListenList.forEach((e=>e())),ii.eventListenList=[]),ii._resetInIt(),ii.mediaSource=null},getState:()=>ii.mediaSource&&ii.mediaSource.readyState,isStateOpen:()=>ii.getState()===yt,isStateClosed:()=>ii.getState()===vt,isStateEnded:()=>ii.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=ii.events,t=e(ii.mediaSource,wt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceOpen"),ii._onMediaSourceSourceOpen()})),r=e(ii.mediaSource,bt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceClose")})),i=e(ii.mediaSource,St,(()=>{ni.debug.log(ii.TAG_NAME,"sourceended")}));ii.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ii.sourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ii._initSourceBuffer()),ii.audioSourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ii._initAudioSourceBuffer()),ii._hasPendingSegments()&&ii._doAppendSegments()},decodeVideo(e,t,r,i){if(ni.isDestroyed)ni.debug.warn(ii.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(gr(ii.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Le&&gr(ni._opt.supportMSEDecodeHevc))return void ii.emitError(Pe.mediaSourceH265NotSupport);ii.videoInfo.codec=i,postMessage({cmd:R,code:i});const n=new Uint8Array(e);postMessage({cmd:M,buffer:n,codecId:i},[n.buffer]),ii.hasInit=ii._decodeConfigurationRecord(e,t,r,i)}else ni.debug.warn(ii.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!ii.isDecodeFirstIIframe&&r&&(ii.isDecodeFirstIIframe=!0),ii.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Ie?r=Tr(e.slice(5)):t===Le&&(r=Hr(e));const i=ii.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ni.debug.warn(ii.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ii.isWidthOrHeightChanged=!0,ii.emitError(Pe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(ii.isWidthOrHeightChanged)return void ni.debug.warn(ii.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mr(e))return void ni.debug.log(ii.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthii.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Ie?s=Tr(n):i===Le&&(s=Vr(n)),ii.videoInfo.width=s.codecWidth,ii.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ni.debug.warn(ii.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),ii.emitError(Pe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const a={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=pn.generateInitSegment(a);ii.isAvc=i===Ie;let d=s.codec;return ii.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:ii.isAvc?mt:_t,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),ii._initSourceBuffer(),ii.appendBuffer(o.buffer),ii.sequenceNumber=0,ii.cacheTrack={},ii.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ge,s=r===Ne;if(gr(s||n))return ni.debug.warn(ii.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ii.emitError(Pe.mediaSourceAudioG711NotSupport),!1;const a={id:Ft,type:"audio",timescale:1e3};let o={};if(jt(e)){if(o=Kt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=En(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&gr(ni._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=pn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),gr(ii.isAudioInitInfo)&&(br=r===Ne?i?16:8:0===i?8:16,postMessage({cmd:F,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:br}),ii.isAudioInitInfo=!0),ii.audioMimeType=u,ii.isAAC=s,ii._initAudioSourceBuffer(),ii.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.sourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.videoMimeType){try{ni.debug.log(ii.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.videoMimeType),ii.sourceBuffer=ii.mediaSource.addSourceBuffer(ii.videoMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.sourceBuffer){const t=e(ii.sourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.sourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r)}}else ni.debug.log(ii.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.isAvc === null is ${null===ii.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.audioSourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.audioMimeType){try{ni.debug.log(ii.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.audioMimeType),ii._clearAudioSourceBufferCheckTimeout(),ii.audioSourceBuffer=ii.mediaSource.addSourceBuffer(ii.audioMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.audioSourceBuffer){const t=e(ii.audioSourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.audioSourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r),null===ii.audioSourceNoDataCheckTimeout&&(ii.audioSourceNoDataCheckTimeout=setTimeout((()=>{ii._clearAudioNoDataCheckTimeout(),ii.emitError(Pe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ni.debug.log(ii.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.audioMimeType is ${ii.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ni.debug.warn(ii.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;ii.prevTimestamp||(ii.prevTimestamp=o,d=!0);const l=o-ii.prevTimestamp;if(ii.decodeDiffTimestamp=l,l>1e3&&!d&&ni.isPlayer&&ni.debug.log(ii.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${ii.prevTimestamp}, diff time is ${l} ms`),ii.cacheTrack.id&&t>=ii.cacheTrack.dts){let e=8+ii.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheTrack.data,8),ii.cacheTrack.duration=t-ii.cacheTrack.dts;let i=pn.moof(ii.cacheTrack,ii.cacheTrack.dts);ii.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendBuffer(n.buffer)}else ni.debug.log(ii.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${ii.cacheTrack&&ii.cacheTrack.dts}`),ii.timeInit=!1,ii.cacheTrack={};ii.cacheTrack||(ii.cacheTrack={}),ii.cacheTrack.id=Pt,ii.cacheTrack.sequenceNumber=++ii.sequenceNumber,ii.cacheTrack.size=a,ii.cacheTrack.dts=t,ii.cacheTrack.cts=i,ii.cacheTrack.isKeyframe=r,ii.cacheTrack.data=s,ii.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ii.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ii.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(ii.cacheAudioTrack.id&&t>=ii.cacheAudioTrack.dts){let e=8+ii.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheAudioTrack.data,8),ii.cacheAudioTrack.duration=t-ii.cacheAudioTrack.dts;let i=pn.moof(ii.cacheAudioTrack,ii.cacheAudioTrack.dts);ii.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendAudioBuffer(n.buffer)}else ii.cacheAudioTrack={};ii.cacheAudioTrack||(ii.cacheAudioTrack={}),ii.cacheAudioTrack.id=Ft,ii.cacheAudioTrack.sequenceNumber=++ii.audioSequenceNumber,ii.cacheAudioTrack.size=n,ii.cacheAudioTrack.dts=t,ii.cacheAudioTrack.cts=0,ii.cacheAudioTrack.data=i,ii.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingSegments.push(e),ii.sourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendAudioBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingAudioSegments.push(e),ii.audioSourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getAudioSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>ii.sourceBuffer&&ii.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ii.audioSourceBuffer&&ii.audioSourceBuffer.updating,stop(){ii.abortSourceBuffer(),ii.removeSourceBuffer(),ii.endOfStream()},clearUpAllSourceBuffer(){if(ii.sourceBuffer){const e=ii.sourceBuffer.buffered;for(let t=0;tii.pendingSegments.length>0||ii.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ii.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ii.isStateClosed()||ii.isStateEnded())ni.debug.log(ii.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ii.sourceBuffer){if(ii.needInitAudio()&&null===ii.audioSourceBuffer)return ni.debug.log(ii.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ii.audioSourceBufferCheckTimeout&&(ii.audioSourceBufferCheckTimeout=setTimeout((()=>{ii._clearAudioSourceBufferCheckTimeout(),ii.emitError(Pe.mediaSourceAudioInitTimeout)}),1e3)));if(gr(ii.getSourceBufferUpdating())&&ii.pendingSegments.length>0){const e=ii.pendingSegments.shift();try{ii.sourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(gr(ii.getAudioSourceBufferUpdating())&&ii.pendingAudioSegments.length>0){const e=ii.pendingAudioSegments.shift();try{ii.audioSourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ni.debug.log(ii.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ii.$video.currentTime;if(ii.sourceBuffer){const t=ii.sourceBuffer.buffered;let r=!1;for(let i=0;i=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingRemoveRanges.push({start:n,end:t})}}else s=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingAudioRemoveRanges.push({start:n,end:t})}}else sii.pendingRemoveRanges.length>0||ii.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ni._opt.hasAudio&&ni._opt.mseDecodeAudio,_doRemoveRanges(){if(ii.sourceBuffer&&gr(ii.getSourceBufferUpdating())){let e=ii.pendingRemoveRanges;for(;e.length&&gr(ii.getSourceBufferUpdating());){let t=e.shift();try{ii.sourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ii.audioSourceBuffer&&gr(ii.getAudioSourceBufferUpdating())){let e=ii.pendingAudioRemoveRanges;for(;e.length&&gr(ii.getAudioSourceBufferUpdating());){let t=e.shift();try{ii.audioSourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(gr(ni._opt.mseAutoCleanupSourceBuffer))return!1;const e=ii.$video.currentTime;if(ii.sourceBuffer){let t=ii.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ii.audioSourceBuffer){let t=ii.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ii.audioSourceBufferCheckTimeout&&(clearTimeout(ii.audioSourceBufferCheckTimeout),ii.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ii.audioSourceNoDataCheckTimeout&&(clearTimeout(ii.audioSourceNoDataCheckTimeout),ii.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ii.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ni={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:kt,_opt:Er(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ni.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ni.getVideoBufferLength(),audioDemuxBufferDelay:ni.getAudioBufferLength(),streamBufferByteLength:ni.getStreamBufferLength(),netBuf:ni.networkDelay||0,pushLatestDelay:ni.pushLatestDelay||0,latestDelay:ni.delay,isStreamTsMoreThanLocal:We,wasmDecodeDelay:we-Se});postMessage({cmd:O,type:ke,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ni._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ni._opt.hasVideo&&!x)return-1;if(t===ae)return ni.delay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp>e)return ni.preDelayTimestamp-e>1e3&&ni.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return ${ni.delay}`),ni.preDelayTimestamp=e,ni.delay;if(ni.firstTimestamp){if(e){const t=Date.now()-ni.startTimestamp,r=e-ni.firstTimestamp;t>=r?(We=!1,ni.delay=t-r):(We=!0,ni.delay=r-t)}}else ni.firstTimestamp=e,ni.startTimestamp=Date.now(),ni.delay=-1;return ni.preDelayTimestamp=e,ni.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ni._opt.hasVideo&&!x)return-1;if(t===ae)return ni.pushLatestDelay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp-e>1e3)return ni.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return -1`),-1;if(ni.firstTimestamp){let t=-1;if(e){const r=Date.now()-ni.startTimestamp,i=e-ni.firstTimestamp;r>=i?(We=!1,t=r-i):(We=!0,t=i-r)}return t}return-1},resetDelay:function(){ni.firstTimestamp=null,ni.startTimestamp=null,ni.delay=-1,ni.dropping=!1},resetAllDelay:function(){ni.resetDelay(),ni.preDelayTimestamp=null},doDecode:function(e){ni._opt.isEmitSEI&&e.type===oe&&ni.isWorkerFetch&&ni.findSei(e.payload,e.ts),ni.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ni._opt.mseDecodeAudio?ii.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===oe&&ii.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ni._opt.useWCS&&ni.useOffscreen()&&e.type===oe&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===oe&&mr(e.payload);if(gr(r))s&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n));else{const r=n.ts-t,a=n.type===ae&&e.type===oe;(r<=20||a||s)&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n))}},init:function(){ni.debug.log("worker","init and opt is",JSON.stringify(ni._opt));const e=ni._opt.playType===v,t=ni._opt.playType===b;if($r.init(),ni.isPlayer=e,ni.isPlayback=t,ni.isPlayUseMSEAndDecoderInWorker()&&ii&&ii.init(),s&&ni._opt.useWCS&&ni.useOffscreen()&&s.init(),ni.isPlaybackCacheBeforeDecodeForFpsRender())ni.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ni.debug.log("worker","setInterval()");const t=()=>{const t=ni._opt.videoBuffer+ni._opt.videoBufferDelay;let r=null;if(i.length){if(ni.isPushDropping)return void ni.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ni.dropping){for(r=i.shift(),ni.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ni.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ni.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ni.getNotDroppingDelayTs()&&(ni.debug.log("worker","loop() is dropping = false, is iFrame"),ni.dropping=!1,ni.doDecode(r),ni.decodeNext(r))}else if(ni.isPlayback||ni.isPlayUseMSE()||0===ni._opt.videoBuffer)for(;i.length;)r=i.shift(),ni.doDecode(r);else if(r=i[0],-1===ni.getDelay(r.ts,r.type))ni.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ni.doDecode(r),ni.decodeNext(r);else if(ni.delay>t&&e)ni.hasIframeInBufferList()?(ni.debug.log("worker",`delay is ${ni.delay} > maxDelay ${t}, set dropping is true`),ni.resetAllDelay(),ni.dropping=!0,postMessage({cmd:H})):(i.shift(),ni.doDecode(r),ni.decodeNext(r));else for(;i.length;){if(r=i[0],!(ni.getDelay(r.ts,r.type)>ni._opt.videoBuffer)){ni.delay<0&&ni.debug.warn("worker",`loop() do not decode and delay is ${ni.delay}, bufferList is ${i.length}`);break}i.shift(),ni.doDecode(r)}}else-1!==ni.delay&&ni.debug.log("worker","loop() bufferList is empty and reset delay"),ni.resetAllDelay()};ni.stopId=setInterval((()=>{let e=(new Date).getTime();Ze||(Ze=e);const r=e-Ze;r>100&&ni.debug.warn("worker",`loop demux diff time is ${r}`),t(),Ze=(new Date).getTime()}),20)}if(gr(ni._opt.checkFirstIFrame)&&(x=!0),ni.isPlayUseMSEAndDecoderInWorker()&&ii){const e=ii.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ni.doDecode(e))};e();const t=Math.ceil(1e3/(ni.streamFps*ni._opt.playbackRate));ni.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ni.streamFps}, streamAudioFps is ${ni.streamAudioFps} ,streamVideoFps is ${ni.streamVideoFps} playbackRate is ${ni._opt.playbackRate}`),ni.stopId=setInterval(e,t)},close:function(){if(ni.debug.log("worker","close"),ni.isDestroyed=!0,xr(),!o||1!==o.readyState&&2!==o.readyState?o&&ni.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(wr=!0,o.close(1e3,"Client disconnecting")),o=null,ni.stopStreamRateAndStatsInterval(),ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null),ni.mp3Demuxer&&(ni.mp3Demuxer.destroy(),ni.mp3Demuxer=null),ni.writableStream&&gr(ni.writableStream.locked)&&ni.writableStream.close().catch((e=>{ni.debug.log("worker","close() and writableStream.close() error",e)})),ni.writableStream=null,si)try{si.clear&&si.clear(),si=null}catch(e){ni.debug.log("worker","close() and audioDecoder.clear error",e.toString(),e)}if(ai)try{ai.clear&&ai.clear(),ai=null}catch(e){ni.debug.log("worker","close() and videoDecoder.clear error",e.toString(),e)}d=null,Ze=null,We=!1,we=0,Se=0,s&&(s.destroy&&s.destroy(),s=null),ii&&(ii.destroy(),ii=null),ni.firstTimestamp=null,ni.startTimestamp=null,ni.networkDelay=0,ni.streamFps=null,ni.streamAudioFps=null,ni.streamVideoFps=null,ni.delay=-1,ni.pushLatestDelay=-1,ni.preDelayTimestamp=null,ni.dropping=!1,ni.isPushDropping=!1,ni.isPlayer=!0,ni.isPlayback=!1,ni.isWorkerFetch=!1,ni.isHevc=null,ni._opt=Er(),ni.webglObj&&(ni.webglObj.destroy(),ni.offscreenCanvas.removeEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost),ni.offscreenCanvas.removeEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored),ni.offscreenCanvas=null,ni.offscreenCanvasGL=null,ni.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,f=null,S=!1,E=!1,x=!1,Ht=!1,Yt=!1,Jt=!1,nr=null,rt=[],At=0,xt=0,Je=null,et=null,Nt=null,$t=null,br=null,Ot=0,Gt=0,ct=null,Et=null,ni.fetchStatus=kt,Sr=!0,$r.destroy(),Or.destroy(),Wr.destroy(),ri.destroy(),postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&jt(e)){if(ni.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ni.decodeAudio(e,t.ts)}else if(t.type===oe&&t.isIFrame&&mr(e)){if(ni.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ni.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ni._opt.isRecording)if(ni._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ni._opt.recordType===w)if(t.type===oe){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ni._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:I,buffer:i,ts:t.ts},[i.buffer])}if(ni.isPlayer){if(t.type===oe){if(Ot>0){const e=t.ts-$t,r=Ot+Ot/2;e>r&&ni.debug.log("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${$t},\n diff is ${e} and preTsDuration is ${Ot} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==$t&&$t>=t.ts&&(ni.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${$t} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Gt}`),$t-t.ts>A&&(ni.debug.warn("worker",`pushBuffer,\n preTimestamp is ${$t}, options.ts is ${t.ts},\n diff is ${$t-t.ts} more than 3600000,\n and resetAllDelay`),ni.resetAllDelay(),$t=null,Ot=0),ni._opt.isDropSameTimestampGop&&gr(t.isIFrame)&&x)){const e=ni.hasIframeInBufferList(),t=gr(ni.isPushDropping);return ni.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ni.dropBuffer$2():(ni.clearBuffer(!0),_r(ni._opt.checkFirstIFrame)&&_r(r)&&(ni.isPlayUseMSEAndDecoderInWorker()?ii.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}$t>0&&(Ot=t.ts-$t),Gt=e.byteLength,$t=t.ts}if(x){const e=ni._opt.videoBuffer+ni._opt.videoBufferDelay,r=ni.getDelayNotUpdateDelay(t.ts,t.type);ni.pushLatestDelay=r,ni.delay>0&&r>e&&ni.delay({type:e.type,ts:e.ts})));ni.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ni.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ni.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ni.streamVideoFps=25,postMessage({cmd:W,value:ni.streamVideoFps}),r?(ni.streamAudioFps=25,ni.streamFps=ni.streamVideoFps+ni.streamAudioFps):ni.streamFps=ni.streamVideoFps,ni.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===oe&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===oe&&e.isIFrame)),isAllIframeInBufferList(){const e=ni.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===oe&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ni._opt.videoBuffer+ni._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ni._opt.isNakedFlow?$r.lastBuf&&(e=$r.lastBuf.byteLength):ni._opt.isTs?ri._remainingPacketData&&(e=ri._remainingPacketData.byteLength):ni._opt.isFmp4&&Or.mp4Box&&(e=Or.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){if(ni.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ni.isWorkerFetch=!0,t.isFlv?ni._opt.isFlv=!0:t.isFmp4?ni._opt.isFmp4=!0:t.isMpeg4?ni._opt.isMpeg4=!0:t.isNakedFlow?ni._opt.isNakedFlow=!0:t.isTs&&(ni._opt.isTs=!0),d=sr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ni.startStreamRateAndStatsInterval(),t.isFmp4&&(Or.listenMp4Box(),ni._opt.isFmp4Private&&Or.initTransportDescarmber()),t.protocol===_){c=new Ar(ni.demuxFlv()),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(_r(wr))return ni.debug.log("worker","request abort and run res.body.cancel()"),ni.fetchStatus=kt,void e.body.cancel();if(!fr(e))return ni.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),xr(),void postMessage({cmd:O,type:Pe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:Te}),cr())ni.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ni.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof e?(ni.fetchStatus=Ct,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ni.demuxFmp4(e):t.isMpeg4?ni.demuxMpeg4(e):t.isTs&&ni.demuxTs(e)):ni.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ni.debug.log("worker","writableStream close()"),ni.fetchStatus=Dt,c=null,xr(),postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ni.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==Ut?(ni.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),xr(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ni.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ni.debug.log("worker","fetchNext().then() and done is true"),ni.fetchStatus=Dt,c=null,xr(),void postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(ni.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof n?(ni.fetchStatus=Ct,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ni.demuxFmp4(n):t.isMpeg4?ni.demuxMpeg4(n):t.isTs&&ni.demuxTs(n),i()):ni.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ni.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==Ut?(ni.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),xr(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ni.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ut?(ni.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),xr(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()}),c=null):ni.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(c=new Ar(ni.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{ni.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:Te}),postMessage({cmd:O,type:De})},o.onclose=e=>{ni.isDestroyed?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):u?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ni.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),_r(wr)?ni.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:Ee,value:y,msg:e.code})))},o.onerror=e=>{ni.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,ni.isDestroyed?ni.debug.log("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):postMessage({cmd:O,type:Pe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ni.demuxFmp4(e.data):t.isMpeg4?ni.demuxMpeg4(e.data):ni._opt.isNakedFlow?ni.demuxNakedFlow(e.data):ni.demuxM7s(e.data)):ni.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case de:if(a.byteLength>0){let e=a;_r(ni._opt.m7sCryptoAudio)&&(e=ni.cryptoPayloadAudio(a)),ni.decode(e,{type:ae,ts:s})}else ni.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case le:if(a.byteLength>=6){const e=a[0];if(ni._isEnhancedH265Header(e))ni._decodeEnhancedH265Video(a,s);else{const e=15&a[0];let t=a[0]>>4===Tt;const i=e===Le;if(gr(t)&&_r(vr(a,i))&&(ni.debug.log("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&mr(a)&&null===ni.isHevc){const e=15&a[0];ni.isHevc=e===Le,nr=tr(a,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`)}t&&ni.calcIframeIntervalTimestamp(s),ni.isPlayer&&ni.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let n=r[0],o=ni.cryptoPayload(a,t);ni.decode(o,{type:oe,ts:s,isIFrame:t,cts:n})}}else ni.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:a},[a.buffer]);break;default:ni.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ni._opt.hasAudio&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()||(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===oe&&ni._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:xe,value:t.ts}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ni._opt.isM7sCrypto?ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=Mi(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`):ni._opt.isSm4Crypto?ni._opt.sm4CryptoKey?r=ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?es(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc,ni._opt.isSm4CryptoH265V2):an(e,ni._opt.sm4CryptoKey,ni.isHevc,ni._opt.isSm4CryptoH265V2):ni._opt.sm4CryptoKey||ni.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ni._opt.isXorCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=un(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isXorCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ni._opt.isM7sCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?e[0]>>4===Ne&&(t=zi(e,ni._opt.cryptoKey,ni._opt.cryptoIV)):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(br=r===Ne?i?16:8:0===i?8:16,si&&si.setCodec)if(jt(e)||r===$e||r===Oe||r===Ge){ni.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ni._opt.sampleRate}`);const i=r===Ne?e.slice(2):new Uint8Array(0);si.setCodec(r,ni._opt.sampleRate,i),r===Ne&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==Ne&&(r===Ge?(ni.mp3Demuxer||(ni.mp3Demuxer=new dn(ni),ni.mp3Demuxer.on("data",((e,t)=>{si.decode(e,t)}))),ni.mp3Demuxer.dispatch(e.slice(1),t)):si.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})}),60*e*60*1e3)}}else ni.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ni.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ni.isDestroyed)ni.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ii.decodeAudio(e,t);else if(_r(r)&&_r(ni._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ni.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?ni.mp3Demuxer.dispatch(e.slice(1),t):si.decode(r===Ne?e.slice(2):e.slice(1),t)}else ni.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(ai&&ai.setCodec)if(mr(e))if(r===Ie||r===Le){ni.debug.log("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Ie&&ni._opt.useSIMD){const e=Tr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ni.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,ai.setCodec(r,t),postMessage({cmd:R,code:r}),postMessage({cmd:M,buffer:i,codecId:r},[i.buffer])}else ni.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ni.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ni.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ni.isDestroyed)ni.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorker())ii.decodeVideo(e,t,i,n);else if(_r(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ni.delay},[e.buffer]);else if(S)if(!x&&i&&(x=!0),x){if(i&&mr(e)){const t=15&e[0];let r={};t===Ie?r=Tr(e.slice(5)):t===Le&&(r=Hr(e)),r.codecWidth&&r.codecHeight&&h&&f&&(r.codecWidth!==h||r.codecHeight!==f)&&(ni.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${f},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Yt=!0,postMessage({cmd:j,value:`width: ${h}->${r.codecWidth}, height: ${f}->${r.codecHeight}`}))}if(Yt)return void ni.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Jt)return void ni.debug.warn("worker","decodeVideo: simd decode error, and return");if(mr(e))return void ni.debug.log("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ni.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ni.isPlayer&&(ni.resetAllDelay(),_r(ni._opt.checkFirstIFrame)&&(ni.dropping=!0,postMessage({cmd:H}))),_r(ni._opt.checkFirstIFrame)&&gr(r)&&(x=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>_r(e.isIFrame)&&e.type===oe));if(ni.isAllIframeInBufferList())for(let t=0;t=ni.getNotDroppingDelayTs()){ni.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ni.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ni.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ni.resetAllDelay(),ni.getDelay(r.ts,r.type),ni.doDecode(r),ni.isPushDropping=!1,ni.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ni.delay} `)}else ni.isPushDropping=!1}0===i.length&&(ni.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case ae:ni.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case oe:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ni._isEnhancedH265Header(n))ni._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ni.calcIframeIntervalTimestamp(r),mr(i)&&null===ni.isHevc)){const e=15&i[0];ni.isHevc=e===Le}ni.isPlayer&&ni.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ni.cryptoPayload(i,e);ni.decode(a,{type:oe,ts:r,isIFrame:e,cts:n})}}else ni.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){$r.dispatch(e)},demuxFmp4:function(e){Or.dispatch(e)},demuxMpeg4:function(e){Wr.dispatch(e)},demuxTs:function(e){ri.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(s[0]);if(ni.isHevc=gr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),nr=tr(e,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`),ni.decode(i,{type:oe,ts:t,isIFrame:!0,cts:0})}}}else if(n===Rt){let r=e,n=0;const s=i===zt;s&&ni.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Yr(e.slice(8),s),r=ni.cryptoPayload(r,s),ni.decode(r,{type:oe,ts:t,isIFrame:s,cts:n}))}else if(n===Mt){const r=i===zt;r&&ni.calcIframeIntervalTimestamp(t);let n=Yr(e.slice(5),r);n=ni.cryptoPayload(n,r),ni.decode(n,{type:oe,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&It)===It},findSei:function(e,t){let r=4;or(nr)&&(r=nr),Qt(e.slice(5),r).forEach((e=>{const r=ni.isHevc?e[0]>>>1&63:31&e[0];(ni.isHevc&&(r===ht||r===ut)||gr(ni.isHevc)&&r===Ye)&&postMessage({cmd:Z,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(x&&e>0))return;null===Je?(Je=e,et=rr()):et?r-t:0;ni.networkDelay=i,i>ni._opt.networkDelay&&ni._opt.playType===v&&(ni.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Je} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Ce,value:i}))},calcIframeIntervalTimestamp:function(e){null===Nt?Nt=e:Nt=ni._opt.playbackForwardMaxRateDecodeIFrame&&!(ni._opt.useMSE&&ni._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ni.isPlayer&&ni._opt.useMSE&&_r(r)},isPlayUseMSEAndDecoderInWorker:function(){return ni.isPlayUseMSE()&&ni._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ni.isPlayUseMSEAndDecoderInWorker()&&ni._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ni.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ni.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ht=!0,ni.webglObj.destroy(),ni.webglObj=null,ni.offscreenCanvasGL=null,setTimeout((()=>{ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.offscreenCanvasGL&&ni.offscreenCanvasGL.getContextAttributes().stencil?(ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),Ht=!1):ni.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ni.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:R,code:e}),postMessage({cmd:k,w:t,h:r}),h=t,f=r,ni.useOffscreen()&&(ni.offscreenCanvas=new OffscreenCanvas(t,r),ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),ni.offscreenCanvas.addEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost,!1),ni.offscreenCanvas.addEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:F,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:br}),xt=r},yuvData:function(t,r){if(ni.isDestroyed)return void ni.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*f*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ct=null,Se=r,ni.useOffscreen())try{if(Ht)return;ni.webglObj.renderYUV(h,f,s);let e=ni.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ni.delay,ts:r},[e])}catch(e){ni.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:s,delay:ni.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ni.isDestroyed)return void ni.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ni._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(At){if(!(s>=(r=d-At)))return At+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==xt&&(n[1]=Float32Array.of(...n[1],...a[1])));rt[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==xt&&(rt[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer))),o=r,s-=r}for(At=s;At>=d;At-=d)rt[0]=a[0].slice(o,o+=d),2==xt&&(rt[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer)));At&&(n[0]=a[0].slice(o),2==xt&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===ct&&(ct=rr());const t=rr(),r=ir(Et>0?2*Et:5e3,1e3,5e3),i=t-ct;i>r&&(ni.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Et} and diff is ${i} and maxDiff is ${r}\n and replay`),Jt=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){o?o.readyState===Fe?o.send(e):ni.debug.error("worker","socket is not open"):ni.debug.error("worker","socket is null")},timeEnd:function(){ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])}};ni.debug=new Ur(ni);let si=null;t.AudioDecoder&&(si=new t.AudioDecoder(ni));let ai=null;e.VideoDecoder&&(ai=new e.VideoDecoder(ni)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ni._opt=Object.assign(ni._opt,JSON.parse(t.opt))}catch(e){}ni.init();break;case he:ni.pushBuffer(t.buffer,t.options);break;case fe:ni.decodeAudio(t.buffer,t.ts);break;case pe:ni.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ni.clearBuffer(t.needClear);break;case ye:ni.fetchStream(t.url,JSON.parse(t.opt));break;case me:ni.debug.log("worker","close",JSON.stringify(t.options)),t.options&&gr(t.options.isVideoInited)&&(Sr=t.options.isVideoInited),ni.close();break;case _e:ni.debug.log("worker","updateConfig",t.key,t.value),ni._opt[t.key]=t.value,"playbackRate"===t.key&&(ni.playbackUpdatePlaybackRate(),ni.isPlaybackCacheBeforeDecodeForFpsRender()&&ni.playbackCacheLoop());break;case ve:ni.sendWebsocketMessage(t.message);break;case be:ii.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd.wasm b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd.wasm new file mode 100644 index 0000000000000000000000000000000000000000..10256ef7081b022ad3c4781139fceda7ce773034 Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro-simd.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro.js b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro.js new file mode 100644 index 0000000000000000000000000000000000000000..9852bf7903ee0c701a6b469b65b4e77ccccfeb82 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_WASM_URL&&""!=JESSIBUCA_PRO_WASM_URL?JESSIBUCA_PRO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var y,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,k,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=k=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var F=[],I=[],L=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(I)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(L)}function N(e){F.unshift(e)}function $(e){I.unshift(e)}function O(e){L.unshift(e)}var G=0,H=null;function V(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function W(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ti};function t(e,t){return ri=e.exports,v=ri.D,P(),Ft=ri.H,$(ri.E),W(),ri}if(V(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro.wasm")||(q=p(q)):q=new URL("decoder-pro.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(di(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(x[si()>>2]=e,e),de={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ue.resolve(e).substr(1),t=ue.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o)),a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n};function ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=Te.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&V()},Ee=(e,t,r,i,n,s)=>Te.createDataFile(e,t,r,i,n,s),Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),W()}Ue(r,c,u,(()=>{o&&o(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount(e,t,r){var i,n="/"===r,s=!r;if(n&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;if(!(n="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,n){if(i<0||n<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write(e,t,r,i,n,s){if(i<0||n<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ge(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var d=Te.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:return n=De.getp(),A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Le,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Le(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},it=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=nt[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=48,bt=57,wt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=vt&&t<=bt?`_${e}`:e};function St(e,t){return{[e=wt(e)]:function(){return t.apply(this,arguments)}}[e]}var Et=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},At=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),Et(n,e,e),n.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function Ut(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}var xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,nr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,It,Lt=(e,t,r)=>{n.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=St(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Ht=e=>{var t=oi(e),r=Ne(t);return ii(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=wt(c);At(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=St(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Le("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Le(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Le(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new Ut(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},Lt(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Yt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=St(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),We([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Le(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,o)},We([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),s=Ot(n,s),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(Et(c,t,i),c[t].overloadTable[r-2]=n),We([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Jt(){Object.assign(Qt.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Qt(){this.allocated=[void 0],this.freelist=[]}var er=new Qt,tr=e=>{e>=er.reserved&&0==--er.get(e).refcount&&er.free(e)},rr=()=>{for(var e=0,t=er.reserved;t{er.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),er.reserved=er.allocated.length,n.count_emval_handles=rr},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),er.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return er.allocate({refcount:1,value:e})}}};function sr(e){return this.fromWireType(x[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return tr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction:null})},ar=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},dr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},lr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:dr(t,r),destructorFunction:null})},cr=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ur=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:cr(t,r,0!==i),destructorFunction:null})},hr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},fr=(e,t,r)=>_e(e,E,t,r),pr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==E[a]){var d=Ce(s,a-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=a+1}}else{var l=new Array(i);for(o=0;o>2]=i,r&&n)fr(t,o,i+1);else if(n)for(var a=0;a255&&(ii(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&mr)return mr.decode(E.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=A[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s},gr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return A[t>>1]=0,t-i},yr=e=>2*e.length,vr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},br=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s)),x[t>>2]=o,(t+=4)+4>n)break}return x[t>>2]=0,t-i},wr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Sr=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=_r,n=gr,o=yr,s=()=>U,a=1):4===t&&(i=vr,n=br,o=wr,s=()=>B,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ii(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=ni(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(ii,d),d},argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction(e){ii(e)}})},Er=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ar={},Ur=e=>{var t=Ar[e];return void 0===t?Ne(e):t},xr=[],Br=(e,t,r,i)=>{(e=xr[e])(t=nr.toValue(t),r=Ur(r),null,i)},kr=e=>{var t=xr.length;return xr.push(e),t},Tr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Cr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Dr={},Pr=(e,t)=>{var r=Cr(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Dr[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;lt+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Ir=()=>{j("")},Lr=()=>Date.now(),Mr=(e,t,r)=>E.copyWithin(e,t,t+r),Rr=e=>{j("OOM")},zr=e=>{E.length,Rr()},Nr={},$r=()=>l||"./this.program",Or=()=>{if(!Or.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:$r()};for(var t in Nr)void 0===Nr[t]?delete e[t]:e[t]=Nr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Or.strings=r}return Or.strings},Gr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Hr=(e,t)=>{var r=0;return Or().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Gr(i,s),r+=i.length+1})),0},Vr=(e,t)=>{var r=Or();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function Wr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function jr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var qr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Kr(e,t,r,i,n){var s=Fr(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Xr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Zr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Xr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Qr=365,ei=146;Object.defineProperties(Jr.prototype,{read:{get:function(){return(this.mode&Qr)===Qr},set:function(e){e?this.mode|=Qr:this.mode&=~Qr}},write:{get:function(){return(this.mode&ei)===ei},set:function(e){e?this.mode|=ei:this.mode&=~ei}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=Jr,Te.createPreloadedFile=xe,Te.staticInit(),ze(),Le=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Jt(),ir();var ti={p:oe,B:Pe,v:Fe,t:Re,n:Xe,r:Wt,q:Xt,d:Zt,C:or,m:lr,c:ur,b:hr,l:pr,g:Sr,o:Er,f:Br,i:tr,h:Pr,a:Ir,e:Lr,z:Mr,u:zr,x:Hr,y:Vr,k:Wr,w:jr,A:Yr,s:Kr,j:Zr},ri=ie(),ii=e=>(ii=ri.F)(e),ni=e=>(ni=ri.G)(e),si=()=>(si=ri.I)(),oi=e=>(oi=ri.J)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=ri.K)();var ai,di=e=>(di=ri.M)(e);function li(){function e(){ai||(ai=!0,n.calledRun=!0,C||(R(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=ri.N)(e,t,r,i,s),n._ff_h264_cabac_tables=74828,H=function e(){ai||li(),ai||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return li(),e.ready}),o=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href;return async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var r,i,n;(n=t).ready=new Promise(((e,t)=>{r=e,i=t})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var y,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,k,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=k=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var F=[],I=[],L=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(I)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(L)}function N(e){F.unshift(e)}function $(e){I.unshift(e)}function O(e){L.unshift(e)}var G=0,H=null;function V(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function W(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ti};function t(e,t){return ri=e.exports,v=ri.D,P(),Ft=ri.G,$(ri.E),W(),ri}if(V(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(di(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(x[ni()>>2]=e,e),de={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ue.resolve(e).substr(1),t=ue.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o);if(a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n};function ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=Te.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&V()},Ee=(e,t,r,i,n,s)=>Te.createDataFile(e,t,r,i,n,s),Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),W()}Ue(r,c,u,(()=>{o&&o(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,i=0;i>>0)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup(e){var t=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{Te.lookupNode(e,t);return 20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs(e,t){"function"==typeof e&&(t=e,e=!1),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount(e,t,r){var i,n="/"===r,s=!r;if(n&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod(e,t,r){var i=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.mknod(e,t,0)),mkdirTree(e,t){for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=Te.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=Te.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;"string"==typeof e?r=Te.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,i,n){if(i<0||n<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write(e,t,r,i,n,s){if(i<0||n<0)throw new Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,i=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ge(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var d=Te.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=Te.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Le,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Le(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},it=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=nt[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=48,bt=57,wt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=vt&&t<=bt?`_${e}`:e};function St(e,t){return{[e=wt(e)]:function(){return t.apply(this,arguments)}}[e]}var Et=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},At=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),Et(n,e,e),n.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))};function Ut(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}var xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,nr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,It,Lt=(e,t,r)=>{n.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=St(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},Ht=e=>{var t=si(e),r=Ne(t);return ii(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=wt(c);At(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=St(f,(function(){if(Object.getPrototypeOf(this)!==d)throw new Le("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Le(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Le(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new Ut(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},Lt(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Yt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=St(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),We([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Le(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,o)},We([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),s=Ot(n,s),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(Et(c,t,i),c[t].overloadTable[r-2]=n),We([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Jt(){Object.assign(Qt.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Qt(){this.allocated=[void 0],this.freelist=[]}var er=new Qt,tr=e=>{e>=er.reserved&&0==--er.get(e).refcount&&er.free(e)},rr=()=>{for(var e=0,t=er.reserved;t{er.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),er.reserved=er.allocated.length,n.count_emval_handles=rr},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),er.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return er.allocate({refcount:1,value:e})}}};function sr(e){return this.fromWireType(x[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return tr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction:null})},ar=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},dr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},lr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:dr(t,r),destructorFunction:null})},cr=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ur=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:cr(t,r,0!==i),destructorFunction:null})},hr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},fr=(e,t,r)=>_e(e,E,t,r),pr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==E[a]){var d=Ce(s,a-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=a+1}}else{var l=new Array(i);for(o=0;o>2]=i,r&&n)fr(t,o,i+1);else if(n)for(var a=0;a255&&(ii(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&mr)return mr.decode(E.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=A[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s},gr=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return A[t>>1]=0,t-i},yr=e=>2*e.length,vr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},br=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s);if(x[t>>2]=o,(t+=4)+4>n)break}return x[t>>2]=0,t-i},wr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Sr=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=_r,n=gr,o=yr,s=()=>U,a=1):4===t&&(i=vr,n=br,o=wr,s=()=>B,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ii(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=ai(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(ii,d),d},argPackAdvance:Ke,readValueFromPointer:sr,destructorFunction(e){ii(e)}})},Er=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ar={},Ur=e=>{var t=Ar[e];return void 0===t?Ne(e):t},xr=[],Br=(e,t,r,i)=>{(e=xr[e])(t=nr.toValue(t),r=Ur(r),null,i)},kr=e=>{var t=xr.length;return xr.push(e),t},Tr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Cr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Dr={},Pr=(e,t)=>{var r=Cr(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Dr[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;lt+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Ir=()=>{j("")},Lr=()=>Date.now(),Mr=(e,t,r)=>E.copyWithin(e,t,t+r),Rr=e=>{j("OOM")},zr=e=>{E.length,Rr()},Nr={},$r=()=>l||"./this.program",Or=()=>{if(!Or.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:$r()};for(var t in Nr)void 0===Nr[t]?delete e[t]:e[t]=Nr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Or.strings=r}return Or.strings},Gr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Hr=(e,t)=>{var r=0;return Or().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Gr(i,s),r+=i.length+1})),0},Vr=(e,t)=>{var r=Or();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function Wr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function jr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var qr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Kr(e,t,r,i,n){var s=Fr(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Xr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Zr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Xr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Qr=365,ei=146;Object.defineProperties(Jr.prototype,{read:{get:function(){return(this.mode&Qr)===Qr},set:function(e){e?this.mode|=Qr:this.mode&=~Qr}},write:{get:function(){return(this.mode&ei)===ei},set:function(e){e?this.mode|=ei:this.mode&=~ei}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=Jr,Te.createPreloadedFile=xe,Te.staticInit(),ze(),Le=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Jt(),ir();var ti={p:oe,B:Pe,v:Fe,t:Re,n:Xe,r:Wt,q:Xt,f:Zt,C:or,m:lr,c:ur,b:hr,l:pr,h:Sr,o:Er,d:Br,i:tr,e:Pr,a:Ir,g:Lr,z:Mr,u:zr,x:Hr,y:Vr,k:Wr,w:jr,A:Yr,s:Kr,j:Zr},ri=ie(),ii=e=>(ii=ri.F)(e),ni=()=>(ni=ri.H)(),si=e=>(si=ri.I)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=ri.J)();var oi,ai=e=>(ai=ri.K)(e),di=e=>(di=ri.M)(e);function li(){function e(){oi||(oi=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,o,a,d)=>(n.dynCall_viiijj=ri.N)(e,t,r,i,s,o,a,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=ri.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=ri.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=ri.Q)(e,t,r,i,s),H=function e(){oi||li(),oi||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return li(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function c(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var u,h=function(e,t,r,i,n,s,o){var a=1/(t-r),d=1/(i-n),l=1/(s-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(n+i)*d,e[14]=(o+s)*l,e[15]=1,e};function f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),o=p(),d=p(),u=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,o,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,Vt=Gt;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===xt}function qt(e){return e[0]>>4===Ne}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Yt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=Ht[a],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Ot(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=Ht[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=nr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=s,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function or(e){return null==e}function ar(e){return!or(e)}function dr(e){return"function"==typeof e}function lr(e){let t=null,r=31&e[0];return r!==He&&r!==Ve||(t=Re),t||(r=(126&e[0])>>1,r!==nt&&r!==ot&&r!==dt||(t=ze)),t}function cr(){return"undefined"!=typeof WritableStream}function ur(e){e.close()}function hr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function fr(e){return e.ok&&e.status>=200&&e.status<=299}function pr(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(B)}function mr(e){return e[0]>>4===Bt&&e[1]===xt}function _r(e){return!0===e||"true"===e}function gr(e){return!0!==e&&"true"!==e}function yr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}function vr(e,t){const r=Qt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Je||r===et||r===rt)||gr(t)&&r===We)&&(i=!0)})),i}var br=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}d((i=i.apply(e,t||[])).next())}))};const wr=Symbol(32),Sr=Symbol(16),Er=Symbol(8);class Ar{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return br(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(wr)}readU16(){return this.read(Sr)}readU8(){return this.read(Er)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===wr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Sr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Er){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Ar.U32=wr,Ar.U16=Sr,Ar.U8=Er;class Ur{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=xr._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=xr.getProfileString(i),o=xr.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(a=r.readUEG(),3===a&&r.readBits(1),a<=3&&(d=l[a]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/w);let B=0,k=0;if(0===a)B=1,k=2-m;else{B=3===a?1:2,k=(1===a?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*B,C-=(y+v)*k;let D=Math.ceil(T*x);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:xr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=xr._ebsp2rbsp(e),n=new Ot(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=xr.getProfileString(s),d=xr.getLevelString(o),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);x=n.readBool(),B=t,k=2*e,U=B/k}}let T=1;1===E&&1===A||(T=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),F=16*(g+1)*(2-y);P-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(P*T);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:o,profile_string:a,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:xr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:k,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function Tr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Cr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=xr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e){return 31&e[0]}function Ir(e){return e===Ye}function Lr(e){return!function(e){return e===He||e===Ve}(e)&&!Ir(e)}function Mr(e){return e===We}function Rr(e){if(0===e.length)return!1;const t=Fr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Ze||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Nr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const $r=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Or=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Gr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Gr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,o=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=$r(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),o=(e=>{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,o=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),o+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let s=!1,o=1;n||(s=r.readBool());let a=!1;if(s?r.readSEG():a=r.readBool(),a||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=$r(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ot,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|dt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e){return(126&e[0])>>1}function Xr(e){return e===ct}function Zr(e){return!function(e){return e>=32&&e<=40}(e)}function Jr(e){return e>=16&&e<=21}function Qr(e){if(0===e.length)return!1;const t=Kr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ti{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ri(e){return parseInt(e)===e}function ii(e){if(!ri(e.length))return!1;for(var t=0;t255)return!1;return!0}function ni(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ii(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ri(e.length)&&ii(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function oi(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var ai,di={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},li=(ai="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ai[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},ui=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],fi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],pi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],mi=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],_i=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],gi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],yi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],vi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],bi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],wi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Si=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ei=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ai=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Ui=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function xi(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var o,a=0,d=n;d>16&255]<<24^hi[o>>8&255]<<16^hi[255&o]<<8^hi[o>>24&255]^ui[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^hi[o>>16&255]<<16^hi[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ei[o>>16&255]^Ai[o>>8&255]^Ui[255&o]},Bi.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^mi[i[(n+1)%4]>>16&255]^_i[i[(n+2)%4]>>8&255]^gi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=si(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(hi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(hi[255&i[(n+3)%4]]^o);return a},Bi.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^vi[i[(n+3)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=si(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(fi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(fi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(fi[255&i[(n+1)%4]]^o);return a};var ki=function(e){if(!(this instanceof ki))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Bi(e)};ki.prototype.encrypt=function(e){if((e=ni(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Pi.prototype.setBytes=function(e){if(16!=(e=ni(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fi=function(e,t){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Bi(e)};Fi.prototype.encrypt=function(e){for(var t=ni(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],k=s[1],T=s[2],C=s[3];B=l(B,k,T,C,o,7,a[0]),C=l(C,B,k,T,d,12,a[1]),T=l(T,C,B,k,f,17,a[2]),k=l(k,T,C,B,p,22,a[3]),B=l(B,k,T,C,m,7,a[4]),C=l(C,B,k,T,_,12,a[5]),T=l(T,C,B,k,g,17,a[6]),k=l(k,T,C,B,y,22,a[7]),B=l(B,k,T,C,v,7,a[8]),C=l(C,B,k,T,b,12,a[9]),T=l(T,C,B,k,w,17,a[10]),k=l(k,T,C,B,S,22,a[11]),B=l(B,k,T,C,E,7,a[12]),C=l(C,B,k,T,A,12,a[13]),T=l(T,C,B,k,U,17,a[14]),B=c(B,k=l(k,T,C,B,x,22,a[15]),T,C,d,5,a[16]),C=c(C,B,k,T,g,9,a[17]),T=c(T,C,B,k,S,14,a[18]),k=c(k,T,C,B,o,20,a[19]),B=c(B,k,T,C,_,5,a[20]),C=c(C,B,k,T,w,9,a[21]),T=c(T,C,B,k,x,14,a[22]),k=c(k,T,C,B,m,20,a[23]),B=c(B,k,T,C,b,5,a[24]),C=c(C,B,k,T,U,9,a[25]),T=c(T,C,B,k,p,14,a[26]),k=c(k,T,C,B,v,20,a[27]),B=c(B,k,T,C,A,5,a[28]),C=c(C,B,k,T,f,9,a[29]),T=c(T,C,B,k,y,14,a[30]),B=u(B,k=c(k,T,C,B,E,20,a[31]),T,C,_,4,a[32]),C=u(C,B,k,T,v,11,a[33]),T=u(T,C,B,k,S,16,a[34]),k=u(k,T,C,B,U,23,a[35]),B=u(B,k,T,C,d,4,a[36]),C=u(C,B,k,T,m,11,a[37]),T=u(T,C,B,k,y,16,a[38]),k=u(k,T,C,B,w,23,a[39]),B=u(B,k,T,C,A,4,a[40]),C=u(C,B,k,T,o,11,a[41]),T=u(T,C,B,k,p,16,a[42]),k=u(k,T,C,B,g,23,a[43]),B=u(B,k,T,C,b,4,a[44]),C=u(C,B,k,T,E,11,a[45]),T=u(T,C,B,k,x,16,a[46]),B=h(B,k=u(k,T,C,B,f,23,a[47]),T,C,o,6,a[48]),C=h(C,B,k,T,y,10,a[49]),T=h(T,C,B,k,U,15,a[50]),k=h(k,T,C,B,_,21,a[51]),B=h(B,k,T,C,E,6,a[52]),C=h(C,B,k,T,p,10,a[53]),T=h(T,C,B,k,w,15,a[54]),k=h(k,T,C,B,d,21,a[55]),B=h(B,k,T,C,v,6,a[56]),C=h(C,B,k,T,x,10,a[57]),T=h(T,C,B,k,g,15,a[58]),k=h(k,T,C,B,A,21,a[59]),B=h(B,k,T,C,m,6,a[60]),C=h(C,B,k,T,S,10,a[61]),T=h(T,C,B,k,f,15,a[62]),k=h(k,T,C,B,b,21,a[63]),s[0]=s[0]+B|0,s[1]=s[1]+k|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function h(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Li).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[f]+l[f];h=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=Li).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,k=h.low,T=f,C=p,D=m,P=_,F=g,I=y,L=v,M=b,R=w,z=S,N=E,$=A,O=U,G=x,H=B,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],oe=se.high,ae=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&O,fe=z&$^~z&G,pe=T&D^T&F^D&F,me=C&P^C&I^P&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=O,V=G,O=N,G=$,N=R,$=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=F,M=I,F=D,I=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

          >>0?1:0),y=s.low=y+I,s.high=g+F+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+L+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),k=h.low=k+V,h.high=B+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Li).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(k=r[n]).high^=o,k.low^=s}for(var a=0;a<24;a++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var P=c[a];k.high^=P.high,k.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,f,b,w,S,E,A,U,x,B,k=this._hash.words,T=u.words,C=h.words,D=a.words,P=d.words,F=l.words,I=c.words;for(S=s=k[0],E=o=k[1],A=f=k[2],U=b=k[3],x=w=k[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(o,f,b)+T[0]:r<32?m(o,f,b)+T[1]:r<48?_(o,f,b)+T[2]:r<64?g(o,f,b)+T[3]:y(o,f,b)+T[4],B=(B=v(B|=0,F[r]))+w|0,s=w,w=b,b=v(f,10),f=o,o=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,I[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=k[1]+f+U|0,k[1]=k[2]+b+x|0,k[2]=k[3]+w+S|0,k[3]=k[4]+s+E|0,k[4]=k[0]+o+A|0,k[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,n;e.exports=(i=(r=Li).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=Li).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=Li).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=Li).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=Li).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^o[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^o[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[f++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[f++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[f++],y=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=e.slice(s+4+2,s+4+o);let n=new Ii.ModeOfOperation.ctr(t,new Ii.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function zi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Ii.ModeOfOperation.ctr(t,new Ii.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}$t((function(e,t){e.exports=Li}));var Ni=$t((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:a}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)o.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=o>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&o)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,o.nalu_type=63&n;var a=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),o.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:o.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(o.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)o.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),o.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var o="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a=0,d=0;for(e=0;e<=i;++e)for(a=a<<8|n[e],d+=8;d>=5;){r+=o[a>>d-5&31],a&=(1<<(d-=5))-1}d&&(r+=o[31&(a<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(o.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,o={},a=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(o.hasMoov=!0,o.duration=this.moov.mvhd.duration,o.timescale=this.moov.mvhd.timescale,o.isFragmented=null!=this.moov.mvex,o.isFragmented&&this.moov.mvex.mehd&&(o.fragment_duration=this.moov.mvex.mehd.fragment_duration),o.isProgressive=this.isProgressive,o.hasIOD=null!=this.moov.iods,o.brands=[],o.brands.push(this.ftyp.major_brand),o.brands=o.brands.concat(this.ftyp.compatible_brands),o.created=new Date(a+1e3*this.moov.mvhd.creation_time),o.modified=new Date(a+1e3*this.moov.mvhd.modification_time),o.tracks=[],o.audioTracks=[],o.videoTracks=[],o.subtitleTracks=[],o.metadataTracks=[],o.hintTracks=[],o.otherTracks=[],e=0;e0?o.mime+='video/mp4; codecs="':o.audioTracks&&o.audioTracks.length>0?o.mime+='audio/mp4; codecs="':o.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){o=d;break}switch(o){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new a(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var o=this.createSingleSampleMoof(n);return this.addBox(o),o.computeSize(),o.trafs[0].truns[0].data_offset=o.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[o].grouping_type+"/0",(a=new l(n[o].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=a))}else for(o=0;o=2&&(d=i[o].grouping_type+"/0",a=new l(i[o].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=a))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var o;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)o=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,o&&s>=0&&(t.sample_groups[n].description=o.entries[s])):o&&o.version>=2&&o.default_group_description_index>0&&(t.sample_groups[n].description=o.entries[o.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),x.cts=e.samples[t].dts+o.sample_offsets[S]):x.cts=x.dts,a?(t==a.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function $i(e){return e.reduce(((e,t)=>256*e+t))}function Oi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Ni.Log,Ni.MP4BoxStream,Ni.DataStream,Ni.MultiBufferStream,Ni.MPEG4DescriptorParser,Ni.BoxParser,Ni.XMLSubtitlein4Parser,Ni.Textin4Parser,Ni.ISOFile,Ni.createFile;class Gi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Oi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}function Hi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=nn(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=er(Hi(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const an={init:0,findFirstStartCode:1,findSecondStartCode:2};class dn extends class{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=an.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==an.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=an.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==an.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=an.findFirstStartCode}}}}function ln(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=ln(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class fn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{dr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class pn{static init(){pn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in pn.types)pn.types.hasOwnProperty(e)&&(pn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=pn.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return pn.box(pn.types.trak,pn.tkhd(e),pn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return pn.box(pn.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return pn.box(pn.types.mdia,pn.mdhd(e),pn.hdlr(e),pn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return pn.box(pn.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?pn.constants.HDLR_AUDIO:pn.constants.HDLR_VIDEO,pn.box(pn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?pn.box(pn.types.smhd,pn.constants.SMHD):pn.box(pn.types.vmhd,pn.constants.VMHD),pn.box(pn.types.minf,t,pn.dinf(),pn.stbl(e))}static dinf(){return pn.box(pn.types.dinf,pn.box(pn.types.dref,pn.constants.DREF))}static stbl(e){return pn.box(pn.types.stbl,pn.stsd(e),pn.box(pn.types.stts,pn.constants.STTS),pn.box(pn.types.stsc,pn.constants.STSC),pn.box(pn.types.stsz,pn.constants.STSZ),pn.box(pn.types.stco,pn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp3(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp4a(e)):"avc"===e.videoType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.avc1(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return pn.box(pn.types.mp4a,i,pn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return pn.box(pn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.avc1,n,pn.box(pn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.hvc1,n,pn.box(pn.types.hvcC,t))}static mvex(e){return pn.box(pn.types.mvex,pn.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return pn.box(pn.types.trex,r)}static moof(e,t){return pn.box(pn.types.moof,pn.mfhd(e.sequenceNumber),pn.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return pn.box(pn.types.mfhd,t)}static traf(e,t){let r=e.id,i=pn.box(pn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=pn.box(pn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=pn.sdtp(e),o=pn.trun(e,s.byteLength+16+16+8+16+8+8);return pn.box(pn.types.traf,i,n,o,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,pn.box(pn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,o=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,o>>>24&255,o>>>16&255,o>>>8&255,255&o],12),pn.box(pn.types.trun,r)}static mdat(e){return pn.box(pn.types.mdat,e)}}pn.init();var mn,_n=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(mn=_n)&&mn.__esModule&&Object.prototype.hasOwnProperty.call(mn,"default")&&mn.default;const gn=[44100,48e3,32e3,0],yn=[22050,24e3,16e3,0],vn=[11025,12e3,8e3,0],bn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],wn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Sn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function En(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=vn[o];break;case 2:d=yn[o];break;case 3:d=gn[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=zn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class On{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Gn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Hn=new Array(214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72),Vn=new Array(2746333894,1453994832,1736282519,2993693404),Wn=new Array(462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257);function jn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Yn(e,t){return t+3>>19)^(i<<23|i>>>9)}function Zn(e,t){var r=new Array(36);r[0]=Yn(t,0),r[1]=Yn(t,4),r[2]=Yn(t,8),r[3]=Yn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^Jn(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function Qn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Kn(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Qn(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()});const ts=[];ts.push(o({printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc"))&&console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){e&&-1!==e.indexOf("not compiled with thread support, using thread emulation")||console.warn("JbPro[❌❌❌][worker]",e)}})),Promise.all(ts).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s=null,o=null,a=null,d=null,l=null,c=null,u=!1,h=null,f=null,S=!1,E=!1,B=!!_r(r),we=0,Se=0,We=!1,Ze=null,Je=null,et=null,rt=[],ct=null,Et=null,At=0,Bt=0,Nt=null,$t=null,Ot=0,Gt=0,Ht=!1,Yt=!1,Jt=!1,nr=null,br=null,wr=!1,Sr=!0,Er=()=>{const e=pr();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,isSm4CryptoH265V2:e.isSm4CryptoH265V2,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){s.decoder=new VideoDecoder({output:function(e){if(dr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ni.delay,ts:0},[r]),ur(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ni.delay,ts:0},[t]),ur(e)}},error:function(e){ni.debug.error("worker","VideoDecoder error",e)}})},destroy(){s.reset(),s.decoder&&"closed"!==s.decoder.state&&(s.decoder.close(),s.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ft:pt});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const o=e.slice(5);t===Ie?(n=kr(o),i={codec:n.codec,description:o}):t===Le&&(n=Vr(o),i={codec:n.codec,description:o}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),s.isEmitInfo||(ni.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:n.codecWidth,h:n.codecHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d"));try{s.decoder.configure(i),s.hasInit=!0}catch(e){ni.debug.error("worker","VideoDecoder configure error",e.code,e),e.toString()}}else ni.debug.warn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let Br=function(){if(wr=!0,ni.fetchStatus!==Ct||gr(ni._opt.isChrome)){if(o)try{o.abort(),o=null}catch(e){ni.debug.log("worker","abort catch",e)}}else o=null,ni.debug.log("worker",`abort() and not abortController.abort() _status is ${ni.fetchStatus} and _isChrome is ${ni._opt.isChrome}`)},$r={init(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},destroy(){$r.lastBuf=null,$r.vps=null,$r.sps=null,$r.pps=null,$r.streamType=null,$r.localDts=0,$r.pendingUnits={},$r.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ni._opt.nakedFlowDemuxUseNew){const e=$r.extractNALu$3(t);$r.handleVideoFrames(e)}else $r.extractNALu$2(t)},getNaluDts(){const e=ni._opt.nakedFlowFps;let t=$r.localDts;return $r.localDts=$r.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ni._opt.sampleRate,t=ni._opt.audioBufferSize;return $r.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,o=[];for(;i1)for(let e=0;e{const t=Fr(e);t===Ve||t===He?$r.handleVideoH264Nalu(e):Lr(t)&&i.push(e)})),1===i.length)$r.handleVideoH264Nalu(i[0]);else if(Rr(i)){const e=Fr(i[0]),t=Mr(e);$r.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH264Nalu(e)}))}else if($r.streamType===ze)if(ni._opt.nakedFlowH265DemuxUseNew){const t=$r.handleAddNaluStartCode(e),r=$r.extractNALu(t);if(0===r.length)return void ni.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Kr(e);t===dt||t===ot||t===nt?$r.handleVideoH265Nalu(e):Zr(t)&&i.push(e)})),1===i.length)$r.handleVideoH265Nalu(i[0]);else if(Qr(i)){const e=Kr(i[0]),t=Jr(e);$r.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{$r.handleVideoH265Nalu(e)}))}else Kr(e)===dt?$r.extractH265PPS(e):$r.handleVideoH265Nalu(e)},extractH264PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Ir(Fr(e))?$r.extractH264SEI(e):$r.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{Xr(Kr(e))?$r.extractH265SEI(e):$r.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=$r.handleAddNaluStartCode(e);$r.extractNALu(t).forEach((e=>{$r.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Fr(e);switch(t){case He:$r.sps=e;break;case Ve:$r.pps=e}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=Tr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(Lr(t)){const r=Mr(t),i=$r.getNaluDts(),n=Dr(e,r);$r.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if($r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=Tr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}},handleVideoH264NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Pr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Kr(e);switch(t){case nt:$r.vps=e;break;case ot:$r.sps=e;break;case dt:$r.pps=e}if($r.isSendSeqHeader){if($r.vps&&$r.sps&&$r.pps){const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}if(Zr(t)){const r=Jr(t),i=$r.getNaluDts(),n=qr(e,r);$r.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if($r.vps&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=jr({vps:$r.vps,sps:$r.sps,pps:$r.pps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.vps=null,$r.sps=null,$r.pps=null}},handleVideoH265NaluList(e,t,r){if($r.isSendSeqHeader){const i=$r.getNaluDts(),n=Yr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);$r.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ni.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ni.calcNetworkDelay(t.ts),t.isIFrame&&ni.calcIframeIntervalTimestamp(t.ts),ni.decode(e,t)},handleVideoFrames(e){if(!$r.streamVideoType)for(let t of e)if($r.streamVideoType=lr(t),$r.streamVideoType)break;$r.streamVideoType&&($r.streamVideoType===Re?$r.handleVideoH264Frames(e):this.streamVideoType===ze&&$r.handleVideoH265Frames(e))},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Fr(o);let a=!1,d=e===qe;e!==je&&e!==qe||(s=$r.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ve:$r.pps=e;break;case He:$r.sps=e;break;case Ye:n=e}if(Lr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps){$r.isSendSeqHeader=!0;const e=Cr({sps:$r.sps,pps:$r.pps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps){const e=Cr({sps:$r.sps,pps:$r.pps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null}if(i){const e=$r.getNaluDts(),t=Pr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:n,ts:e},[n.buffer]),$r.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;$r.pendingUnits.units&&(t=$r.pendingUnits.units,n=$r.pendingUnits.vcl,i=$r.pendingUnits.iFrame,$r.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Kr(o);let a=!1,d=Jr(e);Zr(e)&&(s=this.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&($r.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case dt:$r.pps=e;break;case ot:$r.sps=e;break;case nt:$r.vps=e}if(Zr(t)){const t=er(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!$r.isSendSeqHeader&&$r.sps&&$r.pps&&$r.vps){$r.isSendSeqHeader=!0;const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps});ni.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if($r.isSendSeqHeader){if($r.sps&&$r.pps&&$r.vps){const e=jr({sps:$r.sps,pps:$r.pps,vps:$r.vps}),t=$r.localDts;ni.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),$r.sps=null,$r.pps=null,$r.vps=null}if(i){const e=$r.getNaluDts(),t=Yr(i,r);ni._opt.isEmitSEI&&postMessage({cmd:Z,buffer:null,ts:e},[null.buffer]),$r.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{$r.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new On(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new On(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Or={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Or.mp4Box=Ni.createFile(),Or.mp4Box.onReady=Or.onReady,Or.mp4Box.onError=Or.onError,Or.mp4Box.onSamples=Or.onSamples},initTransportDescarmber(){Or.transportDescarmber=new Gi},_getSeqHeader(e){const t=Or.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Ni.DataStream(void 0,0,Ni.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Or.isHevc=!0,ni.isHevc=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ni.debug.log(Or.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Or.videoTrackId=t.id;const e=Or._getSeqHeader(t);e&&(ni.debug.log(Or.LOG_NAME,"seqHeader"),ni.decodeVideo(e,0,!0,0)),Or.mp4Box.setExtractionOptions(t.id)}if(r&&ni._opt.hasAudio){Or.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Or.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ni.debug.log(Or.LOG_NAME,"aacADTSHeader"),ni.decodeAudio(n,0)}Or.mp4Box.start()},onError(e){ni.debug.error(Or.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Or.videoTrackId){for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&ni.calcIframeIntervalTimestamp(i);let n=null;n=Or.isHevc?Yr(t,r):Pr(t,r),ni.decode(n,{type:ae,ts:i,isIFrame:r,cts:0})}Or.mp4Box.removeUsedSamples(e)}else if(e===Or.audioTrackId){if(ni._opt.hasAudio){for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),ni.decode(i,{type:oe,ts:r,isIFrame:!1,cts:0})}Or.mp4Box.removeUsedSamples(e)}}else ni.debug.warn(Or.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Or.transportDescarmber&&(t=Or.transportDescarmber.transport(t)),t.buffer.fileStart=Or.offset,Or.offset+=t.byteLength,Or.mp4Box.appendBuffer(t.buffer)},destroy(){Or.mp4Box&&(Or.mp4Box.stop(),Or.mp4Box.flush(),Or.mp4Box.destroy(),Or.mp4Box=null),Or.transportDescarmber&&(Or.transportDescarmber.destroy(),Or.transportDescarmber=null),Or.offset=0,Or.videoTrackId=null,Or.audioTrackId=null,Or.isHevc=!1}},Wr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Wr.extractNALu(t)},destroy(){Wr.lastBuffer=new Uint8Array(0),Wr.parsedOffset=0,Wr.firstStartCodeOffset=0,Wr.secondStartCodeOffset=0,Wr.state="init",Wr.hasInitVideoCodec=!1,Wr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ni.debug.warn(Wr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Wr.lastBuffer.length+e.length);for(t.set(Wr.lastBuffer,0),t.set(new Uint8Array(e),Wr.lastBuffer.length),Wr.lastBuffer=t;;){if("init"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findFirstStartCode",Wr.firstStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Wr.state){let e=!1;for(;Wr.lastBuffer.length-Wr.parsedOffset>=4;)if(0===Wr.lastBuffer[Wr.parsedOffset])if(0===Wr.lastBuffer[Wr.parsedOffset+1])if(1===Wr.lastBuffer[Wr.parsedOffset+2]){if(182===Wr.lastBuffer[Wr.parsedOffset+3]){Wr.state="findSecondStartCode",Wr.secondStartCodeOffset=Wr.parsedOffset,Wr.parsedOffset+=4,e=!0;break}Wr.parsedOffset++}else Wr.parsedOffset++;else Wr.parsedOffset++;else Wr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Wr.state){if(!(Wr.lastBuffer.length-Wr.parsedOffset>0))break;{let e,t,r=192&Wr.lastBuffer[Wr.parsedOffset];e=0==r?Wr.secondStartCodeOffset-14:Wr.secondStartCodeOffset;let i=0==(192&Wr.lastBuffer[Wr.firstStartCodeOffset+4]);if(i){if(Wr.firstStartCodeOffset-14<0)return void ni.debug.warn(Wr.LOG_NAME,"firstStartCodeOffset -14 is",Wr.firstStartCodeOffset-14);Wr.hasInitVideoCodec||(Wr.hasInitVideoCodec=!0,ni.debug.log(Wr.LOG_NAME,"setCodec"),oi.setCodec(Me,"")),t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset-14,e)}else t=Wr.lastBuffer.subarray(Wr.firstStartCodeOffset,e);let n=Wr.getNaluDts();Wr.hasInitVideoCodec?(postMessage({cmd:O,type:xe,value:t.byteLength}),postMessage({cmd:O,type:Be,value:n}),we=n,oi.decode(t,i?1:0,n)):ni.debug.warn(Wr.LOG_NAME,"has not init video codec"),Wr.lastBuffer=Wr.lastBuffer.subarray(e),Wr.firstStartCodeOffset=0==r?14:0,Wr.parsedOffset=Wr.firstStartCodeOffset+4,Wr.state="findFirstStartCode"}}}},getNaluDts(){let e=Wr.localDts;return Wr.localDts=Wr.localDts+40,e}},ri={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Nn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){ri.media_info_=null,ri.pes_slice_queues_=null,ri.section_slice_queues_=null,ri.video_metadata_=null,ri.audio_metadata_=null,ri.aac_last_incomplete_data_=null,ri.video_track_=null,ri.audio_track_=null,ri._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){ri._remainingPacketData&&(e=hn(ri._remainingPacketData,e),ri._remainingPacketData=null);let t=e.buffer;const r=ri.parseChunks(t);r?ri._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!ri.pmt_||ri.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);ri.last_pcr_=e}if(2==o||5+e===188){t+=188,204===ri.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===ri.current_pmt_pid_||null!=ri.pmt_&&ri.pmt_.pid_stream_type[s]===Pn){let r=188-c;ri.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=ri.pmt_&&null!=ri.pmt_.pid_stream_type[s]){let r=188-c,i=ri.pmt_.pid_stream_type[s];s!==ri.pmt_.common_pids.h264&&s!==ri.pmt_.common_pids.h265&&s!==ri.pmt_.common_pids.adts_aac&&s!==ri.pmt_.common_pids.loas_aac&&s!==ri.pmt_.common_pids.ac3&&s!==ri.pmt_.common_pids.eac3&&s!==ri.pmt_.common_pids.opus&&s!==ri.pmt_.common_pids.mp3&&!0!==ri.pmt_.pes_private_data_pids[s]&&!0!==ri.pmt_.timed_id3_pids[s]&&!0!==ri.pmt_.synchronous_klv_pids[s]&&!0!==ri.pmt_.asynchronous_klv_pids[s]||ri.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===ri.tsPacketSize&&(t+=16)}return ri.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=ri.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):ri.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&ri.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?ri.emitSectionSlices(s,i):s.total_length>=s.expected_length&&ri.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ni.debug.warn(ri.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=ri.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?ri.emitPESSlices(e,i):ri.clearSlices(e,i)),ri.pes_slice_queues_[i.pid]=new Ln,ri.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==ri.pes_slice_queues_[i.pid])return;let a=ri.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?ri.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ni.debug.warn(ri.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case An:case Un:ri.parseMP3Payload(c,r);break;case xn:ri.pmt_.common_pids.opus===e.pid||ri.pmt_.common_pids.ac3===e.pid||ri.pmt_.common_pids.eac3===e.pid||(ri.pmt_.asynchronous_klv_pids[e.pid]?ri.parseAsynchronousKLVMetadataPayload(c,e.pid,i):ri.pmt_.smpte2038_pids[e.pid]?ri.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):ri.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Bn:ri.parseADTSAACPayload(c,r);break;case kn:ri.parseLOASAACPayload(c,r);break;case Tn:case Cn:break;case Dn:ri.pmt_.timed_id3_pids[e.pid]?ri.parseTimedID3MetadataPayload(c,r,s,e.pid,i):ri.pmt_.synchronous_klv_pids[e.pid]&&ri.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Fn:ri.parseH264Payload(c,r,s,e.random_access_indicator);break;case In:ri.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===xn){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);ri.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ni.debug.error(ri.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(ri.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=ri.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==ri.pat_&&ni.debug.log(ri.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),ri.pat_=o,ri.current_program_=d,ri.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ni.debug.error(ri.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=ri._initPmt(),r.program_number=n,r.version_number=s,ri.program_pmt_map_[n]=r;else if(r=ri.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iri.has_video_&&ri.has_audio_?ri.video_init_segment_dispatched_&&ri.audio_init_segment_dispatched_:ri.has_video_&&!ri.has_audio_?ri.video_init_segment_dispatched_:!(ri.has_video_||!ri.has_audio_)&&ri.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=ri.video_metadata_.details,t={type:"video"};t.id=ri.video_track_.id,t.timescale=1e3,t.duration=ri.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,ri.video_metadata_.vps){ni.isHevc=!0;let e=ri.video_metadata_.vps.data.subarray(4),r=ri.video_metadata_.sps.data.subarray(4),i=ri.video_metadata_.pps.data.subarray(4);t.hvcc=jr({vps:e,sps:r,pps:i}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ni.decodeVideo(t.hvcc,0,!0,0)}else{let e=ri.video_metadata_.sps.data.subarray(4),r=ri.video_metadata_.pps.data.subarray(4);t.avcc=Cr({sps:e,pps:r}),0==ri.video_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ni.decodeVideo(t.avcc,0,!0,0)}ri.video_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let n=ri.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){ri.isInitSegmentDispatched()&&ri.video_track_.length&&ri._preDoDecode()},dispatchAudioMediaSegment(){ri.isInitSegmentDispatched()&&ri.audio_track_.length&&ri._preDoDecode()},dispatchAudioVideoMediaSegment(){ri.isInitSegmentDispatched()&&(ri.audio_track_.length||ri.video_track_.length)&&ri._preDoDecode()},parseADTSAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;if(ri.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+ri.aac_last_incomplete_data_.byteLength);t.set(ri.aac_last_incomplete_data_,0),t.set(e,ri.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/ri.timescale_),"aac"===ri.audio_metadata_.codec){if(null==t&&null!=ri.audio_last_sample_pts_)r=1024/ri.audio_metadata_.sampling_frequency*1e3,i=ri.audio_last_sample_pts_+r;else if(null==t)return void ni.debug.warn(ri.TAG_NAME,"AAC: Unknown pts");if(ri.aac_last_incomplete_data_&&ri.audio_last_sample_pts_){r=1024/ri.audio_metadata_.sampling_frequency*1e3;let e=ri.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ni.debug.warn(ri.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Zt(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(or(this.loas_previous_frame)?void 0:this.loas_previous_frame));){ri.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},ri.dispatchAudioInitSegment(e)):ri.detectAudioMetadataChange(e)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};ri.audio_track_.samples.push(s),ri.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(ri.aac_last_incomplete_data_=s.getIncompleteData()),n&&(ri.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(ri.has_video_&&!ri.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==ri.audio_init_segment_dispatched_?(ri.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},ri.dispatchAudioInitSegment(h)):ri.detectAudioMetadataChange(h)&&(ri.dispatchAudioMediaSegment(),ri.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/ri.timescale_,dts:t/ri.timescale_,type:oe};ri.audio_track_.samples.push(f),ri.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==ri.audio_metadata_.codec)return ni.debug.log(ri.TAG_NAME,`Audio: Audio Codecs changed from ${ri.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===ri.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==ri.audio_metadata_.audio_object_type)return ni.debug.log(ri.TAG_NAME,`AAC: AudioObjectType changed from ${ri.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==ri.audio_metadata_.sampling_freq_index)return ni.debug.log(ri.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==ri.audio_metadata_.channel_config)return ni.debug.log(ri.TAG_NAME,`AAC: Channel configuration changed from ${ri.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===ri.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==ri.audio_metadata_.sampling_frequency)return ni.debug.log(ri.TAG_NAME,`AC3: Sampling Frequency changed from ${ri.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==ri.audio_metadata_.bit_stream_identification)return ni.debug.log(ri.TAG_NAME,`AC3: Bit Stream Identification changed from ${ri.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==ri.audio_metadata_.bit_stream_mode)return ni.debug.log(ri.TAG_NAME,`AC3: BitStream Mode changed from ${ri.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==ri.audio_metadata_.channel_mode)return ni.debug.log(ri.TAG_NAME,`AC3: Channel Mode changed from ${ri.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==ri.audio_metadata_.low_frequency_effects_channel_on)return ni.debug.log(ri.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${ri.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===ri.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`Opus: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===ri.audio_metadata_.codec){const t=e.data;if(t.object_type!==ri.audio_metadata_.object_type)return ni.debug.log(ri.TAG_NAME,`MP3: AudioObjectType changed from ${ri.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==ri.audio_metadata_.sample_rate)return ni.debug.log(ri.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${ri.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==ri.audio_metadata_.channel_count)return ni.debug.log(ri.TAG_NAME,`MP3: Channel count changed from ${ri.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=ri.audio_track_.id,t.timescale=1e3,t.duration=ri.duration_,"aac"===ri.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $n(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ni._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ni.decodeAudio(n,0)}else"ac-3"===ri.audio_metadata_.codec||"ec-3"===ri.audio_metadata_.codec||"opus"===ri.audio_metadata_.codec||"mp3"===ri.audio_metadata_.codec&&(t.audioSampleRate=ri.audio_metadata_.sample_rate,t.channelCount=ri.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==ri.audio_init_segment_dispatched_&&ni.debug.log(ri.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),ri.audio_init_segment_dispatched_=!0,ri.video_metadata_changed_=!1;let r=ri.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Rn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/ri.timescale_);s.pts=e}else s.nearest_pts=ri.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/ri.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ni.debug.log(ri.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ni.debug.log(ri.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=ri.audio_last_sample_pts_?Math.floor(ri.audio_last_sample_pts_):null!=ri.last_pcr_?Math.floor(ri.last_pcr_/300/ri.timescale_):void 0,_preDoDecode(){const e=ri.video_track_,t=ri.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?ri._doDecodeVideo({...e,payload:t}):e.type===oe&&ri._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Yr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ni.calcIframeIntervalTimestamp(e.dts);let i=ni.cryptoPayload(r,e.isIFrame);ni.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;_r(ni._opt.m7sCryptoAudio)&&(r=ni.cryptoPayloadAudio(t)),ni.decode(r,{type:oe,ts:e.dts,isIFrame:!1,cts:0})}},ii=null;yr()&&(ii={TAG_NAME:"worker MediaSource",_resetInIt(){ii.isAvc=null,ii.isAAC=null,ii.videoInfo={},ii.videoMeta={},ii.audioMeta={},ii.sourceBuffer=null,ii.audioSourceBuffer=null,ii.hasInit=!1,ii.hasAudioInit=!1,ii.isAudioInitInfo=!1,ii.videoMimeType="",ii.audioMimeType="",ii.cacheTrack={},ii.cacheAudioTrack={},ii.timeInit=!1,ii.sequenceNumber=0,ii.audioSequenceNumber=0,ii.firstRenderTime=null,ii.firstAudioTime=null,ii.mediaSourceAppendBufferFull=!1,ii.mediaSourceAppendBufferError=!1,ii.mediaSourceAddSourceBufferError=!1,ii.mediaSourceBufferError=!1,ii.mediaSourceError=!1,ii.prevTimestamp=null,ii.decodeDiffTimestamp=null,ii.prevDts=null,ii.prevAudioDts=null,ii.prevPayloadBufferSize=0,ii.isWidthOrHeightChanged=!1,ii.prevTs=null,ii.prevAudioTs=null,ii.eventListenList=[],ii.pendingRemoveRanges=[],ii.pendingSegments=[],ii.pendingAudioRemoveRanges=[],ii.pendingAudioSegments=[],ii.supportVideoFrameCallbackHandle=null,ii.audioSourceBufferCheckTimeout=null,ii.audioSourceNoDataCheckTimeout=null,ii.hasPendingEos=!1,ii.$video={currentTime:0,readyState:0}},init(){ii.events=new fn,ii._resetInIt(),ii.mediaSource=new self.MediaSource,ii.isDecodeFirstIIframe=!!gr(ni._opt.checkFirstIFrame),ii._bindMediaSourceEvents()},destroy(){ii.stop(),ii._clearAudioSourceBufferCheckTimeout(),ii.eventListenList&&ii.eventListenList.length&&(ii.eventListenList.forEach((e=>e())),ii.eventListenList=[]),ii._resetInIt(),ii.mediaSource=null},getState:()=>ii.mediaSource&&ii.mediaSource.readyState,isStateOpen:()=>ii.getState()===yt,isStateClosed:()=>ii.getState()===vt,isStateEnded:()=>ii.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=ii.events,t=e(ii.mediaSource,wt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceOpen"),ii._onMediaSourceSourceOpen()})),r=e(ii.mediaSource,bt,(()=>{ni.debug.log(ii.TAG_NAME,"sourceClose")})),i=e(ii.mediaSource,St,(()=>{ni.debug.log(ii.TAG_NAME,"sourceended")}));ii.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ii.sourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ii._initSourceBuffer()),ii.audioSourceBuffer||(ni.debug.log(ii.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ii._initAudioSourceBuffer()),ii._hasPendingSegments()&&ii._doAppendSegments()},decodeVideo(e,t,r,i){if(ni.isDestroyed)ni.debug.warn(ii.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(gr(ii.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Le&&gr(ni._opt.supportMSEDecodeHevc))return void ii.emitError(Pe.mediaSourceH265NotSupport);ii.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),ii.hasInit=ii._decodeConfigurationRecord(e,t,r,i)}else ni.debug.warn(ii.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!ii.isDecodeFirstIIframe&&r&&(ii.isDecodeFirstIIframe=!0),ii.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Le&&(r=Hr(e));const i=ii.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ni.debug.warn(ii.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ii.isWidthOrHeightChanged=!0,ii.emitError(Pe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(ii.isWidthOrHeightChanged)return void ni.debug.warn(ii.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mr(e))return void ni.debug.log(ii.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthii.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Ie?s=kr(n):i===Le&&(s=Vr(n)),ii.videoInfo.width=s.codecWidth,ii.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ni.debug.warn(ii.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),ii.emitError(Pe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=pn.generateInitSegment(o);ii.isAvc=i===Ie;let d=s.codec;return ii.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:ii.isAvc?mt:_t,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),ii._initSourceBuffer(),ii.appendBuffer(a.buffer),ii.sequenceNumber=0,ii.cacheTrack={},ii.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ge,s=r===Ne;if(gr(s||n))return ni.debug.warn(ii.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ii.emitError(Pe.mediaSourceAudioG711NotSupport),!1;const o={id:Ft,type:"audio",timescale:1e3};let a={};if(jt(e)){if(a=Kt(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=En(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&gr(ni._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=pn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),gr(ii.isAudioInitInfo)&&(br=r===Ne?i?16:8:0===i?8:16,postMessage({cmd:F,code:r}),postMessage({cmd:P,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:br}),ii.isAudioInitInfo=!0),ii.audioMimeType=u,ii.isAAC=s,ii._initAudioSourceBuffer(),ii.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.sourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.videoMimeType){try{ni.debug.log(ii.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.videoMimeType),ii.sourceBuffer=ii.mediaSource.addSourceBuffer(ii.videoMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.sourceBuffer){const t=e(ii.sourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.sourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r)}}else ni.debug.log(ii.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.isAvc === null is ${null===ii.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ii.events;if(null===ii.audioSourceBuffer&&null!==ii.mediaSource&&ii.isStateOpen()&&ii.audioMimeType){try{ni.debug.log(ii.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ii.audioMimeType),ii._clearAudioSourceBufferCheckTimeout(),ii.audioSourceBuffer=ii.mediaSource.addSourceBuffer(ii.audioMimeType)}catch(e){return ni.debug.error(ii.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),ii.emitError(Pe.mseWorkerAddSourceBufferError,e.code),void(ii.mediaSourceAddSourceBufferError=!0)}if(ii.audioSourceBuffer){const t=e(ii.audioSourceBuffer,"error",(e=>{ii.mediaSourceBufferError=!0,ni.debug.error(ii.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ii.emitError(Pe.mseSourceBufferError,e.code)})),r=e(ii.audioSourceBuffer,"updateend",(()=>{ii._hasPendingRemoveRanges()?ii._doRemoveRanges():ii._hasPendingSegments()?ii._doAppendSegments():ii.hasPendingEos&&(ni.debug.log(ii.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ii.endOfStream())}));ii.eventListenList.push(t,r),null===ii.audioSourceNoDataCheckTimeout&&(ii.audioSourceNoDataCheckTimeout=setTimeout((()=>{ii._clearAudioNoDataCheckTimeout(),ii.emitError(Pe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ni.debug.log(ii.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ii.isStateOpen()} and mseDecoder.audioMimeType is ${ii.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ni.debug.warn(ii.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;ii.prevTimestamp||(ii.prevTimestamp=a,d=!0);const l=a-ii.prevTimestamp;if(ii.decodeDiffTimestamp=l,l>1e3&&!d&&ni.isPlayer&&ni.debug.log(ii.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${ii.prevTimestamp}, diff time is ${l} ms`),ii.cacheTrack.id&&t>=ii.cacheTrack.dts){let e=8+ii.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheTrack.data,8),ii.cacheTrack.duration=t-ii.cacheTrack.dts;let i=pn.moof(ii.cacheTrack,ii.cacheTrack.dts);ii.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendBuffer(n.buffer)}else ni.debug.log(ii.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${ii.cacheTrack&&ii.cacheTrack.dts}`),ii.timeInit=!1,ii.cacheTrack={};ii.cacheTrack||(ii.cacheTrack={}),ii.cacheTrack.id=Pt,ii.cacheTrack.sequenceNumber=++ii.sequenceNumber,ii.cacheTrack.size=o,ii.cacheTrack.dts=t,ii.cacheTrack.cts=i,ii.cacheTrack.isKeyframe=r,ii.cacheTrack.data=s,ii.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ii.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ii.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(ii.cacheAudioTrack.id&&t>=ii.cacheAudioTrack.dts){let e=8+ii.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ii.cacheAudioTrack.data,8),ii.cacheAudioTrack.duration=t-ii.cacheAudioTrack.dts;let i=pn.moof(ii.cacheAudioTrack,ii.cacheAudioTrack.dts);ii.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ii.appendAudioBuffer(n.buffer)}else ii.cacheAudioTrack={};ii.cacheAudioTrack||(ii.cacheAudioTrack={}),ii.cacheAudioTrack.id=Ft,ii.cacheAudioTrack.sequenceNumber=++ii.audioSequenceNumber,ii.cacheAudioTrack.size=n,ii.cacheAudioTrack.dts=t,ii.cacheAudioTrack.cts=0,ii.cacheAudioTrack.data=i,ii.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingSegments.push(e),ii.sourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ni.isDestroyed?ni.debug.warn(ii.TAG_NAME,"appendAudioBuffer() player is destroyed"):ii.mediaSourceAddSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ii.mediaSourceAppendBufferFull?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ii.mediaSourceAppendBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ii.mediaSourceBufferError?ni.debug.warn(ii.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ii.pendingAudioSegments.push(e),ii.audioSourceBuffer&&(ni._opt.mseAutoCleanupSourceBuffer&&ii._needCleanupSourceBuffer()&&ii._doCleanUpSourceBuffer(),gr(ii.getAudioSourceBufferUpdating())&&ii.isStateOpen()&&gr(ii._hasPendingRemoveRanges()))?ii._doAppendSegments():ii.isStateClosed()?(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ii.isStateEnded()&&(ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>ii.sourceBuffer&&ii.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ii.audioSourceBuffer&&ii.audioSourceBuffer.updating,stop(){ii.abortSourceBuffer(),ii.removeSourceBuffer(),ii.endOfStream()},clearUpAllSourceBuffer(){if(ii.sourceBuffer){const e=ii.sourceBuffer.buffered;for(let t=0;tii.pendingSegments.length>0||ii.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ii.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ii.isStateClosed()||ii.isStateEnded())ni.debug.log(ii.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ii.sourceBuffer){if(ii.needInitAudio()&&null===ii.audioSourceBuffer)return ni.debug.log(ii.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ii.audioSourceBufferCheckTimeout&&(ii.audioSourceBufferCheckTimeout=setTimeout((()=>{ii._clearAudioSourceBufferCheckTimeout(),ii.emitError(Pe.mediaSourceAudioInitTimeout)}),1e3)));if(gr(ii.getSourceBufferUpdating())&&ii.pendingSegments.length>0){const e=ii.pendingSegments.shift();try{ii.sourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(gr(ii.getAudioSourceBufferUpdating())&&ii.pendingAudioSegments.length>0){const e=ii.pendingAudioSegments.shift();try{ii.audioSourceBuffer.appendBuffer(e)}catch(e){ni.debug.error(ii.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ii.stop(),ii.mediaSourceAppendBufferFull=!0,ii.emitError(Pe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(ii.stop(),ii.mediaSourceAppendBufferError=!0,ii.emitError(Pe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(ii.stop(),ii.mediaSourceBufferError=!0,ii.emitError(Pe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ni.debug.log(ii.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ii.$video.currentTime;if(ii.sourceBuffer){const t=ii.sourceBuffer.buffered;let r=!1;for(let i=0;i=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingRemoveRanges.push({start:n,end:t})}}else s=ni._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ni._opt.mseAutoCleanupMinBackwardDuration;ii.pendingAudioRemoveRanges.push({start:n,end:t})}}else sii.pendingRemoveRanges.length>0||ii.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ni._opt.hasAudio&&ni._opt.mseDecodeAudio,_doRemoveRanges(){if(ii.sourceBuffer&&gr(ii.getSourceBufferUpdating())){let e=ii.pendingRemoveRanges;for(;e.length&&gr(ii.getSourceBufferUpdating());){let t=e.shift();try{ii.sourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ii.audioSourceBuffer&&gr(ii.getAudioSourceBufferUpdating())){let e=ii.pendingAudioRemoveRanges;for(;e.length&&gr(ii.getAudioSourceBufferUpdating());){let t=e.shift();try{ii.audioSourceBuffer.remove(t.start,t.end)}catch(e){ni.debug.warn(ii.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(gr(ni._opt.mseAutoCleanupSourceBuffer))return!1;const e=ii.$video.currentTime;if(ii.sourceBuffer){let t=ii.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ii.audioSourceBuffer){let t=ii.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ni._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ii.audioSourceBufferCheckTimeout&&(clearTimeout(ii.audioSourceBufferCheckTimeout),ii.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ii.audioSourceNoDataCheckTimeout&&(clearTimeout(ii.audioSourceNoDataCheckTimeout),ii.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ii.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ni={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:Er(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ni.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ni.getVideoBufferLength(),audioDemuxBufferDelay:ni.getAudioBufferLength(),streamBufferByteLength:ni.getStreamBufferLength(),netBuf:ni.networkDelay||0,pushLatestDelay:ni.pushLatestDelay||0,latestDelay:ni.delay,isStreamTsMoreThanLocal:We,wasmDecodeDelay:we-Se});postMessage({cmd:O,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ni._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ni._opt.hasVideo&&!B)return-1;if(t===oe)return ni.delay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp>e)return ni.preDelayTimestamp-e>1e3&&ni.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return ${ni.delay}`),ni.preDelayTimestamp=e,ni.delay;if(ni.firstTimestamp){if(e){const t=Date.now()-ni.startTimestamp,r=e-ni.firstTimestamp;t>=r?(We=!1,ni.delay=t-r):(We=!0,ni.delay=r-t)}}else ni.firstTimestamp=e,ni.startTimestamp=Date.now(),ni.delay=-1;return ni.preDelayTimestamp=e,ni.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ni._opt.hasVideo&&!B)return-1;if(t===oe)return ni.pushLatestDelay;if(ni.preDelayTimestamp&&ni.preDelayTimestamp-e>1e3)return ni.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ni.preDelayTimestamp} > timestamp is ${e} more than ${ni.preDelayTimestamp-e}ms and return -1`),-1;if(ni.firstTimestamp){let t=-1;if(e){const r=Date.now()-ni.startTimestamp,i=e-ni.firstTimestamp;r>=i?(We=!1,t=r-i):(We=!0,t=i-r)}return t}return-1},resetDelay:function(){ni.firstTimestamp=null,ni.startTimestamp=null,ni.delay=-1,ni.dropping=!1},resetAllDelay:function(){ni.resetDelay(),ni.preDelayTimestamp=null},doDecode:function(e){ni._opt.isEmitSEI&&e.type===ae&&ni.isWorkerFetch&&ni.findSei(e.payload,e.ts),ni.isPlayUseMSEAndDecoderInWorker()?e.type===oe?ni._opt.mseDecodeAudio?ii.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&ii.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ni._opt.useWCS&&ni.useOffscreen()&&e.type===ae&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===ae&&mr(e.payload);if(gr(r))s&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n));else{const r=n.ts-t,o=n.type===oe&&e.type===ae;(r<=20||o||s)&&(ni.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${o} and isVideoSqeHeader is ${s}`),i.shift(),ni.doDecode(n))}},init:function(){ni.debug.log("worker","init and opt is",JSON.stringify(ni._opt));const e=ni._opt.playType===v,t=ni._opt.playType===b;if($r.init(),ni.isPlayer=e,ni.isPlayback=t,ni.isPlayUseMSEAndDecoderInWorker()&&ii&&ii.init(),s&&ni._opt.useWCS&&ni.useOffscreen()&&s.init(),ni.isPlaybackCacheBeforeDecodeForFpsRender())ni.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ni.debug.log("worker","setInterval()");const t=()=>{const t=ni._opt.videoBuffer+ni._opt.videoBufferDelay;let r=null;if(i.length){if(ni.isPushDropping)return void ni.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ni.dropping){for(r=i.shift(),ni.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ni.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ni.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ni.getNotDroppingDelayTs()&&(ni.debug.log("worker","loop() is dropping = false, is iFrame"),ni.dropping=!1,ni.doDecode(r),ni.decodeNext(r))}else if(ni.isPlayback||ni.isPlayUseMSE()||0===ni._opt.videoBuffer)for(;i.length;)r=i.shift(),ni.doDecode(r);else if(r=i[0],-1===ni.getDelay(r.ts,r.type))ni.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ni.doDecode(r),ni.decodeNext(r);else if(ni.delay>t&&e)ni.hasIframeInBufferList()?(ni.debug.log("worker",`delay is ${ni.delay} > maxDelay ${t}, set dropping is true`),ni.resetAllDelay(),ni.dropping=!0,postMessage({cmd:H})):(i.shift(),ni.doDecode(r),ni.decodeNext(r));else for(;i.length;){if(r=i[0],!(ni.getDelay(r.ts,r.type)>ni._opt.videoBuffer)){ni.delay<0&&ni.debug.warn("worker",`loop() do not decode and delay is ${ni.delay}, bufferList is ${i.length}`);break}i.shift(),ni.doDecode(r)}}else-1!==ni.delay&&ni.debug.log("worker","loop() bufferList is empty and reset delay"),ni.resetAllDelay()};ni.stopId=setInterval((()=>{let e=(new Date).getTime();Ze||(Ze=e);const r=e-Ze;r>100&&ni.debug.warn("worker",`loop demux diff time is ${r}`),t(),Ze=(new Date).getTime()}),20)}if(gr(ni._opt.checkFirstIFrame)&&(B=!0),ni.isPlayUseMSEAndDecoderInWorker()&&ii){const e=ii.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ni.doDecode(e))};e();const t=Math.ceil(1e3/(ni.streamFps*ni._opt.playbackRate));ni.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ni.streamFps}, streamAudioFps is ${ni.streamAudioFps} ,streamVideoFps is ${ni.streamVideoFps} playbackRate is ${ni._opt.playbackRate}`),ni.stopId=setInterval(e,t)},close:function(){if(ni.debug.log("worker","close"),ni.isDestroyed=!0,Br(),!a||1!==a.readyState&&2!==a.readyState?a&&ni.debug.log("worker",`close() and socket.readyState is ${a.readyState}`):(wr=!0,a.close(1e3,"Client disconnecting")),a=null,ni.stopStreamRateAndStatsInterval(),ni.stopId&&(clearInterval(ni.stopId),ni.stopId=null),ni.mp3Demuxer&&(ni.mp3Demuxer.destroy(),ni.mp3Demuxer=null),ni.writableStream&&gr(ni.writableStream.locked)&&ni.writableStream.close().catch((e=>{ni.debug.log("worker","close() and writableStream.close() error",e)})),ni.writableStream=null,si)try{si.clear&&si.clear(),si=null}catch(e){ni.debug.log("worker","close() and audioDecoder.clear error",e.toString(),e)}if(oi)try{oi.clear&&oi.clear(),oi=null}catch(e){ni.debug.log("worker","close() and videoDecoder.clear error",e.toString(),e)}d=null,Ze=null,We=!1,we=0,Se=0,s&&(s.destroy&&s.destroy(),s=null),ii&&(ii.destroy(),ii=null),ni.firstTimestamp=null,ni.startTimestamp=null,ni.networkDelay=0,ni.streamFps=null,ni.streamAudioFps=null,ni.streamVideoFps=null,ni.delay=-1,ni.pushLatestDelay=-1,ni.preDelayTimestamp=null,ni.dropping=!1,ni.isPushDropping=!1,ni.isPlayer=!0,ni.isPlayback=!1,ni.isWorkerFetch=!1,ni.isHevc=null,ni._opt=Er(),ni.webglObj&&(ni.webglObj.destroy(),ni.offscreenCanvas.removeEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost),ni.offscreenCanvas.removeEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored),ni.offscreenCanvas=null,ni.offscreenCanvasGL=null,ni.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,f=null,S=!1,E=!1,B=!1,Ht=!1,Yt=!1,Jt=!1,nr=null,rt=[],At=0,Bt=0,Je=null,et=null,Nt=null,$t=null,br=null,Ot=0,Gt=0,ct=null,Et=null,ni.fetchStatus=Tt,Sr=!0,$r.destroy(),Or.destroy(),Wr.destroy(),ri.destroy(),postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===oe&&jt(e)){if(ni.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ni.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&mr(e)){if(ni.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ni._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ni.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ni._opt.isRecording)if(ni._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ni._opt.recordType===w)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===oe&&ni._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:I,buffer:i,ts:t.ts},[i.buffer])}if(ni.isPlayer){if(t.type===ae){if(Ot>0){const e=t.ts-$t,r=Ot+Ot/2;e>r&&ni.debug.log("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${$t},\n diff is ${e} and preTsDuration is ${Ot} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==$t&&$t>=t.ts&&(ni.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${$t} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Gt}`),$t-t.ts>A&&(ni.debug.warn("worker",`pushBuffer,\n preTimestamp is ${$t}, options.ts is ${t.ts},\n diff is ${$t-t.ts} more than 3600000,\n and resetAllDelay`),ni.resetAllDelay(),$t=null,Ot=0),ni._opt.isDropSameTimestampGop&&gr(t.isIFrame)&&B)){const e=ni.hasIframeInBufferList(),t=gr(ni.isPushDropping);return ni.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ni.dropBuffer$2():(ni.clearBuffer(!0),_r(ni._opt.checkFirstIFrame)&&_r(r)&&(ni.isPlayUseMSEAndDecoderInWorker()?ii.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}$t>0&&(Ot=t.ts-$t),Gt=e.byteLength,$t=t.ts}if(B){const e=ni._opt.videoBuffer+ni._opt.videoBufferDelay,r=ni.getDelayNotUpdateDelay(t.ts,t.type);ni.pushLatestDelay=r,ni.delay>0&&r>e&&ni.delay({type:e.type,ts:e.ts})));ni.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ni.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ni.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ni.streamVideoFps=25,postMessage({cmd:W,value:ni.streamVideoFps}),r?(ni.streamAudioFps=25,ni.streamFps=ni.streamVideoFps+ni.streamAudioFps):ni.streamFps=ni.streamVideoFps,ni.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ni.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ni._opt.videoBuffer+ni._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===oe&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ni._opt.isNakedFlow?$r.lastBuf&&(e=$r.lastBuf.byteLength):ni._opt.isTs?ri._remainingPacketData&&(e=ri._remainingPacketData.byteLength):ni._opt.isFmp4&&Or.mp4Box&&(e=Or.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){if(ni.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ni.isWorkerFetch=!0,t.isFlv?ni._opt.isFlv=!0:t.isFmp4?ni._opt.isFmp4=!0:t.isMpeg4?ni._opt.isMpeg4=!0:t.isNakedFlow?ni._opt.isNakedFlow=!0:t.isTs&&(ni._opt.isTs=!0),d=sr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ni.startStreamRateAndStatsInterval(),t.isFmp4&&(Or.listenMp4Box(),ni._opt.isFmp4Private&&Or.initTransportDescarmber()),t.protocol===_){c=new Ar(ni.demuxFlv()),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(_r(wr))return ni.debug.log("worker","request abort and run res.body.cancel()"),ni.fetchStatus=Tt,void e.body.cancel();if(!fr(e))return ni.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Br(),void postMessage({cmd:O,type:Pe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),cr())ni.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ni.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof e?(ni.fetchStatus=Ct,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ni.demuxFmp4(e):t.isMpeg4?ni.demuxMpeg4(e):t.isTs&&ni.demuxTs(e)):ni.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ni.debug.log("worker","writableStream close()"),ni.fetchStatus=Dt,c=null,Br(),postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ni.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==Ut?(ni.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ni.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ni.debug.log("worker","fetchNext().then() and done is true"),ni.fetchStatus=Dt,c=null,Br(),void postMessage({cmd:O,type:Ee,value:g,msg:"fetch done"})):o&&o.signal&&o.signal.aborted?(ni.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt)):_r(wr)?(ni.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ni.fetchStatus=Dt)):void("string"!=typeof n?(ni.fetchStatus=Ct,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ni.demuxFmp4(n):t.isMpeg4?ni.demuxMpeg4(n):t.isTs&&ni.demuxTs(n),i()):ni.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ni.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ni.fetchStatus=Dt);c=null,e.name!==Ut?(ni.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()})):ni.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ni.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ut?(ni.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Br(),postMessage({cmd:O,type:Pe.fetchError,value:e.toString()}),c=null):ni.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(c=new Ar(ni.demuxFlv())),a=new WebSocket(e),a.binaryType="arraybuffer",a.onopen=()=>{ni.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:De})},a.onclose=e=>{ni.isDestroyed?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):u?ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ni.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ni.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),_r(wr)?ni.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:Ee,value:y,msg:e.code})))},a.onerror=e=>{ni.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,ni.isDestroyed?ni.debug.log("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):postMessage({cmd:O,type:Pe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},a.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ni.demuxFmp4(e.data):t.isMpeg4?ni.demuxMpeg4(e.data):ni._opt.isNakedFlow?ni.demuxNakedFlow(e.data):ni.demuxM7s(e.data)):ni.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const o=(yield n).slice();switch(i){case de:if(o.byteLength>0){let e=o;_r(ni._opt.m7sCryptoAudio)&&(e=ni.cryptoPayloadAudio(o)),ni.decode(e,{type:oe,ts:s})}else ni.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case le:if(o.byteLength>=6){const e=o[0];if(ni._isEnhancedH265Header(e))ni._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===kt;const i=e===Le;if(gr(t)&&_r(vr(o,i))&&(ni.debug.log("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&mr(o)&&null===ni.isHevc){const e=15&o[0];ni.isHevc=e===Le,nr=tr(o,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`)}t&&ni.calcIframeIntervalTimestamp(s),ni.isPlayer&&ni.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ni.cryptoPayload(o,t);ni.decode(a,{type:ae,ts:s,isIFrame:t,cts:n})}}else ni.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:o},[o.buffer]);break;default:ni.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===oe?ni._opt.hasAudio&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()||(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ni._opt.hasVideo&&(postMessage({cmd:O,type:xe,value:e.byteLength}),postMessage({cmd:O,type:Be,value:t.ts}),ni.isPlayer?ni.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ni.isPlayback&&(ni.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ni.isPlaybackCacheBeforeDecodeForFpsRender(),ni.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ni._opt.isM7sCrypto?ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=Ri(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`):ni._opt.isSm4Crypto?ni._opt.sm4CryptoKey?r=ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?es(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc,ni._opt.isSm4CryptoH265V2):on(e,ni._opt.sm4CryptoKey,ni.isHevc,ni._opt.isSm4CryptoH265V2):ni._opt.sm4CryptoKey||ni.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ni._opt.isXorCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?r=un(e,ni._opt.cryptoKey,ni._opt.cryptoIV,ni.isHevc):ni.debug.error("worker",`isXorCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ni._opt.isM7sCrypto&&(ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength>0&&ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength>0?e[0]>>4===Ne&&(t=zi(e,ni._opt.cryptoKey,ni._opt.cryptoIV)):ni.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ni._opt.cryptoKey&&ni._opt.cryptoKey.byteLength} or cryptoIV.length is ${ni._opt.cryptoIV&&ni._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(br=r===Ne?i?16:8:0===i?8:16,si&&si.setCodec)if(jt(e)||r===$e||r===Oe||r===Ge){ni.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ni._opt.sampleRate}`);const i=r===Ne?e.slice(2):new Uint8Array(0);si.setCodec(r,ni._opt.sampleRate,i),r===Ne&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==Ne&&(r===Ge?(ni.mp3Demuxer||(ni.mp3Demuxer=new dn(ni),ni.mp3Demuxer.on("data",((e,t)=>{si.decode(e,t)}))),ni.mp3Demuxer.dispatch(e.slice(1),t)):si.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})}),60*e*60*1e3)}}else ni.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ni.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ni.isDestroyed)ni.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ii.decodeAudio(e,t);else if(_r(r)&&_r(ni._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ni.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?ni.mp3Demuxer.dispatch(e.slice(1),t):si.decode(r===Ne?e.slice(2):e.slice(1),t)}else ni.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(oi&&oi.setCodec)if(mr(e))if(r===Ie||r===Le){ni.debug.log("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Ie&&ni._opt.useSIMD){const e=kr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ni.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,oi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:i,codecId:r},[i.buffer])}else ni.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ni.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ni.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ni.isDestroyed)ni.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ni.isPlayUseMSEAndDecoderInWorker())ii.decodeVideo(e,t,i,n);else if(_r(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ni.delay},[e.buffer]);else if(S)if(!B&&i&&(B=!0),B){if(i&&mr(e)){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Le&&(r=Hr(e)),r.codecWidth&&r.codecHeight&&h&&f&&(r.codecWidth!==h||r.codecHeight!==f)&&(ni.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${f},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Yt=!0,postMessage({cmd:j,value:`width: ${h}->${r.codecWidth}, height: ${f}->${r.codecHeight}`}))}if(Yt)return void ni.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Jt)return void ni.debug.warn("worker","decodeVideo: simd decode error, and return");if(mr(e))return void ni.debug.log("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ni.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ni.isPlayer&&(ni.resetAllDelay(),_r(ni._opt.checkFirstIFrame)&&(ni.dropping=!0,postMessage({cmd:H}))),_r(ni._opt.checkFirstIFrame)&&gr(r)&&(B=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>_r(e.isIFrame)&&e.type===ae));if(ni.isAllIframeInBufferList())for(let t=0;t=ni.getNotDroppingDelayTs()){ni.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ni.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ni.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ni.resetAllDelay(),ni.getDelay(r.ts,r.type),ni.doDecode(r),ni.isPushDropping=!1,ni.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ni.delay} `)}else ni.isPushDropping=!1}0===i.length&&(ni.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case oe:ni.decode(new Uint8Array(e,5),{type:oe,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ni._isEnhancedH265Header(n))ni._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ni.calcIframeIntervalTimestamp(r),mr(i)&&null===ni.isHevc)){const e=15&i[0];ni.isHevc=e===Le}ni.isPlayer&&ni.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ni.cryptoPayload(i,e);ni.decode(o,{type:ae,ts:r,isIFrame:e,cts:n})}}else ni.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){$r.dispatch(e)},demuxFmp4:function(e){Or.dispatch(e)},demuxMpeg4:function(e){Wr.dispatch(e)},demuxTs:function(e){ri.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),o=new ArrayBuffer(4),a=new Uint32Array(o),d="a"==String.fromCharCode(s[0]);if(ni.isHevc=gr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),nr=tr(e,ni.isHevc),ni.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ni.isHevc} and nalUnitSize is ${nr}`),ni.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(n===Mt){let r=e,n=0;const s=i===zt;s&&ni.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Yr(e.slice(8),s),r=ni.cryptoPayload(r,s),ni.decode(r,{type:ae,ts:t,isIFrame:s,cts:n}))}else if(n===Rt){const r=i===zt;r&&ni.calcIframeIntervalTimestamp(t);let n=Yr(e.slice(5),r);n=ni.cryptoPayload(n,r),ni.decode(n,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&It)===It},findSei:function(e,t){let r=4;ar(nr)&&(r=nr),Qt(e.slice(5),r).forEach((e=>{const r=ni.isHevc?e[0]>>>1&63:31&e[0];(ni.isHevc&&(r===ht||r===ut)||gr(ni.isHevc)&&r===Ye)&&postMessage({cmd:Z,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(B&&e>0))return;null===Je?(Je=e,et=rr()):et?r-t:0;ni.networkDelay=i,i>ni._opt.networkDelay&&ni._opt.playType===v&&(ni.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Je} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Ce,value:i}))},calcIframeIntervalTimestamp:function(e){null===Nt?Nt=e:Nt=ni._opt.playbackForwardMaxRateDecodeIFrame&&!(ni._opt.useMSE&&ni._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ni.isPlayer&&ni._opt.useMSE&&_r(r)},isPlayUseMSEAndDecoderInWorker:function(){return ni.isPlayUseMSE()&&ni._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ni.isPlayUseMSEAndDecoderInWorker()&&ni._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ni.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ni.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ht=!0,ni.webglObj.destroy(),ni.webglObj=null,ni.offscreenCanvasGL=null,setTimeout((()=>{ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.offscreenCanvasGL&&ni.offscreenCanvasGL.getContextAttributes().stencil?(ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),Ht=!1):ni.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ni.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),h=t,f=r,ni.useOffscreen()&&(ni.offscreenCanvas=new OffscreenCanvas(t,r),ni.offscreenCanvasGL=ni.offscreenCanvas.getContext("webgl"),ni.webglObj=p(ni.offscreenCanvasGL,ni._opt.openWebglAlignment),ni.offscreenCanvas.addEventListener("webglcontextlost",ni.onOffscreenCanvasWebglContextLost,!1),ni.offscreenCanvas.addEventListener("webglcontextrestored",ni.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:F,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:br}),Bt=r},yuvData:function(t,r){if(ni.isDestroyed)return void ni.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*f*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ct=null,Se=r,ni.useOffscreen())try{if(Ht)return;ni.webglObj.renderYUV(h,f,s);let e=ni.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ni.delay,ts:r},[e])}catch(e){ni.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:s,delay:ni.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ni.isDestroyed)return void ni.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,o=[],a=0,d=ni._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+s)}if(At){if(!(s>=(r=d-At)))return At+=s,n[0]=Float32Array.of(...n[0],...o[0]),void(2==Bt&&(n[1]=Float32Array.of(...n[1],...o[1])));rt[0]=Float32Array.of(...n[0],...o[0].subarray(0,r)),2==Bt&&(rt[1]=Float32Array.of(...n[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer))),a=r,s-=r}for(At=s;At>=d;At-=d)rt[0]=o[0].slice(a,a+=d),2==Bt&&(rt[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:rt,ts:i},rt.map((e=>e.buffer)));At&&(n[0]=o[0].slice(a),2==Bt&&(n[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===ct&&(ct=rr());const t=rr(),r=ir(Et>0?2*Et:5e3,1e3,5e3),i=t-ct;i>r&&(ni.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Et} and diff is ${i} and maxDiff is ${r}\n and replay`),Jt=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){a?a.readyState===Fe?a.send(e):ni.debug.error("worker","socket is not open"):ni.debug.error("worker","socket is null")},timeEnd:function(){ni.debug.error("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ni.close(),postMessage({cmd:V})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])}};ni.debug=new Ur(ni);let si=null;t.AudioDecoder&&(si=new t.AudioDecoder(ni));let oi=null;e.VideoDecoder&&(oi=new e.VideoDecoder(ni)),postMessage({cmd:k}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ni._opt=Object.assign(ni._opt,JSON.parse(t.opt))}catch(e){}ni.init();break;case he:ni.pushBuffer(t.buffer,t.options);break;case fe:ni.decodeAudio(t.buffer,t.ts);break;case pe:ni.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ni.clearBuffer(t.needClear);break;case ye:ni.fetchStream(t.url,JSON.parse(t.opt));break;case me:ni.debug.log("worker","close",JSON.stringify(t.options)),t.options&&gr(t.options.isVideoInited)&&(Sr=t.options.isVideoInited),ni.close();break;case _e:ni.debug.log("worker","updateConfig",t.key,t.value),ni._opt[t.key]=t.value,"playbackRate"===t.key&&(ni.playbackUpdatePlaybackRate(),ni.isPlaybackCacheBeforeDecodeForFpsRender()&&ni.playbackCacheLoop());break;case ve:ni.sendWebsocketMessage(t.message);break;case be:ii.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro.wasm b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1fc2b893dccd33bdd7892eda650796125027ca6d Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/decoder-pro.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-audio-player-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-audio-player-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..82cfd1ebde07a513f50ff0e2d257e0f40267613d --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-audio-player-demo.js @@ -0,0 +1,13 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}(function(){"use strict";class t{on(e,t,A){const s=this.e||(this.e={});return(s[e]||(s[e]=[])).push({fn:t,ctx:A}),this}once(s,i,r){const o=this;function a(){o.off(s,a);for(var e=arguments.length,t=new Array(e),A=0;A{delete t[e]}),void delete this.e;const s=t[e],i=[];if(s&&A)for(let e=0,t=s.length;e{var t;"[object Number]"===Object.prototype.toString.call(e)&&(s+=e,1e3<=(t=(e=F())-i)&&(A(s/t*1e3),i=e,s=0))}}(function(e){var o,t,a,A,s;o="undefined"!=typeof window&&void 0!==window.document?window.document:{},t=e.exports,a=function(){for(var e,t=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],A=0,s=t.length,i={};A{var e=window.navigator.userAgent;return/MicroMessenger/i.test(e)};function z(e){return R(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)}function J(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function _(){{var A=j;let t="";if("object"==typeof A)try{t=JSON.stringify(A),t=JSON.parse(t)}catch(e){t=A}else t=A;return t}}function P(e){return!0===e||"true"===e}function R(e){return!0!==e&&"true"!==e}class V{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(t,e,A){let s=3this.proxy(t,e,A,s));t.addEventListener(e,A,s);var i=()=>{"function"==typeof t.removeEventListener&&t.removeEventListener(e,A,s)};return this.destroys.push(i),i}}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach(e=>e()),this.destroys=[]}}var q=A=>{A.on(d.decoderWorkerInit,()=>{A.debug.log("audioPlayer","listen decoderWorkerInit and set loaded true"),A.loaded=!0}),A.on(d.play,()=>{A.loading=!1}),A._opt.debug&&(Object.keys(d).forEach(t=>{A.on(d[t],e=>{A.debug.log("audioPlayer events",d[t],e)})}),Object.keys(p).forEach(t=>{A.on(p[t],e=>{A.debug.log("audioPlayer event error",p[t],e)})}))};class U extends t{constructor(t){super(),this.player=t,this.playing=!1,this.abortController=new AbortController,this.streamRate=I(e=>{t.emit(d.kBps,(e/1024).toFixed(2))}),this.streamRateInterval=null,t.debug.log("FetchStream","init")}destroy(){this.abort(),this.off(),this.streamRate=null,this.stopStreamRateInterval(),this.player.debug.log("FetchStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval(()=>{this.streamRate&&this.streamRate(0)},1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){var t=1{if(!(e.ok&&200<=e.status&&e.status<=299))return this.player.debug.error("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(p.fetchError,`fetch response status is ${e.status} and ok is `+e.ok);if(this.emit(d.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)e.body.pipeTo(new WritableStream({write:e=>(this.streamRate&&this.streamRate(e.byteLength),s.dispatch(e)),close:()=>{s.close()},abort:e=>{s.close();const t=e.toString();-1===t.indexOf(y)&&-1===t.indexOf(B)&&e.name!==L&&(this.abort(),this.emit(p.fetchError,e))}}));else{this.player.debug.log("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),A=()=>{t.read().then(e=>{var{done:e,value:t}=e;e?s.close():(this.streamRate&&this.streamRate(t.byteLength),s.dispatch(t),A())}).catch(e=>{s.close();const t=e.toString();-1===t.indexOf(y)&&-1===t.indexOf(B)&&e.name!==L&&(this.abort(),this.emit(p.fetchError,e))})};A()}}).catch(e=>{"AbortError"!==e.name&&(s.close(),this.abort(),this.emit(p.fetchError,e))})}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}getStreamType(){return A}}class Z extends t{constructor(t){super(),this.player=t,this.socket=null,this.socketStatus=g,this.wsUrl=null,this.socketDestroyFnList=[],this.streamRate=I(e=>{t.emit(d.kBps,(e/1024).toFixed(2))}),this.streamRateInterval=null,t.debug.log("WebsocketStream","init")}destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debug.log("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval(()=>{this.streamRate&&this.streamRate(0)},1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:A},demux:s}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer";var i=A(this.socket,"open",()=>{t.log("WebsocketStream","socket open"),this.socketStatus=m,this.emit(d.streamSuccess),this.player.emit(d.websocketOpen),this.startStreamRateInterval()}),r=A(this.socket,"message",e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)}),o=A(this.socket,"close",e=>{t.log("WebsocketStream","socket close and code is "+e.code),1006===e.code&&t.error("WebsocketStream","socket close abnormally and code is "+e.code),s.close(),this.socketStatus="close",this.player.emit(d.websocketClose),this.emit(d.streamEnd)}),a=A(this.socket,"error",e=>{t.error("WebsocketStream","socket error",e),this.socketStatus="error",this.emit(p.websocketError,e),s.close(),t.log("WebsocketStream","socket error:",e.isTrusted?"websocket user aborted":"websocket error")});this.socketDestroyFnList.push(i,r,o,a)}_closeWebSocket(){this.socketDestroyFnList.forEach(e=>e()),this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=g,this.streamRate=null}_handleMessage(e){const t=this.player["demux"];t?t.dispatch(e):this.player.debug.warn("WebsocketStream","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=S(),this.wsUrl=e,this._createWebSocket()}sendMessage(e){this.socket?this.socketStatus===m?this.socket.send(e):this.player.debug.error("WebsocketStream","websocket send message error and socket status is "+this.socketStatus):this.player.debug.error("WebsocketStream","websocket send message socket is null")}resetFetchStream(){this._closeWebSocket(),this._createWebSocket()}getStreamType(){return s}}class X extends t{constructor(e){super(),(this.player=e).debug.log("HlsStream","init")}destroy(){this.off(),this.player.debug.log("HlsStream","destroy")}fetchStream(e){const t=this.player["hlsDecoder"];this.player._times.streamStart=S(),t.loadSource(e).then(()=>{this.player.debug.log("HlsStream","loadSource success"),this.emit(d.streamSuccess)}).catch(e=>{this.emit(p.hlsError,e)})}getStreamType(){return"hls"}}class $ extends t{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debug.log("WebrtcStream","init")}destroy(){this.webrctUrl=null,this.off(),this.player.debug.log("WebrtcStream","destroy")}fetchStream(e){const t=this.player["webrtc"];this.player._times.streamStart=S(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),t.loadSource(this.webrctUrl).then(()=>{this.player.debug.log("WebrtcStream","loadSource success"),this.emit(d.streamSuccess)}).catch(e=>{this.emit(p.webrtcError,e)})}getStreamType(){return"webrtc"}}class K extends t{constructor(t){super(),this.player=t,this.transport=null,this.wtUrl=null,this.streamRate=I(e=>{t.emit(d.kBps,(e/1024).toFixed(2))}),this.streamRateInterval=null,t.debug.log("WebTransportLoader","init")}destroy(){this.abort(),this.off(),this.player.debug.log("WebTransportLoader","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval(()=>{this.streamRate&&this.streamRate(0)},1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebTransport(){const e=this.player,{events:{},demux:t}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then(()=>{this.emit(d.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then(e=>{e.readable.pipeTo(new WritableStream(t.input))})}).catch(e=>{this.player.debug.warn("WebTransportLoader","_createWebTransport-ready",e)})}catch(e){this.player.debug.warn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=S(),this.wtUrl=e.replace(/^wt/,"https"),this._createWebTransport()}abort(){if(this.transport)try{this.transport.close(),this.transport=null}catch(e){this.transport=null}}getStreamType(){return"webTransport"}}class Q extends t{constructor(e){super(),this.player=e,this.workUrl=null,e.debug.log("WorkerStream","init")}destroy(){this.workUrl=null,this.off(),this.player.debug.log("WorkerStream","destroy")}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){this.workUrl=e,this.player._times.streamStart=S(),this.player.decoderWorker.workerFetchStream(e)}getStreamType(){return"worker "+(2===this.player._opt.protocol?A:s)}}class ee{constructor(e){return new(ee.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){var{protocol:t,useWasm:A,playType:s,playbackConfig:i}=e;return 2===t?s===o?Q:s===r?A&&!z(e)?Q:U:i.useWCS?U:Q:1===t?s===o?Q:s===r?A&&!z(e)?Q:Z:i.useWCS?Z:Q:3===t?X:4===t?$:5===t?K:void 0}}class te extends t{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null,this.on(d.videoSyncAudio,e=>{this.audioSyncVideoOption=e})}destroy(){this.closeAudio(),this.resetInit(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=w,this.scriptNode=null),this.workletProcessorNode&&(this.workletProcessorNode.port.onmessage=w,this.workletProcessorNode=null),this.audioResumeStateTimeout&&(clearTimeout(this.audioResumeStateTimeout),this.audioResumeStateTimeout=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.off()}resetInit(){this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=f[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(d.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){}initMobileScriptNode(){}initWorkletScriptNode(){}getEngineType(){return""}mute(e){e?(this.isMute||this.player.emit(d.mute,e),this.setVolume(0),this.clear()):(this.isMute&&this.player.emit(d.mute,e),this.setVolume(this.player.lastVolume||.5))}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(this.audioEnabled(!0),e=W(e,0,1),this.gainNode.gain.value=e,this.player.emit(d.volumechange,this.player.volume))}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.workletProcessorNode&&this.workletProcessorNode.disconnect(this.gainNode),this.gainNode&&(this.gainNode.disconnect(this.mediaStreamAudioDestinationNode),this.$audio||this.gainNode.disconnect(this.audioContext.destination))),this.clear()}audioEnabled(e){e?this.isStateSuspended()&&(this.audioContext.resume().then(()=>{this.player.emit(d.audioResumeState,{state:this.audioContext.state,isRunning:this.isStateRunning()})}),this.audioResumeStateTimeout=setTimeout(()=>{clearTimeout(this.audioResumeStateTimeout),this.audioResumeStateTimeout=null,this.isStateSuspended()&&this.player.emit(d.audioResumeState,{state:this.audioContext.state,isRunning:this.isStateRunning()})},1e3)):this.isStateRunning()&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1}resume(){this.playing=!0}setRate(e){}getAudioBufferSize(){return 0}}class Ae{constructor(e,t,A,s){this.player=e,this.audio=t,this.channel=A,this.bufferSize=s}extract(t,e){var A=this.provide(e);for(let e=0;eo){try{for(let e=0;ethis._frameCount)||(e=this.frameCount),this._frameCount-=e,this._position+=e}receiveSamples(e){var t=1=e-1)break e;var a=A+2*r;s[i+2*o]=(1-this.slopeCount)*t[a]+this.slopeCount*t[a+2],s[i+2*o+1]=(1-this.slopeCount)*t[a+1]+this.slopeCount*t[a+3],o+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[A+2*e-2],this.prevSampleR=t[A+2*e-1],o}}function re(){}class oe extends class{constructor(e){this._pipe=e}get pipe(){return this._pipe}get inputBuffer(){return this._pipe.inputBuffer}get outputBuffer(){return this._pipe.outputBuffer}fillInputBuffer(){throw new Error("fillInputBuffer() not overridden")}fillOutputBuffer(){let e=0this._position)throw new RangeError("New position may not be greater than current position");var t=this.outputBufferPosition-(this._position-e);if(t<0)throw new RangeError("New position falls outside of history buffer");this.outputBufferPosition=t,this._position=e}get sourcePosition(){return this._sourcePosition}set sourcePosition(e){this.clear(),this._sourcePosition=e}onEnd(){this.callback()}fillInputBuffer(){var e=0t&&(t=A,e=s);return e}seekBestOverlapPositionStereoQuick(){let t,A,s,i,r,o=0;for(this.preCalculateCorrelationReferenceStereo(),A=Number.MIN_VALUE,t=0,i=0,r=0;o<4;o+=1){let e=0;for(;ae[o][e]&&!((r=i+ae[o][e])>=this.seekLength);)(s=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer))>A&&(A=s,t=r),e+=1;i=t}return t}preCalculateCorrelationReferenceStereo(){let e,t,A=0;for(;A=this.sampleReq;){e=this.seekBestOverlapPosition(),this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),this.overlap(Math.floor(e)),this._outputBuffer.put(this.overlapLength),0<(t=this.seekWindowLength-2*this.overlapLength)&&this._outputBuffer.putBuffer(this._inputBuffer,e+this.overlapLength,t);var t=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(t,t+2*this.overlapLength)),this.skipFract+=this.nominalSkip,e=Math.floor(this.skipFract),this.skipFract-=e,this._inputBuffer.receive(e)}}}function he(e,t){return 1e-10<(t{e()}),this.eventListenList=[]),this.$audio&&(this.$audio.pause(),this.$audio.srcObject=null,this.$audio.parentNode&&this.$audio.parentNode.removeChild(this.$audio),this.$audio=null),this.processor&&(this.processor.destroy(),this.processor=null),this.rateProcessor&&(this.rateProcessor.destroy(),this.rateProcessor=null),this.scriptNodeInterval&&(clearInterval(this.scriptNodeInterval),this.scriptNodeInterval=null),this.defaultPlaybackRate=1,this.playbackRate=1,this.scriptStartTime=0,this.audioBufferSize=0,this.engineType=E,this.player.debug.log("AudioContext","destroy")}isAudioPlaying(){return this.$audio&&R(this.$audio.paused)&&R(this.$audio.ended)&&0!==this.$audio.playbackRate&&0!==this.$audio.readyState}_bindAudioProxy(){const e=this.player.events["proxy"],t=e(this.$audio,"canplay",()=>{this.player.debug.log("AudioContext","canplay"),this._delayPlay&&this._audioElementPlay()});this.eventListenList.push(t)}_getAudioElementReadyState(){let e=0;return e=this.$audio?this.$audio.readyState:e}audioElementPlay(){if(this.$audio){var e=this._getAudioElementReadyState();if(this.player.debug.log("AudioContext","play and readyState: "+e),!(0!==e||Y()&&k()))return this.player.debug.warn("AudioContext","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._audioElementPlay()}}_audioElementPlay(){this.$audio&&this.$audio.play().then(()=>{this._delayPlay=!1,this.player.debug.log("AudioContext","_audioElementPlay success"),setTimeout(()=>{this.isAudioPlaying()||(this.player.debug.warn("AudioContext","play failed and retry play"),this._audioElementPlay())},100),this.isAudioPlaying()&&(this.player.debug.log("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))}).catch(e=>{this.player.debug.error("AudioContext","_audioElementPlay error",e),document.addEventListener("click",this._audioElementPlay.bind(this))})}getAudioBufferSize(){return this.audioBufferSize}get oneBufferDuration(){return this.audioBufferSize/this.audioContext.sampleRate*1e3}get isActiveEngineType(){return this.engineType===C}initProcessor(){this.processor=new Ae(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new ue(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||E;var t=()=>{e=Y()&&function(){var e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}()?C:(!k()||!this.player._opt.supportLockScreenPlayAudio)&&J()?b:E};return this.player._opt.audioEngine?this.player._opt.audioEngine===b&&J()?e=b:this.player._opt.audioEngine===C?e=C:this.player._opt.audioEngine===E?e=E:t():t(),e}getAudioBufferSizeByType(){var e=this.engineType,t=(this.player._opt.hasVideo,this.player._opt.weiXinInAndroidAudioBufferSize);return e!==b&&e===C?t||4800:1024}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===b?this.initWorkletScriptNode():this.engineType===C?this.initIntervalScriptNode():this.engineType===E&&this.initProcessScriptNode(),this.audioElementPlay())}getEngineType(){return this.engineType}isPlaybackRateSpeed(){return this.playbackRate>this.defaultPlaybackRate}initProcessScriptNode(){const e=this.audioContext.createScriptProcessor(this.audioBufferSize,0,this.audioInfo.channels);e.onaudioprocess=e=>{e=e.outputBuffer;this.handleScriptNodeCallback(e)},e.connect(this.gainNode),this.scriptNode=e,this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0}initIntervalScriptNode(){this.scriptStartTime=0;var e=1e3*this.audioBufferSize/this.audioContext.sampleRate;this.scriptNodeInterval=setInterval(()=>{const e=this.audioContext.createBufferSource(),t=this.audioContext.createBuffer(this.audioInfo.channels,this.audioBufferSize,this.audioContext.sampleRate);this.handleScriptNodeCallback(t,()=>{this.scriptStartTime{"init"===e.data.message?(this.audioBufferSize=e.data.audioBufferSize,this.start=e.data.start,this.channels=e.data.channels,this.state=0,this.offset=0,this.samplesArray=[]):"stop"===e.data.message?(this.state=0,this.start=!1,this.offset=0,this.samplesArray=[]):"data"===e.data.message?this.samplesArray.push(e.data.buffer):"zero"===e.data.message&&this.samplesArray.push({left:new Float32Array(this.audioBufferSize).fill(0),right:new Float32Array(this.audioBufferSize).fill(0)})}}process(t,e,A){const s=e[0][0],i=e[0][1];if(0===this.offset&&this.port.postMessage({message:"beep"}),0===this.state)this.state=1;else if(1===this.state&&this.samplesArray.length>=4)this.state=2;else if(2===this.state){const t=this.samplesArray[0];for(let e=0;e{if(this.audioContext){let e=[1];2===this.audioInfo.channels&&(e=[1,1]),this.workletProcessorNode=new AudioWorkletNode(this.audioContext,"worklet-processor",{numberOfOutputs:this.audioInfo.channels,outputChannelCount:e}),this.workletProcessorNode.connect(this.gainNode),this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0,this.workletProcessorNode.port.postMessage({message:"init",audioBufferSize:this.audioBufferSize,start:!0,channels:this.audioInfo.channels}),this.workletProcessorNode.port.onmessage=e=>{this.workletProcessorNode?this.audioContext?this.handleScriptNodeCallback(this.workletProcessorNode,null,!0):this.workletProcessorNode.port.postMessage({message:"zero"}):this.player.debug.error("AudioContext","workletProcessorNode is null")}}else this.player.debug.error("AudioContext","initWorkletScriptNode audioContext is null")})}handleScriptNodeCallback(e,t){let A,s=2A)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${A}, and drop`),void this.clear();this.bufferList.length>t?(e=this.defaultPlaybackRate+.1,this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${t}, speed up, playbackRate is `+e)):this.bufferList.length{this.listenPlaybackPause(e)}),this.player.debug.log("AudioPlaybackContext","init")}destroy(){this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),super.destroy(),this.player.debug.log("AudioPlaybackLoader","destroy")}listenPlaybackPause(e){e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()}initScriptNodeDelay(){var e=this.player._opt.playbackDelayTime;0{this.initScriptNode()},e):this.initScriptNode()}setRate(e){e!==this.defaultPlaybackRate&&this.rateProcessor&&(this.player.debug.log("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class pe extends M{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}play(e,t){R(this.playing)||super.play(e,t)}pause(){this.player.debug.log(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debug.log(this.TAG_NAME,"resume"),this.playing=!0}}class H{constructor(e){return new(H.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return"playbackTF"===e.playType?ce:e.playType===o?pe:e.isHls&&R(e.supportHls265)||e.isWebrtc&&R(e.isWebrtcH265)?de:M}}const N=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&R(k());class ge{constructor(e){this.player=e,this.enabled=!1,N()?(this.player.debug.log("NoSleep","Native Wake Lock API supported."),this._wakeLock=null,this.handleVisibilityChange=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()},document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("fullscreenchange",this.handleVisibilityChange)):(this.player.debug.log("NoSleep","Native Wake Lock API not supported. so use video element."),this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQRChYECGFOAZwEAAAAAABLfEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHYTbuMU6uEElTDZ1OsggGXTbuMU6uEHFO7a1OsghLJ7AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmsirXsYMPQkBNgI1MYXZmNTguNDUuMTAwV0GNTGF2ZjU4LjQ1LjEwMESJiECzmgAAAAAAFlSua0C5rgEAAAAAAABO14EBc8WI9UhIq9EDJPCcgQAitZyDdW5khoVWX1ZQOIOBASPjg4QF9eEA4AEAAAAAAAAbsIIBQLqB8FSwggElVLqB8FWwiFW3gQFVuIECrgEAAAAAAABZ14ECc8WIUEWPA9J/iJ6cgQAitZyDdW5khoZBX09QVVNWqoNjLqBWu4QExLQAg4EC4ZGfgQG1iEDncAAAAAAAYmSBIGOik09wdXNIZWFkAQE4AYC7AAAAAAASVMNnQcJzcwEAAAAAAACXY8CAZ8gBAAAAAAAAFUWji01BSk9SX0JSQU5ERIeEaXNvbWfIAQAAAAAAABZFo41NSU5PUl9WRVJTSU9ORIeDNTEyZ8gBAAAAAAAAJ0WjkUNPTVBBVElCTEVfQlJBTkRTRIeQaXNvbWlzbzJhdmMxbXA0MWfIAQAAAAAAABpFo4dFTkNPREVSRIeNTGF2ZjU4LjQ1LjEwMHNzAQAAAAAAAIZjwItjxYj1SEir0QMk8GfIAQAAAAAAAB5Fo4xIQU5ETEVSX05BTUVEh4xWaWRlb0hhbmRsZXJnyAEAAAAAAAAhRaOHRU5DT0RFUkSHlExhdmM1OC45MS4xMDAgbGlidnB4Z8iiRaOIRFVSQVRJT05Eh5QwMDowMDowNS4wMDcwMDAwMDAAAHNzAQAAAAAAAIdjwItjxYhQRY8D0n+InmfIAQAAAAAAAB5Fo4xIQU5ETEVSX05BTUVEh4xTb3VuZEhhbmRsZXJnyAEAAAAAAAAiRaOHRU5DT0RFUkSHlUxhdmM1OC45MS4xMDAgbGlib3B1c2fIokWjiERVUkFUSU9ORIeUMDA6MDA6MDUuMDE4MDAwMDAwAAAfQ7Z1T2TngQCjh4IAAID4//6jQKSBAAeAMBIAnQEqQAHwAABHCIWFiIWEiAICAAYWBPcGgWSfa9ubJzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh69AD+/6tQgKOHggAVgPj//qOHggApgPj//qOHggA9gPj//qOHggBRgPj//qOHggBlgPj//qOegQBrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCAHmA+P/+o4eCAI2A+P/+o4eCAKGA+P/+o4eCALWA+P/+o4eCAMmA+P/+o56BAM8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IA3YD4//6jh4IA8YD4//6jh4IBBYD4//6jh4IBGYD4//6jh4IBLYD4//6jnoEBMwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggFBgPj//qOHggFVgPj//qOHggFpgPj//qOHggF9gPj//qOHggGRgPj//qOegQGXANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCAaWA+P/+o4eCAbmA+P/+o4eCAc2A+P/+o4eCAeGA+P/+o4eCAfWA+P/+o56BAfsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ICCYD4//6jh4ICHYD4//6jh4ICMYD4//6jh4ICRYD4//6jh4ICWYD4//6jnoECXwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggJtgPj//qOHggKBgPj//qOHggKVgPj//qOHggKpgPj//qOHggK9gPj//qOegQLDANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCAtGA+P/+o4eCAuWA+P/+o4eCAvmA+P/+o4eCAw2A+P/+o4eCAyGA+P/+o56BAycA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IDNYD4//6jh4IDSYD4//6jh4IDXYD4//6jh4IDcYD4//6jh4IDhYD4//6jnoEDiwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggOZgPj//qOHggOtgPj//qOHggPBgPj//qOHggPVgPj//qOHggPpgPj//qOegQPvANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCA/2A+P/+o4eCBBGA+P/+o4eCBCWA+P/+o4eCBDmA+P/+o4eCBE2A+P/+o56BBFMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IEiID4//6jh4IEnID4//6jh4IEsID4//6jnoEEtwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggTEgPj//qOHggTYgPj//qOHggTsgPj//qOHggUAgPj//qOHggUUgPj//qOegQUbANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBSiA+P/+o4eCBTyA+P/+o4eCBVCA+P/+o4eCBWSA+P/+o4eCBXiA+P/+o56BBX8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IFjID4//6jh4IFoID4//6jh4IFtID4//6jh4IFyID4//6jh4IF3ID4//6jnoEF4wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggXwgPj//qOHggYEgPj//qOHggYYgPj//qOHggYsgPj//qOHggZAgPj//qOegQZHANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBlSA+P/+o4eCBmiA+P/+o4eCBnyA+P/+o4eCBpCA+P/+o4eCBqSA+P/+o56BBqsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IGuID4//6jh4IGzID4//6jh4IG4ID4//6jh4IG9ID4//6jh4IHCID4//6jnoEHDwDRAgAFEBAUYABhYL/QACIAEM1+tck+ccwAAKOHggccgPj//qOHggcwgPj//qOHggdEgPj//qOHggdYgPj//qOHggdsgPj//qOegQdzANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCB4CA+P/+o4eCB5SA+P/+o4eCB6iA+P/+o4eCB7yA+P/+o4eCB9CA+P/+o56BB9cA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IH5ID4//6jh4IH+ID4//6jh4IIDID4//6jh4IIIID4//6jh4IINID4//6jnoEIOwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgghIgPj//qOHgghcgPj//qOHgghwgPj//qOHggiEgPj//qOegQifANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCMCA+P/+o4eCCNSA+P/+o4eCCOiA+P/+o4eCCPyA+P/+o56BCQMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IJEID4//6jh4IJJID4//6jh4IJOID4//6jh4IJTID4//6jh4IJYID4//6jnoEJZwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggl0gPj//qOHggmIgPj//qOHggmcgPj//qOHggmwgPj//qOHggnEgPj//qOegQnLANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCdiA+P/+o4eCCeyA+P/+o4eCCgCA+P/+o4eCChSA+P/+o4eCCiiA+P/+o56BCi8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IKPID4//6jh4IKUID4//6jh4IKZID4//6jh4IKeID4//6jh4IKjID4//6jnoEKkwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggqggPj//qOHggq0gPj//qOHggrIgPj//qOHggrcgPj//qOHggrwgPj//qOegQr3ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCwSA+P/+o4eCCxiA+P/+o4eCCyyA+P/+o4eCC0CA+P/+o4eCC1SA+P/+o56BC1sA0QIABRAQFGAAYWC/0AAiABDNfrXJPnHMAACjh4ILaID4//6jh4ILfID4//6jh4ILkID4//6jh4ILpID4//6jh4ILuID4//6jnoELvwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggvMgPj//qOHggvggPj//qOHggv0gPj//qOHggwIgPj//qOHggwcgPj//qOegQwjANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDDCA+P/+o4eCDESA+P/+o4eCDFiA+P/+o4eCDGyA+P/+o4eCDICA+P/+o56BDIcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IMlID4//6jh4IMqID4//6jh4IMvID4//6jh4IM0ID4//6jnoEM6wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg0MgPj//qOHgg0ggPj//qOHgg00gPj//qOHgg1IgPj//qOegQ1PANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDVyA+P/+o4eCDXCA+P/+o4eCDYSA+P/+o4eCDZiA+P/+o4eCDayA+P/+o56BDbMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4INwID4//6jh4IN1ID4//6jh4IN6ID4//6jh4IN/ID4//6jh4IOEID4//6jnoEOFwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg4kgPj//qOHgg44gPj//qOHgg5MgPj//qOHgg5ggPj//qOHgg50gPj//qOegQ57ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDoiA+P/+o4eCDpyA+P/+o4eCDrCA+P/+o4eCDsSA+P/+o4eCDtiA+P/+o56BDt8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IO7ID4//6jh4IPAID4//6jh4IPFID4//6jh4IPKID4//6jh4IPPID4//6jnoEPQwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg9QgPj//qOHgg9kgPj//qOHgg94gPj//qOHgg+MgPj//qOHgg+ggPj//qOegQ+nANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCD7SA+P/+o4eCD8iA+P/+o4eCD9yA+P/+o4eCD/CA+P/+o4eCEASA+P/+o56BEAsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IQGID4//6jh4IQLID4//6jh4IQQID4//6jh4IQVID4//6jh4IQaID4//6jnoEQbwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghB8gPj//qOHghCQgPj//qOHghCkgPj//qOHghC4gPj//qOHghDMgPj//qOegRDTANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEOCA+P/+o4eCEPSA+P/+o4eCEQiA+P/+o56BETcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IRQ4D4//6jh4IRV4D4//6jh4IRa4D4//6jh4IRf4D4//6jh4IRk4D4//6jnoERmwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghGngPj//qOHghG7gPj//qOHghHPgPj//qOHghHjgPj//qOHghH3gPj//qOegRH/ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEguA+P/+o4eCEh+A+P/+o4eCEjOA+P/+o4eCEkeA+P/+o4eCEluA+P/+o56BEmMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ISb4D4//6jh4ISg4D4//6jh4ISl4D4//6jh4ISq4D4//6jh4ISv4D4//6jnoESxwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghLTgPj//qOHghLngPj//qOHghL7gPj//qOHghMPgPj//qOHghMjgPj//qOegRMrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEzeA+P/+o4eCE0uA+P/+o4eCE1+A+P/+o4eCE3OA+P/+oAEAAAAAAAAPoYeCE4cA+P/+daKDB/KBHFO7a5G7j7OBB7eK94EB8YIDX/CBDA=="),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACORtZGF03gIATGF2YzU4LjM1LjEwMAACMEAOAAACcQYF//9t3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MSByMzAyNyA0MTIxMjc3IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTAgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTcgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0wIHdlaWdodHA9MCBrZXlpbnQ9MjUwIGtleWludF9taW49MTAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAADvZYiED/JigADD7JycnJycnJycnJycnJycnJycnJ11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111114BGCAHARggBwEYIAcBGCAHARggBwAAAAdBmjgf4BLYARggBwEYIAcBGCAHARggBwAAAAdBmlQH+AS2ARggBwEYIAcBGCAHARggBwAAAAdBmmA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZrAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0Ga4D/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbAD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbID/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm0A/wCWwARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwEYIAcAAAAHQZuAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0Gb4D/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmiA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmkA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZpgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmwA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtgP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbgD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm+A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcAAAAHQZogP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaQD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GaYD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GagD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmqA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwAAAAdBm4A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBm6A/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZvAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZvgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZoAO8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaIDfAJbABGCAHARggBwEYIAcBGCAHAAAMxm1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAABOgAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAPLdHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAABOIAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAElVVUA8AAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAATiAAAAAAAAQAAAAADQ21kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAKAAAAMgAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAu5taW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAKuc3RibAAAAKpzdHNkAAAAAAAAAAEAAACaYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAFAAPAASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADRhdmNDAULAC//hABxnQsAL2QFB+/8ACwAMEAAAAwAQAAADAUDxQqSAAQAFaMuDyyAAAAAQcGFzcAAAAAsAAAAMAAAAGHN0dHMAAAAAAAAAAQAAADIAAAQAAAAAFHN0c3MAAAAAAAAAAQAAAAEAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAA3HN0c3oAAAAAAAAAAAAAADIAAANoAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAANhzdGNvAAAAAAAAADIAAABFAAADwQAAA9wAAAP3AAAEFgAABDEAAARMAAAEawAABIYAAAShAAAEwAAABNcAAATuAAAFDQAABSgAAAVDAAAFYgAABX0AAAWYAAAFtwAABdIAAAXtAAAGBAAABh8AAAY6AAAGWQAABnQAAAaPAAAGrgAABskAAAbkAAAHAwAABx4AAAcxAAAHUAAAB2sAAAeGAAAHpQAAB8AAAAfbAAAH+gAACBUAAAgwAAAITwAACGIAAAh9AAAInAAACLcAAAjSAAAI8QAACCV0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAAE6AAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAABOIAAAEAAABAAAAAAedbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAACsRAADYVRVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAAHSG1pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAHDHN0YmwAAABqc3RzZAAAAAAAAAABAAAAWm1wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAACsRAAAAAAANmVzZHMAAAAAA4CAgCUAAgAEgICAF0AVAAAAAAENiAAABVQFgICABRIIVuUABoCAgAECAAAAYHN0dHMAAAAAAAAACgAAAC8AAAQAAAAAAQAACtUAAAAsAAAEAAAAAAEAAArWAAAALAAABAAAAAABAAAK1QAAACwAAAQAAAAAAQAACtUAAAAaAAAEAAAAAAEAAAH/AAABzHN0c2MAAAAAAAAAJQAAAAEAAAABAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAEAAAAAQAAAAUAAAAFAAAAAQAAAAYAAAAEAAAAAQAAAAgAAAAFAAAAAQAAAAkAAAAEAAAAAQAAAAsAAAAFAAAAAQAAAAwAAAADAAAAAQAAAA4AAAAFAAAAAQAAAA8AAAAEAAAAAQAAABEAAAAFAAAAAQAAABIAAAAEAAAAAQAAABQAAAAFAAAAAQAAABUAAAAEAAAAAQAAABcAAAADAAAAAQAAABgAAAAEAAAAAQAAABoAAAAFAAAAAQAAABsAAAAEAAAAAQAAAB0AAAAFAAAAAQAAAB4AAAAEAAAAAQAAACAAAAAFAAAAAQAAACEAAAAEAAAAAQAAACIAAAACAAAAAQAAACMAAAAFAAAAAQAAACQAAAAEAAAAAQAAACYAAAAFAAAAAQAAACcAAAAEAAAAAQAAACkAAAAFAAAAAQAAACoAAAAEAAAAAQAAACwAAAAFAAAAAQAAAC0AAAACAAAAAQAAAC4AAAAEAAAAAQAAAC8AAAAFAAAAAQAAADAAAAAEAAAAAQAAADIAAAAFAAAAAQAAADMAAAAEAAAAAQAAA1xzdHN6AAAAAAAAAAAAAADSAAAAFQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA3HN0Y28AAAAAAAAAMwAAADAAAAOtAAADzAAAA+cAAAQCAAAEIQAABDwAAARXAAAEdgAABJEAAASsAAAEywAABOIAAAT5AAAFGAAABTMAAAVOAAAFbQAABYgAAAWjAAAFwgAABd0AAAX4AAAGDwAABioAAAZFAAAGZAAABn8AAAaaAAAGuQAABtQAAAbvAAAHDgAABykAAAc8AAAHWwAAB3YAAAeRAAAHsAAAB8sAAAfmAAAIBQAACCAAAAg7AAAIWgAACG0AAAiIAAAIpwAACMIAAAjdAAAI/AAAABpzZ3BkAQAAAHJvbGwAAAACAAAAAf//AAAAHHNiZ3AAAAAAcm9sbAAAAAEAAADSAAAAAQAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTguMjAuMTAw"),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),document.querySelector("body").append(this.noSleepVideo),this.handleNoSleepVideoTimeUpdate=()=>{this.noSleepVideo&&4{this._wakeLock=e,this.enabled=!0,t.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",()=>{t.log("wakeLock","Wake Lock released.")})}).catch(e=>{throw this.enabled=!1,t.warn("wakeLock",e.name+", "+e.message),e}):this.noSleepVideo.play().then(e=>(t.log("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,e)).catch(e=>{throw t.warn("wakeLock",`noSleepVideo ${e.name}, `+e.message),this.enabled=!1,e})}disable(){N()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debug.log("wakeLock","Disabling wake lock.")}}class me{TAG_NAME="decoderAudioWorker";constructor(e){this.player=e,this.destroyResolve=null;let t=this.player._opt.decoder;if(0===t.indexOf("http")&&this.player._opt.isDecoderUseCDN){const e=new Blob([`importScripts("${t}")`],{type:"application/javascript"});t=window.URL.createObjectURL(e)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise((e,t)=>{this.player.loaded?(this.player.debug.log(this.TAG_NAME,"has loaded and post message to destroy"),this.decoderWorker?(this.decoderWorker.postMessage({cmd:"close"}),this.destroyResolve=e):(this.player.debug.warn(this.TAG_NAME,"has loaded but decoderWorker is null and destroy directly"),this._destroy(),e())):(this.player.debug.log(this.TAG_NAME,"has not loaded and destroy directly"),this._destroy(),e())})}_destroy(){this.decoderWorker&&(this.decoderWorker.terminate(),this.decoderWorker=null),this.player.debug.log("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null)}_initDecoderWorker(){const{debug:A,events:{}}=this.player;this.decoderWorker.onmessage=e=>{var t=e.data;switch(t.cmd){case i:A.log("decoderWorker","onmessage:",i),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(d.load),this.player.emit(d.decoderWorkerInit);break;case l:A.log("decoderWorker","onmessage:",l,t.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:t.code});break;case h:if(A.log("decoderWorker","onmessage:",h,`channels:${t.channels},sampleRate:`+t.sampleRate),2{this._destroyed=!0,this.emit("destroy"),this.off(),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.decoderWorker?this.decoderWorker.destroy().then(()=>{this.decoderWorker=null,this._destroy(),e()}):(this._destroy(),e())})}_destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._destroyed=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._resetStats(),this._audioTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._tempWorkerStats=null,this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.debug.log(this.TAG_NAME,"destroy end"),this._opt=_()}_resetStats(){this._startBpsTime=null,this._playingStartTimestamp=null,this._historyAbpsList=[],this._stats={abps:0,ts:0,buf:0,audioBufferTs:0}}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(d.playing,e),this.emit(d.volumechange,this.volume),e?this.emit(d.play):this.emit(d.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume):this.debug.warn(this.TAG_NAME,"set volume error, audio is null"))}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(d.loading,this._loading))}get loading(){return this._loading}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}get isDebug(){return P(this._opt.debug)}isDestroyed(){return this._destroyed}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise((e,t)=>{this.audio||(this.audio=new H(this)),this.stream||(this.stream=new ee(this)),this.decoderWorker?this.loaded?e():this.once(d.decoderWorkerInit,()=>{this.loaded=!0,e()}):(this.decoderWorker=new me(this),this.once(d.decoderWorkerInit,()=>{this.loaded=!0,e()}))})}play(){let A=0{if(!A&&!this._opt.url)return t("url is empty");this.loading=!0,this.playing=!1,this._times.playInitStart=S(),A=A||this._opt.url,this._opt.url=A,this.clearCheckHeartTimeout(),this.init().then(()=>{this._times.playStart=S(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream&&(this.stream.once(p.fetchError,e=>{this.emitError(p.fetchError,e)}),this.stream.once(p.websocketError,e=>{this.emitError(p.websocketError,e)}),this.stream.once(d.streamEnd,()=>{this.emit(d.streamEnd)}),this.stream.once(d.streamSuccess,()=>{e(),this._times.streamResponse=S(),this.checkStatsInterval(),this.debug.log(this.TAG_NAME,"stream success and start play")}),this.stream.fetchStream(A))}).catch(()=>{t()})})}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout(()=>{this.playing?this.debug.warn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is `+this.playing):this.isDestroyed()?this.debug&&this.debug.warn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debug.warn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(d.timeout,d.loadingTimeout),this.emit(d.loadingTimeout))},1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debug.log(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}checkStatsInterval(){this.debug.log(this.TAG_NAME,"checkStatsInterval"),this._checkStatsInterval=setInterval(()=>{this.updateStats()},1e3)}clearCheckHeartTimeout(){this.debug.log(this.TAG_NAME,"clearCheckHeartTimeout"),this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}clearStatsInterval(){this.debug.log(this.TAG_NAME,"clearStatsInterval"),this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}updateStats(){var e=0{const A=()=>{this.stream&&(this.stream.destroy(),this.stream=null),this.off(),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this._resetStats(),this.loading=!1,this.playing=!1,this.audio&&this.audio.pause(),this._audioTimestamp=0,this._hasLoaded=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},q(this)};this.decoderWorker?this.decoderWorker.destroy().then(()=>{this.decoderWorker=null,A(),e()}).catch(e=>{this.debug.error(this.TAG_NAME,"pause() decoderWorker destroy error",e),t(e)}):(A(),setTimeout(()=>{e()},0))})}handleRender(){this.isDestroyed()?this.debug&&this.debug.warn("player","handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.emit(d.start),this.loading=!1),this.playing||(this.playing=!0))}updateHistoryAbpsList(e){this._historyAbpsList.length>this._opt.heartTimeout&&this._historyAbpsList.shift(),this._historyAbpsList.push(e),this.isHistoryAbpsListAllZero()&&this.checkHeartTimeout$2()}isHistoryAbpsListAllZero(){let t=!0;if(t=this._historyAbpsList.length{if(void 0===t[e])throw new Error(`JbPro option "${e}" can not be undefined`)});var e=_();let A=Object.assign({},e,t);T(A.videoBuffer)&&(A.videoBuffer=1e3*Number(A.videoBuffer)),T(A.timeout)&&(v(A.loadingTimeout)&&(A.loadingTimeout=A.timeout),v(A.heartTimeout)&&(A.heartTimeout=A.timeout)),this._opt=A,this._destroyed=!1,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.debug=new G(this),this.events=new V(this),this._initAudioPlayer(),this.debug.log(this.TAG_NAME,'init success and version is "7-3-2023"'),console.log('JbProAudio version is "7-3-2023"')}destroy(){return new Promise((e,t)=>{this.debug.log(this.TAG_NAME,"destroy()"),this._destroyed=!0,this.off(),this.player?this.player.destroy().then(()=>{this.player=null,this._destroy(),e()}).catch(()=>{t()}):(this._destroy(),e())})}_destroy(){this.events&&(this.events.destroy(),this.events=null),this.debug&&this.debug.log("JbPro","destroy end"),this._resetOpt(),this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0}_initAudioPlayer(){this.player=new fe(this._opt),this.debug.log(this.TAG_NAME,"_initPlayer",this.player.getOption()),this._bindEvents()}_resetOpt(){this._opt=_()}_bindEvents(){Object.keys(c).forEach(t=>{this.player.on(c[t],e=>{this.emit(t,e)})})}_play(){let r=0{var s,i=0===r.indexOf("http")?2:1;if(-1!==r.indexOf(".flv")&&!this._opt.isFlv&&(this._opt.isFlv=!0),s=this._opt.isFlv?"flv":"m7s",!i||!s)return A(`play protocol is ${i}, demuxType is `+s);this.player.updateOption({protocol:i,demuxType:s,isFlv:this._opt.isFlv}),this.player.once(p.fetchError,e=>{this.emit(d.crashLog,this._getCrashLog(p.fetchError,e)),this.debug.log(this.TAG_NAME,"fetch error and reset player"),this.pause().then(()=>{this.emit(d.playFailedAndPaused,p.fetchError)}).catch(e=>{this.debug.error(this.TAG_NAME,"fetch error and pause",e)})}),this.player.once(d.streamEnd,e=>{this.emit(d.crashLog,this._getCrashLog(d.streamEnd,e)),this.debug.log(this.TAG_NAME,"streamEnd and reset player"),this.pause().then(()=>{this.emit(d.playFailedAndPaused,d.streamEnd)}).catch(e=>{this.debug.error(this.TAG_NAME,"streamEnd and pause",e)})}),this.player.once(p.websocketError,e=>{this.emit(d.crashLog,this._getCrashLog(p.websocketError,e)),this.debug.log(this.TAG_NAME,"websocketError and reset player"),this.pause().then(()=>{this.emit(d.playFailedAndPaused,p.websocketError)}).catch(e=>{this.debug.error(this.TAG_NAME,"websocketError and pause",e)})}),this.player.on(d.delayTimeout,e=>{this.emit(d.crashLog,this._getCrashLog(d.delayTimeout,e)),this.isDestroyed()?this.debug.log(this.TAG_NAME,"delay timeout but player is destroyed"):this.pause().then(()=>{var e;this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{}).catch(e=>{this.debug.error(this.TAG_NAME,"delay timeout replay error",e)}))):(this.emit(d.playFailedAndPaused,d.delayTimeout),this.emit(d.delayTimeoutRetryEnd),this.debug.warn(this.TAG_NAME,`delayTimeoutRetryEnd and + opt.heartTimeout is ${this.player&&this.player._opt.heartTimeout} and + opt.heartTimeoutReplay is ${this.player&&this.player._opt.heartTimeoutReplay} and + opt.heartTimeoutReplayTimes is ${this.player&&this.player._opt.heartTimeoutReplayTimes},and + local._heartTimeoutReplayTimes is `+this._heartTimeoutReplayTimes))}).catch(e=>{this.debug.error(this.TAG_NAME,"delay timeout and pause error",e)})}),this.player.on(d.loadingTimeout,t=>{this.emit(d.crashLog,this._getCrashLog(d.loadingTimeout,t)),this.isDestroyed()?this.debug.log(this.TAG_NAME,"loading timeout but player is destroyed"):this.pause().then(()=>{var t;this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{}).catch(()=>{this.debug.error("Jessibuca","loading timeout replay error",e)}))):(this.emit(d.playFailedAndPaused,d.loadingTimeout),this.emit(d.loadingTimeoutRetryEnd))}).catch(e=>{this.debug.error(this.TAG_NAME,"loading timeout and pause error",e)})}),this.player.play(r).then(()=>{t()}).catch(e=>{this.debug.error(this.TAG_NAME,"hasLoaded and play error",e),this.emit(d.crashLog,this._getCrashLog("hasLoaded and play error",e)),this.player.pause().then(()=>{A(e)}).catch(e=>{this.debug.error(this.TAG_NAME,"hasLoaded and play error and next pause error",e)})})})}isDestroyed(){return this._destroyed}play(){let A=0(this.debug.log(this.TAG_NAME,"play() "+A),A||this._opt.url?(A&&(A=(""+A).trim(),this._opt.url=A),this.player?void(this.player.playing||this.player.loading?(this.debug.warn(this.TAG_NAME,`play() and player is playing ${this.player.playing} or loading ${this.player.loading} and pause to play`),this.player.pause().then(()=>{this._play(this._opt.url).then(()=>{e()}).catch(e=>{t(e)})})):this._play(this._opt.url).then(()=>{e()}).catch(e=>{t(e)})):t("player is null")):(this.emit(d.error,p.playError),void t("url is null and this._opt.url is null"))))}mute(){this.debug.log(this.TAG_NAME,"mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debug.log(this.TAG_NAME,"cancelMute()"),this.player&&this.player.mute(!1)}pause(){return new Promise((t,A)=>{this.debug.log(this.TAG_NAME,"pause()"),this.player?this.player.pause().then(e=>{this._bindEvents(),t(e)}).catch(e=>{A(e)}):A("player is null")})}setVolume(e){this.debug.log(this.TAG_NAME,"setVolume() "+e),this.player&&(this.player.volume=e)}getVolume(){let e=null;return this.player&&(e=this.player.volume,e=parseFloat(e).toFixed(2)),e}setTimeout(e){this.debug.log(this.TAG_NAME,"setTimeout() "+e),e=Number(e),this.player&&this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}audioResume(){this.debug.log(this.TAG_NAME,"audioResume()"),this.player&&this.player.audio?this.player.audio.audioEnabled(!0):this.debug.warn(this.TAG_NAME,"audioResume() player is not init")}setDebug(e){this.debug.log(this.TAG_NAME,"setDebug() "+e),this.player?this.player.updateOption({debug:!!e}):this.debug.warn(this.TAG_NAME,"setDebug() player is not init")}_getCrashLog(t){var A=11?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),o=1;o32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Dr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],xr=Dr,Rr=Dr;function Lr(e){let{profile:t,sampleRate:i,channel:s}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|s<<3])}function Pr(e){return Br(e)&&e[1]===gs}function Br(e){return e[0]>>4===vt}function Ir(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}function Mr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return 1024*t/e}const Ur=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Fr(e){let t=new Uint8Array(e),i=null,s=0,r=0,o=0,a=null;if(s=r=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=Ur.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=Ur[o],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===s&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let d=self.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?o>=6?(s=5,i=new Array(4),a=o-3):(s=2,i=new Array(2),a=o):-1!==d.indexOf("android")?(s=2,i=new Array(2),a=o):(s=5,a=o,i=new Array(4),o>=6?a=o-3:1===l&&(s=2,i=new Array(2),a=o)),i[0]=s<<3,i[0]|=(15&o)>>>1,i[1]=(15&o)<<7,i[1]|=(15&l)<<3,5===s&&(i[1]|=(15&a)>>>1,i[2]=(1&a)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:s,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}class Or{constructor(e){this.buffer=e,this.buflen=e.length,this.bufpos=0,this.bufoff=0,this.iserro=!1}read(e){let t=0,i=0;for(;e;){if(e<0||this.bufpos>=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,o=1&e[i+1],a=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,d=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+d>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let h=1===o?7:9,c=d-h;i+=h;let u=this.findNextSyncwordOffset(i+c);if(this.current_syncword_offset_=u,0!==s&&1!==s||0!==r)continue;let p=e.subarray(i,i+c);t={},t.audio_object_type=a+1,t.sampling_freq_index=n,t.sampling_frequency=xr[n],t.channel_config=l,t.data=p}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Hr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let s=0;s<=t;s++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let s=this.current_syncword_offset_,r=(31&t[s+1])<<8|t[s+2];if(s+3+r>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new Cr(t.subarray(s+3,s+3+r)),a=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(s+3+r),o.destroy();continue}a=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,i=o.readBits(5);t-=5;let s=o.readBits(4);t-=4;let r=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let n=o.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let l=o.readBool();if(l)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),a={},a.audio_object_type=i,a.sampling_freq_index=s,a.sampling_frequency=xr[a.sampling_freq_index],a.channel_config=r,a.other_data_present=l}let n=0;for(;;){let e=o.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function $r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const i=e.length,s=[];let r,o=0;for(;o+t>>=8),o+=t,r){if(o+r>i)break;s.push(e.subarray(o,o+r)),o+=r}return s}function Jr(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const s=new Uint8Array(t+4);return s.set(i,0),s.set(e,4),s}function qr(){}function Kr(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let s=0;for(;!t&&s0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),s=t[0].replace("data:","").replace(";base64","");let r=i.length,o=new Uint8Array(r);for(;r--;)o[r]=i.charCodeAt(r);return new File([o],"file",{type:s})}function Xr(){return(new Date).getTime()}function Zr(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function eo(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{eo(e,i,t[i])})),e.style[t]=i,e}function to(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const s=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(s):s}function io(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function so(e){let t=0,i=io();return s=>{if(!_o(s))return;t+=s;const r=io(),o=r-i;o>=1e3&&(e(t/o*1e3),i=r,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();const ro='"6-18-2024"',oo=!1;function ao(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function no(){return/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase())}function lo(){return!(ao()||no())}function ho(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function co(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function uo(){const e=window.navigator.userAgent.toLowerCase()||"",t={type:"",version:""},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let s in i)if(i[s]){let i="";if("IE"===s){const t=e.match(/(msie\s|trident.*rv:)([\w.]+)/);t&&t.length>2&&(i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2])}else if("Chrome"===s){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(s="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===s){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===s){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===s){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===s){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===s){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=s,t.version=parseInt(i)}return t}function po(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function fo(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function mo(e,t){if(0===arguments.length)return null;var i,s=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"==typeof e?i=e:(10===(""+e).length&&(e=1e3*parseInt(e)),e=+e,i=new Date(e));var r={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()},o=s.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=r[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}));return o}function go(){return"VideoFrame"in window}function yo(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Ao(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function bo(e,t){let i,s,r=!1;return function o(){for(var a=arguments.length,n=new Array(a),l=0;l{r=!1,i&&(o.apply(s,i),i=null,s=null)}),t)}}function vo(e){if(null==e||""==e)return"0 Bytes";const t=new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");let i=0;const s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+t[i]}function _o(e){return"[object Number]"===Object.prototype.toString.call(e)}function So(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ci)||self.MediaSource.isTypeSupported(ui)||self.MediaSource.isTypeSupported(pi)||self.MediaSource.isTypeSupported(fi)||self.MediaSource.isTypeSupported(mi))&&(e=!0),e}function wo(){const e=uo();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Eo(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function To(){let e=!1;return"MediaStream"in window&&(e=!0),e}function ko(e,t){let i=window.URL.createObjectURL(t),s=window.document.createElement("a");s.download=e,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),po()?1e3:0)}function Co(e){return null==e}function Do(e){return!0===e||!1===e}function xo(e){return!Co(e)}function Ro(e){let t={left:"",right:"",top:"",bottom:"",opacity:1,backgroundColor:"",image:{src:"",width:"100",height:"60"},text:{content:"",fontSize:"14",color:"#000",width:"",height:""},rect:{color:"green",lineWidth:2,width:"",height:"",fill:"",fillOpacity:.2},line:{x1:"",y1:"",x2:"",y2:"",color:"green",lineWidth:2},polygon:{color:"green",lineWidth:2,list:[],fill:"",fillOpacity:.2},html:""};const i=Object.assign(t.image,e.image||{}),s=Object.assign(t.text,e.text||{}),r=Object.assign(t.rect,e.rect||{}),o=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:s,rect:r,line:o}),t}function Lo(e,t){let i={container:e||"",text:"",opacity:"",angle:"",color:"",fontSize:"",fontFamily:""};return i=Object.assign(i,t),{watermark_parent_node:i.container,watermark_alpha:i.opacity,watermark_angle:i.angle,watermark_fontsize:i.fontSize,watermark_color:i.color,watermark_font:i.fontFamily,watermark_txt:i.text}}function Po(e,t){return new Promise(((i,s)=>{let r=Ro(t);if(!r.image.src&&!r.text.content)return i(e);let o=document.createElement("canvas");o.width=t.width,o.height=t.height;let a=o.getContext("2d");a.imageSmoothingEnabled=!0,a.imageSmoothingEnabled&&(a.imageSmoothingQuality="high");let n=0,l=0;_o(r.left)?n=r.left:_o(r.right)&&(n=o.width-r.right),_o(r.top)?l=r.top:_o(r.bottom)&&(l=o.height-r.bottom);const d=new Image;d.src=e,d.onload=()=>{if(a.drawImage(d,0,0),r.image&&r.image.src){const e=new Image;e.src=r.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=r.image.width,a.drawImage(e,n,l,r.image.width,r.image.height),i(o.toDataURL(t.format,t.quality))},e.onerror=e=>{s()}}else r.text&&r.text.content&&(a.font=r.text.fontSize+"px 宋体",a.fillStyle=r.text.color,a.textAlign="right",a.fillText(r.text.content,n,l),i(o.toDataURL(t.format,t.quality)))},d.onerror=e=>{s(e)}}))}function Bo(e){var t,i=0;if(0===e.length)return i;for(t=0;t{if(!t.copyright)return i(e);let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let o=r.getContext("2d");o.imageSmoothingEnabled=!0,o.imageSmoothingEnabled&&(o.imageSmoothingQuality="high");const a=new Image;a.src=e,a.onload=()=>{o.drawImage(a,0,0);const e=Bo(t.copyright),s=o.getImageData(0,0,r.width,r.height);!function(e,t){for(var i=e.data,s=0,r=0;r<32;r++){var o=t>>r&1,a=254&i[s]|o;i[s]=a,s+=4}}(s,e),o.putImageData(s,0,0),i(r.toDataURL(t.format,t.quality))},a.onerror=e=>{s(e)}}))}function Mo(e){var t;if(e>-1){var i=Math.floor(e/3600),s=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function Uo(e,t){let i="";if(e>-1){const s=Math.floor(e/60)%60;let r=e%60;r=Math.round(r),i=s<10?"0"+s+":":s+":",r<10&&(i+="0"),i+=r,Co(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function Fo(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let s=Math.floor(e/60)%60,r=e%60;s=Math.round(s),t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",r<10&&(t+="0"),t+=r}return t}function Oo(e,t){const i=Math.floor(t/60)%60,s=Math.floor(t%60);return new Date(e).setHours(i,s,0,0)}function No(e,t){const i=Math.floor(t/60/60)%60,s=Math.floor(t/60)%60,r=t%60;return new Date(e).setHours(i,s,r,0)}function jo(e){return(""+e).length}function zo(e){return e&&0===Object.keys(e).length}function Go(e){return!zo(e)}function Vo(e){return"string"==typeof e}const Ho=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},Wo=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function $o(e){const t=e||window.event;return t.target||t.srcElement}function Jo(){return co()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function qo(e){return"function"==typeof e}function Ko(e){if(ao()){let t=0,i=0;if(1===e.touches.length){let s=e.touches[0];t=s.clientX,i=s.clientY}return{posX:t,posY:i}}let t=0,i=0;const s=e||window.event;return s.pageX||s.pageY?(t=s.pageX,i=s.pageY):(s.clientX||s.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function Yo(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function Qo(e){let t=ua(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&ua(e.demuxUseWorker);return!!(ua(t)&&e.useMSE&&e.mseDecodeAudio&&ua(e.demuxUseWorker))||(!!(ua(t)&&e.useWCS&&e.wcsDecodeAudio)||t)}function Xo(e){let t=null,i=31&e[0];return i!==Tt&&i!==kt||(t=At),t||(i=(126&e[0])>>1,i!==jt&&i!==Gt&&i!==Ht||(t=bt)),t}function Zo(e){e.close()}function ea(e){e.close()}function ta(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function ia(e){const t=Object.prototype.toString;return function(e){switch(t.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:try{return e instanceof Error}catch(e){return!1}}}(e)?e.message:null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function sa(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],s=null,r=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,r=2)}if(i)for(let o=r;o=1e3){e[o-1].ts-i.ts<1e3&&(s=o+1)}}}return s}function ra(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),s=new Uint8Array(i.length),r=0;r>4===ys&&e[1]===gs}function ca(e){return!0===e||"true"===e}function ua(e){return!0!==e&&"true"!==e}function pa(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function fa(){return/iphone/i.test(navigator.userAgent)}function ma(){return window.performance&&window.performance.memory?window.performance.memory:null}function ga(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function ya(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Aa(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function ba(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function va(e,t){const i=$r(e.slice(5));let s=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===It||i===Ut||i===Ot)||ua(t)&&i===Ct)&&(s=!0)})),s}function _a(){let e={down:"mousedown",move:"mousemove",up:"mouseup",click:"click"};return ao()&&(e={down:"touchstart",move:"touchmove",up:"touchend",click:"click"}),e}class Sa{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{qo(e.removeEventListener)&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class wa{on(e,t,i){const s=this.e||(this.e={});return(s[e]||(s[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const s=this;function r(){s.off(e,r);for(var o=arguments.length,a=new Array(o),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.length;e0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS)?i:(console.log("Unable to initialize the shader program: "+this.gl.getProgramInfoLog(i)),null)}_loadShader(e,t){const i=this.gl,s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),i.getShaderParameter(s,i.COMPILE_STATUS)?s:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(s)),i.deleteShader(s),null)}_initBuffers(){const e=this.gl,t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);const i=[-1,-1,1,-1,1,1,-1,1];e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),e.STATIC_DRAW);var s=[];s=s.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(s),e.STATIC_DRAW);const o=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:r,indices:o}}_createTexture(){let e=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),e}_drawScene(e,t,i){this.gl.viewport(0,0,e,t),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.position),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(this._buffers.positions),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this._programInfo.attribLocations.vertexPosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.vertexPosition),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.texPosition),this.gl.vertexAttribPointer(this._programInfo.attribLocations.texturePosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.texturePosition),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this._buffers.indices);i?(this.gl.activeTexture(this.gl.TEXTURE0+3),this.gl.bindTexture(this.gl.TEXTURE_2D,this._ytexture),this.gl.activeTexture(this.gl.TEXTURE0+4),this.gl.bindTexture(this.gl.TEXTURE_2D,this._utexture),this.gl.activeTexture(this.gl.TEXTURE0+5),this.gl.bindTexture(this.gl.TEXTURE_2D,this._vtexture)):(this.gl.activeTexture(this.gl.TEXTURE0+2),this.gl.bindTexture(this.gl.TEXTURE_2D,this._rgbatexture)),this.gl.useProgram(this._programInfo.program),this.gl.uniform1i(this._programInfo.uniformLocations.rgbatexture,2),this.gl.uniform1i(this._programInfo.uniformLocations.ytexture,3),this.gl.uniform1i(this._programInfo.uniformLocations.utexture,4),this.gl.uniform1i(this._programInfo.uniformLocations.vtexture,5),this.gl.uniform1i(this._programInfo.uniformLocations.isyuv,i?1:0),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0)}_calRect(e,t,i,s,r,o){let a=2*e/r-1,n=2*(o-t-s)/o-1,l=2*(e+i)/r-1,d=2*(o-t)/o-1;return[a,n,l,n,l,d,a,d]}_clear(){this.gl.clearColor(0,0,0,1),this.gl.clearDepth(1),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}render(e,t,i,s,r){const o=this.gl;this._clear(),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._ytexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,t,0,o.LUMINANCE,o.UNSIGNED_BYTE,i),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this._utexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,s),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this._vtexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,r),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),o=i.slice(e*t*5/4,e*t*3/2);const a=this.gl;this._clear(),a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._ytexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e,t,0,a.LUMINANCE,a.UNSIGNED_BYTE,s),a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,this._utexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,r),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,this._vtexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,o),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,s,r){const o=this.gl;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._rgbatexture),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,r),this._buffers.positions=this._calRect(i,s,r.width,r.height,e,t),this._drawScene(e,t,!1)}}const Pa=1,Ba=2,Ia=4;class Ma{constructor(e){this.gpu=e,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null,this.hasInited=!1,this.buffers=this._initBuffer(),this.isDestroyed=!1,this._initPipeline().then((e=>{this.isDestroyed||(this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.matrixGroupInfo&&(this.hasInited=!0))}))}destroy(){this.isDestroyed=!1,this.gpu&&(this.gpu.device.destroy(),this.gpu=null),this.hasInited=!1,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null}_initBuffer(){const e=this.gpu.device,t=new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),i=e.createBuffer({size:t.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(i,0,t);const s=new Float32Array([0,1,1,1,1,0,0,0]),r=e.createBuffer({size:s.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(r,0,s);const o=new Uint16Array([0,1,2,0,2,3]),a=e.createBuffer({size:o.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(a,0,o),{positionBuffer:i,texpositionBuffer:r,indexBuffer:a}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,s=this.gpu.format,r={layout:"auto",vertex:{module:i.createShaderModule({code:"\n\n @binding(0) @group(0) var uModelMatrix : mat4x4;\n @binding(1) @group(0) var uViewMatrix : mat4x4;\n @binding(2) @group(0) var uProjectionMatrix : mat4x4;\n\n struct VertexOutput {\n @builtin(position) Position : vec4,\n @location(0) vTexturePosition : vec2,\n }\n\n @vertex\n fn main(\n @location(0) aVertexPosition : vec4,\n @location(1) aTexturePosition : vec2\n ) -> VertexOutput {\n var output : VertexOutput;\n var tmppos : vec4 = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n output.Position = vec4(tmppos.x, tmppos.y, (tmppos.z+1.)/2., tmppos.w); // webgl z [-1, 1], webgpu z [0, 1], 这里z做下调整 z-webgpu = (z-webgl+1)/2\n output.vTexturePosition = aTexturePosition;\n return output;\n }\n\n "}),entryPoint:"main",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]},{arrayStride:8,attributes:[{shaderLocation:1,offset:0,format:"float32x2"}]}]},primitive:{topology:"triangle-list"},fragment:{module:i.createShaderModule({code:"\n @group(1) @binding(0) var mySampler: sampler;\n @group(1) @binding(1) var pixelType: i32;\n @group(1) @binding(2) var yTexture: texture_2d;\n @group(1) @binding(3) var uTexture: texture_2d;\n @group(1) @binding(4) var vTexture: texture_2d;\n @group(1) @binding(5) var uvTexture: texture_2d;\n @group(1) @binding(6) var rgbaTexture: texture_2d;\n\n const YUV2RGB : mat4x4 = mat4x4( 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 @fragment\n fn main(\n @location(0) vTexturePosition: vec2\n ) -> @location(0) vec4 {\n if(pixelType == 1){\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(vTexture, mySampler, vTexturePosition).r;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else if (pixelType == 2) {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uvTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(uvTexture, mySampler, vTexturePosition).g;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else {\n\n return textureSample(rgbaTexture, mySampler, vTexturePosition);\n }\n\n }\n\n "}),entryPoint:"main",targets:[{format:s}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(r).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){if(!this.gpu)return null;const e=this.gpu.device,t=this.pipeline,i=ka();xa(i,-1,1,-1,1,.1,100);const s=ka();Ca(s);const r=ka();!function(e,t,i,s){var r,o,a,n,l,d,h,c,u,p,f=t[0],m=t[1],g=t[2],y=s[0],A=s[1],b=s[2],v=i[0],_=i[1],S=i[2];Math.abs(f-v)Ro(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.width,t=this.player.height,i=this.player.getVideoInfo();if(!(i&&i.height>0&&i.width>0))return;let s=i.width,r=i.height;const o=this.player._opt;let a=t,n=e;if(this.player.isControlBarShow()){const e=o.playType===_?Yt:Kt;ao()&&this.player.fullscreen&&o.useWebFullScreen?n-=e:a-=e}const l=o.rotate;let d=(n-s)/2,h=(a-r)/2;270!==l&&90!==l||(s=i.height,r=i.width);const c=n/s,u=a/r;let p=c>u?u:c;o.isResize||c!==u&&(p=c+","+u),o.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===o.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===o.mirrorRotate?f+=" rotateY(180deg)":"vertical"===o.mirrorRotate&&(f+=" rotateX(180deg)"),this.scale=-1!==(""+p).indexOf(",")?c:p,this.shadowRootInnerDom.style.transform=f,this.shadowRootInnerDom.style.left=d+"px",this.shadowRootInnerDom.style.top=h+"px",this.shadowRootInnerDom.style.width=i.width+"px",this.shadowRootInnerDom.style.height=i.height+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomForCanvas(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt;let i=this.player.width,s=this.player.height;if(this.player.isControlBarShow()){const e=t.playType===_?Yt:Kt;ao()&&this.player.fullscreen&&t.useWebFullScreen?i-=e:s-=e}let r=e.width,o=e.height;const a=t.rotate;let n=(i-r)/2,l=(s-o)/2;270!==a&&90!==a||(r=e.height,o=e.width);const d=i/r,h=s/o;let c=d>h?h:d;t.isResize||d!==h&&(c=d+","+h),t.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===t.mirrorRotate&&a&&(u+=" rotate("+a+"deg)"),"level"===t.mirrorRotate?u+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(u+=" rotateX(180deg)"),this.shadowRootInnerDom.style.height=e.height+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.padding="0",this.shadowRootInnerDom.style.transform=u,this.shadowRootInnerDom.style.left=n+"px",this.shadowRootInnerDom.style.top=l+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomRatio(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt.aspectRatio.split(":").map(Number);let i=this.player.width,s=this.player.height;const r=this.player._opt;let o=0;this.player.isControlBarShow()&&(o=r.playType===_?Yt:Kt,s-=o);const a=e.width/e.height,n=t[0]/t[1];if(a>n){const t=n*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${o}px)`,this.shadowRootInnerDom.style.padding=`0 ${(i-i*t)/2}px`}else{const t=e.width/n/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${o}px)`,this.shadowRootInnerDom.style.padding=(s-s*t)/2+"px 0"}this.shadowRootInnerDom.style.display="block"}_updateDom(){this.shadowRoot&&this.configList.forEach((e=>{const t=document.createElement("div");let i=null;if(e.image&&e.image.src?(i=document.createElement("img"),i.style.height="100%",i.style.width="100%",i.style.objectFit="contain",i.src=e.image.src):e.text&&e.text.content?i=document.createTextNode(e.text.content):(e.rect&&e.rect.color&&e.rect.width||e.html||e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2||e.polygon&&e.polygon.list&&e.polygon.list.length>=3)&&(i=document.createElement("div")),i){if(t.appendChild(i),t.style.visibility="",t.style.position="absolute",t.style.display="block",t.style["-ms-user-select"]="none",t.style["-moz-user-select"]="none",t.style["-webkit-user-select"]="none",t.style["-o-user-select"]="none",t.style["user-select"]="none",t.style["-webkit-touch-callout"]="none",t.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",t.style["-webkit-text-size-adjust"]="none",t.style["-webkit-touch-callout"]="none",t.style.opacity=e.opacity,xo(e.left)&&(_o(e.left)?t.style.left=e.left+"px":t.style.left=e.left),xo(e.right)&&(_o(e.right)?t.style.right=e.right+"px":t.style.right=e.right),xo(e.top)&&(_o(e.top)?t.style.top=e.top+"px":t.style.top=e.top),xo(e.bottom)&&(_o(e.bottom)?t.style.bottom=e.bottom+"px":t.style.bottom=e.bottom),e.backgroundColor&&(t.style.backgroundColor=e.backgroundColor),t.style.overflow="hidden",t.style.zIndex="9999999",e.image&&e.image.src)t.style.width=e.image.width+"px",t.style.height=e.image.height+"px";else if(e.text&&e.text.content)t.style.fontSize=e.text.fontSize+"px",t.style.color=e.text.color,e.text.width&&(t.style.width=e.text.width+"px"),e.text.height&&(t.style.height=e.text.height+"px");else if(e.rect&&e.rect.color&&e.rect.width){if(t.style.width=e.rect.width+"px",t.style.height=e.rect.height+"px",t.style.borderWidth=e.rect.lineWidth+"px",t.style.borderStyle="solid",t.style.borderColor=e.rect.color,e.rect.fill){const i=document.createElement("div");i.style.position="absolute",i.style.width="100%",i.style.height="100%",i.style.backgroundColor=e.rect.fill,e.rect.fillOpacity&&(i.style.opacity=e.rect.fillOpacity),t.appendChild(i)}}else if(e.html)t.style.width="100%",t.style.height="100%",t.innerHTML=e.html;else if(e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2)this.settingLine(t,e.line);else if(e.polygon&&e.polygon.list&&e.polygon.list.length>=3){t.style.width="100%",t.style.height="100%";let i=e.polygon.list;const s=e.polygon.color,r=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const s=document.createElement("div");s.style.position="absolute",s.style.width="100%",s.style.height="100%";const r="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";s.style.clipPath=r,s.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(s.style.opacity=e.polygon.fillOpacity),t.appendChild(s)}i.forEach(((e,o)=>{const a=document.createElement("div");if(o===i.length-1){const o=i[0],n={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:s,lineWidth:r};return this.settingLine(a,n),void t.appendChild(a)}const n=i[o+1],l={x1:e.x,y1:e.y,x2:n.x,y2:n.y,color:s,lineWidth:r};this.settingLine(a,l),t.appendChild(a)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,s=t.y1,r=t.x2,o=t.y2;var a=Math.sqrt((i-r)**2+(s-o)**2),n=180*Math.atan2(o-s,r-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=a+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=s+"px",e.style.left=i+"px",e.style.transform="rotate("+n+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class Fa extends wa{constructor(){super(),this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1,this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.prevOcclusionDetectTime=null,this.contentWatermark=null,this.aiContentWatermark=null,this.tempContentList=[],this.tempAiContentList=[],this.streamFps=0}destroy(){this.resetInit(),this.contentWatermark&&(this.contentWatermark.destroy(),this.contentWatermark=null),this.tempContentList=[],this.aiContentWatermark&&(this.aiContentWatermark.destroy(),this.aiContentWatermark=null),this.tempAiContentList=[],this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.streamFps=0,this.off()}resetInit(){this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1}getHasInit(){return this.init}updateVideoInfo(e){xo(e.encTypeCode)&&(this.videoInfo.encType=mt[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),xo(e.encType)&&(this.videoInfo.encType=e.encType),xo(e.width)&&(this.videoInfo.width=e.width),xo(e.height)&&(this.videoInfo.height=e.height),xo(this.videoInfo.encType)&&xo(this.videoInfo.height)&&xo(this.videoInfo.width)&&!this.init&&(this.player.emit(rt.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debug.log("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||ao()?this._resize():this._resizeRatio(),this.contentWatermark&&this.contentWatermark.resize(),this.aiContentWatermark&&this.aiContentWatermark.resize(),this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize(),this.player.zoom&&this.player.zooming){const e=this._getStyleScale();this.player.zoom.updatePrevVideoElementStyleScale(e),this.player.zoom.updateVideoElementScale()}}_resizeRatio(){this.player.debug.log("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const s=this.player._opt;let r=0;this.player.isControlBarShow()&&(r=s.playType===_?Yt:Kt,i-=r);const o=this.videoInfo,a=o.width/o.height,n=e[0]/e[1];if(this.getType()===W&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===$&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),a>n){const e=n*o.height/o.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${r}px)`,this.$videoElement.style.padding=`0 ${(t-t*e)/2}px`}else{const e=o.width/n/o.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${r}px)`,this.$videoElement.style.padding=(i-i*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}isVideoPlaying(){return this.isPlaying()}getPlaybackQuality(){return null}setStreamFps(e){this.player.debug.log("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempContentList=e}addAiContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempAiContentList=e}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new Ua(this.player),this.contentWatermark.resize());const e=[];this.tempContentList.forEach((t=>{let i={left:t.x||0,top:t.y||0};"text"===t.type?i.text={content:t.text,fontSize:t.fontSize||"14",color:t.color||"#000"}:"rect"===t.type?i.rect={width:t.width,height:t.height,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill||"",fillOpacity:t.fillOpacity||.2}:"polygon"===t.type?i.polygon={list:t.list,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill,fillOpacity:t.fillOpacity||.2}:"line"===t.type&&(i.line={color:t.color||"green",lineWidth:t.lineWidth||2,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}),e.push(i)})),this.contentWatermark.update(e)}else this.contentWatermark&&this.contentWatermark.remove()}doAddAiContentToWatermark(){if(this.tempAiContentList.length>0){this.aiContentWatermark||(this.aiContentWatermark=new Ua(this.player),this.aiContentWatermark.resize());const e=this.tempAiContentList.map((e=>{let t={left:e.x,top:e.y};return"text"===e.type?t.text={content:e.text,fontSize:e.fontSize,color:e.color}:"rect"===e.type&&(t.rect={width:e.width,height:e.height,color:e.color,lineWidth:e.lineWidth}),t}));this.aiContentWatermark.update(e)}else this.aiContentWatermark&&this.aiContentWatermark.remove()}_getStyleScale(){let e=this.$videoElement.style.transform.match(/scale\([0-9., ]*\)/g),t="";if(e&&e[0]){t=e[0].replace("scale(","").replace(")","").split(",")}return t}getReadyStateInited(){return!0}screenshotByCurrentWatermark(){}initCanvasViewSize(){}bindMediaStream(){}}var Oa="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function Na(e,t,i){var s=new XMLHttpRequest;s.open("GET",e),s.responseType="blob",s.onload=function(){Va(s.response,t,i)},s.onerror=function(){console.error("could not download file")},s.send()}function ja(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function za(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Ga=Oa.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Va="object"!=typeof window||window!==Oa?function(){}:"download"in HTMLAnchorElement.prototype&&!Ga?function(e,t,i){var s=Oa.URL||Oa.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?ja(r.href)?Na(e,t,i):za(r,r.target="_blank"):za(r)):(r.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(r.href)}),4e4),setTimeout((function(){za(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(ja(e))Na(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){za(s)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return Na(e,t,i);var r="application/octet-stream"===e.type,o=/constructor/i.test(Oa.HTMLElement)||Oa.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&o||Ga)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},n.readAsDataURL(e)}else{var l=Oa.URL||Oa.webkitURL,d=l.createObjectURL(e);s?s.location=d:location.href=d,s=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};function Ha(e){return new Promise(((t,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((s=>{s?s.requestDevice().then((r=>{if(r){const o=e.getContext("webgpu");if(o){const e=navigator.gpu.getPreferredCanvasFormat();o.configure({device:r,format:e,alphaMode:"opaque"}),t({adapter:s,device:r,context:o,format:e})}else i('WebGPU "context" create fail')}else i('WebGPU "device" request fail')})).catch((e=>{i('WebGPU "adapter.requestDevice()" fail')})):i('WebGPU "adapter" request fail is empty')})).catch((e=>{i('WebGPU "navigator.gpu.requestAdapter()" fail')})):i("WebGPU not support!!")}))}class Wa{constructor(e,t){this.canvas=e,this.gl=t;const i=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(i,"\n attribute vec2 xy;\n varying highp vec2 uv;\n void main(void) {\n gl_Position = vec4(xy, 0.0, 1.0);\n // Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).\n // UV coordinates are Y-flipped relative to vertex coordinates.\n uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);\n }\n "),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))throw t.getShaderInfoLog(i);const s=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(s,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS))throw t.getShaderInfoLog(s);const r=t.createProgram();if(t.attachShader(r,i),t.attachShader(r,s),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))throw t.getProgramInfoLog(r);t.useProgram(r);const o=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const a=t.getAttribLocation(r,"xy");t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(a);const n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.program=r,this.buffer=o,this.vertexShader=i,this.fragmentShader=s,this.texture=n}destroy(){this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.buffer),this.gl.deleteTexture(this.texture),this.gl.deleteShader(this.vertexShader),this.gl.deleteShader(this.fragmentShader),this.program=null,this.buffer=null,this.vertexShader=null,this.fragmentShader=null,this.texture=null}render(e){this.canvas.width=e.displayWidth,this.canvas.height=e.displayHeight;const t=this.gl;t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),t.viewport(0,0,t.drawingBufferWidth,t.drawingBufferHeight),t.clearColor(1,0,0,1),t.clear(t.COLOR_BUFFER_BIT),t.drawArrays(t.TRIANGLE_FAN,0,4)}}class $a extends Fa{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.webglRender=null,this.webglRectRender=null,this.webGPURender=null,this.isWebglContextLost=!1,this.isWcsWebgl2=!1,this.isWcsWebgpu=!1,this.bitmaprenderer=null,this.renderType=null,this.controlHeight=0,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.webglRender&&(this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.webglRectRender.destroy(),this.webglRectRender=null),this.webGPURender&&(this.webGPURender.destroy(),this.webGPURender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.isWebglContextLost=!1,this.isWcsWebgpu=!1,this.isWcsWebgl2=!1,this.videoInfo={width:"",height:"",encType:""},this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off()}_initContext2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){if(this.player.events,this.contextGl=Kr(this.$videoElement),!this.contextGl)throw this.player.debug.error("CommonCanvasLoader","_initContextGl() createContextGL error"),new Error("CommonCanvasLoader and _initContextGl createContextGL error");this._bindContextGlEvents(),this.webglRender=new La(this.contextGl,this.player._opt.openWebglAlignment)}_initContextGl2(){if(this.contextGl=Yr(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new Wa(this.$videoElement,this.contextGl)}catch(e){this.player.debug.error("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debug.error("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debug.error("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debug.log("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=Kr(this.$videoElement):2===e&&(this.contextGl=Yr(this.$videoElement)),this.player.debug.log("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new La(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new Wa(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debug.log("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(nt.webglContextLostError))}else this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(nt.webglContextLostError)}),500)})),s=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debug.log("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,s)}_initContextGPU(){Ha(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ma(e),this.player.debug.log("CommonCanvasLoader","webGPURender init success")):(this.player.debug.warn("CommonCanvasLoader","webGPURender init failed because context is null and next use webgl render"),this.renderType=ti,this._initContextGl()))})).catch((e=>{this.player.isDestroyedOrClosed()||(this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=ti,this._initContextGl())}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,s){e=e||Xr(),s=s||ut.download;let r=.92;!Vi[t]&&ut[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=Vi[t]||Vi.png,a=this.$videoElement.toDataURL(o,r);if(s===ut.base64)return a;{const t=Qr(a);if(s===ut.blob)return t;if(s===ut.download){const i=o.split("/")[1];Va(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{Vo(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||Xr(),e.format=e.format?Vi[e.format]:Vi.png,e.quality=Number(e.quality)||.92,e.type=e.type||ut.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Po(s,e).then((i=>{if(e.type===ut.base64)t(s);else{const s=Qr(i);if(e.type===ut.blob)t(s);else if(e.type===ut.download){t();const i=e.format.split("/")[1];Va(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(Vo(e)){(e=(e={filename:e})||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||Xr(),e.format=e.format?Vi[e.format]:Vi.png,e.quality=Number(e.quality)||.92,e.type=e.type||ut.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Io(s,e).then((i=>{if(e.type===ut.base64)t(s);else{const s=Qr(i);if(e.type===ut.blob)t(s);else if(e.type===ut.download){t();const i=e.format.split("/")[1];Va(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}}))}screenshotByCurrentWatermark(e){}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debug.log("canvasVideo","_resize()");const e=this.player._opt;let t=this.player.width,i=this.player.height;if(this.player.isControlBarShow()){const s=this.controlHeight;ao()&&this.player.fullscreen&&e.useWebFullScreen?t-=s:i-=s}let s=this.$videoElement.width,r=this.$videoElement.height;const o=e.rotate;let a=(t-s)/2,n=(i-r)/2;270!==o&&90!==o||(s=this.$videoElement.height,r=this.$videoElement.width);const l=t/s,d=i/r;let h=l>d?d:l;ua(e.isResize)&&l!==d&&(h=l+","+d),e.isFullResize&&(h=l>d?l:d);let c="scale("+h+")";"none"===e.mirrorRotate&&o&&(c+=" rotate("+o+"deg)"),"level"===e.mirrorRotate?c+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(c+=" rotateX(180deg)"),this.$videoElement.style.height=this.videoInfo.height+"px",this.$videoElement.style.width=this.videoInfo.width+"px",this.$videoElement.style.padding="0",this.$videoElement.style.transform=c,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return W}getCanvasType(){let e=this.renderType===si?si:ti;return this.isWcsWebgl2?e=ii:this.isWcsWebgpu&&(e=si),e}}class Ja extends $a{constructor(e){super(e),this.TAG_NAME="CanvasVideo",this.yuvList=[],this.controlHeight=Kt,this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.yuvList=[],this.tempTextCanvas&&(this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvas.width=0,this.tempTextCanvas.height=0,this.tempTextCanvas=null),this.player.debug.log("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=ei,this.player._opt.useWebGPU?Ha(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ma(e),this.isWcsWebgpu=!0,this.player.debug.log(this.TAG_NAME,"webGPURender init success")):(this.player.debug.warn(this.TAG_NAME,"webGPURender init failed because context is null and next use webgl render"),this._initWebglRenderForWCS()))})).catch((()=>{this.player.isDestroyedOrClosed()||(this.player.debug.warn(this.TAG_NAME,`createWebGPUContext error is ${e} and next use webgl render`),this._initWebglRenderForWCS())})):this._initWebglRenderForWCS()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=oi,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=ai,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=ni,this._initContext2D()):this._supportOffscreen()?(this.renderType=ri,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=si,this._initContextGPU()):(this.renderType=ti,this._initContextGl())}_initWebglRenderForWCS(){this.player._opt.wcsUseWebgl2Render&&ga()?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}render(e){this.yuvList.push(e),this.startRender()}startRender(){for(;!(this.yuvList.length<=0);){const e=this.yuvList.shift();this.doRender(e)}}doRender(e){if(this.renderType!==oi){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case ri:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case ti:case si:if(this.isWebglContextLost)return void this.player.debug.warn("CanvasVideoLoader","doRender() and webgl context is lost");let t=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=Xr());const i=Xr();i-this.prevAiFaceDetectTime>=this.player._opt.aiFaceDetectInterval&&(t=this.player.ai.faceDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=i)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=Xr());const i=Xr();i-this.prevAiObjectDetectTime>=this.player._opt.aiObjectDetectInterval&&(t=this.player.ai.objectDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=i)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=Xr());const t=Xr();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});this.prevAiOcclusionDetectTime=t,i&&this.player.emit(rt.aiOcclusionDetectResult,{ts:e.ts||0})}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});if(t&&t.data&&(this.player.emit(rt.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===si)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===ti)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case ei:if(this.webGPURender)this.webGPURender.render(e.videoFrame),Zo(e.videoFrame);else if(this.webglRender)this.webglRender.render(e.videoFrame),Zo(e.videoFrame);else if(this.context2D)if(qo(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),Zo(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),Zo(e.videoFrame);else this.player.debug.warn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case oi:case ai:case ni:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===oi&&(t=parseInt(1e3*e.$video.currentTime,10)+(this.player.mseDecoder.firstRenderTime||0)),this.player.updateCurrentPts(t),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}clearView(){switch(super.clearView(),this.renderType){case ri:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,s})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case ti:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case si:this.webGPURender.clear();break;case ei:this.webGPURender?this.webGPURender.clear():this.contextGl?this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT):this.context2D&&this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height);break;case oi:case ai:case ni:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}_initTempTextCanvas(){this.tempTextCanvas=document.createElement("canvas"),this.tempTextCanvasCtx=this.tempTextCanvas.getContext("2d"),this.tempTextCanvas.width=600,this.tempTextCanvas.height=20}doAddContentToCanvas(){this.tempContentList.length>0&&this.context2D&&function(e){let{ctx:t,list:i}=e;t.save(),(i||[]).forEach((e=>{"text"===e.type?(t.font=`${e.fontSize||12}px Arial`,t.fillStyle=e.color||"green",t.fillText(e.text,e.x,e.y)):"rect"===e.type&&(t.strokeStyle=e.color||"green",t.lineWidth=e.lineWidth||2,t.strokeRect(e.x,e.y,e.width,e.height))})),t.restore()}({ctx:this.context2D,list:this.tempContentList})}doAddContentToWebGlCanvas(){this.tempContentList.length>0&&this.contextGl&&this.webglRectRender&&this.tempContentList.forEach((e=>{const t=e.x,i=e.y;if("rect"===e.type){const r=e.width,o=e.height,a=(s=e.color||"#008000",[parseInt(s.substring(1,3),16)/255,parseInt(s.substring(3,5),16)/255,parseInt(s.substring(5,7),16)/255,1]),n=e.lineWidth||4;if(!r||!o)return;this.webglRectRender.drawBox({x:t,y:i,width:r,height:o,lineColor:a,lineWidth:n,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const s=e.text||"";if(!s)return;const r=e.fontSize||20,o=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${r}px Arial`,this.tempTextCanvasCtx.fillStyle=o,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(s,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var s}))}}class qa extends Fa{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video");t.muted=!0,t.disablePictureInPicture=!0,ho()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=null,this.canvasContext=null,this.mediaStream=null,this.vwriter=null,this.awriter=null,this.trackGenerator=null,this.audioTrackGenerator=null,this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.progressProxyDestroy=null,this.checkVideoCanplayTimeout=null,this.visibilityChangePlayTimeout=null,this.pauseDelayTimeout=null,this.replayTimeout=null,this.detectAndFixStuckPlaybackStartTime=null;const i=Aa();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,r=s(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this.player.isDestroyedOrClosed()||(this.canplayReceived=!0,this._delayPlay?(this.clearCheckVideoCanplayTimeout(),this._play(),Aa()?this.supportVideoFrameCallbackHandle||(this.player.debug.log("Video","support requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debug.warn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats")):this.$videoElement.paused&&(this.player.isMSEPlaybackRateChangePause?(this.player.debug.log("Video",`canplay and video is paused and isMSEPlaybackRateChangePause is ${this.player.isMSEPlaybackRateChangePause} so next try to play`),this.player.isMSEPlaybackRateChangePause=!1,this._play()):this.player.isMSECurrentMoreThanBufferedPause?(this.player.debug.log("Video",`canplay and video is paused and isMSECurrentMoreThanBufferedPause is ${this.player.isMSECurrentMoreThanBufferedPause} so next try to play`),this.player.isMSECurrentMoreThanBufferedPause=!1,this._play()):(this.player.debug.warn("Video","canplay and video is paused and try to play"),this._play())))})),o=s(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),a=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debug.log("Video","loadedmetadata")})),n=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(ua(i)){const t=parseInt(1e3*this.getCurrentTime(),10);(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())&&(this.player.emit(rt.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}))}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),l=s(this.$videoElement,"error",(e=>{if(!this.$videoElement.error)return void this.player.debug.error(this.TAG_NAME,"on error",e);let t={};if(this.player.isUseMSE()&&(t=this.player.getMseMineType()),this.player.debug.error("Video","Error Code "+this.$videoElement.error.code+" "+Ks[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message+"; Video Info: "+JSON.stringify(this.videoInfo)+"; Mse Mine Type: "+t.video+"; "),this.player.isUseMSE()){this.$videoElement.error.code;const e=this.$videoElement.error.message;-1!==e.indexOf(Ys)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),-1!==e.indexOf(Qs)&&(this.player.isMSEAudioDecoderError=!0)}this.player.isHlsCanVideoPlay()})),d=s(this.$videoElement,"stalled",(()=>{this._detectAndFixStuckPlayback(!0)}));if(this.progressProxyDestroy=s(this.$videoElement,"progress",(()=>{this._detectAndFixStuckPlayback()})),this.eventListenList.push(r,o,n,l,a,d),this.player.isUseMSE()){const e=s(this.$videoElement,Zi,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"ratechange and video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));this.eventListenList.push(e),this.player.on(rt.visibilityChange,(e=>{e&&(this.visibilityChangePlayTimeout=setTimeout((()=>{if(this.clearVisibilityChangePlayTimeout(),this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getBufferMaxDelayTime()&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300))}))}this.player.debug.log("Video","init")}async destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this.clearReplayTimeout(),this.clearVisibilityChangePlayTimeout(),this.clearPauseDelayTimeout(),this._cancelVideoFrameCallback(),this._removeProgressProxyDestroy(),this.eventListenList.length&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement&&(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null),this.canvasContext=null,this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}this.player.$container.removeChild(this.$videoElement),this.$videoElement=null}this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.audioTrackGenerator&&(this.audioTrackGenerator.stop(),this.audioTrackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.awriter&&(await this.awriter.close(),this.awriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debug.log("Video","destroy")}_createScreenShotCanvas(){const e=document.createElement("canvas");this.$canvasElement=e,this.canvasContext=e.getContext("2d"),this.canvasContext.imageSmoothingEnabled=!0,this.canvasContext.imageSmoothingEnabled&&(this.canvasContext.imageSmoothingQuality="high")}bindMediaStream(){if(this.player.canVideoTrackWritter()&&Eo()&&To()&&!this.mediaStream){this.player.debug.log(this.TAG_NAME,"bindMediaStream"),this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.player.useVideoPlayAudio()&&(this.audioTrackGenerator=new MediaStreamTrackGenerator({kind:"audio"}),this.awriter=this.audioTrackGenerator.writable.getWriter());const e=[this.trackGenerator];this.audioTrackGenerator&&e.push(this.audioTrackGenerator),this.mediaStream=new MediaStream(e),this.$videoElement.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()}}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log("Video","videoFrameCallback() and isDestroyedOrClosed and return"));this.player.handleRender();const i=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)||0;if(this.player.isUseHls265UseMse())this.player.updateStats({fps:!0,ts:i});else if(this.player.isMseDecoderUseWorker()){this.player._times.videoStart||(this.player._times.videoStart=Xr(),this.player.handlePlayToRenderTimes());const e=i+(this.player._mseWorkerData.firstRenderTime||0);if(this.player.updateStats({fps:!0,dfps:!0,ts:e,mseTs:i}),this.player.emit(rt.timeUpdate,e),ua(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.updateVideoInfo(e),this.initCanvasViewSize()}}if(this.player.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc()){if(this.player.emit(rt.timeUpdate,i),ua(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=gt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(ca(this.player._opt.useMSE)&&ua(this.player._opt.mseUseCanvasRender)){if(this.player.mseDecoder){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}fixChromeVideoFlashBug(){if(this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.transform="translateZ(0)"}}fixMobileAutoFullscreen(){const e=po(),t=ho();(e||t)&&(this.player.debug.log("Video",`fixMobileAutoFullscreen and isIOS ${e} and isAndroid ${t}`),this.$videoElement.setAttribute("webkit-playsinline","true"),this.$videoElement.setAttribute("playsinline","true"),this.$videoElement.setAttribute("x5-video-player-type","h5-page"))}_detectAndFixStuckPlayback(e){const t=this.$videoElement,i=t.buffered,s=t.readyState;if(this.player.debug.log(this.TAG_NAME,`_detectAndFixStuckPlayback() and isStalled is ${e} ,canplayReceived is ${this.canplayReceived} ,videoReadyState is ${s} and bufferedLength is ${i.length} and startTime is ${i.length>0?i.start(0):"null"} and currentTime is ${t.currentTime}`),e||ua(this.canplayReceived)||s<2){if(i.length>0&&t.currentTime=1e3*this.player._opt.mseWaitVideoCanplayTimeout&&(this.player.debug.warn(this.TAG_NAME,`_detectAndFixStuckPlayback() and video is stuck and currentTime is ${t.currentTime} , diff is ${e} and timeout`),this.player.emit(nt.mseWaitVideoCanplayTimeout,e))}}else this._removeProgressProxyDestroy()}_removeProgressProxyDestroy(){this.progressProxyDestroy&&(this.player.debug.log(this.TAG_NAME,"_removeProgressProxyDestroy()"),this.progressProxyDestroy(),this.progressProxyDestroy=null),this.detectAndFixStuckPlaybackStartTime=null}_isNeedAddBackDropFilter(){const e=uo().type.toLowerCase();return"chrome"===e||"edge"===e}isPaused(){let e=!0;return this.$videoElement&&(e=this.$videoElement.paused),e}isPause(){return this.isPaused()}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.log("Video","readyState is 0 and set _delayPlay to true and listen canplay event to play"),this._delayPlay=!0,void(null===this.checkVideoCanplayTimeout&&(this.checkVideoCanplayTimeout=setTimeout((()=>{if(this.clearCheckVideoCanplayTimeout(),!this.player.isDestroyedOrClosed()&&ua(this.isPlaying())){const e=this._getBufferStore();this.player.debug.warn("Video",`checkVideoCanplayTimeout and video is not playing and buffer store is ${e} and retry play`),this.$videoElement.currentTime=e,this._replay()}}),1e3)));this._play()}}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),this.isPlaying()?(this.player.emit(rt.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.log("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debug.log("Video",`_play error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debug.error("Video","_play error",e),this.isRetryPlaying=!1,this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&ua(this.player.isDestroyedOrClosed())&&ua(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3){let e="";return void(this.player.isWebrtcH264()?(e=`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`,this.player.debug.error("Video",e),this.player.emitError(nt.videoElementPlayingFailedForWebrtc,e)):(e=`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`,this.player.debug.error("Video",e),this.player.emitError(nt.videoElementPlayingFailed,e)))}this.player.debug.warn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debug&&this.player.debug.log("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debug.log(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):this.pauseDelayTimeout=setTimeout((()=>{this.clearPauseDelayTimeout(),this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()}),100))}clearView(){super.clearView(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")))}screenshot(e,t,i,s){if(!this._canScreenshot())return this.player.debug.warn("Video",`screenshot failed, video is not ready and stats is ${this._getVideoReadyState()}`),null;e=e||Xr(),s=s||ut.download;let r=.92;!Vi[t]&&ut[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=this.$videoElement;this.$canvasElement||this._createScreenShotCanvas();let a=this.$canvasElement;a.width=o.videoWidth,a.height=o.videoHeight,this.canvasContext.drawImage(o,0,0,a.width,a.height);const n=Vi[t]||Vi.png,l=a.toDataURL(n,r);if(this.canvasContext.clearRect(0,0,a.width,a.height),a.width=0,a.height=0,s===ut.base64)return l;{const t=Qr(l);if(s===ut.blob)return t;if(s===ut.download){const i=n.split("/")[1];Va(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(Vo(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||Xr(),e.format=e.format?Vi[e.format]:Vi.png,e.quality=Number(e.quality)||.92,e.type=e.type||ut.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Po(o,e).then((i=>{if(e.type===ut.base64)t(o);else{const s=Qr(i);if(e.type===ut.blob)t(s);else if(e.type===ut.download){t();const i=e.format.split("/")[1];Va(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(Vo(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||Xr(),e.format=e.format?Vi[e.format]:Vi.png,e.quality=Number(e.quality)||.92,e.type=e.type||ut.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Io(o,e).then((i=>{if(e.type===ut.base64)t(o);else{const s=Qr(i);if(e.type===ut.blob)t(s);else if(e.type===ut.download){t();const i=e.format.split("/")[1];Va(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotByCurrentWatermark(e){}initCanvasViewSize(){this.resize()}clear(){const e=this.$videoElement,t=e.buffered,i=t.length?t.end(t.length-1):0;e.currentTime=i}render(e){if(this.vwriter){if(this.$videoElement.srcObject||(this.$videoElement.srcObject=this.mediaStream),this.isPaused()){const e=this._getVideoReadyState();if(this.player.debug.warn("Video","render() error, video is paused and readyState is "+e),4===e&&ua(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3){const t="render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render";return this.player.debug.error("Video",t),void this.player.emitError(nt.videoElementPlayingFailed,t)}this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debug.log("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debug.log("Video",`_play error render() error, video is paused and replay error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debug.error("Video","render() error, video is paused and replay error ",e)}))}}if(this.player.updateStats({fps:!0,ts:e.ts||0}),e.videoFrame)this.vwriter.write(e.videoFrame),Zo(e.videoFrame);else if(e.output){let s=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=Xr());const t=Xr();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(s=this.player.ai.faceDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=t)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=Xr());const t=Xr();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(s=this.player.ai.objectDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=t)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=Xr());const t=Xr();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});this.prevAiOcclusionDetectTime=t,i&&(this.player.debug.log("Video","render() and ai occlusion detect result is true"),this.player.emit(rt.aiOcclusionDetectResult,{ts:e.ts||0}))}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});if(t&&t.data&&(this.player.emit(rt.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const r=(t=s,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:e.ts},new VideoFrame(t,i));this.vwriter.write(r),Zo(r)}catch(e){this.player.debug.error("Video","render error",e),this.player.emitError(nt.wasmUseVideoRenderError,`code is ${e.code} and message is ${e.message}`)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debug.warn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debug.log("Video","_resize()");let e=this.player.width,t=this.player.height;const i=this.player._opt,s=i.rotate;if(this.player.isControlBarShow()){const s=i.playType===_?Yt:Kt;ao()&&this.player.fullscreen&&i.useWebFullScreen?e-=s:t-=s}this.$videoElement.width=e,this.$videoElement.height=t,this.$videoElement.style.width=e+"px",this.$videoElement.style.height=t+"px",270!==s&&90!==s||(this.$videoElement.width=t,this.$videoElement.height=e,this.$videoElement.style.width=t+"px",this.$videoElement.style.height=e+"px");let r=(e-this.$videoElement.width)/2,o=(t-this.$videoElement.height)/2,a="contain";ua(i.isResize)&&(a="fill"),i.isFullResize&&(a="none");let n="";"none"===i.mirrorRotate&&s&&(n+=" rotate("+s+"deg)"),"level"===i.mirrorRotate?n+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(n+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=a),this.$videoElement.style.transform=n,this.$videoElement.style.padding="0",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=o+"px"}getType(){return $}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&ua(this.$videoElement.paused)&&ua(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isVideoPlaying(){return this.isPlaying()}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=1}getPlaybackQuality(){let e=null;if(this.$videoElement){if(qo(this.$videoElement.getVideoPlaybackQuality)){const t=this.$videoElement.getVideoPlaybackQuality();e={droppedVideoFrames:t.droppedVideoFrames||t.corruptedVideoFrames,totalVideoFrames:t.totalVideoFrames,creationTime:t.creationTime}}else e={droppedVideoFrames:this.$videoElement.webkitDroppedFrameCount,totalVideoFrames:this.$videoElement.webkitDecodedFrameCount,creationTime:Xr()};e&&(e.renderedVideoFrames=e.totalVideoFrames-e.droppedVideoFrames)}return e}setRate(e){this.$videoElement&&(this.$videoElement.playbackRate=e)}get rate(){let e=1;return this.$videoElement&&(e=this.$videoElement.playbackRate),e}clearCheckVideoCanplayTimeout(){this.checkVideoCanplayTimeout&&(clearTimeout(this.checkVideoCanplayTimeout),this.checkVideoCanplayTimeout=null)}clearReplayTimeout(){this.replayTimeout&&(clearTimeout(this.replayTimeout),this.replayTimeout=null)}clearVisibilityChangePlayTimeout(){this.visibilityChangePlayTimeout&&(clearTimeout(this.visibilityChangePlayTimeout),this.visibilityChangePlayTimeout=null)}clearPauseDelayTimeout(){this.pauseDelayTimeout&&(clearTimeout(this.pauseDelayTimeout),this.pauseDelayTimeout=null)}_cancelVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}_getBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.start(0)),t}_handleUpdatePlaybackRate(){const e=this.$videoElement,t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(nt.mediaSourceBufferedIsZeroError,"video.buffered is empty");if(s>1){const t=this._getPlaybackRate(i-s);e.playbackRate!==t&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${t} `),e.playbackRate=t)}}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkVideoSourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debug.warn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}getBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}getReadyStateInited(){return this._getVideoReadyState()>=1}}class Ka extends $a{constructor(e){super(e),this.controlHeight=Yt,this.bufferList=[],this.playing=!1,this.playInterval=null,this.fps=1,this.preFps=1,this.streamFps=0,this.playbackRate=1,this._firstTimestamp=null,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,this.player.on(rt.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debug.log("CanvasPlaybackLoader","init")}async destroy(){this._stopSync(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this.bufferList=[],this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debug.log("CanvasPlaybackLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=ei,ga()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=si,this._initContextGPU()):(this.renderType=ti,this._initContextGl())}_sync(){this._stopSync(),this._doPlay(),this.playInterval=setInterval((()=>{this._doPlay()}),this.fragDuration)}_doPlay(){if(this.bufferList.length>0&&!this.player.seeking){const e=this.bufferList.shift();e&&e.buffer&&(this._doRender(e.buffer),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:e.tfTs}))}}_stopSync(){this.playInterval&&(clearInterval(this.playInterval),this.playInterval=null)}_doRender(e){if(this.player._opt.useWCS)if(this.webglRender)this.webglRender.render(e),Zo(e);else if(qo(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),Zo(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),Zo(e);else if(this.getCanvasType()===ti)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===si)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgpu render and error: ${e.toString()}`)}}get rate(){return this.playbackRate}get fragDuration(){return Math.ceil(1e3/(this.fps*this.playbackRate))}get bufferSize(){return this.bufferList.length}getStreamFps(){return this.streamFps}initFps(){this._hasCalcFps?this.player.debug.log("CanvasPlaybackLoader","initFps, has calc fps"):(this.preFps=Zr(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debug.warn("CanvasPlaybackLoader","setFps max",e),e<0&&this.player.debug.warn("CanvasPlaybackLoader","setFps min",e),this.fps=Zr(e,1,100),this.player.debug.log("CanvasPlaybackLoader",`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debug.log("CanvasPlaybackLoader",`setFps, same fps ${e}`)}setStreamFps(e){this.player.debug.log("CanvasPlaybackLoader","setStreamFps",e),this._hasCalcFps=!0,this.streamFps=e,this.preFps=e,this.setFps(e)}setRate(e){e!==this.playbackRate&&(this.playbackRate=e,this.player.playback.isUseFpsRender&&this._sync())}render$2(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output,this.bufferList.push(t),this.startRender(),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:t.tfTs})}startRender(){for(;!(this.bufferList.length<=0);){const e=this.bufferList.shift();this._doRender(e.buffer)}}pushData(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output;const i=this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender;if(i||this.bufferSize>this.fps*this.playbackRate*2&&(this.player.debug.warn("CanvasPlaybackLoader",`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=sa(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debug.log("CanvasPlaybackLoader",`calc fps is ${e} pre fps is ${this.preFps} and updatePreFps`),this.setStreamFps(e))}if(!i){const e=this.bufferList.length,t=e/(this.fps*this.playbackRate);this.player.debug.log("CanvasPlaybackLoader","rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debug.warn("CanvasPlaybackLoader","rate is",t,"fps is",this.fps,"bufferListLength is",e))}}initVideo(){this.player.playback&&this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}initVideoDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initVideo()}),e):this.initVideo()}clearView(){super.clearView(),this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT)}clear(){this.player._opt.useWCS&&this.bufferList.forEach((e=>{e.buffer&&Zo(e.buffer)})),this.bufferList=[]}resume(){this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}pause(){this.player.playback.isUseFpsRender&&this._stopSync(),this.playing=!1}}class Ya{constructor(e){return new(Ya.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?e.mseUseCanvasRender?Ja:qa:e.isHls&&ua(e.supportHls265)||e.isWebrtc&&ua(e.isWebrtcH265)?e.useCanvasRender?Ja:qa:e.isAliyunRtc?qa:e.useWCS?e.playType===_?Ka:!e.useOffscreen&&e.wcsUseVideoRender?qa:Ja:e.playType===_?Ka:e.wasmUseVideoRender&&!e.useOffscreen?qa:Ja}}class Qa extends wa{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.workletWorkerCloseTimeout=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:br}),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.gainNode.gain.value=0,this._prevVolume=null,this.playing=!1,this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null}async destroy(){return this.closeAudio(),this.resetInit(),this.clearAudioResumeStateTimeout(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.disconnect(),this.scriptNode.onaudioprocess=qr,this.scriptNode=null),await this._destroyWorklet(),this.workletProcessorNode&&(this.workletProcessorNode.disconnect(),this.workletProcessorNode.port.onmessage=qr,this.workletProcessorNode=null),this.audioBufferSourceNode&&(this.audioBufferSourceNode.stop(),this.audioBufferSourceNode=null),this.mediaStreamAudioDestinationNode&&(this.mediaStreamAudioDestinationNode.disconnect(),this.mediaStreamAudioDestinationNode=null),this.hasInitScriptNode=!1,this._prevVolume=null,this.off(),!0}_destroyWorklet(){return new Promise(((e,t)=>{this.workletProcessorNode?(this.workletProcessorNode.port.postMessage({type:"destroy"}),this.workletWorkerCloseTimeout=setTimeout((()=>{this.player.debug.log(this.TAG_NAME,"send close and wait 10ms destroy directly"),this.workletWorkerCloseTimeout&&(clearTimeout(this.workletWorkerCloseTimeout),this.workletWorkerCloseTimeout=null),e()}),10)):e()}))}resetInit(){this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Et[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),e.depth&&(this.audioInfo.depth=e.depth),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(rt.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}get audioContextState(){let e=null;return this.audioContext&&(e=this.audioContext.state),e}initScriptNode(){}initMobileScriptNode(){}initWorkletScriptNode(){}getEngineType(){return""}mute(e){e?(this.setVolume(0),this.clear()):this.setVolume(this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(this.audioEnabled(!0),e=Zr(e,0,1),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(rt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(rt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(rt.mute,!0),this.gainNode.gain.value=e,this.player.emit(rt.volumechange,this.player.volume),this.player.emit(rt.volume,this.player.volume),this._prevVolume=e))}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.workletProcessorNode&&this.workletProcessorNode.disconnect(this.gainNode),this.gainNode&&(this.gainNode.disconnect(this.mediaStreamAudioDestinationNode),this.$audio||this.gainNode.disconnect(this.audioContext.destination))),this.clear()}audioEnabled(e){e?this.isStateSuspended()&&(this.audioContext.resume().then((()=>{this.player.emit(rt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.isStateSuspended()&&this.player.emit(rt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)):this.isStateRunning()&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContextState}isStateSuspended(){return"suspended"===this.audioContextState}clearAudioResumeStateTimeout(){this.audioResumeStateTimeout&&(clearTimeout(this.audioResumeStateTimeout),this.audioResumeStateTimeout=null)}clear(){this.bufferList=[]}play(e,t){}pause(){this.playing=!1}resume(){this.playing=!0}setRate(e){}getAudioBufferSize(){return 0}}class Xa{constructor(e,t,i,s){this.player=e,this.audio=t,this.channel=i,this.bufferSize=s}destroy(){this.buffer=null,this.channel=null}extract(e,t){let i=this.provide(t);for(let t=0;t=a){try{for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const s=2*(t=t||0);i>=0||(i=(e.length-s)/2);const r=2*i;this.ensureCapacity(i+this._frameCount);const o=this.endIndex;this.vector.set(e.subarray(s,s+r),o),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t=t||0,i>=0||(i=e.frameCount-t),this.putSamples(e.vector,e.position+t,i)}receive(e){e>=0&&!(e>this._frameCount)||(e=this.frameCount),this._frameCount-=e,this._position+=e}receiveSamples(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,s=this.startIndex;e.set(this._vector.subarray(s,s+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=this.startIndex+2*t,r=2*i;e.set(this._vector.subarray(s,s+r))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class en{constructor(e){e?(this._inputBuffer=new Za,this._outputBuffer=new Za):this._inputBuffer=this._outputBuffer=null}destroy(){this.clear(),this._outputBuffer&&(this._outputBuffer.destroy(),this._outputBuffer=null),this._inputBuffer&&(this._inputBuffer.destroy(),this._inputBuffer=null)}get inputBuffer(){return this._inputBuffer}set inputBuffer(e){this._inputBuffer=e}get outputBuffer(){return this._outputBuffer}set outputBuffer(e){this._outputBuffer=e}clear(){this._inputBuffer.clear(),this._outputBuffer.clear()}}class tn extends en{constructor(e){super(e),this.reset(),this._rate=1}destroy(){super.destroy()}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new tn;return e.rate=this._rate,e}process(){const e=this._inputBuffer.frameCount;this._outputBuffer.ensureAdditionalCapacity(e/this._rate+1);const t=this.transpose(e);this._inputBuffer.receive(),this._outputBuffer.put(t)}transpose(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,s=this._outputBuffer.vector,r=this._outputBuffer.endIndex;let o=0,a=0;for(;this.slopeCount<1;)s[r+2*a]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],s[r+2*a+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],a+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,o+=1,o>=e-1)break e;const n=i+2*o;s[r+2*a]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],s[r+2*a+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],a+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],a}}const sn=function(){};class rn extends class{constructor(e){this._pipe=e}destroy(){}get pipe(){return this._pipe}get inputBuffer(){return this._pipe.inputBuffer}get outputBuffer(){return this._pipe.outputBuffer}fillInputBuffer(){throw new Error("fillInputBuffer() not overridden")}fillOutputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:sn;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}destroy(){this.clear(),this.sourceSound.destroy(),this.sourceSound=null,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._position)throw new RangeError("New position may not be greater than current position");const t=this.outputBufferPosition-(this._position-e);if(t<0)throw new RangeError("New position falls outside of history buffer");this.outputBufferPosition=t,this._position=e}get sourcePosition(){return this._sourcePosition}set sourcePosition(e){this.clear(),this._sourcePosition=e}onEnd(){this.callback()}fillInputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const t=new Float32Array(2*e),i=this.sourceSound.extract(t,e,this._sourcePosition);this._sourcePosition+=i,this.inputBuffer.putSamples(t,0,i)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const s=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,s),this.outputBuffer.receive(Math.max(s-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const on=[[124,186,248,310,372,434,496,558,620,682,744,806,868,930,992,1054,1116,1178,1240,1302,1364,1426,1488,0],[-100,-75,-50,-25,25,50,75,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-20,-15,-10,-5,5,10,15,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-4,-3,-2,-1,1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],an=-10/1.5;class nn extends en{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.refMidBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}destroy(){this.clear(),super.destroy()}clear(){super.clear(),this.clearMidBuffer(),this.refMidBuffer=null}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1),this.midBuffer=null}setParameters(e,t,i,s){e>0&&(this.sampleRate=e),s>0&&(this.overlapMs=s),t>0?(this.sequenceMs=t,this.autoSeqSetting=!1):this.autoSeqSetting=!0,i>0?(this.seekWindowMs=i,this.autoSeekSetting=!1):this.autoSeekSetting=!0,this.calculateSequenceParameters(),this.calculateOverlapLength(this.overlapMs),this.tempo=this._tempo}set tempo(e){let t;this._tempo=e,this.calculateSequenceParameters(),this.nominalSkip=this._tempo*(this.seekWindowLength-this.overlapLength),this.skipFract=0,t=Math.floor(this.nominalSkip+.5),this.sampleReq=Math.max(t+this.overlapLength,this.seekWindowLength)+this.seekLength}get tempo(){return this._tempo}get inputChunkSize(){return this.sampleReq}get outputChunkSize(){return this.overlapLength+Math.max(0,this.seekWindowLength-2*this.overlapLength)}calculateOverlapLength(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,this.refMidBuffer=new Float32Array(2*this.overlapLength),this.midBuffer=new Float32Array(2*this.overlapLength)}checkLimits(e,t,i){return ei?i:e}calculateSequenceParameters(){let e,t;this.autoSeqSetting&&(e=150+-50*this._tempo,e=this.checkLimits(e,50,125),this.sequenceMs=Math.floor(e+.5)),this.autoSeekSetting&&(t=28.333333333333332+an*this._tempo,t=this.checkLimits(t,15,25),this.seekWindowMs=Math.floor(t+.5)),this.seekWindowLength=Math.floor(this.sampleRate*this.sequenceMs/1e3),this.seekLength=Math.floor(this.sampleRate*this.seekWindowMs/1e3)}set quickSeek(e){this._quickSeek=e}clone(){const e=new nn;return e.tempo=this._tempo,e.setParameters(this.sampleRate,this.sequenceMs,this.seekWindowMs,this.overlapMs),e}seekBestOverlapPosition(){return this._quickSeek?this.seekBestOverlapPositionStereoQuick():this.seekBestOverlapPositionStereo()}seekBestOverlapPositionStereo(){let e,t,i,s=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;st&&(t=i,e=s);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,s,r,o=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,s=0,r=0;o<4;o+=1){let a=0;for(;on[o][a]&&(r=s+on[o][a],!(r>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer),i>t&&(t=i,e=r),a+=1;s=e}return e}preCalculateCorrelationReferenceStereo(){let e,t,i=0;for(;i=this.sampleReq;){e=this.seekBestOverlapPosition(),this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),this.overlap(Math.floor(e)),this._outputBuffer.put(this.overlapLength),t=this.seekWindowLength-2*this.overlapLength,t>0&&this._outputBuffer.putBuffer(this._inputBuffer,e+this.overlapLength,t);const s=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(s,s+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const ln=function(e,t){return(e>t?e-t:t-e)>1e-10};class dn{constructor(){this.transposer=new tn(!1),this.stretch=new nn(!1),this._inputBuffer=new Za,this._intermediateBuffer=new Za,this._outputBuffer=new Za,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}destroy(){this.clear(),this._inputBuffer.destroy(),this._intermediateBuffer.destroy(),this._outputBuffer.destroy(),this._inputBuffer=null,this._intermediateBuffer=null,this._outputBuffer=null}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new dn;return e.rate=this.rate,e.tempo=this.tempo,e}get rate(){return this._rate}set rate(e){this.virtualRate=e,this.calculateEffectiveRateAndTempo()}set rateChange(e){this._rate=1+.01*e}get tempo(){return this._tempo}set tempo(e){this.virtualTempo=e,this.calculateEffectiveRateAndTempo()}set tempoChange(e){this.tempo=1+.01*e}set pitch(e){this.virtualPitch=e,this.calculateEffectiveRateAndTempo()}set pitchOctaves(e){this.pitch=Math.exp(.69314718056*e),this.calculateEffectiveRateAndTempo()}set pitchSemitones(e){this.pitchOctaves=e/12}get inputBuffer(){return this._inputBuffer}get outputBuffer(){return this._outputBuffer}calculateEffectiveRateAndTempo(){const e=this._tempo,t=this._rate;this._tempo=this.virtualTempo/this.virtualPitch,this._rate=this.virtualRate*this.virtualPitch,ln(this._tempo,e)&&(this.stretch.tempo=this._tempo),ln(this._rate,t)&&(this.transposer.rate=this._rate),this._rate>1?this._outputBuffer!=this.transposer.outputBuffer&&(this.stretch.inputBuffer=this._inputBuffer,this.stretch.outputBuffer=this._intermediateBuffer,this.transposer.inputBuffer=this._intermediateBuffer,this.transposer.outputBuffer=this._outputBuffer):this._outputBuffer!=this.stretch.outputBuffer&&(this.transposer.inputBuffer=this._inputBuffer,this.transposer.outputBuffer=this._intermediateBuffer,this.stretch.inputBuffer=this._intermediateBuffer,this.stretch.outputBuffer=this._outputBuffer)}process(){this._rate>1?(this.stretch.process(),this.transposer.process()):(this.transposer.process(),this.stretch.process())}}class hn{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new dn,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new rn(i,this.soundTouch)}destroy(){this.filter&&(this.filter.destroy(),this.filter=null),this.soundTouch&&(this.soundTouch.destroy(),this.soundTouch=null)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),s=new Float32Array(i),r=new Float32Array(i);for(let e=0;e{e()})),this.eventListenList=[]),this.$audio&&(this.$audio.pause(),this.$audio.srcObject=null,this.$audio.parentNode&&this.$audio.parentNode.removeChild(this.$audio),this.$audio=null),this.processor&&(this.processor.destroy(),this.processor=null),this.rateProcessor&&(this.rateProcessor.destroy(),this.rateProcessor=null),this.scriptNodeInterval&&(clearInterval(this.scriptNodeInterval),this.scriptNodeInterval=null),this.defaultPlaybackRate=1,this.playbackRate=1,this.scriptStartTime=0,this.audioBufferSize=0,this.engineType=bs,this.player.debug.log("AudioContext","destroy"),!0}isAudioPlaying(){return this.$audio&&ua(this.$audio.paused)&&ua(this.$audio.ended)&&0!==this.$audio.playbackRate&&0!==this.$audio.readyState}_bindAudioProxy(){const{proxy:e}=this.player.events,t=e(this.$audio,"canplay",(()=>{this.player.debug.log("AudioContext","canplay"),this._delayPlay&&this._audioElementPlay()}));this.eventListenList.push(t)}_getAudioElementReadyState(){let e=0;return this.$audio&&(e=this.$audio.readyState),e}audioElementPlay(){if(this.$audio){const e=this._getAudioElementReadyState();if(this.player.debug.log("AudioContext",`play and readyState: ${e}`),!(0!==e||Ho()&&po()))return this.player.debug.warn("AudioContext","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._audioElementPlay()}}_audioElementPlay(){this.$audio&&this.$audio.play().then((()=>{this._delayPlay=!1,this.player.debug.log("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debug.warn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debug.log("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debug.error("AudioContext","_audioElementPlay error",e),document.addEventListener("click",this._audioElementPlay.bind(this))}))}getAudioBufferSize(){return this.audioBufferSize}get oneBufferDuration(){return this.audioBufferSize/this.audioContext.sampleRate*1e3}get isActiveEngineType(){return this.engineType===vs}getBufferListDuration(){return this.bufferList.length*this.oneBufferDuration}isMoreThanMinBufferDuration(){return this.getBufferListDuration()>=100*this.playbackRate}initProcessor(){this.processor=new Xa(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new hn(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||bs;const t=()=>{e=Ho()&&ho()?vs:(po()&&this.player._opt.supportLockScreenPlayAudio||ta()&&this.supportAudioWorklet(),bs)};return this.player._opt.audioEngine?this.player._opt.audioEngine===As&&ta()&&this.supportAudioWorklet()?e=bs:this.player._opt.audioEngine===vs?e=vs:this.player._opt.audioEngine===bs?e=bs:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===As?1024:e===vs?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet&&"function"==typeof this.audioContext.audioWorklet.addModule}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===As?this.initWorkletScriptNode():this.engineType===vs?this.initIntervalScriptNode():this.engineType===bs&&this.initProcessScriptNode(),this.audioElementPlay())}getEngineType(){return this.engineType}isPlaybackRateSpeed(){return this.playbackRate>this.defaultPlaybackRate}initProcessScriptNode(){const e=this.audioContext.createScriptProcessor(this.audioBufferSize,0,this.audioInfo.channels);e.onaudioprocess=e=>{const t=e.outputBuffer;this.handleScriptNodeCallback(t)},e.connect(this.gainNode),this.scriptNode=e,this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0}initIntervalScriptNode(){this.scriptStartTime=0;const e=1e3*this.audioBufferSize/this.audioContext.sampleRate;this.scriptNodeInterval=setInterval((()=>{if(0===this.bufferList.length||ua(this.playing)||this.isMute)return void(this.playing&&ua(this.isMute)&&this.player.debug.log("AudioContext",`interval script node and bufferList is ${this.bufferList.length} or playing is ${this.playing}`));const e=this.audioContext.createBufferSource(),t=this.audioContext.createBuffer(this.audioInfo.channels,this.audioBufferSize,this.audioContext.sampleRate);this.handleScriptNodeCallback(t,(()=>{this.scriptStartTime{"init"===e.data.message?(this.audioBufferSize=e.data.audioBufferSize,this.start=e.data.start,this.channels=e.data.channels,this.state=0,this.offset=0,this.samplesArray=[]):"stop"===e.data.message?(this.state=0,this.start=!1,this.offset=0,this.samplesArray=[]):"data"===e.data.message?this.samplesArray.push(e.data.buffer):"zero"===e.data.message&&this.samplesArray.push({left:new Float32Array(this.audioBufferSize).fill(0),right:new Float32Array(this.audioBufferSize).fill(0)})}}process(e,t,i){const s=t[0][0],r=t[0][1];if(0===this.offset&&this.port.postMessage({message:"beep"}),0===this.state)this.state=1;else if(1===this.state&&this.samplesArray.length>=4)this.state=2;else if(2===this.state){const e=this.samplesArray[0];for(let t=0;t{if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log("AudioContext","initWorkletScriptNode() player is destroyed"));if(!this.audioContext)return void this.player.debug.warn("AudioContext","initWorkletScriptNode audioContext is null");let e=[1];2===this.audioInfo.channels&&(e=[1,1]);try{this.workletProcessorNode=new AudioWorkletNode(this.audioContext,"worklet-processor",{numberOfOutputs:this.audioInfo.channels,outputChannelCount:e})}catch(e){this.player.debug.error("AudioContext","initWorkletScriptNode error",e),this.workletProcessorNode=null,this.tierDownToProcessScript()}this.workletProcessorNode&&(this.workletProcessorNode.connect(this.gainNode),this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0,this.workletProcessorNode.port.postMessage({message:"init",audioBufferSize:this.audioBufferSize,start:!0,channels:this.audioInfo.channels}),this.workletProcessorNode.port.onmessage=e=>{this.workletProcessorNode?this.audioContext?this.handleScriptNodeCallback(this.workletProcessorNode,null,!0):this.workletProcessorNode.port.postMessage({message:"zero"}):this.player.debug.error("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),te)}tierDownToProcessScript(){this.player.debug.log("AudioContext","tierDownToProcessScript"),this.engineType=bs,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t||qr;let r=e.length;s&&(i=e,r=this.audioBufferSize);const o=this.audioInfo.channels;if(this.playing&&this.isMoreThanMinBufferDuration()){if(this.player._opt,this.player.openSyncAudioAndVideo()&&ca(this.player.visibility)){this.calcPlaybackRateBySync();const r=this.player.getAudioSyncVideoDiff();if(r>this.player._opt.syncAudioAndVideoDiff){const a=this.player.getCurrentVideoAndAudio();return this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${r},\n and video is ${a.video} ,\n and audio is ${a.audio} , waiting and bufferList is ${this.bufferList.length}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t()}}let a=this._provide(r);if(0===a.size)return ua(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debug.warn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${r},and bufferItem.size is 0, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t();a&&a.ts&&(this.player.audioTimestamp=a.ts),s?i.port.postMessage({message:"data",buffer:a}):this.fillScriptNodeOutputBuffer(e,o,a),t()}else 0===this.bufferList.length&&this.playing&&ua(this.isMute)&&ua(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debug.warn("AudioContext",`bufferList size is 0 and outputBufferLength is ${r}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),t()}fillScriptNodeOutputBuffer(e,t,i){if(1===t){const t=e.getChannelData(0);i?0===i.size?t.fill(0):t.set(i.left):t.fill(0)}else if(2===t){const t=e.getChannelData(0),s=e.getChannelData(1);i?0===i.size?(t.fill(0),s.fill(0)):(t.set(i.left),s.set(i.right)):(t.fill(0),s.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),ua(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debug.warn("AudioContext","play has not init script node"))}calcPlaybackRateBySync(){if(this.isMute)return;if(!this.playing)return;const e=Math.floor(2e3/this.oneBufferDuration);if(this.bufferList.length>e)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===vs){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debug.warn("AudioContext",`engine active , audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n and bufferlist is ${this.bufferList.length}`);const e=this.player.getRenderCurrentPts();for(;this.bufferList.length>0;){const t=this.bufferList[0],i=t.ts-e;if(i>-this.player._opt.syncAudioAndVideoDiff/2){this.player.audioTimestamp=t.ts,this.player.debug.log("AudioContext",`engine active , audioSyncVideoOption\n item.ts is ${t.ts} and currentVideoTimestamp is ${e}, diff is ${i} > -${this.player._opt.syncAudioAndVideoDiff/2} and end`);break}this.bufferList.shift(),this.player.audioTimestamp=t.ts}}}else{let e=this.playbackRate;t<-this.player._opt.syncAudioAndVideoDiff?e===this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n speed up, playbackRate is ${e},\n and bufferList is ${this.bufferList.length}`),e=this.defaultPlaybackRate+.2):t>-this.player._opt.syncAudioAndVideoDiff/2&&e!==this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`diff is ${t} > -${this.player._opt.syncAudioAndVideoDiff/2} and speed to 1`),e=this.defaultPlaybackRate),this.updatePlaybackRate(e)}}calcPlaybackRateByBuffer(){if(this.isMute)return;if(!this.playing)return;let e=this.playbackRate,t=1e3,i=5e3;this.isAudioPlayer&&(t=this.player._opt.videoBufferDelay,i=this.player._opt.videoBufferMax);const s=Math.floor(t/this.oneBufferDuration),r=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>r)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, and drop`),void this.clear();this.getEngineType()!==vs&&(this.bufferList.length>s?(e=this.defaultPlaybackRate+.2,this.player.debug.log("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, speed up, playbackRate is ${e}`)):this.bufferList.length0?this.player.emit(rt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(rt.mute,!0),this.$video.volume=e,this.player.emit(rt.volumechange,this.player.volume),this.player.emit(rt.volume,this.player.volume),this._prevVolume=e))}clear(){}play(e,t){const i=this.player.video.awriter;if(i)if(e.close)try{i.write(e),ea(e)}catch(e){this.player.debug.error("Video","play audio error",e)}else try{const s=function(e,t){const i={...t,format:"f32-planar",data:new Float32Array(0)};if(i.numberOfFrames=e[0].length,1===e.length)i.data=e[0];else if(2===e.length){const t=new Float32Array(e[0].length+e[1].length);for(let i=0;i{this.listenPlaybackPause(e)})),this.player.debug.log("AudioPlaybackContext","init")}async destroy(){return this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),await super.destroy(),this.player.debug.log("AudioPlaybackLoader","destroy"),!0}listenPlaybackPause(e){e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()}initScriptNodeDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initScriptNode()}),e):this.initScriptNode()}setRate(e){e!==this.defaultPlaybackRate&&this.rateProcessor&&(this.player.debug.log("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class fn extends cn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debug.log(this.TAG_NAME,"init")}async destroy(){return await super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy"),!0}play(e,t){ua(this.playing)||super.play(e,t)}pause(){this.player.debug.log(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debug.log(this.TAG_NAME,"resume"),this.playing=!0}}class mn extends wa{constructor(e){super(),this.TAG_NAME="AudioWebrtcPlayerLoader",this.$video=new Audio,this.player=e,this.init=!1,this._prevVolume=null,this.eventsDestroy=[],this._handleDocumentClickPlay=this._handleClickPlay.bind(this),this._initAudioEvents(),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){return this.resetInit(),this.off(),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this._prevVolume=null,this.$video&&(this.$video.pause(),this.$video.srcObject=null,this.$video=null),this.player.debug.log(this.TAG_NAME,"destroy"),!0}_initAudioEvents(){const{proxy:e}=this.player.events,t=e(this.$video,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t})}));this.eventsDestroy.push(t)}resetInit(){this.init=!1}_handleClickPlay(){this.$video&&(this.$video.play(),document.removeEventListener("click",this._handleDocumentClickPlay))}bindStream(e){this.$video.srcObject=e,this.$video.volume=1,this.$video.play().catch((e=>{this.player.debug.warn(this.TAG_NAME,"audio play error",e),document.addEventListener("click",this._handleDocumentClickPlay)}))}getEngineType(){return"audio"}get isPlaying(){return!0}get volume(){return ca(this.$video.muted)?0:this.$video.volume}get isMute(){return 0===this.$video.volume||ca(this.$video.muted)}mute(e){this.setVolume(e?0:this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e),isNaN(e)||null===this.$video||(this.$video.muted&&(this.$video.muted=!1),e=Zr(e,0,1),po()&&(this.$video.muted=0===e),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(rt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(rt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(rt.mute,!0),this.$video.volume=e,this.player.emit(rt.volumechange,this.player.volume),this.player.emit(rt.volume,this.player.volume),this._prevVolume=e))}pause(){}resume(){}audioEnabled(){this.mute(!1)}}class gn{constructor(e){return new(gn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===_?e.useMSE&&e.mseDecodeAudio?un:pn:e.playType===v?e.isWebrtc?mn:fn:e.isHls&&ua(e.supportHls265)||e.isWebrtc&&ua(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc||e.useWCS&&e.wcsDecodeAudio||e.useWasm&&e.wasmPlayAudioUseVideoRender?un:cn}}class yn extends wa{constructor(e){super(),this.player=e,this.playing=!1,this._requestAbort=!1,this._status=$s,this.writableStream=null,this.abortController=new AbortController,this.streamRate=so((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("FetchStream","init")}async destroy(){return this.abort(),this.writableStream&&ua(this.writableStream.locked)&&this.writableStream.close().catch((e=>{this.player.debug.log("FetchStream","destroy and writableStream.close()",e)})),this.writableStream=null,this.off(),this._status=$s,this.streamRate=null,this.stopStreamRateInterval(),this.player.debug.log("FetchStream","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=Xr();const s=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,s).then((e=>{if(this._requestAbort)return this._status=$s,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return this.player.debug.error("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(nt.fetchError,`fetch response status is ${e.status} and ok is ${e.ok}`);if(this.emit(rt.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)this.player.debug.log("FetchStream","use WritableStream() to read stream"),this.writableStream=new WritableStream({write:e=>this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debug.log("FetchStream","writableStream.write() and this.abortController.signal.aborted so return"),void(this._status=qs)):ca(this._requestAbort)?(this.player.debug&&this.player.debug.log("FetchStream","writableStream.write() and this._requestAbort is true so return"),void(this._status=qs)):"string"!=typeof e?(this._status=Js,this.streamRate&&this.streamRate(e.byteLength),i.dispatch(e)):void this.player.debug.warn("FetchStream",`writableStream.write() and value is "${e}" string so return`),close:()=>{this._status=qs,i.close(),this.emit(rt.streamEnd,"fetch done")},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debug.log("FetchStream","writableStream.abort() and this.abortController.signal.aborted so return"),void(this._status=qs);i.close();const t=e.toString();-1===t.indexOf(ds)&&-1===t.indexOf(hs)&&e.name!==cs&&(this.abort(),this.emit(nt.fetchError,e))}}),e.body.pipeTo(this.writableStream);else{this.player.debug.log("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),s=()=>{t.read().then((e=>{let{done:t,value:r}=e;return t?(this._status=qs,i.close(),void this.emit(rt.streamEnd,"fetch done")):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debug.log("FetchStream","reader.read() and this.abortController.signal.aborted so return"),void(this._status=qs)):ca(this._requestAbort)?(this.player.debug.log("FetchStream","reader.read() and this._requestAbort is true so return"),void(this._status=qs)):void("string"!=typeof r?(this._status=Js,this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),s()):this.player.debug.warn("FetchStream",`reader.read() and value is "${r}" string so return`))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debug.log("FetchStream","reader.read().catch() and this.abortController.signal.aborted so return"),void(this._status=qs);i.close();const t=e.toString();-1===t.indexOf(ds)&&-1===t.indexOf(hs)&&e.name!==cs&&(this.abort(),this.emit(nt.fetchError,e))}))};s()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(nt.fetchError,e))}))}abort(){this._requestAbort=!0;const e=Wo();if(this._status!==Js||ua(e)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null,this.player.debug.log("FetchStream",`abort() and not abortController.abort() _status is ${this._status} and _isChrome is ${e}`)}getStreamType(){return u}}class An extends wa{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.abortController=new AbortController,this.streamRate=so((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.fetchWorker?(this.player.debug.log(this.TAG_NAME,"send destroy"),this.fetchWorker.postMessage({cmd:Xe}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug.warn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.off(),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this._stopStreamRateInterval(),this.streamRate=null,this.fetchWorker&&(this.fetchWorker.terminate(),this.fetchWorker.onmessage=null,this.fetchWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.player.debug.log(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=ya(function(){function e(e){return!0===e||"true"===e}function t(e){return!1===e||"false"===e}const i="The user aborted a request",s="AbortError",r="AbortError",o="fetch",a="destroy",n="destroyEnd",l="buffer",d="fetchError",h="fetchClose",c="fetchSuccess",u="idle",p="buffering",f="complete";let m=new class{constructor(){this._requestAbort=!1,this._status=u,this.writableStream=null,this.isChrome=!1,this.abortController=new AbortController}destroy(){this.abort(),this.writableStream&&t(this.writableStream.locked)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=u}fetchStream(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=Object.assign({signal:this.abortController.signal},{headers:o.headers||{}});fetch(t,a).then((t=>{if(this._requestAbort)return this._status=u,void t.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(t))return this.abort(),void postMessage({cmd:d,message:`fetch response status is ${t.status} and ok is ${t.ok}`});if(postMessage({cmd:c}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=f:"string"!=typeof t&&(this._status=p,postMessage({cmd:l,buffer:t},[t.buffer]))},close:()=>{this._status=f,postMessage({cmd:h})},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=f);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(s)&&e.name!==r&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}}),t.body.pipeTo(this.writableStream);else{const o=t.body.getReader(),a=()=>{o.read().then((t=>{let{done:i,value:s}=t;if(i)return this._status=f,void postMessage({cmd:h});this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=f:"string"!=typeof s&&(this._status=p,postMessage({cmd:l,buffer:s},[s.buffer]),a())})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=f);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(s)&&e.name!==r&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}))};a()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}))}abort(){if(this._requestAbort=!0,this._status!==p||t(m.isChrome)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case o:m.isChrome=e(i.isChrome),m.fetchStream(i.url,JSON.parse(i.options));break;case a:m.destroy(),m=null,postMessage({cmd:n})}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case et:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case st:this.emit(rt.streamSuccess),this._startStreamRateInterval();break;case it:t.close(),this.emit(rt.streamEnd,"fetch done");break;case tt:t.close(),this.emit(nt.fetchError,i.message);break;case Ze:this._destroy()}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player._times.streamStart=Xr(),this.fetchWorker.postMessage({cmd:Qe,url:e,isChrome:Wo(),options:JSON.stringify(t)})}getStreamType(){return u}}class bn extends wa{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=lt,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=so((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebsocketStream","init")}async destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debug.log("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:s}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer";const r=i(this.socket,"open",(()=>{t.log("WebsocketStream","socket open"),this.socketStatus=dt,this.emit(rt.streamSuccess),this.player.emit(rt.websocketOpen),this.startStreamRateInterval()})),o=i(this.socket,"message",(e=>{"string"!=typeof e.data?(this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)):this.player.debug.warn("WebsocketStream",`websocket handle message message is "${e.data}" string so return`)})),a=i(this.socket,"close",(e=>{if(!this.player.isDestroyedOrClosed())if(this.socketStatus!==ct){if(t.log("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&t.error("WebsocketStream",`socket close abnormally and code is ${e.code}`),ca(this.requestAbort))return this.requestAbort=!1,void t.log("WebsocketStream","socket close and requestAbort is true");s.close(),this.socketStatus=ht,this.player.emit(rt.websocketClose,e.code),this.emit(rt.streamEnd,e.code)}else t.log("WebsocketStream","socket close and status is error, so return")})),n=i(this.socket,"error",(e=>{this.player.isDestroyedOrClosed()||(t.error("WebsocketStream","socket error",e),this.socketStatus=ct,this.emit(nt.websocketError,e),s.close(),t.log("WebsocketStream","socket error:",e.isTrusted?"websocket user aborted":"websocket error"))}));this.socketDestroyFnList.push(r,o,a,n)}_closeWebSocket(){this.socketDestroyFnList.forEach((e=>e())),!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debug.log("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket=null,this.socketStatus=lt,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("WebsocketStream","websocket handle message demux is null so return")}fetchStream(e,t){this.player._times.streamStart=Xr(),this.wsUrl=e,this._createWebSocket()}sendMessage(e){this.socket?this.socketStatus===dt?this.socket.send(e):this.player.debug.error("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debug.error("WebsocketStream","websocket send message socket is null")}resetFetchStream(){this._closeWebSocket(),this._createWebSocket()}getStreamType(){return f}}class vn extends wa{constructor(e){super(),this.player=e,e.debug.log("HlsStream","init")}async destroy(){return this.off(),this.player.debug.log("HlsStream","destroy"),!0}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=Xr(),t.loadSource(e).then((()=>{this.player.debug.log("HlsStream","loadSource success"),this.emit(rt.streamSuccess)})).catch((e=>{this.emit(nt.hlsError,e)}))}getStreamType(){return p}}class _n extends wa{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debug.log("WebrtcStream","init")}async destroy(){return this.webrctUrl=null,this.off(),this.player.debug.log("WebrtcStream","destroy"),!0}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{webrtc:i,debug:s}=this.player;if(this.player._times.streamStart=Xr(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),this.player.isWebrtcForM7S()&&-1===this.webrctUrl.indexOf("/webrtc/play")){const t=new URL(this.webrctUrl),i="/webrtc/play"+t.pathname;this.webrctUrl=t.origin+i+t.search,this.player.debug.log("WebrtcStream",`original url is ${e}, and new url is: ${this.webrctUrl}`)}i.loadSource(this.webrctUrl,t).then((()=>{this.player.debug.log("WebrtcStream","loadSource success"),this.emit(rt.streamSuccess)})).catch((e=>{this.player.debug.error("WebrtcStream","loadSource error",e),this.emit(nt.webrtcError,e)}))}getStreamType(){return m}}class Sn extends wa{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=so((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebTransportLoader","init")}async destroy(){return this.abort(),this.off(),this.player.debug.log("WebTransportLoader","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebTransport(){const e=this.player,{debug:t,events:{proxy:i},demux:s}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(rt.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(s.input))}))})).catch((e=>{this.player.debug.warn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debug.warn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=Xr(),this.wtUrl=e.replace(/^wt:/,"https:"),this._createWebTransport()}abort(){if(this.transport)try{this.transport.close(),this.transport=null}catch(e){this.transport=null}}getStreamType(){return g}}class wn extends wa{constructor(e){super(),this.player=e,this.workUrl=null,e.debug.log("WorkerStream","init")}async destroy(){return this.workUrl=null,this.off(),this.player.debug.log("WorkerStream","destroy"),!0}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.workUrl=e,this.player._times.streamStart=Xr(),this.player.decoderWorker.workerFetchStream(e,t)}getStreamType(){const e=this.player._opt.protocol;return y+" "+(e===a?u:f)}}class En extends wa{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debug.log(this.TAG_NAME,"init")}async destroy(){return this.off(),this.player.debug.log(this.TAG_NAME,"destroy"),!0}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=Xr(),t.loadSource(e).then((()=>{this.player.debug.log(this.TAG_NAME,"loadSource success"),this.emit(rt.streamSuccess)})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource error",e),this.emit(nt.aliyunRtcError,e)}))}getStreamType(){return A}}class Tn{constructor(e){return new(Tn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:i,playType:s,useWCS:r,useMSE:c,demuxUseWorker:u,mainThreadFetchUseWorker:p}=e;return t===a?s===v?wn:s===b?i&&!Qo(e)||u?wn:p?An:yn:r||c?u?wn:p?An:yn:wn:t===o?s===v?wn:s===b?i&&!Qo(e)||u?wn:bn:r||c?u?wn:bn:wn:t===n?vn:t===l?_n:t===d?Sn:t===h?En:void 0}}var kn=Tr((function(e){function t(e,r){if(!e)throw"First parameter is required.";r=new i(e,r=r||{type:"video"});var o=this;function a(t){t&&(r.initCallback=function(){t(),t=r.initCallback=null});var i=new s(e,r);(p=new i(e,r)).record(),u("recording"),r.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",r.type)}function n(e){if(e=e||function(){},p){if("paused"===o.state)return o.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===o.state||r.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',o.state),r.disableLogs||console.log("Stopped recording "+r.type+" stream."),"gif"!==r.type?p.stop(t):(p.stop(),t()),u("stopped")}else m();function t(t){if(p){Object.keys(p).forEach((function(e){"function"!=typeof p[e]&&(o[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!r.disableLogs&&console.log(i.type,"->",y(i.size)),e){var s;try{s=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(o,s):e(s)}r.autoWriteToDisk&&d((function(e){var t={};t[r.type+"Blob"]=e,x.Store(t)}))}else"function"==typeof e.call?e.call(o,""):e("")}}function l(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(p||{}).blob;if(!i)return r.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var s=new FileReader;s.readAsDataURL(i),s.onload=function(t){e(t.target.result)}}else{var o=function(e){try{var t=h.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return h.revokeObjectURL(t),i}catch(e){}}(l);o.onmessage=function(t){e(t.data)},o.postMessage(i)}}function c(e){e=e||0,"paused"!==o.state?"stopped"!==o.state&&(e>=o.recordingDuration?n(o.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){o&&(o.state=e,"function"==typeof o.onStateChanged.call?o.onStateChanged.call(o,e):o.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+r.type+" recorder.";function m(){!0!==r.disableLogs&&console.warn(f)}var g={startRecording:function(t){return r.disableLogs||console.log("RecordRTC version: ",o.version),t&&(r=new i(e,t)),r.disableLogs||console.log("started recording "+r.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),o.recordingDuration&&c(),o):(a((function(){o.recordingDuration&&c()})),o)},stopRecording:n,pauseRecording:function(){p?"recording"===o.state?(u("paused"),p.pause(),r.disableLogs||console.log("Paused recording.")):r.disableLogs||console.warn("Unable to pause the recording. Recording state: ",o.state):m()},resumeRecording:function(){p?"paused"===o.state?(u("recording"),p.resume(),r.disableLogs||console.log("Resumed recording.")):r.disableLogs||console.warn("Unable to resume the recording. Recording state: ",o.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return o.recordingDuration=e,o.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){o.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),r.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(p)return p.blob;m()},getDataURL:d,toURL:function(){if(p)return h.createObjectURL(p.blob);m()},getInternalRecorder:function(){return p},save:function(e){p?A(p.blob,e):m()},getFromDisk:function(e){p?t.getFromDisk(r.type,e):m()},setAdvertisementArray:function(e){r.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||b()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),m=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);m&&!f&&-1!==navigator.userAgent.indexOf("CriOS")&&(m=!1,f=!0);var g=window.MediaStream;function y(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function A(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var s=t.split(".");t=s[0],i=s[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var o=document.createElement("a");o.href=h.createObjectURL(e),o.download=r,o.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(o),"function"==typeof o.click?o.click():(o.target="_blank",o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(o.href)}function b(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function v(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function _(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=A,t.getTracks=v,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,s=new EBML.Decoder,r=EBML.tools,o=new FileReader;o.onload=function(e){s.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var o=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([o,a],{type:"video/webm"});t(n)},o.readAsArrayBuffer(e)},t.bytesToSize=y,t.isElectron=b;var S={};function w(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),s=i.substring(e+7)),-1!==(t=s.indexOf(";"))&&(s=s.substring(0,t)),-1!==(t=s.indexOf(" "))&&(s=s.substring(0,t)),r=parseInt(""+s,10),isNaN(r)&&(s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function E(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var s;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(s=new g).addTrack(v(e,"audio")[0]):s=new g(v(e,"audio")),e=s;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=f?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var r,o=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function l(){o=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return o},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],o=[];var s=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",s),r&&(r=null),f&&!w()&&(s="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&s.mimeType&&(MediaRecorder.isTypeSupported(s.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType),s.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,s),t.mimeType=s.mimeType}catch(t){r=new MediaRecorder(e)}s.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(s.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+y(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(s)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(o.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",s.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(o,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(l),l()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function s(){if(r&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(s,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var s,r=this,o=[],a=[],n=!1,l=0,d=2,c=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function p(e,t){function i(e,t){var i,s=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),o=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var s=Math.round(e.length*(t/i)),r=[],o=Number((e.length-1)/(s-1));r[0]=e[0];for(var a=1;a96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var b=!1;function _(){o=[],a=[],l=0,w=!1,n=!1,b=!1,f=null,r.leftchannel=o,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=A,r.recordingLength=l,E={left:[],right:[],recordingLength:0}}function S(){s&&(s.onaudioprocess=null,s.disconnect(),s=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){b=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();b=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var w=!1;s.onaudioprocess=function(e){if(!b)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),s.disconnect(),n=!1),n){w||(w=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(o.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);a.push(p)}l+=y,r.recordingLength=l,void 0!==i.timeSlice&&(E.recordingLength+=y,E.left.push(h),2===d&&E.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?s.connect(f.createMediaStreamDestination()):s.connect(f.destination),this.leftchannel=o,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,r.recordingLength=l;var E={left:[],right:[],recordingLength:0};function T(){n&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(E.left.length?(p({desiredSampRate:c,sampleRate:A,numberOfAudioChannels:d,internalInterleavedLength:E.recordingLength,leftBuffers:E.left,rightBuffers:1===d?[]:E.right},(function(e,t){var s=new Blob([t],{type:"audio/wav"});i.ondataavailable(s),setTimeout(T,i.timeSlice)})),E={left:[],right:[],recordingLength:0}):setTimeout(T,i.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var s,r,o,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&l&&l[2]&&(n=parseInt(l[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)s=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";s=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(o=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in s?e=s.captureStream(25):"mozCaptureStream"in s?e=s.mozCaptureStream(25):"webkitCaptureStream"in s&&(e=s.webkitCaptureStream(25));try{var a=new g;a.addTrack(v(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new E(e,{mimeType:t.mimeType||"video/webm"})).record()}else p.frames=[],u=(new Date).getTime(),c();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var s=p.frames.length;p.frames.forEach((function(e,i){var r=s-i;t.disableLogs||console.log(r+"/"+s+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,s);var o=e.image.toDataURL("image/webp",1);p.frames[i].image=o})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){o=!1;var s=this;i&&r?r.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),s.blob=i,s.blob.forEach&&(s.blob=new Blob([],{type:"video/webm"})),e&&e(s.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],o=!1,d=!1}function c(){if(d)return u=(new Date).getTime(),setTimeout(c,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),p.frames.push({image:(s=document.createElement("canvas"),r=s.getContext("2d"),s.width=e.width,s.height=e.height,r.drawImage(e,0,0),s),duration:i}),void(o&&setTimeout(c,t.frameInterval))}var s,r;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(c,t.frameInterval);u=(new Date).getTime(),p.frames.push({image:e.toDataURL("image/webp",1),duration:i}),o&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof E&&r.pause()},this.resume=function(){d=!1,r instanceof E?r.resume():o||this.record()},this.clearRecordedData=function(){o&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new D.Video(100)}function C(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?o?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),n.paused&&n.play(),c.drawImage(n,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function s(e,t,i,s,r){var o=document.createElement("canvas");o.width=h.width,o.height=h.height;var a=o.getContext("2d"),n=[],l=-1===t,d=t&&t>0&&t<=e.length?t:e.length,c=0,u=0,p=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),m=i&&i>=0&&i<=1?i:0,g=s&&s>=0&&s<=1?s:0,y=!1;!function(e){var t=-1,i=e.length;!function s(){++t!==i?setTimeout((function(){e.functionToLoop(s,t)}),1):e.callback()}()}({length:d,functionToLoop:function(t,i){var s,r,o,d=function(){!y&&o-s<=o*g||(l&&(y=!0),n.push(e[i])),t()};if(y)d();else{var A=new Image;A.onload=function(){a.drawImage(A,0,0,h.width,h.height);var e=a.getImageData(0,0,h.width,h.height);s=0,r=e.data.length,o=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function s(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*o[0].width:o[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),r.height=o[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),o.forEach((function(e,t){u(e,t)})),setTimeout(c,a.frameInterval)}}function u(e,t){if(!s){var i=0,r=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),o.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(o,i,r,a,n,t)}}function p(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,i.push(t)}}))}void 0!==n?h.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(h.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){c()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var s=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=p(t);r.stream=t,i.push(r),s.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var o=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),o.connect(a.audioDestination),s.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(s)}))},this.releaseStreams=function(){i=[],s=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,o.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;f(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){h.AudioContextConstructor||(h.AudioContextConstructor=new h.AudioContext);a.audioContext=h.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function P(e,t){e=e||[];var i,s,r=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var r;i=new L(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){v(e,"video").forEach((function(e){r.push(e)}))})),r).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(s=new E(i.getMixedStream(),t)).record()},this.stop=function(e){s&&s.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){s&&s.pause()},this.resume=function(){s&&s.resume()},this.clearRecordedData=function(){s&&(s.clearRecordedData(),s=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),s&&i&&(i.appendStreams(r),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function B(e,t){var i,s,r;function o(){return new ReadableStream({start:function(s){var r=document.createElement("canvas"),o=document.createElement("video"),a=!0;o.srcObject=e,o.muted=!0,o.height=t.height,o.width=t.width,o.volume=0,o.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),s.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(o,0,0),"closed"!==s._controlledReadableStream.state)try{s.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},o.play()}})}function a(e,l){if(!t.workerPath&&!l)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&l instanceof ArrayBuffer){var d=new Blob([l],{type:"text/javascript"});t.workerPath=h.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(s=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),s.addEventListener("message",(function(e){"READY"===e.data?(s.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),o().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):s.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){s?(s.addEventListener("message",(function(t){null===t.data&&(s.terminate(),s=null,e&&e())})),s.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}t.DiskStorage=x,t.GifRecorder=R,t.MultiStreamRecorder=P,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var s=this;s.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{s.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{s.recordRTC.stopRecording((function(i){s.blob=s.recordRTC.getBlob(),s.blob&&s.blob.size?e(i):t("Empty blob.",s.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{s.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{s.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{s.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(s.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(s.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(s.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(s.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(s.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=B}));class Cn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(e){let t=Cn._ebsp2rbsp(e),i=new Cr(t);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let o=Cn.getProfileString(s),a=Cn.getLevelString(r),n=1,l=420,d=[0,420,422,444],h=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(l=d[n]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],_=s[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),_=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);w=i.readBool(),E=t,T=2*e,S=E/T}}let k=1;1===v&&1===_||(k=v/_);let C=0,D=0;if(0===n)C=1,D=2-m;else{C=3===n?1:2,D=(1===n?2:1)*(2-m)}let x=16*(p+1),R=16*(f+1)*(2-m);x-=(g+y)*C,R-=(A+b)*D;let L=Math.ceil(x*k);return i.destroy(),i=null,{profile_string:o,level_string:a,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:Cn.getChromaFormatString(l),frame_rate:{fixed:w,fps:S,fps_den:T,fps_num:E},sar_ratio:{width:v,height:_},codec_size:{width:x,height:R},present_size:{width:L,height:R}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let s=t[e].toString(16);s.length<2&&(s="0"+s),i+=s}let s=Cn._ebsp2rbsp(e),r=new Cr(s);r.readByte();let o=r.readByte();r.readByte();let a=r.readByte();r.readUEG();let n=Cn.getProfileString(o),l=Cn.getLevelString(a),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(d=r.readUEG(),3===d&&r.readBits(1),d<=3&&(h=c[d]),u=r.readUEG()+8,p=r.readUEG()+8,r.readBits(1),r.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(w=t[e-1],E=i[e-1]):255===e&&(w=r.readByte()<<8|r.readByte(),E=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);k=r.readBool(),C=t,D=2*e,T=C/D}}let x=1;1===w&&1===E||(x=w/E);let R=0,L=0;if(0===d)R=1,L=2-A;else{R=3===d?1:2,L=(1===d?2:1)*(2-A)}let P=16*(g+1),B=16*(y+1)*(2-A);P-=(b+v)*R,B-=(_+S)*L;let I=Math.ceil(P*x);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:o,level_idc:a,profile_string:n,level_string:l,chroma_format_idc:d,bit_depth:u,bit_depth_luma:u,bit_depth_chroma:p,ref_frames:m,chroma_format:h,chroma_format_string:Cn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:D,fps_num:C},sar_ratio:{width:w,height:E},codec_size:{width:P,height:B},present_size:{width:I,height:B}}}static _skipScalingList(e,t){let i=8,s=8,r=0;for(let o=0;o=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.sps,4),t.sps=s}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.pps,4),t.pps=s}return t}function Rn(e){let{sps:t,pps:i}=e,s=8+t.byteLength+1+2+i.byteLength,r=!1;const o=Cn.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(r=!0,s+=4);let a=new Uint8Array(s);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let n=t.byteLength;a[6]=n>>>8,a[7]=255&n;let l=8;a.set(t,8),l+=n,a[l]=1;let d=i.byteLength;a[l+1]=d>>>8,a[l+2]=255&d,a.set(i,l+3),l+=3+d,r&&(a[l]=252|o.chroma_format_idc,a[l+1]=248|o.bit_depth_luma-8,a[l+2]=248|o.bit_depth_chroma-8,a[l+3]=0,l+=4);const h=[23,0,0,0,0],c=new Uint8Array(h.length+a.byteLength);return c.set(h,0),c.set(a,h.length),c}function Ln(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function Pn(e){return 31&e[0]}function Bn(e){return e===Rt}function In(e){return!function(e){return e===Tt||e===kt}(e)&&!Bn(e)}function Mn(e){return e===Ct}class Un{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=31&e[i],r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,s>=Bt||0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class Fn{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const On=e=>{let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)},Nn=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class jn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseVPS(e){let t=jn._ebsp2rbsp(e),i=new Cr(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}}static parseSPS(e){let t=jn._ebsp2rbsp(e),i=new Cr(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],w=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(I=t[e-1],M=s[e-1]):255===e&&(I=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),P=i.readBool(),P&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(F=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();U=r;let o=!0,a=1;r||(o=i.readBool());let n=!1;if(o?i.readUEG():n=i.readBool(),n||(a=i.readUEG()+1),e){for(let e=0;e>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let s=e[22],r=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let t=0;t{let t=On(e),i=new Cr(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(t),a=(e=>{let t=On(e),i=new Cr(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],w=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(I=t[e-1],M=s[e-1]):255===e&&(I=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),P=i.readBool(),P&&(s+=i.readUEG(),r+=i.readUEG(),o+=i.readUEG(),a+=i.readUEG()),i.readBool()&&(F=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();U=r;let o=!1,a=1;r||(o=i.readBool());let n=!1;if(o?i.readSEG():n=i.readBool(),n||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=On(e),i=new Cr(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let s=i.readBool(),r=i.readBool(),o=1;return r&&s?o=0:r?o=3:s&&(o=2),{parallelismType:o}})(i);r=Object.assign(r,o,a,n);let l=23+(5+t.byteLength)+(5+s.byteLength)+(5+i.byteLength),d=new Uint8Array(l);d[0]=1,d[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,d[2]=r.general_profile_compatibility_flags_1||0,d[3]=r.general_profile_compatibility_flags_2||0,d[4]=r.general_profile_compatibility_flags_3||0,d[5]=r.general_profile_compatibility_flags_4||0,d[6]=r.general_constraint_indicator_flags_1||0,d[7]=r.general_constraint_indicator_flags_2||0,d[8]=r.general_constraint_indicator_flags_3||0,d[9]=r.general_constraint_indicator_flags_4||0,d[10]=r.general_constraint_indicator_flags_5||0,d[11]=r.general_constraint_indicator_flags_6||0,d[12]=60,d[13]=240|(3840&r.min_spatial_segmentation_idc)>>8,d[14]=255&r.min_spatial_segmentation_idc,d[15]=252|3&r.parallelismType,d[16]=252|3&r.chroma_format_idc,d[17]=248|7&r.bit_depth_luma_minus8,d[18]=248|7&r.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&r.constant_frame_rate)<<6|(7&r.num_temporal_layers)<<3|(r.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|jt,d[24]=0,d[25]=1,d[26]=(65280&t.byteLength)>>8,d[27]=(255&t.byteLength)>>0,d.set(t,28),d[23+(5+t.byteLength)+0]=128|Gt,d[23+(5+t.byteLength)+1]=0,d[23+(5+t.byteLength)+2]=1,d[23+(5+t.byteLength)+3]=(65280&s.byteLength)>>8,d[23+(5+t.byteLength)+4]=(255&s.byteLength)>>0,d.set(s,23+(5+t.byteLength)+5),d[23+(5+t.byteLength+5+s.byteLength)+0]=128|Ht,d[23+(5+t.byteLength+5+s.byteLength)+1]=0,d[23+(5+t.byteLength+5+s.byteLength)+2]=1,d[23+(5+t.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+t.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,d.set(i,23+(5+t.byteLength+5+s.byteLength)+5);const h=[28,0,0,0,0],c=new Uint8Array(h.length+d.byteLength);return c.set(h,0),c.set(d,h.length),c}function Wn(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function $n(e){return(126&e[0])>>1}function Jn(e){return!function(e){return e>=32&&e<=40}(e)}function qn(e){return e>=16&&e<=21}class Kn{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=e[i]>>1&63,r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class Yn{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}class Qn extends wa{constructor(e){super(),this.TAG_NAME="recorderCommon",this.player=e,this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.recordingInterval=null,this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo={codecWidth:0,codecHeight:0,presentWidth:0,presentHeight:0,refSampleDuration:0,timescale:1e3,avcc:null,videoType:""},this.audioMetaInfo={timescale:1e3,sampleRate:0,refSampleDuration:0,channelCount:0,codec:"",originalCodec:"",audioType:"",extraData:new Uint8Array(0)}}destroy(){this._reset(),this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo=null,this.audioMetaInfo=null}get isH264(){return this.codecId===gt}get isH265(){return this.codecId===yt}setFileName(e){this.fileName=e}get isRecording(){return this._isRecording}get recording(){return this._isRecording}get recordTime(){return this._recordingTimestamp}startRecord(){}handleAddNaluTrack(e,t,i,s){}handleAddAudioTrack(e,t){}handleAddTrack(e){}stopRecordAndSave(){}startRecordingInterval(){}isWasmMp4(){return!1}stopRecordingInterval(){this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}getToTalByteLength(){return 0}_reset(){this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.stopRecordingInterval()}initMetaData(e,t){let i;const s=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=s,t===gt)i=xn(s);else if(t===yt){i=function(e){let t=23;const i=e[t];if((63&i)!==jt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const s=e[t+1]|e[t]<<8;t+=2;const r=e.slice(t,t+s);t+=s;const o=e[t];if((63&o)!==Gt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${o}`),{};t+=2,t+=1;const a=e[t+1]|e[t]<<8;t+=2;const n=e.slice(t,t+a);t+=a;const l=e[t];if((63&l)!==Ht)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and pps tag is ${l}`),{};t+=2,t+=1;const d=e[t+1]|e[t]<<8;t+=2;const h=e.slice(t,t+d),c=new Uint8Array([a>>>24&255,a>>>16&255,a>>>8&255,255&a]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(a+4);f.set(c,0),f.set(n,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const g=new Uint8Array(s+4);return g.set(p,0),g.set(r,4),{sps:f,pps:m,vps:g}}(s);const t=zn(e);i=Object.assign(i,t)}i&&(i.vps&&(this.vps=i.vps),i.pps&&(this.pps=i.pps),i.sps&&(this.sps=i.sps),i.presentWidth&&(this.metaInfo.presentWidth=i.presentWidth),i.presentHeight&&(this.metaInfo.presentHeight=i.presentHeight),i.codecWidth&&(this.metaInfo.codecWidth=i.codecWidth),i.codecHeight&&(this.metaInfo.codecHeight=i.codecHeight),i.timescale&&(this.metaInfo.timescale=i.timescale),i.refSampleDuration&&(this.metaInfo.refSampleDuration=i.refSampleDuration),i.videoType&&(this.metaInfo.videoType=i.videoType))}initAudioMetaData(e,t){this.audioCodeId=t;const i=e[0]>>1&1;let s=null;t===vt?(s=function(e){let t={},i=new Or(e);return i.read(16),t.object_type=Nr(i),t.sample_rate=jr(i,t),t.chan_config=i.read(4),t.chan_config{r.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const r=s.makeMetadataSeekable(t.metadatas,t.duration,t.cues),a=this.result.slice(t.metadataSize),n=new Blob([r,a],{type:"video/webm"});o(n)},r.readAsArrayBuffer(e)}))}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:t=>{e.log("RecorderRTC","record timestamp :"+t),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=t),this._recordingTimestamp=(t-this._startRecordingTimestamp)/1e3},ondataavailable:t=>{this.totalByteLength+=t.size,e.log("RecorderRTC","ondataavailable",t.size)},disableLogs:!this.player._opt.debug};try{let i=null;if(this.player.getRenderType()===W?i=this.player.video.$videoElement.captureStream(25):this.player.video.mediaStream?i=this.player.video.mediaStream:this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?i=this.player.video.$videoElement.captureStream(25):this.player.isWebrtcH264()?i=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(i=this.player.video.$videoElement.captureStream(25)),!i)return e.error("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(rt.recordCreateError,"can not create stream");if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const e=this.player.audio.mediaStreamAudioDestinationNode.stream;if(e.getAudioTracks().length>0){const t=e.getAudioTracks()[0];t&&t.enabled&&i.addTrack(t)}}this.recorder=kn(i,t)}catch(t){return e.error("RecorderRTC","startRecord error",t),void this.player.emitError(rt.recordCreateError,t)}this.recorder&&(this._isRecording=!0,this.player.emit(rt.recording,!0),this.recorder.startRecording(),e.log("RecorderRTC","start recording"),this.player.emit(rt.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(rt.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{this.recorder&&this._isRecording||s("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debug.log("RecorderRTC","stop recording");const t=(this.fileName||Xr())+"."+w;if(this.player._opt.recordWebMSupportSeek);else{if(e===ft){const e=this.recorder.getBlob();i(e),this.player.emit(rt.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(rt.recordEnd),this._reset(),this.player.emit(rt.recording,!1)}}))}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.recorder||!this._isRecording)return e();this.recorder.stopRecording((()=>{this._reset(),this.player.emit(rt.recording,!1),this.player.emit(rt.recordCancel),e()}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return w}initMetaData(){}}class Zn{static init(){Zn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],free:[],edts:[],elst:[],stss:[]};for(let e in Zn.types)Zn.types.hasOwnProperty(e)&&(Zn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Zn.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,2,0,105,115,111,109,105,115,111,50,97,118,99,49,109,112,52,49,0,0,0,0]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,s=Array.prototype.slice.call(arguments,1),r=s.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let o=8;for(let e=0;e=Math.pow(2,32)-1?(o=16,a=new Uint8Array(i+o),a.set(new Uint8Array([0,0,0,1]),0),a.set(Zn.types.mdat,4),a.set(new Uint8Array([i+8>>>56&255,i+8>>>48&255,i+8>>>40&255,i+8>>>32&255,i+8>>>24&255,i+8>>>16&255,i+8>>>8&255,i+8&255]),8)):(a=new Uint8Array(i+o),a[0]=i+8>>>24&255,a[1]=i+8>>>16&255,a[2]=i+8>>>8&255,a[3]=i+8&255,a.set(Zn.types.mdat,4));for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3]))}static trak(e){return Zn.box(Zn.types.trak,Zn.tkhd(e),Zn.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return"video"===e.type?Zn.box(Zn.types.tkhd,new Uint8Array([0,0,0,15,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0])):"audio"===e.type?Zn.box(Zn.types.tkhd,new Uint8Array([0,0,0,15,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0])):void 0}static edts(e,t){return Zn.box(Zn.types.edts,Zn.elst(e,t))}static elst(e,t){let i=0;for(let s=0;s>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,0,0,0,0,0,1,0,0]))}static mdia(e){return Zn.box(Zn.types.mdia,Zn.mdhd(e),Zn.hdlr(e),Zn.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return Zn.box(Zn.types.mdhd,new Uint8Array([0,0,0,0,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Zn.constants.HDLR_AUDIO:Zn.constants.HDLR_VIDEO,Zn.box(Zn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Zn.box(Zn.types.smhd,Zn.constants.SMHD):Zn.box(Zn.types.vmhd,Zn.constants.VMHD),Zn.box(Zn.types.minf,t,Zn.dinf(),Zn.stbl(e))}static dinf(){return Zn.box(Zn.types.dinf,Zn.box(Zn.types.dref,Zn.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],s=[t[0].duration],r=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+8*t);r.set(i,0);for(let i=0;i>>24&255,e[i].num>>>16&255,e[i].num>>>8&255,255&e[i].num,e[i].sampleDelte>>>24&255,e[i].sampleDelte>>>16&255,e[i].sampleDelte>>>8&255,255&e[i].sampleDelte]),s),s+=8;return Zn.box(Zn.types.stts,r)}static stss(e){let t=[],i=e.length;for(let s=0;s>>24&255,s>>>16&255,s>>>8&255,255&s]),o=r.byteLength,a=new Uint8Array(o+4*s);a.set(r,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),o),o+=4;return Zn.box(Zn.types.stss,a)}static stsc(e){let t=e.length,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+12*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a]),s),s+=12}return Zn.box(Zn.types.stsc,r)}static stsz(e){let t=e.length,i=new Uint8Array([0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+4*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),s),s+=4}return Zn.box(Zn.types.stsz,r)}static stco(e,t){let i=t[0].chunkOffset;return Zn.box(Zn.types.stco,new Uint8Array([0,0,0,0,0,0,0,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i]))}static stsd(e){return"audio"===e.type?"mp3"===e.codec?Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.mp3(e)):Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.mp4a(e)):"avc"===e.videoType?Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.avc1(e)):Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Zn.box(Zn.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Zn.box(Zn.types.mp4a,s,Zn.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return Zn.box(Zn.types.esds,s)}static avc1(e){let t=e.avcc,i=e.codecWidth,s=e.codecHeight,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Zn.box(Zn.types.avc1,r,Zn.box(Zn.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Zn.box(Zn.types.hvc1,r,Zn.box(Zn.types.hvcC,t))}static mvex(e){return Zn.box(Zn.types.mvex,Zn.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Zn.box(Zn.types.trex,i)}static moof(e,t){return Zn.box(Zn.types.moof,Zn.mfhd(e.sequenceNumber),Zn.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Zn.box(Zn.types.mfhd,t)}static traf(e,t){let i=e.id,s=Zn.box(Zn.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=Zn.box(Zn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=Zn.sdtp(e),a=Zn.trun(e,o.byteLength+16+16+8+16+8+8);return Zn.box(Zn.types.traf,s,r,a,o)}static sdtp(e){let t=e.samples||[],i=t.length,s=new Uint8Array(4+i);for(let e=0;e>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*e)}return Zn.box(Zn.types.trun,o)}static mdat(e){return Zn.box(Zn.types.mdat,e)}}Zn.init();class el extends Qn{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.bufferList=[],this.audioBufferList=[],this.cacheTrack={},this.audioCacheTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(rt.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(rt.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(rt.recordingTimestamp,this.getTotalDuration())}),1e3)}formatFmp4Track(e,t,i,s){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:s,isKeyframe:t,data:e,duration:0,flags:{isLeading:0,dependsOn:t?2:1,isDependedOn:t?1:0,hasRedundancy:0,isNonSync:t?0:1}}}formatAudioFmp4Track(e,t){return{id:2,sequenceNumber:++this.audioSequenceNumber,size:e.byteLength,dts:t,pts:t,cts:0,data:new Uint8Array(e),duration:0,originalDts:t,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}}handleAddNaluTrack(e,t,i,s){this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.handleAddFmp4Track(this.cacheTrack)):this.cacheTrack={},this.cacheTrack=this.formatFmp4Track(e,t,i,s)}handleAddAudioTrack(e,t){}handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h264 and this.sps or this.pps is null ");if((null===this.sps||null===this.pps||null===this.vps)&&this.isH265)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h265 and this.sps or this.pps or this.vps is null ");const t=Object.assign({},e);t.pts=t.dts+t.cts;const i=t.data;if(t.isKeyframe)if(this.isH264){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength);e.set(this.sps,0),e.set(this.pps,this.sps.byteLength);const s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}else if(this.isH265){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength+this.vps.byteLength);e.set(this.vps,0),e.set(this.sps,this.vps.byteLength),e.set(this.pps,this.vps.byteLength+this.sps.byteLength);const s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}t.size=t.data.byteLength,this.totalDuration+=t.duration,this.totalByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.bufferList.push(t)}handleAddFmp4AudioTrack(e){const t=Object.assign({},e);t.pts=t.dts+t.cts,t.size=t.data.byteLength,this.totalAudioDuration+=t.duration,this.totalAudioByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.audioBufferList.push(t)}getTotalDuration(){return this.totalDuration/1e3}getType(){return S}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r={id:1,type:"video",sps:this.sps,pps:this.pps,samples:this.bufferList,sequenceNumber:this.bufferList.length,length:0,addSampleNum:1,duration:0,...this.metaInfo},o={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},a=[r];o.samples.length>0&&a.push(o),this.player.debug.log(this.TAG_NAME,`trackList length is ${a.length}`);const n=Zn.generateInitSegment({timescale:1e3,duration:this.totalDuration},a,this.totalByteLength+this.totalAudioByteLength);this.player.debug.log(this.TAG_NAME,"stop recording");const l=new Blob([n],{type:"application/octet-stream"});if(e===ft)i(l),this.player.emit(rt.recordBlob,l);else{i();ko((this.fileName||Xr())+"."+S,l)}this._reset(),this.player.emit(rt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(rt.recording,!1),this.player.emit(rt.recordCancel),e()}))}}function tl(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new s((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new s)}function il(e){if((e=e.replace(/\s/g,"")).length%2!=0)return console.error("hexStringToUint8Array: invalid hexString length, must be even and bexString length is: ",e.length),null;const t=new Uint8Array(e.length/2);for(let i=0;i{this.player.emit(rt.recordingTimestamp,this.getTotalDuration())}),1e3)}addMetaData(e){this.flvMetaData=e}addAACSequenceHeader(e){this.aacSequenceHeader=e}addVideoSequenceHeader(e){this.videoSequenceHeader=e}addVideo(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasVideo=!0,this._createBufferItem(e,Ne,i)}addAudio(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasAudio=!0,this._createBufferItem(e,Oe,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debug.log(this.TAG_NAME,`_setStartTime is ${e}`))}_getBufferTs(e){e>this.currentTime&&(this.currentTime=e);let t=0;return this.startTime&&e>=this.startTime&&(t=e-this.startTime),t>this.prevTimestamp?this.prevTimestamp=t:t=this.prevTimestamp,t}_createBufferItem(e,t,i){const s=this._createFlvPacket(e,t,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let s=new DataView(i.buffer);return i[1]=e.header.length>>16&255,i[2]=e.header.length>>8&255,i[3]=255&e.header.length,i[4]=e.header.timestamp>>16&255,i[5]=e.header.timestamp>>8&255,i[6]=255&e.header.timestamp,i[7]=e.header.timestamp>>24&255,i[8]=0,i[9]=0,i[10]=0,s.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let o=[r];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,je),t=this._createFlvTag(e);o.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,Ne),t=this._createFlvTag(e);o.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,Oe),t=this._createFlvTag(e);o.push(t)}const a=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const s=new t((0|e.byteLength)+(0|i.byteLength));return s.set(e,0),s.set(i,0|e.byteLength),s}),new t)}(o.concat(this.bufferList));this.player.debug.log(this.TAG_NAME,"stop recording");const n=new Blob([a],{type:"application/octet-stream"});if(e===ft)i(n),this.player.emit(rt.recordBlob,n);else{i();ko((this.fileName||Xr())+"."+E,n)}this._reset(),this.player.emit(rt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(rt.recording,!1),this.player.emit(rt.recordCancel),e()}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return E}getToTalByteLength(){return this.totalByteLength}}const rl={init:0,findFirstStartCode:1,findSecondStartCode:2};class ol extends wa{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=rl.init,this.tempBuffer=new Uint8Array(0),this.parsedOffset=0,this.versionLayer=0}dispatch(e,t){let i=new Uint8Array(this.tempBuffer.length+e.length);for(i.set(this.tempBuffer,0),i.set(e,this.tempBuffer.length),this.tempBuffer=i;!this.isDestroyed;){if(this.state==rl.Init){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=rl.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==rl.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=rl.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==rl.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=rl.findFirstStartCode}}}}class al extends Qn{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=null,this.mp3Demuxer=null,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.cacheTrack={},this.audioCacheTrack={},this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.hasAudio=!1,this.hasVideo=!1}getType(){return S}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player,t=this.player.debug,i=this.player.getAudioInfo(),s=this.player.getVideoInfo(),r={};if(this.codecId){const e={type:this.codecId,width:s.width,height:s.height,extraData:this.metaInfo.avcc};r.video=e,this.hasVideo=!0}if(i.encTypeCode){const e={type:i.encTypeCode,sampleRate:i.sampleRate,channels:i.channels,extraData:this.audioMetaInfo.extraData,depth:i.depth};this.audioCodeId=i.encTypeCode,r.audio=e,this.hasAudio=!0}this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.wasmMp4Recorder.on("recordingTimestamp",(e=>{this._recordingTimestamp=e/1e3})),this.wasmMp4Recorder.startRecord(r).then((()=>{this._isRecording=!0,this.player.emit(rt.recording,!0),t.log(this.TAG_NAME,"start recording"),this.player.emit(rt.recordStart),this.startRecordingInterval()})).catch((e=>{t.error(this.TAG_NAME,"startRecord error",e),this.player.emitError(rt.recordCreateError,e)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(rt.recordingTimestamp,this.recordTime)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debug.error(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===ft)i(t),this.player.emit(rt.recordBlob,t);else{i();ko((this.fileName||Xr())+"."+S,t)}})).catch((e=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",e),s(e)})).finally((()=>{this._reset(),this.player.emit(rt.recording,!1)}))):(this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.isRecording||0===this.totalDuration)return e();this.wasmMp4Recorder.stopRecord().then((t=>{e()})).catch((e=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",e),t(e)})).finally((()=>{this._reset(),this.player.emit(rt.recording,!1),this.player.emit(rt.recordCancel)}))}))}handleAddAudioTrack(e,t){this.audioCodeId===St?(this.mp3Demuxer||(this.mp3Demuxer=new ol(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){ua(this.hasAudio)||(this.audioCacheTrack.id&&t>=this.audioCacheTrack.dts?(this.audioCacheTrack.duration=t-this.audioCacheTrack.dts,this.totalAudioDuration+=this.audioCacheTrack.duration,this.totalAudioByteLength+=this.audioCacheTrack.payload.byteLength,this.wasmMp4Recorder.sendAudioFrame(this.audioCacheTrack.payload,this.audioCacheTrack.dts)):this.audioCacheTrack={},this.audioCacheTrack={id:2,payload:e,dts:t})}handleAddNaluTrack(e,t,i,s){ua(this.hasVideo)||(this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.totalDuration+=this.cacheTrack.duration,this.totalByteLength+=this.cacheTrack.payload.byteLength,this.wasmMp4Recorder.sendVideoFrame(this.cacheTrack.payload,this.cacheTrack.isIFrame,this.cacheTrack.dts,this.cacheTrack.cts)):this.cacheTrack={},this.cacheTrack={id:1,payload:e,isIFrame:t,dts:i,cts:s})}}class nl{constructor(e){return new(nl.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){if(e.recordType===S){if(e.useWasm||e.useMSE||e.useWCS)return window.JessibucaProMp4Recorder&&e.mp4RecordUseWasm?al:el}else if(e.recordType===E)return sl;return Xn}}function ll(e,t,i){let s=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),s+=2;continue}}}else if(i[s]<240){if(ll(i,s,2)){let e=(15&i[s])<<12|(63&i[s+1])<<6|63&i[s+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),s+=3;continue}}}else if(i[s]<248&&ll(i,s,3)){let e=(7&i[s])<<18|(63&i[s+1])<<12|(63&i[s+2])<<6|63&i[s+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),s+=4;continue}}t.push(String.fromCharCode(65533)),++s}return t.join("")}let hl=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class cl{static parseScriptData(e,t,i){let s={};try{let r=cl.parseValue(e,t,i),o=cl.parseValue(e,t+r.size,i-r.size);s[r.data]=o.data}catch(e){console.error("AMF",e.toString())}return s}static parseObject(e,t,i){let s=cl.parseString(e,t,i),r=cl.parseValue(e,t+s.size,i-s.size),o=r.objectEnd;return{data:{name:s.data,value:r.data},size:s.size+r.size,objectEnd:o}}static parseVariable(e,t,i){return cl.parseObject(e,t,i)}static parseString(e,t,i){let s,r=new DataView(e,t,i).getUint16(0,!hl);return s=r>0?dl(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}static parseLongString(e,t,i){let s,r=new DataView(e,t,i).getUint32(0,!hl);return s=r>0?dl(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}static parseDate(e,t,i){let s=new DataView(e,t,i),r=s.getFloat64(0,!hl);return r+=60*s.getInt16(8,!hl)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){let s,r=new DataView(e,t,i),o=1,a=r.getUint8(0),n=!1;try{switch(a){case 0:s=r.getFloat64(1,!hl),o+=8;break;case 1:s=!!r.getUint8(1),o+=1;break;case 2:{let r=cl.parseString(e,t+1,i-1);s=r.data,o+=r.size;break}case 3:{s={};let a=0;for(9==(16777215&r.getUint32(i-4,!hl))&&(a=3);o{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),e.debug.log("decoderWorker",`init and decoder url is ${t}`),e.on(rt.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{if(this.player.loaded)if(this.player.debug.log("decoderWorker","has loaded and post message to destroy"),this.decoderWorker){const t={};this.player.isMseDecoderUseWorker()&&(t.isVideoInited=this.player.isMseVideoStateInited()),this.decoderWorker.postMessage({cmd:We,options:t}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug&&this.player.debug.warn("decoderWorker","send close but not response and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)}else this.player.debug.warn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0);else this.player.debug.log("decoderWorker","has not loaded and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}))}_destroy(){this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.decoderWorker&&(this.decoderWorker.terminate(),this.decoderWorker.onerror=null,this.decoderWorker.onmessageerror=null,this.decoderWorker.onmessage=null,this.decoderWorker=null),this.player.debug&&this.player.debug.log("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.isDestroyed=!0}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onerror=e=>{const t=e.filename||"",i=e.message||"",s=t&&(-1!==t.indexOf(".wasm")||-1!==t.indexOf("wasm://"));s&&-1!==i.indexOf(Xs)?this.player.debug.log("decoderWorker",`onerror and ignore filename: ${t},message: ${i}`,e):(this.player.debug.error("decoderWorker",`onerror filename: ${t},message: ${i}`,e),s?this.player.emitError(nt.decoderWorkerWasmError,`filename: ${t},message: ${i}`):this.player.emitError(nt.decoderWorkerInitError,`filename: ${t},message: ${i}`))},this.decoderWorker.onmessageerror=e=>{this.player.debug.error("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case re:e.log("decoderWorker","onmessage:",re),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(rt.load),this.player.emit(rt.decoderWorkerInit);break;case ue:e.log("decoderWorker","onmessage:",ue,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=Xr()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case pe:e.log("decoderWorker","onmessage:",pe,i.codecId),this.player.recorder&&this.player.recorder.initMetaData(i.buffer,i.codecId),this.player.video.updateVideoInfo({encTypeCode:i.codecId});break;case de:e.log("decoderWorker","onmessage:",de,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case ce:e.log("decoderWorker","onmessage:",ce),this.player.recorder&&this.player.recorder.initAudioAacExtraData(i.buffer);break;case oe:if(e.log("decoderWorker","onmessage:",oe,`width:${i.w},height:${i.h}`),Co(i.w)||Co(i.h))return void this.player.emitError(nt.videoInfoError,`video width ${i.w} or height ${i.h} is empty`);if(this.player.video.bindMediaStream(),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0&&this.player.getRenderType()===W)return void this.player.emitError(nt.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===_&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case le:if(e.log("decoderWorker","onmessage:",le,`channels:${i.channels},sampleRate:${i.sampleRate}`),i.channels>2)return void this.player.emitError(nt.audioChannelError,`audio channel is ${i.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player._opt.playType===b?this.player.audio.initScriptNode():this.player._opt.playType===_&&this.player.audio.initScriptNodeDelay());break;case ae:if(!this.player.video)return void e.warn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(ua(this.player.video.getHasInit()))return void e.warn("decoderWorker","onmessage render but video has not init");this.player.video.render(i),this.player.handleRender(),this.player.emit(rt.timeUpdate,i.ts),this.player.updateStats({dfps:!0,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=Xr(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ua(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(i):this.player.video.render$2(i)):!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData(i));break;case fe:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.handleAddNaluTrack(i.buffer,i.isIFrame,i.ts,i.cts);break;case he:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(i.buffer,i.ts);break;case me:const{webcodecsDecoder:t,mseDecoder:s}=this.player;this.player.updateStats({buf:i.delay});const r=new Uint8Array(i.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?t.decodeVideo(r,i.ts,i.isIFrame,i.cts):this.player._opt.useMSE&&s.decodeVideo(r,i.ts,i.isIFrame,i.cts);break;case ge:if(this.player._opt.useMSE){const e=new Uint8Array(i.payload);this.player.mseDecoder.decodeAudio(e,i.ts,i.cts)}break;case ne:if(!this.player.audio)return void e.warn("decoderWorker","onmessage playAudio but audio is null");(this.player.playing&&this.player.audio||!this.player.video)&&(this.player._opt.hasVideo||this.player.handleRender(),(this.player._opt.playType===b||this.player._opt.playType===_&&(ua(this.player.playbackPause)||!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender))&&this.player.audio.play(i.buffer,i.ts));break;case ye:if(i.type===rt.streamSuccess)this.player.stream?this.player.stream.emit(rt.streamSuccess):e.warn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(i.type===rt.streamRate)this.player.emit(rt.kBps,(i.value/1024).toFixed(2));else if(i.type===rt.streamEnd)this.player?(i.value===f&&this.player.emit(rt.websocketClose,i.msg),this.player.stream?this.player.stream.emit(rt.streamEnd,i.msg):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(i.type===nt.websocketError)this.player&&this.player.stream?this.player.stream.emit(nt.websocketError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(i.type===nt.fetchError)this.player&&this.player.stream?this.player.stream.emit(nt.fetchError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(i.type===rt.streamAbps)this.player.updateStats({abps:i.value});else if(i.type===rt.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=Xr()),this.player.updateStats({vbps:i.value});else if(i.type===rt.streamDts)this.player.updateStats({dts:i.value});else if(i.type===rt.netBuf)this.player.updateStats({netBuf:i.value});else if(i.type===rt.networkDelayTimeout)this.player.emit(rt.networkDelayTimeout,i.value);else if(i.type===rt.streamStats){const e=JSON.parse(i.value);this.player.updateStats({workerStats:e})}else i.type===rt.websocketOpen&&this.player.emit(rt.websocketOpen);break;case Ae:this.player&&(this.player.videoIframeIntervalTs=i.value);break;case be:this.player&&this.player.updateStats({isDropping:!0});break;case Pe:this.player.decoderCheckFirstIFrame();break;case _e:this.player&&this.player.video&&this.player.video.setStreamFps(i.value);break;case Ee:this.player.emitError(nt.simdH264DecodeVideoWidthIsTooLarge,i.value);break;case Se:this.player.emitError(nt.wasmWidthOrHeightChange,i.value);break;case we:this.player.emitError(nt.simdDecodeError);break;case ve:e.log("decoderWorker","onmessage:",ve),this.player.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload();break;case Te:e.log("decoderWorker","onmessage:",Te),this._destroy();break;case ke:this.player&&this.player.pushTempStream(i.buffer);break;case Ce:this.player&&this.player.emit(rt.videoSEI,{ts:i.ts,data:new Uint8Array(i.buffer)});break;case De:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addMetaData(e)}const e=ul(new Uint8Array(i.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case xe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addAACSequenceHeader(e,i.ts)}break;case Re:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addVideoSequenceHeader(e,i.ts)}break;case Le:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(i.buffer);i.type===Fe?this.player.recorder.addVideo(e,i.ts):i.type===Ue&&this.player.recorder.addAudio(e,i.ts)}break;case Be:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Be),this.player.video.$videoElement.srcObject=i.mseHandle);break;case Ie:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Ie,i.value),this.player._mseWorkerData.firstRenderTime=Number(i.value));break;case Me:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Me,i.value,i.msg),this.player.emitError(i.value,i.msg));break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,useMSE:this.player._opt.useMSE,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment,playType:this.player._opt.playType,hasAudio:this.player._opt.hasAudio,hasVideo:this.player._opt.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:this.player._opt.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:this.player.audio&&this.player.audio.audioContext&&this.player.audio.audioContext.sampleRate||br,audioBufferSize:this.player.audio&&this.player.audio.getAudioBufferSize()||1024,networkDelay:this.player._opt.networkDelay,visibility:this.player.visibility,useSIMD:this.player._opt.useSIMD,recordType:this.player._opt.recordType,checkFirstIFrame:this.player._opt.checkFirstIFrame,isM7sCrypto:this.player._opt.isM7sCrypto,isXorCrypto:this.player._opt.isXorCrypto,isSm4Crypto:this.player._opt.isSm4Crypto,isSm4CryptoH265V2:this.player._opt.isSm4CryptoH265V2,sm4CryptoKey:this.player._opt.sm4CryptoKey,m7sCryptoAudio:this.player._opt.m7sCryptoAudio,isFlv:this.player._opt.isFlv,isFmp4:this.player._opt.isFmp4,isMpeg4:this.player._opt.isMpeg4,isTs:this.player._opt.isTs,isNakedFlow:this.player._opt.isNakedFlow,isHls265:this.player.isUseHls265(),isFmp4Private:this.player._opt.isFmp4Private,isEmitSEI:this.player._opt.isEmitSEI,isRecordTypeFlv:this.player.isRecordTypeFlv(),isWasmMp4:this.player.recorder&&this.player.recorder.isWasmMp4()||!1,isChrome:Wo(),isFirefox:co(),supportMSEDecodeHevc:So(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,wcsDecodeAudio:this.player._opt.wcsDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:this.player._opt.mseDecoderUseWorker,mseAutoCleanupMinBackwardDuration:this.player._opt.mseAutoCleanupMinBackwardDuration,mseAutoCleanupMaxBackwardDuration:this.player._opt.mseAutoCleanupMaxBackwardDuration,mseCorrectTimeDuration:this.player._opt.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:this.player._opt.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:this.player._opt.nakedFlowDemuxUseNew,nakedFlowFps:this.player._opt.nakedFlowFps};this.decoderWorker.postMessage({cmd:ze,opt:JSON.stringify(e)}),this.player._opt.cryptoKey&&this.player._opt.cryptoKey.byteLength>0&&this.player._opt.cryptoIV&&this.player._opt.cryptoIV.byteLength>0&&(this.updateWorkConfig({key:"cryptoKey",value:this.player._opt.cryptoKey}),this.updateWorkConfig({key:"cryptoIV",value:this.player._opt.cryptoIV}))}decodeVideo(e,t,i){this.player._opt.playType===b?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===_&&(this.player.isPlaybackOnlyDecodeIFrame()?i&&(this.player.debug.log("decoderWorker",`current rate is ${this.player.video.rate},only decode i frame`),this._decodeVideoNoDelay(e,t,i)):1===this.player.video.rate?this._decodeVideo(e,t,i):this._decodeVideoNoDelay(e,t,i))}_decodeVideo(e,t,i){const s={type:Fe,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:Ge,buffer:e,options:s},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:He,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===b?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===_&&(this.player.isPlaybackOnlyDecodeIFrame()||(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t)))}_decodeAudio(e,t){const i={type:Ue,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:Ge,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:Ve,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker&&this.decoderWorker.postMessage({cmd:$e,key:e.key,value:e.value})}workerFetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{_opt:i}=this.player,s={protocol:i.protocol,isFlv:i.isFlv,isFmp4:i.isFmp4,isMpeg4:i.isMpeg4,isNakedFlow:i.isNakedFlow,isTs:i.isTs,options:t};this.decoderWorker.postMessage({cmd:qe,url:e,opt:JSON.stringify(s)})}clearWorkBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.decoderWorker.postMessage({cmd:Je,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Ke,message:e})}updateVideoTimestamp(e){this.decoderWorker.postMessage({cmd:Ye,message:e})}}var fl,ml="application/json, text/javascript",gl="text/html",yl=/^(?:text|application)\/xml/i,Al=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,bl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,vl=/^\s*$/,_l={},Sl={},wl="",El={type:"GET",beforeSend:Tl,success:Tl,error:Tl,complete:Tl,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:ml,xml:"application/xml, text/xml",html:gl,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Tl,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Tl(){}var kl=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=Il({},t=t||{});for(var s in El)void 0===i[s]&&(i[s]=El[s]);try{var r={},o=new Promise((function(e,t){r.resolve=e,r.reject=t}));o.resolve=r.resolve,o.reject=r.reject,i.promise=o}catch(e){i.promise={resolve:Tl,reject:Tl}}var a=bl.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,a[1]+"//");var n=i.url;i.crossDomain||(i.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(i.url)&&RegExp.$2!==window.location.href);var l=i.dataType;if("jsonp"===l){if(!/=\?/.test(i.url)){var d=(i.jsonp||"callback")+"=?";i.url=Ll(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+Fl(),s=window.document.createElement("script"),r={abort:function(){i in window&&(window[i]=Tl)}},o=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function a(i){window.clearTimeout(t),r.abort(),xl(i.type,r,i.type,e),n()}s.onerror=function(e){a(e)},window[i]=function(i){window.clearTimeout(t),Cl(i,r,e),n()},Pl(e),s.src=e.url.replace(/=\?/,"="+i),s.src=Ll(s.src,"_="+(new Date).getTime()),s.async=!0,e.scriptCharset&&(s.charset=e.scriptCharset);o.insertBefore(s,o.firstChild),e.timeout>0&&(t=window.setTimeout((function(){r.abort(),xl("timeout",r,"timeout",e),n()}),e.timeout));function n(){s.clearAttributes?s.clearAttributes():s.onload=s.onreadystatechange=s.onerror=null,s.parentNode&&s.parentNode.removeChild(s),s=null,delete window[i]}return e.promise.abort=function(){r.abort()},e.promise.xhr=r,e.promise}(i)}Pl(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=El.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(_l[n]&&(c["If-Modified-Since"]=_l[n]),Sl[n]&&(c["If-None-Match"]=Sl[n])),h&&(c.Accept=h,h.indexOf(",")>-1&&(h=h.split(",",2)[0]),p.overrideMimeType&&p.overrideMimeType(h));var f=!/^(?:GET|HEAD)$/.test(i.type.toUpperCase());if((i.data&&f&&!1!==i.contentType||t.contentType)&&(c["Content-Type"]=i.contentType),!1===i.cache&&!f){var m=/([?&])_=[^&]*/;i.url=m.test(n)?n.replace(m,"$1_="+Fl()):n+(/\?/.test(n)?"&":"?")+"_="+Fl()}i.headers=Il(c,i.headers||{}),p.onreadystatechange=function(){if(4===p.readyState){var e;clearTimeout(u);var t=!1;if(p.status>=200&&p.status<300||304===p.status){if(wl=p.getAllResponseHeaders(),i.ifModified){var s=Rl("Last-Modified");s&&(_l[n]=s),(s=Rl("etag"))&&(Sl[n]=s)}l=l||function(e){return e&&(e===gl?"html":e===ml?"json":yl.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=vl.test(e)?null:JSON.parse(e))}catch(e){t=e}t?xl(t,"parseerror",p,i):Cl(e,p,i)}else xl(null,"error",p,i)}};var g=!("async"in i)||i.async;if(p.open(i.type,i.url,g,i.username,i.password),i.xhrFields)for(var y in i.xhrFields)p[y]=i.xhrFields[y];for(var y in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[y]&&p.setRequestHeader(y,i.headers[y]+"");return!1===function(e,t){var i=t.context;if(!1===t.beforeSend.call(i,e,t))return!1}(p,i)?(p.abort(),!1):(i.timeout>0&&(u=window.setTimeout((function(){p.onreadystatechange=Tl,p.abort(),xl(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function Cl(e,t,i){var s=i.context,r="success";i.success.call(s,e,r,t),i.promise.resolve(e,r,t),Dl(r,t,i)}function Dl(e,t,i){var s=i.context;i.complete.call(s,t,e)}function xl(e,t,i,s){var r=s.context;s.error.call(r,i,t,e),s.promise.reject(i,t,e),Dl(t,i,s)}function Rl(e){var t;if(!fl){for(fl={};t=Al.exec(wl);)fl[t[1].toLowerCase()]=t[2];t=fl[e.toLowerCase()]}return null===t?null:t}function Ll(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Pl(e){!Ml(e)||e.data instanceof FormData||!e.processData||(e.data=function(e,t){var i=[];return i.add=function(e,t){this.push(encodeURIComponent(e)+"="+encodeURIComponent(t))},Bl(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=Ll(e.url,e.data))}function Bl(e,t,i,s){var r=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var o in t){var a=t[o];s&&(o=i?s:s+"["+(r?"":o)+"]"),!s&&r?e.add(a.name,a.value):(i?r(a):Ml(a))?Bl(e,a,i,o):e.add(o,a)}}function Il(e){for(var t=Array.prototype.slice,i=t.call(arguments,1),s=0,r=i.length;s255)return!1;return!0}function jl(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!Nl(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Ol(e.length)&&Nl(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function zl(e){return new Uint8Array(e)}function Gl(e,t,i,s,r){null==s&&null==r||(e=e.slice?e.slice(s,r):Array.prototype.slice.call(e,s,r)),t.set(e,i)}kl.get=function(e,t,i,s){return Ul(t)&&(s=s||i,i=t,t=void 0),kl({url:e,data:t,success:i,dataType:s})},kl.post=function(e,t,i,s){return Ul(t)&&(s=s||i,i=t,t=void 0),kl({type:"POST",url:e,data:t,success:i,dataType:s})},kl.getJSON=function(e,t,i){return Ul(t)&&(i=t,t=void 0),kl({url:e,data:t,success:i,dataType:"json"})},kl.ajaxSetup=function(e,t){return t?Il(Il(e,El),t):Il(El,e)};var Vl={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&s<224?(t.push(String.fromCharCode((31&s)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&s)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},Hl=function(){var e="0123456789abcdef";return{toBytes:function(e){for(var t=[],i=0;i>4]+e[15&r])}return i.join("")}}}(),Wl={16:10,24:12,32:14},$l=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Jl=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],ql=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Kl=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Yl=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Ql=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],Xl=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],Zl=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ed=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],td=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],id=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],sd=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],rd=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],od=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],ad=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function nd(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=o[t],this._Kd[e-i][t%4]=o[t];for(var a,n=0,l=r;l>16&255]<<24^Jl[a>>8&255]<<16^Jl[255&a]<<8^Jl[a>>24&255]^$l[n]<<24,n+=1,8!=r)for(t=1;t>8&255]<<8^Jl[a>>16&255]<<16^Jl[a>>24&255]<<24;for(t=r/2+1;t>2,h=l%4,this._Ke[d][h]=o[t],this._Kd[e-d][h]=o[t++],l++}for(var d=1;d>24&255]^rd[a>>16&255]^od[a>>8&255]^ad[255&a]},ld.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],s=nd(e),r=0;r<4;r++)s[r]^=this._Ke[0][r];for(var o=1;o>24&255]^Yl[s[(r+1)%4]>>16&255]^Ql[s[(r+2)%4]>>8&255]^Xl[255&s[(r+3)%4]]^this._Ke[o][r];s=i.slice()}var a,n=zl(16);for(r=0;r<4;r++)a=this._Ke[t][r],n[4*r]=255&(Jl[s[r]>>24&255]^a>>24),n[4*r+1]=255&(Jl[s[(r+1)%4]>>16&255]^a>>16),n[4*r+2]=255&(Jl[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(Jl[255&s[(r+3)%4]]^a);return n},ld.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],s=nd(e),r=0;r<4;r++)s[r]^=this._Kd[0][r];for(var o=1;o>24&255]^ed[s[(r+3)%4]>>16&255]^td[s[(r+2)%4]>>8&255]^id[255&s[(r+1)%4]]^this._Kd[o][r];s=i.slice()}var a,n=zl(16);for(r=0;r<4;r++)a=this._Kd[t][r],n[4*r]=255&(ql[s[r]>>24&255]^a>>24),n[4*r+1]=255&(ql[s[(r+3)%4]>>16&255]^a>>16),n[4*r+2]=255&(ql[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(ql[255&s[(r+1)%4]]^a);return n};var dd=function(e){if(!(this instanceof dd))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new ld(e)};dd.prototype.encrypt=function(e){if((e=jl(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=zl(e.length),i=zl(16),s=0;sNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},pd.prototype.setBytes=function(e){if(16!=(e=jl(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},pd.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var fd=function(e,t){if(!(this instanceof fd))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof pd||(t=new pd(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new ld(e)};fd.prototype.encrypt=function(e){for(var t=jl(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,s=0;s>>2]>>>24-o%4*8&255;t[s+o>>>2]|=a<<24-(s+o)%4*8}else for(var n=0;n>>2]=i[n>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-r%4*8&255;s.push((o>>>4).toString(16)),s.push((15&o).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new d.init(i,t/2)}},u=h.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new d.init(i,t)}},p=h.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},f=n.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,s=this._data,r=s.words,o=s.sigBytes,a=this.blockSize,n=o/(4*a),l=(n=t?e.ceil(n):e.max((0|n)-this._minBufferSize,0))*a,h=e.min(4*l,o);if(l){for(var c=0;c>>2]|=e[r]<<24-r%4*8;t.call(this,s,i)}else t.apply(this,arguments)};s.prototype=e}}(),i.lib.WordArray)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.WordArray,s=e.enc;function r(e){return e<<8&4278255360|e>>>8&16711935}s.Utf16=s.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>16-r%4*8&65535;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var i=e.length,s=[],r=0;r>>1]|=e.charCodeAt(r)<<16-r%2*16;return t.create(s,2*i)}},s.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],o=0;o>>2]>>>16-o%4*8&65535);s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var i=e.length,s=[],o=0;o>>1]|=r(e.charCodeAt(o)<<16-o%2*16);return t.create(s,2*i)}}}(),i.enc.Utf16)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.WordArray;function s(e,i,s){for(var r=[],o=0,a=0;a>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,s=this._map;e.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,n=0;n<4&&o+.75*n>>6*(3-n)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,i=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var o=0;o>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,s=e.sigBytes,r=t?this._safe_map:this._map;e.clamp();for(var o=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(i[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|i[a+2>>>2]>>>24-(a+2)%4*8&255,l=0;l<4&&a+.75*l>>6*(3-l)&63));var d=r.charAt(64);if(d)for(;o.length%4;)o.push(d);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,r=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(r<<24|r>>>8)}var o=this._hash.words,a=e[t+0],l=e[t+1],p=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],y=e[t+6],A=e[t+7],b=e[t+8],v=e[t+9],_=e[t+10],S=e[t+11],w=e[t+12],E=e[t+13],T=e[t+14],k=e[t+15],C=o[0],D=o[1],x=o[2],R=o[3];C=d(C,D,x,R,a,7,n[0]),R=d(R,C,D,x,l,12,n[1]),x=d(x,R,C,D,p,17,n[2]),D=d(D,x,R,C,f,22,n[3]),C=d(C,D,x,R,m,7,n[4]),R=d(R,C,D,x,g,12,n[5]),x=d(x,R,C,D,y,17,n[6]),D=d(D,x,R,C,A,22,n[7]),C=d(C,D,x,R,b,7,n[8]),R=d(R,C,D,x,v,12,n[9]),x=d(x,R,C,D,_,17,n[10]),D=d(D,x,R,C,S,22,n[11]),C=d(C,D,x,R,w,7,n[12]),R=d(R,C,D,x,E,12,n[13]),x=d(x,R,C,D,T,17,n[14]),C=h(C,D=d(D,x,R,C,k,22,n[15]),x,R,l,5,n[16]),R=h(R,C,D,x,y,9,n[17]),x=h(x,R,C,D,S,14,n[18]),D=h(D,x,R,C,a,20,n[19]),C=h(C,D,x,R,g,5,n[20]),R=h(R,C,D,x,_,9,n[21]),x=h(x,R,C,D,k,14,n[22]),D=h(D,x,R,C,m,20,n[23]),C=h(C,D,x,R,v,5,n[24]),R=h(R,C,D,x,T,9,n[25]),x=h(x,R,C,D,f,14,n[26]),D=h(D,x,R,C,b,20,n[27]),C=h(C,D,x,R,E,5,n[28]),R=h(R,C,D,x,p,9,n[29]),x=h(x,R,C,D,A,14,n[30]),C=c(C,D=h(D,x,R,C,w,20,n[31]),x,R,g,4,n[32]),R=c(R,C,D,x,b,11,n[33]),x=c(x,R,C,D,S,16,n[34]),D=c(D,x,R,C,T,23,n[35]),C=c(C,D,x,R,l,4,n[36]),R=c(R,C,D,x,m,11,n[37]),x=c(x,R,C,D,A,16,n[38]),D=c(D,x,R,C,_,23,n[39]),C=c(C,D,x,R,E,4,n[40]),R=c(R,C,D,x,a,11,n[41]),x=c(x,R,C,D,f,16,n[42]),D=c(D,x,R,C,y,23,n[43]),C=c(C,D,x,R,v,4,n[44]),R=c(R,C,D,x,w,11,n[45]),x=c(x,R,C,D,k,16,n[46]),C=u(C,D=c(D,x,R,C,p,23,n[47]),x,R,a,6,n[48]),R=u(R,C,D,x,A,10,n[49]),x=u(x,R,C,D,T,15,n[50]),D=u(D,x,R,C,g,21,n[51]),C=u(C,D,x,R,w,6,n[52]),R=u(R,C,D,x,f,10,n[53]),x=u(x,R,C,D,_,15,n[54]),D=u(D,x,R,C,l,21,n[55]),C=u(C,D,x,R,b,6,n[56]),R=u(R,C,D,x,k,10,n[57]),x=u(x,R,C,D,y,15,n[58]),D=u(D,x,R,C,E,21,n[59]),C=u(C,D,x,R,m,6,n[60]),R=u(R,C,D,x,S,10,n[61]),x=u(x,R,C,D,p,15,n[62]),D=u(D,x,R,C,v,21,n[63]),o[0]=o[0]+C|0,o[1]=o[1]+D|0,o[2]=o[2]+x|0,o[3]=o[3]+R|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;i[r>>>5]|=128<<24-r%32;var o=e.floor(s/4294967296),a=s;i[15+(r+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),i[14+(r+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(i.length+1),this._process();for(var n=this._hash,l=n.words,d=0;d<4;d++){var h=l[d];l[d]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function d(e,t,i,s,r,o,a){var n=e+(t&i|~t&s)+r+a;return(n<>>32-o)+t}function h(e,t,i,s,r,o,a){var n=e+(t&s|i&~s)+r+a;return(n<>>32-o)+t}function c(e,t,i,s,r,o,a){var n=e+(t^i^s)+r+a;return(n<>>32-o)+t}function u(e,t,i,s,r,o,a){var n=e+(i^(t|~s))+r+a;return(n<>>32-o)+t}t.MD5=o._createHelper(l),t.HmacMD5=o._createHmacHelper(l)}(Math),i.MD5)})),Tr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=gd).lib,r=s.WordArray,o=s.Hasher,a=i.algo,n=[],l=a.SHA1=o.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],d=0;d<80;d++){if(d<16)n[d]=0|e[t+d];else{var h=n[d-3]^n[d-8]^n[d-14]^n[d-16];n[d]=h<<1|h>>>31}var c=(s<<5|s>>>27)+l+n[d];c+=d<20?1518500249+(r&o|~r&a):d<40?1859775393+(r^o^a):d<60?(r&o|r&a|o&a)-1894007588:(r^o^a)-899497514,l=a,a=o,o=r<<30|r>>>2,r=s,s=c}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(s+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(l),i.HmacSHA1=o._createHmacHelper(l),d.SHA1)})),Tr((function(e,t){var i;e.exports=(i=gd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=[],l=[];!function(){function t(t){for(var i=e.sqrt(t),s=2;s<=i;s++)if(!(t%s))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var s=2,r=0;r<64;)t(s)&&(r<8&&(n[r]=i(e.pow(s,.5))),l[r]=i(e.pow(s,1/3)),r++),s++}();var d=[],h=a.SHA256=o.extend({_doReset:function(){this._hash=new r.init(n.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=0;p<64;p++){if(p<16)d[p]=0|e[t+p];else{var f=d[p-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=d[p-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;d[p]=m+d[p-7]+y+d[p-16]}var A=s&r^s&o^r&o,b=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),v=u+((n<<26|n>>>6)^(n<<21|n>>>11)^(n<<7|n>>>25))+(n&h^~n&c)+l[p]+d[p];u=c,c=h,h=n,n=a+v|0,a=o,o=r,r=s,s=v+(b+A)|0}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+n|0,i[5]=i[5]+h|0,i[6]=i[6]+c|0,i[7]=i[7]+u|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;return i[r>>>5]|=128<<24-r%32,i[14+(r+64>>>9<<4)]=e.floor(s/4294967296),i[15+(r+64>>>9<<4)]=s,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(h),t.HmacSHA256=o._createHmacHelper(h)}(Math),i.SHA256)})),Tr((function(e,t){var i,s,r,o,a,n;e.exports=(s=(i=n=gd).lib.WordArray,r=i.algo,o=r.SHA256,a=r.SHA224=o.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(a),i.HmacSHA224=o._createHmacHelper(a),n.SHA224)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.Hasher,s=e.x64,r=s.Word,o=s.WordArray,a=e.algo;function n(){return r.create.apply(r,arguments)}var l=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],d=[];!function(){for(var e=0;e<80;e++)d[e]=n()}();var h=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=s.high,f=s.low,m=r.high,g=r.low,y=o.high,A=o.low,b=a.high,v=a.low,_=n.high,S=n.low,w=h.high,E=h.low,T=c.high,k=c.low,C=u.high,D=u.low,x=p,R=f,L=m,P=g,B=y,I=A,M=b,U=v,F=_,O=S,N=w,j=E,z=T,G=k,V=C,H=D,W=0;W<80;W++){var $,J,q=d[W];if(W<16)J=q.high=0|e[t+2*W],$=q.low=0|e[t+2*W+1];else{var K=d[W-15],Y=K.high,Q=K.low,X=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^Y>>>7,Z=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^(Q>>>7|Y<<25),ee=d[W-2],te=ee.high,ie=ee.low,se=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,re=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),oe=d[W-7],ae=oe.high,ne=oe.low,le=d[W-16],de=le.high,he=le.low;J=(J=(J=X+ae+(($=Z+ne)>>>0>>0?1:0))+se+(($+=re)>>>0>>0?1:0))+de+(($+=he)>>>0>>0?1:0),q.high=J,q.low=$}var ce,ue=F&N^~F&z,pe=O&j^~O&G,fe=x&L^x&B^L&B,me=R&P^R&I^P&I,ge=(x>>>28|R<<4)^(x<<30|R>>>2)^(x<<25|R>>>7),ye=(R>>>28|x<<4)^(R<<30|x>>>2)^(R<<25|x>>>7),Ae=(F>>>14|O<<18)^(F>>>18|O<<14)^(F<<23|O>>>9),be=(O>>>14|F<<18)^(O>>>18|F<<14)^(O<<23|F>>>9),ve=l[W],_e=ve.high,Se=ve.low,we=V+Ae+((ce=H+be)>>>0>>0?1:0),Ee=ye+me;V=z,H=G,z=N,G=j,N=F,j=O,F=M+(we=(we=(we=we+ue+((ce+=pe)>>>0>>0?1:0))+_e+((ce+=Se)>>>0>>0?1:0))+J+((ce+=$)>>>0<$>>>0?1:0))+((O=U+ce|0)>>>0>>0?1:0)|0,M=B,U=I,B=L,I=P,L=x,P=R,x=we+(ge+fe+(Ee>>>0>>0?1:0))+((R=ce+Ee|0)>>>0>>0?1:0)|0}f=s.low=f+R,s.high=p+x+(f>>>0>>0?1:0),g=r.low=g+P,r.high=m+L+(g>>>0

          >>0?1:0),A=o.low=A+I,o.high=y+B+(A>>>0>>0?1:0),v=a.low=v+U,a.high=b+M+(v>>>0>>0?1:0),S=n.low=S+O,n.high=_+F+(S>>>0>>0?1:0),E=h.low=E+j,h.high=w+N+(E>>>0>>0?1:0),k=c.low=k+G,c.high=T+z+(k>>>0>>0?1:0),D=u.low=D+H,u.high=C+V+(D>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[30+(s+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(s+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(h),e.HmacSHA512=t._createHmacHelper(h)}(),i.SHA512)})),Tr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=gd).x64,r=s.Word,o=s.WordArray,a=i.algo,n=a.SHA512,l=a.SHA384=n.extend({_doReset:function(){this._hash=new o.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=n._createHelper(l),i.HmacSHA384=n._createHmacHelper(l),d.SHA384)})),Tr((function(e,t){var i;e.exports=(i=gd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.x64.Word,n=t.algo,l=[],d=[],h=[];!function(){for(var e=1,t=0,i=0;i<24;i++){l[e+5*t]=(i+1)*(i+2)/2%64;var s=(2*e+3*t)%5;e=t%5,t=s}for(e=0;e<5;e++)for(t=0;t<5;t++)d[e+5*t]=t+(2*e+3*t)%5*5;for(var r=1,o=0;o<24;o++){for(var n=0,c=0,u=0;u<7;u++){if(1&r){var p=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(D=i[r]).high^=a,D.low^=o}for(var n=0;n<24;n++){for(var u=0;u<5;u++){for(var p=0,f=0,m=0;m<5;m++)p^=(D=i[u+5*m]).high,f^=D.low;var g=c[u];g.high=p,g.low=f}for(u=0;u<5;u++){var y=c[(u+4)%5],A=c[(u+1)%5],b=A.high,v=A.low;for(p=y.high^(b<<1|v>>>31),f=y.low^(v<<1|b>>>31),m=0;m<5;m++)(D=i[u+5*m]).high^=p,D.low^=f}for(var _=1;_<25;_++){var S=(D=i[_]).high,w=D.low,E=l[_];E<32?(p=S<>>32-E,f=w<>>32-E):(p=w<>>64-E,f=S<>>64-E);var T=c[d[_]];T.high=p,T.low=f}var k=c[0],C=i[0];for(k.high=C.high,k.low=C.low,u=0;u<5;u++)for(m=0;m<5;m++){var D=i[_=u+5*m],x=c[_],R=c[(u+1)%5+5*m],L=c[(u+2)%5+5*m];D.high=x.high^~R.high&L.high,D.low=x.low^~R.low&L.low}D=i[0];var P=h[n];D.high^=P.high,D.low^=P.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var s=8*t.sigBytes,o=32*this.blockSize;i[s>>>5]|=1<<24-s%32,i[(e.ceil((s+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var a=this._state,n=this.cfg.outputLength/8,l=n/8,d=[],h=0;h>>24)|4278255360&(u<<24|u>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),d.push(p),d.push(u)}return new r.init(d,n)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),i.SHA3)})),Tr((function(e,t){var i;e.exports=(i=gd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),d=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=r.create([0,1518500249,1859775393,2400959708,2840853838]),u=r.create([1352829926,1548603684,1836072691,2053994217,0]),p=a.RIPEMD160=o.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var s=t+i,r=e[s];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,a,p,v,_,S,w,E,T,k,C,D=this._hash.words,x=c.words,R=u.words,L=n.words,P=l.words,B=d.words,I=h.words;for(S=o=D[0],w=a=D[1],E=p=D[2],T=v=D[3],k=_=D[4],i=0;i<80;i+=1)C=o+e[t+L[i]]|0,C+=i<16?f(a,p,v)+x[0]:i<32?m(a,p,v)+x[1]:i<48?g(a,p,v)+x[2]:i<64?y(a,p,v)+x[3]:A(a,p,v)+x[4],C=(C=b(C|=0,B[i]))+_|0,o=_,_=v,v=b(p,10),p=a,a=C,C=S+e[t+P[i]]|0,C+=i<16?A(w,E,T)+R[0]:i<32?y(w,E,T)+R[1]:i<48?g(w,E,T)+R[2]:i<64?m(w,E,T)+R[3]:f(w,E,T)+R[4],C=(C=b(C|=0,I[i]))+k|0,S=k,k=T,T=b(E,10),E=w,w=C;C=D[1]+p+T|0,D[1]=D[2]+v+k|0,D[2]=D[3]+_+S|0,D[3]=D[4]+o+w|0,D[4]=D[0]+a+E|0,D[0]=C},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var r=this._hash,o=r.words,a=0;a<5;a++){var n=o[a];o[a]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}return r},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,i){return e^t^i}function m(e,t,i){return e&t|~e&i}function g(e,t,i){return(e|~t)^i}function y(e,t,i){return e&i|t&~i}function A(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(p),t.HmacRIPEMD160=o._createHmacHelper(p)}(),i.RIPEMD160)})),Tr((function(e,t){var i,s,r;e.exports=(s=(i=gd).lib.Base,r=i.enc.Utf8,void(i.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=r.parse(t));var i=e.blockSize,s=4*i;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),a=this._iKey=t.clone(),n=o.words,l=a.words,d=0;d>>2];e.sigBytes-=t}};s.BlockCipher=h.extend({cfg:h.cfg.extend({mode:p,padding:f}),reset:function(){var e;h.reset.call(this);var t=this.cfg,i=t.iv,s=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=s.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?o.create([1398893684,1701076831]).concat(i).concat(t):t).toString(l)},parse:function(e){var t,i=l.parse(e),s=i.words;return 1398893684==s[0]&&1701076831==s[1]&&(t=o.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:t})}},y=s.SerializableCipher=r.extend({cfg:r.extend({format:g}),encrypt:function(e,t,i,s){s=this.cfg.extend(s);var r=e.createEncryptor(i,s),o=r.finalize(t),a=r.cfg;return m.create({ciphertext:o,key:i,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:s.format})},decrypt:function(e,t,i,s){return s=this.cfg.extend(s),t=this._parse(t,s.format),e.createDecryptor(i,s).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),A=(t.kdf={}).OpenSSL={execute:function(e,t,i,s,r){if(s||(s=o.random(8)),r)a=d.create({keySize:t+i,hasher:r}).compute(e,s);else var a=d.create({keySize:t+i}).compute(e,s);var n=o.create(a.words.slice(t),4*i);return a.sigBytes=4*t,m.create({key:a,iv:n,salt:s})}},b=s.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:A}),encrypt:function(e,t,i,s){var r=(s=this.cfg.extend(s)).kdf.execute(i,e.keySize,e.ivSize,s.salt,s.hasher);s.iv=r.iv;var o=y.encrypt.call(this,e,t,r.key,s);return o.mixIn(r),o},decrypt:function(e,t,i,s){s=this.cfg.extend(s),t=this._parse(t,s.format);var r=s.kdf.execute(i,e.keySize,e.ivSize,t.salt,s.hasher);return s.iv=r.iv,y.decrypt.call(this,e,t,r.key,s)}})}())})),Tr((function(e,t){var i;e.exports=((i=gd).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,s){var r,o=this._iv;o?(r=o.slice(0),this._iv=void 0):r=this._prevBlock,s.encryptBlock(r,0);for(var a=0;a>24&255)){var t=e>>16&255,i=e>>8&255,s=255&e;255===t?(t=0,255===i?(i=0,255===s?s=0:++s):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=s}else e+=1<<24;return e}function s(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var r=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,r=i.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),s(a);var n=a.slice(0);i.encryptBlock(n,0);for(var l=0;l>>2]|=r<<24-o%4*8,e.sigBytes+=r},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Tr((function(e,t){var i;e.exports=((i=gd).pad.Iso10126={pad:function(e,t){var s=4*t,r=s-e.sigBytes%s;e.concat(i.lib.WordArray.random(r-1)).concat(i.lib.WordArray.create([r<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Tr((function(e,t){var i;e.exports=((i=gd).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Tr((function(e,t){var i;e.exports=((i=gd).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Tr((function(e,t){var i;e.exports=((i=gd).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Tr((function(e,t){var i;e.exports=(i=gd,function(e){var t=i,s=t.lib.CipherParams,r=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){var t=r.parse(e);return s.create({ciphertext:t})}}}(),i.format.Hex)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo,r=[],o=[],a=[],n=[],l=[],d=[],h=[],c=[],u=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,s=0;for(t=0;t<256;t++){var f=s^s<<1^s<<2^s<<3^s<<4;f=f>>>8^255&f^99,r[i]=f,o[f]=i;var m=e[i],g=e[m],y=e[g],A=257*e[f]^16843008*f;a[i]=A<<24|A>>>8,n[i]=A<<16|A>>>16,l[i]=A<<8|A>>>24,d[i]=A,A=16843009*y^65537*g^257*m^16843008*i,h[f]=A<<24|A>>>8,c[f]=A<<16|A>>>16,u[f]=A<<8|A>>>24,p[f]=A,i?(i=m^e[e[e[y^m]]],s^=e[e[s]]):i=s=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=s.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,s=4*((this._nRounds=i+6)+1),o=this._keySchedule=[],a=0;a6&&a%i==4&&(d=r[d>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d]):(d=r[(d=d<<8|d>>>24)>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d],d^=f[a/i|0]<<24),o[a]=o[a-i]^d);for(var n=this._invKeySchedule=[],l=0;l>>24]]^c[r[d>>>16&255]]^u[r[d>>>8&255]]^p[r[255&d]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,n,l,d,r)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,h,c,u,p,o),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,s,r,o,a,n){for(var l=this._nRounds,d=e[t]^i[0],h=e[t+1]^i[1],c=e[t+2]^i[2],u=e[t+3]^i[3],p=4,f=1;f>>24]^r[h>>>16&255]^o[c>>>8&255]^a[255&u]^i[p++],g=s[h>>>24]^r[c>>>16&255]^o[u>>>8&255]^a[255&d]^i[p++],y=s[c>>>24]^r[u>>>16&255]^o[d>>>8&255]^a[255&h]^i[p++],A=s[u>>>24]^r[d>>>16&255]^o[h>>>8&255]^a[255&c]^i[p++];d=m,h=g,c=y,u=A}m=(n[d>>>24]<<24|n[h>>>16&255]<<16|n[c>>>8&255]<<8|n[255&u])^i[p++],g=(n[h>>>24]<<24|n[c>>>16&255]<<16|n[u>>>8&255]<<8|n[255&d])^i[p++],y=(n[c>>>24]<<24|n[u>>>16&255]<<16|n[d>>>8&255]<<8|n[255&h])^i[p++],A=(n[u>>>24]<<24|n[d>>>16&255]<<16|n[h>>>8&255]<<8|n[255&c])^i[p++],e[t]=m,e[t+1]=g,e[t+2]=y,e[t+3]=A},keySize:8});e.AES=t._createHelper(m)}(),i.AES)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib,s=t.WordArray,r=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],n=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var s=a[i]-1;t[i]=e[s>>>5]>>>31-s%32&1}for(var r=this._subKeys=[],o=0;o<16;o++){var d=r[o]=[],h=l[o];for(i=0;i<24;i++)d[i/6|0]|=t[(n[i]-1+h)%28]<<31-i%6,d[4+(i/6|0)]|=t[28+(n[i+24]-1+h)%28]<<31-i%6;for(d[0]=d[0]<<1|d[0]>>>31,i=1;i<7;i++)d[i]=d[i]>>>4*(i-1)+3;d[7]=d[7]<<5|d[7]>>>27}var c=this._invSubKeys=[];for(i=0;i<16;i++)c[i]=r[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),u.call(this,1,1431655765);for(var s=0;s<16;s++){for(var r=i[s],o=this._lBlock,a=this._rBlock,n=0,l=0;l<8;l++)n|=d[l][((a^r[l])&h[l])>>>0];this._lBlock=a,this._rBlock=o^n}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(s.create(t)),this._des2=c.createEncryptor(s.create(i)),this._des3=c.createEncryptor(s.create(r))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=r._createHelper(f)}(),i.TripleDES)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=s.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,s=this._S=[],r=0;r<256;r++)s[r]=r;r=0;for(var o=0;r<256;r++){var a=r%i,n=t[a>>>2]>>>24-a%4*8&255;o=(o+s[r]+n)%256;var l=s[r];s[r]=s[o],s[o]=l}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,i=this._j,s=0,r=0;r<4;r++){i=(i+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[i],e[i]=o,s|=e[(e[t]+e[i])%256]<<24-8*r}return this._i=t,this._j=i,s}e.RC4=t._createHelper(r);var a=s.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),i.RC4)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var s=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)l.call(this);for(i=0;i<8;i++)r[i]^=s[i+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(r[0]^=d,r[1]^=c,r[2]^=h,r[3]^=u,r[4]^=d,r[5]^=c,r[6]^=h,r[7]^=u,i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(n)}(),i.Rabbit)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var r=0;r<4;r++)l.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(s[0]^=d,s[1]^=c,s[2]^=h,s[3]^=u,s[4]^=d,s[5]^=c,s[6]^=h,s[7]^=u,r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(n)}(),i.RabbitLegacy)})),Tr((function(e,t){var i;e.exports=(i=gd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function l(e,t){let i=t>>24&255,s=t>>16&255,r=t>>8&255,o=255&t,a=e.sbox[0][i]+e.sbox[1][s];return a^=e.sbox[2][r],a+=e.sbox[3][o],a}function d(e,t,i){let s,o=t,a=i;for(let t=0;t1;--t)o^=e.pbox[t],a=l(e,o)^a,s=o,o=a,a=s;return s=o,o=a,a=s,a^=e.pbox[1],o^=e.pbox[0],{left:o,right:a}}function c(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=a[t][i]}let s=0;for(let a=0;a=i&&(s=0);let n=0,l=0,h=0;for(let t=0;t>>2]|=e[i]<<24-i%4*8;return yd.lib.WordArray.create(t,e.length)}const vd=16,_d=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Sd=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function wd(e){const t=[];for(let i=0,s=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Td(e){const t=[];for(let i=0,s=e.length;i>>6),t.push(128|63&s);else if(s<=55295||s>=57344&&s<=65535)t.push(224|s>>>12),t.push(128|s>>>6&63),t.push(128|63&s);else{if(!(s>=65536&&s<=1114111))throw t.push(s),new Error("input is not supported");i++,t.push(240|s>>>18&28),t.push(128|s>>>12&63),t.push(128|s>>>6&63),t.push(128|63&s)}}return t}function kd(e){const t=[];for(let i=0,s=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}function Cd(e,t){const i=31&t;return e<>>32-i}function Dd(e){return(255&_d[e>>>24&255])<<24|(255&_d[e>>>16&255])<<16|(255&_d[e>>>8&255])<<8|255&_d[255&e]}function xd(e){return e^Cd(e,2)^Cd(e,10)^Cd(e,18)^Cd(e,24)}function Rd(e){return e^Cd(e,13)^Cd(e,23)}function Ld(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[4*t],r[1]=255&e[4*t+1],r[2]=255&e[4*t+2],r[3]=255&e[4*t+3],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];for(let e,t=0;t<32;t+=4)e=s[1]^s[2]^s[3]^i[t+0],s[0]^=xd(Dd(e)),e=s[2]^s[3]^s[0]^i[t+1],s[1]^=xd(Dd(e)),e=s[3]^s[0]^s[1]^i[t+2],s[2]^=xd(Dd(e)),e=s[0]^s[1]^s[2]^i[t+3],s[3]^=xd(Dd(e));for(let e=0;e<16;e+=4)t[e]=s[3-e/4]>>>24&255,t[e+1]=s[3-e/4]>>>16&255,t[e+2]=s[3-e/4]>>>8&255,t[e+3]=255&s[3-e/4]}function Pd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[0+4*t],r[1]=255&e[1+4*t],r[2]=255&e[2+4*t],r[3]=255&e[3+4*t],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];s[0]^=2746333894,s[1]^=1453994832,s[2]^=1736282519,s[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=s[1]^s[2]^s[3]^Sd[i+0],t[i+0]=s[0]^=Rd(Dd(e)),e=s[2]^s[3]^s[0]^Sd[i+1],t[i+1]=s[1]^=Rd(Dd(e)),e=s[3]^s[0]^s[1]^Sd[i+2],t[i+2]=s[2]^=Rd(Dd(e)),e=s[0]^s[1]^s[2]^Sd[i+3],t[i+3]=s[3]^=Rd(Dd(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function Bd(e,t,i){let{padding:s="pkcs#7",mode:r,iv:o=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===r&&("string"==typeof o&&(o=wd(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=wd(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Td(e):wd(e):[...e],("pkcs#5"===s||"pkcs#7"===s)&&0!==i){const t=vd-e.length%vd;for(let i=0;i=vd;){const t=e.slice(c,c+16),s=new Array(16);if("cbc"===r)for(let e=0;ee.length&&s+r<=i.length?e.length-t:s+r>i.length&&t+r<=e.length?i.length-s:t+r<=e.length&&s+r<=i.length?r:i.length>24&255,e>>16&255,e>>8&255,255&e)}function Vd(e,t){return t+3>>19)^(s<<23|s>>>9)}function $d(e,t){var i=new Array(36);i[0]=Vd(t,0),i[1]=Vd(t,4),i[2]=Vd(t,8),i[3]=Vd(t,12);for(var s=0;s<32;s++)i[s+4]=i[s]^Jd(i[s+1]^i[s+2]^i[s+3]^e[s]);var r=new Array(4);for(s=35;s>=32;s--)r[35-s]=i[s];var o=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(s<<10|s>>>22)^(s<<18|s>>>14)^(s<<24|s>>>8)}function qd(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var s=Hd(e),r=Math.ceil(i.length/16),o=new Array(i.length),a=t.slice(),n=0;ne)return this.preDelayTimestamp-e>1e3&&this.player.debug.warn("CommonDemux",`getDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return ${this.delay}`),this.preDelayTimestamp=e,this.delay;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;t>=i?(this.isStreamTsMoreThanLocal=!1,this.delay=t-i):(this.isStreamTsMoreThanLocal=!0,this.delay=i-t)}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.preDelayTimestamp=e,this.delay}getDelayNotUpdateDelay(e,t){if(!e||!this.player.isDemuxDecodeFirstIIframeInit())return-1;if(t===Ue)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debug.warn("CommonDemux",`getDelayNotUpdateDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return -1`),-1;if(this.firstTimestamp){let t=-1;if(e){const i=Date.now()-this.startTimestamp,s=e-this.firstTimestamp;t=i>=s?i-s:s-i}return t}return-1}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}resetAllDelay(){this.resetDelay(),this.preDelayTimestamp=null}initInterval(){this.player.isUseHls265()?this.player.debug.log("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(y)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debug.log("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debug.log("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{if(this.player.isDestroyedOrClosed())return;let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debug.warn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debug.log("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}updateHistoryIntervalDiffTimeList(e){this.historyIntervalDiffTimeList.length>5&&this.historyIntervalDiffTimeList.shift(),this.historyIntervalDiffTimeList.push(e)}isHistoryIntervalDiffTimeAllLarge(){if(this.historyIntervalDiffTimeList.length<5)return!1;for(let e=0;e{let e=null;this.bufferList.length&&(e=this.bufferList.shift(),this._doDecoderDecode(e))};e();const t=Math.ceil(1e3/(this.playbackStreamFps*this.player.getPlaybackRate()));this.player.debug.log("CommonDemux",`initPlaybackCacheLoop() and fragDuration is ${t}, playbackStreamFps is ${this.playbackStreamFps}, playbackRate is ${this.player.getPlaybackRate()}`),this.stopId=setInterval(e,t)}_loop(){let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay,s=this.player._opt.playType===b;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debug.warn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debug.warn("CommonDemux",`_loop is dropping and data.ts is ${e.ts}, data.type is ${e.type}, data.isIFrame is ${e.isIFrame}, delay is ${this.delay} ,buffer list is ${this.bufferList.length}`);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift();const t=this.getDelayNotUpdateDelay(e.ts,e.type);e.isIFrame&&t<=this.getNotDroppingDelayTs()&&(this.player.debug.log("CommonDemux",`_loop data isIFrame is true and delay is ${this.delay}`),this.dropping=!1,this._doDecoderDecode(e),this._decodeNext(e))}else if(this.player.isPlayback()||this.player.isPlayUseMSE()||0===t)for(;this.bufferList.length;)e=this.bufferList.shift(),this._doDecoderDecode(e);else if(e=this.bufferList[0],-1===this.getDelay(e.ts,e.type))this.player.debug.log("CommonDemux",`delay is -1 and data.ts is ${e.ts} data.type is ${e.type}`),this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e);else if(this.delay>i+t&&s)this.hasIframeInBufferList()?(this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay}, set dropping is true`),this.resetAllDelay(),this.dropping=!0,this.player.updateStats({isDropping:!0})):(this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e));else for(;this.bufferList.length;){if(e=this.bufferList[0],!(this.getDelay(e.ts,e.type)>t)){this.delay<0&&this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debug.log("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;const o=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};this.player.isPlayer()?(t===Fe&&o._opt.playType===b&&this.calcNetworkDelay(i),o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===Fe&&(a.isIFrame=s),this.pushBuffer(e,a)):t===Fe?o.decoderWorker&&o.decoderWorker.decodeVideo(e,i,s):t===Ue&&o._opt.hasAudio&&o.decoderWorker&&o.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===Fe&&(a.isIFrame=s),this.player.isPlaybackOnlyDecodeIFrame()?t===Fe&&s&&this.pushBuffer(e,a):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,a):this.pushBuffer(e,a,!1))}_doDecodeByHls(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=!1;if(t===Ue&&Pr(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),o=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let a=!1;if(t===Fe&&s&&ha(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&ua(a)&&ua(o)&&this.handleRecording(e,t,i,s,r),t===Fe?this._doDecoderDecode({ts:i,cts:r,payload:e,type:Fe,isIFrame:s}):t===Ue&&this._doDecoderDecode({ts:i,payload:e,type:Ue})}_doDecodeByFmp4(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByTs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByPs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const s=i.ts-t,r=e.type===Fe&&i.type===Ue,o=e.type===Fe&&ha(e.payload);(s<=20||r||o)&&(this.player.debug.log("CommonDemux",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n diff is ${s} and isVideoAndNextAudio is ${r} and isVideoSqeHeader is ${o}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:s}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Ue?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?s.decodeAudio(e.payload,e.ts):t._opt.useWCS&&t._opt.wcsDecodeAudio?i.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===Fe&&(t._opt.isEmitSEI&&this.findSei(e.payload,e.ts),t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t._opt.useMSE?s.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s=this.player._opt.videoBuffer,r=this.player._opt.videoBufferDelay,o=this.player.isPlayer();if(t.type===Ue&&Pr(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() audio ts is ${t.ts}, isAacCodecPacket is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Ue})}else if(t.type===Fe&&t.isIFrame&&ha(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() video ts is ${t.ts}, isVideoSequenceHeader is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Fe,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),o){if(t.type===Fe){if(this.preTimestampDuration>0){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debug.log("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${this.preTimestamp},\n diff is ${e} and preTsDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(null!==this.preTimestamp&&this.preTimestamp>=t.ts&&(this.player.debug.warn("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts} less than (or equal) preTs is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.preTimestamp-t.ts>X&&(this.player.debug.warn("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${this.preTimestamp-t.ts} more than 3600000\n and resetAllDelay()`),this.resetAllDelay()),this.player._opt.isDropSameTimestampGop&&ua(t.isIFrame)&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=ua(this.isPushDropping);return this.player.debug.log("CommonDemux",`pushBuffer(), isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next drop buffer`),void(e&&t?this.dropBuffer$2():this.clearBuffer(!0))}this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=r+s;this.player._opt.useMSE?this.delay>0&&e>i&&this.delay ${r+s}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.delay>0&&e>i&&this.delay ${r+s},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&ua(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()))}}if(i?t.type===Ue?this.bufferList.push({ts:t.ts,payload:e,type:Ue}):t.type===Fe&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:Fe,isIFrame:t.isIFrame}):t.type===Fe?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:Fe,isIFrame:t.isIFrame}):t.type===Ue&&this._doDecoderDecode({ts:t.ts,payload:e,type:Ue}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&(Co(this.playbackStreamVideoFps)||Co(this.playbackStreamAudioFps))){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if(Co(this.playbackStreamVideoFps)&&(e=sa(this.bufferList,Fe),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,ua(this.player._opt.hasAudio)&&(this.player.debug.log(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),Co(this.playbackStreamAudioFps)&&(t=sa(this.bufferList,Ue),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),Co(this.playbackStreamVideoFps)&&Co(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debug.log("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${this.bufferList.length} and ts list is ${JSON.stringify(i)}`)}const i=this.getAudioBufferLength()>0,s=i?60:40;this.bufferList.length>=s&&(this.debug.warn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${s}, and hasAudio is ${i} an set streamFps is 25`),this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),i?(this.playbackStreamAudioFps=25,this.playbackStreamFps=this.playbackStreamVideoFps+this.playbackStreamAudioFps):this.playbackStreamFps=this.playbackStreamVideoFps,this.initPlaybackCacheLoop())}}}dropBuffer$2(){if(this.bufferList.length>0){let e=this.bufferList.findIndex((e=>ca(e.isIFrame)&&e.type===Fe));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debug.log("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${this.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){this.isPushDropping=!0,this.player.updateStats({isDropping:!0});const t=this.bufferList.length;this.bufferList=this.bufferList.slice(e);const i=this.bufferList.shift();this.resetAllDelay(),this.getDelay(i.ts,i.type),this._doDecoderDecode(i),this.isPushDropping=!1,this.player.debug.log("CommonDemux",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,and new bufferList length is ${this.bufferList.length} and new delay is ${this.delay} `)}else this.isPushDropping=!1}0===this.bufferList.length&&(this.isPushDropping=!1)}clearBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.player.debug.log("CommonDemux",`clearBuffer,buffer length is ${this.bufferList.length}, need clear is ${e} and _opt.checkFirstIFrame is ${this.player._opt.checkFirstIFrame}`),e&&(this.bufferList=[]),this.player.isPlayer()&&(this.resetAllDelay(),ca(this.player._opt.checkFirstIFrame)&&(this.dropping=!0,this.player.updateStats({isDropping:!0}))),this.player.decoderCheckFirstIFrame()}calcNetworkDelay(e){if(!(this.player.isDemuxDecodeFirstIIframeInit()&&e>0))return;null===this.bufferStartDts?(this.bufferStartDts=e,this.bufferStartLocalTs=Xr()):et?i-t:0;s>this.player._opt.networkDelay&&this.player._opt.playType===b&&(this.player.debug.warn("CommonDemux",`delay is more than networkDelay and now dts:${e},start dts is ${this.bufferStartDts}, vs start is ${t},local diff is ${i} ,delay is ${s}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(rt.networkDelayTimeout,s)),this.player.updateStats({netBuf:s})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===Fe&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===Ue&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===Fe&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===Fe&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=4;xo(this.nalUnitSize)&&(s=this.nalUnitSize);const r=$r(e.slice(5),s);if(ua(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===bt)}r.forEach((e=>{const s=i?e[0]>>>1&63:31&e[0];(i&&(s===qt||s===Jt)||ua(i)&&s===Rt)&&this.player.emit(rt.videoSEI,{ts:t,data:e})}))}handleRecording(e,t,i,s,r){if(this.player.isRecordTypeFlv()){const s=new Uint8Array(e);t===Fe?this.player.recorder.addVideo(s,i):t===Ue&&this.player.recorder.addAudio(s,i)}else if(this.player.isRecordTypeMp4()){const o=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===Fe)this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r);else if(t===Ue){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(Br(t)?t.slice(2):t.slice(1),i)}}else t===Fe&&this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===yt;this.nalUnitSize=function(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}(e,i),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=this.player,s=e;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=e.slice(o+4+2,o+4+a);let r=new md.ModeOfOperation.ctr(t,new md.Counter(i));const n=r.decrypt(s);r=null,e.set(n,o+4+2)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===yt):i.debug.warn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else i.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${i._opt.cryptoKey&&i._opt.cryptoKey.byteLength} or cryptoIV.length is ${i._opt.cryptoIV&&i._opt.cryptoIV.byteLength} null`);else if(i._opt.isSm4Crypto)if(i._opt.sm4CryptoKey){const t=this.player.video.getVideoInfo().encTypeCode===yt,r=this.player._opt.isSm4CryptoH265V2;s=i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0?function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const o=e.byteLength;let a=5;for(;ao)break;let l=e[a+4],d=!1,h=2;if(s?(r&&(h=3),l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const s=qd(t,i,e.slice(a+4+h,a+4+n));e.set(s,a+4+h)}a=a+4+n}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t,r):function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=new Uint8Array(e.slice(0,5)),a=5;for(;ar){const t=new Uint8Array(o.length+e.length-a);t.set(o,0),t.set(e.slice(a),o.length),o=t;break}let d=e[a+4],h=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,h=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,h=1===d||5===d),h){const i=Bd(e.slice(a+4+c,a+4+l),t,0,{padding:"none",output:"array"});let s=i[i.length-1];if(s>0&&s<16){let e=!0;for(let t=1;t<=s;t++)if(i[i.length-t]!==s){e=!1;break}e&&i.splice(i.length-s,s)}const r=new Uint8Array(c);r.set(e.slice(a+4,a+4+c),0);const n=Jr(tl(r,new Uint8Array(i))),d=new Uint8Array(o.length+n.length);d.set(o,0),d.set(n,o.length),o=d}else{const t=e.slice(a+4,a+4+l),i=new Uint8Array(o.length+4+t.length);i.set(o,0),i.set(n,o.length),i.set(t,o.length+4),o=i}a=a+4+l}return o}(e,i._opt.sm4CryptoKey,t,r)}else i._opt.sm4CryptoKey||i.debug.error(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(i._opt.isXorCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=Md(e.slice(o+4,o+4+a),t,i);e.set(s,o+4)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===yt)}else i.debug.error(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return s}cryptoPayloadAudio(e){let t=this.player;if(ua(t._opt.isCryptoAudio))return e;let i=e;if(t._opt.isM7sCrypto)if(t._opt.cryptoKey&&t._opt.cryptoKey.byteLength>0&&t._opt.cryptoIV&&t._opt.cryptoIV.byteLength>0){e[0]>>4===vt&&(i=function(e,t,i){if(e.byteLength<=30)return e;const s=e.slice(32);let r=new md.ModeOfOperation.ctr(t,new md.Counter(i));const o=r.decrypt(s);return r=null,e.set(o,32),e}(e,t._opt.cryptoKey,t._opt.cryptoIV))}else t.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${t._opt.cryptoKey&&t._opt.cryptoKey.byteLength} or cryptoIV.length is ${t._opt.cryptoIV&&t._opt.cryptoIV.byteLength} null`);return i}_decodeEnhancedH265Video(e,t){const i=e[0],s=48&i,r=15&i,o=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),l="a"==String.fromCharCode(o[0]);if(r===tr){if(s===rr){const t=e.slice(5);if(l);else{const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this.updateNalUnitSize(e),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,Fe,0,!0,0)}}}else if(r===ir){let i=e,r=0;const o=s===rr;if(o&&this.calcIframeIntervalTimestamp(t),l);else{n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=Wn(e.slice(8),o),i=this.cryptoPayload(i,o),this._doDecode(i,Fe,t,o,r)}}else if(r===sr){const i=s===rr,r=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let o=Wn(r,i);o=this.cryptoPayload(o,i),this._doDecode(o,Fe,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}var Yd=function(e,t,i,s){return new(i||(i=Promise))((function(r,o){function a(e){try{l(s.next(e))}catch(e){o(e)}}function n(e){try{l(s.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,n)}l((s=s.apply(e,t||[])).next())}))};const Qd=Symbol(32),Xd=Symbol(16),Zd=Symbol(8);class eh{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return Yd(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var s;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(s=this.pull)||void 0===s||s.call(this,e)}))}))}readU32(){return this.read(Qd)}readU16(){return this.read(Xd)}readU8(){return this.read(Zd)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const s=e=>t.length<(i=e);if("number"==typeof this.need){if(s(this.need))return;e=t.subarray(0,i)}else if(this.need===Qd){if(s(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Xd){if(s(2))return;e=t[0]<<8|t[1]}else if(this.need===Zd){if(s(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(s(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}eh.U32=Qd,eh.U16=Xd,eh.U8=Zd;class th extends Kd{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new eh(this.demux()),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input=null,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debug.warn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),s=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const o=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield o).slice();if(!s)return;switch(r){case Oe:if(s._opt.hasAudio&&(s.updateStats({abps:n.byteLength}),n.byteLength>0)){let e=this.cryptoPayloadAudio(n);this._doDecode(e,Ue,a)}break;case Ne:if(s._opt.hasVideo&&n.length>=6){let e=a;s.updateStats({vbps:n.byteLength,dts:e}),s._times.demuxStart||(s._times.demuxStart=Xr());const t=n[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(n,e);else{const e=15&t;let s=(t>>4&15)===ws;const r=e===yt,o=e===gt;if(ua(r||o))return void this.player.debug.warn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);ua(s)&&ca(va(n,r))&&(this.player.debug.log(this.TAG_NAME,"demux() isIFrame is false and unit type is IDR and update to true"),s=!0),s&&(this.calcIframeIntervalTimestamp(a),null===this.nalUnitSize&&ha(n)&&this.updateNalUnitSize(n)),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let l=i[0],d=this.cryptoPayload(n,s);this._doDecode(d,Fe,a,s,l)}}else n.length<6&&s.debug.warn(this.TAG_NAME,`payload.length is ${n.length} less than 6 and ignore`);break;case je:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(n);this.player.recorder.addMetaData(e)}const e=ul(n);e&&e.onMetaData&&s.updateMetaData(e.onMetaData);break;default:s.debug.log(this.TAG_NAME,`demux() type is ${r}`)}}}close(){this.input=null}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}}class ih extends Kd{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),s=i.getUint8(0),r=i.getUint32(1,!1),o=new ArrayBuffer(4),a=new Uint32Array(o);switch(s){case Ue:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case Fe:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=Xr()),i.byteLength>=11){const o=new Uint8Array(e,5);let n=r;t.updateStats({vbps:o.byteLength,dts:n});const l=o[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(o,r);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(r),a[0]=o[4],a[1]=o[3],a[2]=o[2],a[3]=0;let t=a[0],n=this.cryptoPayload(o,e);this._doDecode(n,s,r,e,t)}}else this.player.debug.warn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class sh extends th{constructor(e){super(e),e.debug.log("WebTransportDemux","init")}destroy(){this.player.debug.log("WebTransportDemux","destroy"),super.destroy()}}var rh,oh=Tr((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),ah=(rh=oh)&&rh.__esModule&&Object.prototype.hasOwnProperty.call(rh,"default")?rh.default:rh;class nh{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>s,o=8-s;if(o>=e)return i&&(this.index+=e),r>>o-e;{i&&(this.index+=o);const s=e-o;return r<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class lh extends Kd{constructor(e){super(e),ah(this,"TAG_NAME","NakedFlowDemux"),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);if(this.player._opt.nakedFlowDemuxUseNew){const e=this.extractNALu$3(t);this.handleVideoFrames(e)}else this.extractNALu$2(t)}addNaluToBuffer(e){const t=e.byteLength+this.tempNaluBufferList.byteLength,i=new Uint8Array(t);i.set(this.tempNaluBufferList,0),i.set(e,this.tempNaluBufferList.byteLength),this.tempNaluBufferList=i}downloadNakedFlowFile(){const e=new Blob([this.tempNaluBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".h264",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadTempNalu",e)}}getNaluDts(){const e=this.player._opt.nakedFlowFps;return this.localDts=this.localDts+parseInt(1e3/e,10),this.localDts}getNaluAudioDts(){const e=this.player.audio.audioContext.sampleRate,t=this.player.audio.audioBufferSize;return this.localDts+parseInt(t/e*1e3)}extractNALu(e){let t,i,s=0,r=e.byteLength,o=0,a=[];for(;s1)for(let e=0;e{const t=Pn(e);t===kt||t===Tt?this.handleVideoH264Nalu(e):In(t)&&s.push(e)})),1===s.length)this.handleVideoH264Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=Pn(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===bt)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((e=>{const t=$n(e);t===Ht||t===Gt||t===jt?this.handleVideoH265Nalu(e):Jn(t)&&s.push(e)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=$n(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{$n(t)===Ht?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debug.warn(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{Bn(Pn(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=$n(e);t===$t?this.extractH265SEI(e):this.handleVideoH265Nalu(e)}))}extractH264SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH264Nalu(e)}))}extractH265SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH265Nalu(e)}))}handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i}handleAudioAACNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=wt.AAC);let t=new Uint8Array(e);const i=t.slice(0,7);if(t=t.slice(7),!this.isSendAACSeqHeader){const e=(192&i[2])>>6,t=(60&i[2])>>2,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,Ue,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(t.length+2);r.set([175,1],0),r.set(t,2),this._doDecode(r,Ue,s,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=wt.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([114],0),s.set(t,1),this._doDecode(s,Ue,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=wt.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([130],0),s.set(t,1),this._doDecode(s,Ue,i,!1,0)}handleVideoH264Nalu(e){const t=Pn(e);switch(t){case Tt:this.sps=e;break;case kt:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Rn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Fe,t,!0,0),this.sps=null,this.pps=null}if(In(t)){this.player._times.demuxStart||(this.player._times.demuxStart=Xr());const i=Mn(t),s=this.getNaluDts(),r=function(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Fe,s,i,0)}else this.player.debug.warn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Rn({sps:this.sps,pps:this.pps});this._doDecode(e,Fe,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=Xr());const i=this.getNaluDts(),s=Ln(e.reduce(((e,t)=>{const i=Jr(e),s=Jr(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Fe,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=$n(e);switch(t){case jt:this.vps=e;break;case Gt:this.sps=e;break;case Ht:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=Hn({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Fe,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(Jn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=Xr());const i=qn(t),s=this.getNaluDts(),r=function(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Fe,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Hn({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,Fe,0,!0,0),this.vps=null,this.sps=null,this.pps=null}}handleVideoH265NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=Xr());const i=this.getNaluDts(),s=Wn(e.reduce(((e,t)=>{const i=Jr(e),s=Jr(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Fe,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,s,r){this.player.updateStats({vbps:e.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,Fe,i,s,r)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}handleVideoFrames(e){if(!this.streamVideoType)for(let t of e)if(this.streamVideoType=Xo(t),this.streamVideoType)break;this.streamVideoType&&(this.streamVideoType===At?this.handleVideoH264Frames(e):this.streamVideoType===bt&&this.handleVideoH265Frames(e))}handleVideoH264Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=Pn(a);let n=!1,l=e===xt;e!==Dt&&e!==xt||(o=this.parseVideo264Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case kt:this.pps=e;break;case Tt:this.sps=e;break;case Rt:r=e}if(In(t)){const t=Jr(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Rn({sps:this.sps,pps:this.pps});this._doDecode(e,Fe,0,!0,0),this.sps=null,this.pps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Rn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Fe,t,!0,0),this.sps=null,this.pps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=Xr());const e=this.getNaluDts(),t=Ln(s,i);this.player._opt.isEmitSEI&&this.player.emit(rt.videoSEI,{ts:e,data:r}),this._preDoDecode(t,Fe,e,i,0)}}}))}handleVideoH265Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=$n(a);let n=!1,l=qn(e);Jn(e)&&(o=this.parseVideo265Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case Ht:this.pps=e;break;case Gt:this.sps=e;break;case jt:this.vps=e}if(Jn(t)){const t=Jr(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps&&this.vps){this.isSendSeqHeader=!0;const e=Hn({sps:this.sps,pps:this.pps,vps:this.vps});this._doDecode(e,Fe,0,!0,0),this.sps=null,this.pps=null,this.vps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps&&this.vps){const e=Hn({sps:this.sps,pps:this.pps,vps:this.vps}),t=this.localDts;this._doDecode(e,Fe,t,!0,0),this.sps=null,this.pps=null,this.vps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=Xr());const e=this.getNaluDts(),t=Wn(s,i);this.player._opt.isEmitSEI&&this.player.emit(rt.videoSEI,{ts:e,data:null}),this._preDoDecode(t,Fe,e,i,0)}}}))}handleVideoH265Frames_1(e){e.forEach((e=>{this.handleVideoNalu(e)}))}parseVideo264Header(e){const t=new nh(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}}parseVideo265Header(e){const t=new nh(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}}class dh extends Kd{constructor(e){super(e),this.player=e,e.debug.log("EmptyDemux","init")}destroy(){super.destroy(),this.player.debug.log("EmptyDemux","destroy")}}var hh=Tr((function(e,t){var s,r,o,a=(s=new Date,r=4,o={setLogLevel:function(e){r=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=r&&console.debug("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)}},o);a.getDurationString=function(e,t){var i;function s(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+a.getDurationString(e.start(s))+","+a.getDurationString(e.end(s))+"]";return i}return"(empty)"},t.Log=a;var n=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=t}}},l.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},l.BIG_ENDIAN=!1,l.LITTLE_ENDIAN=!0,l.prototype._byteLength=0,Object.defineProperty(l.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(l.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(l.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(l.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),l.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},l.prototype.isEof=function(){return this.position>=this._byteLength},l.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},l.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},l.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},l.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},l.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,l.memcpy=function(e,t,i,s,r){var o=new Uint8Array(e,t,r),a=new Uint8Array(i,s,r);o.set(a)},l.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},l.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},l.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;ir;s--,r++){var o=t[r];t[r]=t[s],t[s]=o}return e},l.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},l.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},l.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},l.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},l.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var h=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(h.prototype=new l(new ArrayBuffer,0,l.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},h.prototype.reduceBuffer=function(e,t,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(e,t,i)),s.buffer.fileStart=e.fileStart+t,s.buffer.usedBytes=0,s.buffer},h.prototype.insertBuffer=function(e){for(var t=!0,i=0;is.byteLength){this.buffers.splice(i,1),i--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=s.fileStart||(e=this.reduceBuffer(e,0,s.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,r,o)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},h.prototype.logBufferLevel=function(e){var t,i,s,r,o,n=[],l="";for(s=0,r=0,t=0;t0&&(l+=o.end-1+"]");var d=e?a.info:a.debug;0===this.buffers.length?d("MultiBufferStream","No more buffer in memory"):d("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+s+"/"+r+" bytes), continuous ranges: "+l)},h.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},h.prototype.findPosition=function(e,t,i){var s,r=null,o=-1;for(s=!0===e?0:this.bufferIndex;s=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},h.prototype.findEndContiguousBuf=function(e){var t,i,s,r=void 0!==e?e:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(t=r+1;t>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=c;var u={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){u.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){u.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,s){u.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=s},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(a.error("BoxParser","Box of type '"+h+"' has a size "+d+" greater than its container size "+i),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):0!==d&&n+d>e.getEndPosition()?(e.seek(n),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):t?{code:u.OK,type:h,size:d,hdr_size:l,start:n}:(u[h+"Box"]?s=new u[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(s=new u.Box(h,d)).has_unparsed_data=!0):u.UUIDBoxes[o]?s=new u.UUIDBoxes[o](d):(a.warn("BoxParser","Unknown uuid type: '"+o+"'"),(s=new u.Box(h,d)).uuid=o,s.has_unparsed_data=!0),s.hdr_size=l,s.start=n,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(a.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(e)),s.parse(e),(r=e.getPosition()-(s.start+s.size))<0?(a.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),e.seek(s.start+s.size)):r>0&&(a.error("BoxParser","Parsing of box '"+c+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&e.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),u.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),u.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),u.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),u.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),u.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|s>>5&7})),u.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|o>>4&15,s.acmod=o>>1&7,s.lfeon=1&o,s.num_dep_sub=a>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&a)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var s=e.readUint8(),r=Math.min(127&s,i.length-1);if(r?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[r]),128&s)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),u.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),u.createBoxCtor("hvcC",(function(e){var t,i,s,r;this.configurationVersion=e.readUint8(),r=e.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),r=e.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,a.nalu_type=63&r;var n=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var s=0;s>7,this.axis=1&t})),u.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),u.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&o)<<8|e.readUint8():a.property_index=127&o}}})),u.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=e.readString(4);break;case 1:s.grouping_type=e.readString(4),s.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),p.prototype.toString=function(){return"("+this.x+","+this.y+")"},u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new p(e.readUint16(),e.readUint16()),this.display_primaries[1]=new p(e.readUint16(),e.readUint16()),this.display_primaries[2]=new p(e.readUint16(),e.readUint16()),this.white_point=new p(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),u.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),u.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(s))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),s=0;s>7,this.num_leading_samples=127&t})),u.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=u.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),u.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[s]=t>>4&3,this.sample_is_depended_on[s]=t>>2&3,this.sample_has_redundancy[s]=3&t})),u.createFullBoxCtor("senc"),u.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=e.readUint32(),r=e.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&s}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=u.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),s=0;s>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,i,s={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(s.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var a=s.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++i)s.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=u.decimalToHex(s,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var r=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||r)&&(o="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,r=!0);t+=o}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var s,r=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,r.push(o),o&&(s=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===s)i=".CA";else{i=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,l=0;for(e=0;e<=s;++e)for(n=n<<8|r[e],l+=8;l>=5;){i+=a[n>>l-5&31],n&=(1<<(l-=5))-1}l&&(i+=a[31&(n<<=5-l)])}}t+=i}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(i?"."+i:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},u.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},u.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof u.Box||t[i]instanceof u.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},y.prototype.setExtractionOptions=function(e,t,i){var s=this.getTrackById(e);if(s){var r={};this.extractedTracks.push(r),r.id=e,r.user=t,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},y.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},y.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=u.parseOneBox(this.stream,false)).code===u.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&a.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},y.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},y.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},y.prototype.getInfo=function(){var e,t,i,s,r,o,a={},n=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(n+1e3*this.moov.mvhd.creation_time),a.modified=new Date(n+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},y.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},y.prototype.getBoxes=function(e,t){var i=[];return y._sweep.call(this,e,i,t),i},y._sweep=function(e,t,i){for(var s in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;y._sweep.call(this.boxes[s],e,t,i)}},y.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},y.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},y.prototype.releaseUsedSamples=function(e,t,i){var s=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var o=r.lastValidSample;oe*r.timescale){d=s-1;break}t&&r.is_sync&&(l=s)}for(t&&(d=l),e=i.samples[d].cts,i.nextSample=d;i.samples[d].alreadyRead===i.samples[d].size&&i.samples[d+1];)d++;return o=i.samples[d].offset+i.samples[d].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+a.getDurationString(e,n)+" and offset: "+o),{offset:o,time:e/n}},y.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},y.prototype.seek=function(e,t){var i,s,r,o=this.moov,n={offset:1/0,time:1/0};if(this.moov){for(r=0;rthis.getTrackDuration(i)||((s=this.seekTrack(e,t,i)).offset-1){a=l;break}switch(a){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var c=new u.avcCBox;c.parse(new n(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var p=new u.hvcCBox;p.parse(new n(t.hevcDecoderConfigRecord)),o.addBox(p)}break;case"Audio":r.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:r.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(o),f.add("stts").set("sample_counts",[]).set("sample_deltas",[]),f.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),f.add("stco").set("chunk_offsets",[]),f.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},u.Box.prototype.computeSize=function(e){var t=e||new l;t.endianness=l.BIG_ENDIAN,this.write(t)},y.prototype.addSample=function(e,t,i){var s=i||{},r={},o=this.getTrackById(e);if(null!==o){r.number=o.samples.length,r.track_id=o.tkhd.track_id,r.timescale=o.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=o.mdia.minf.stbl.stsd.entries[r.description_index],r.data=t,r.size=t.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,o.samples.push(r),o.samples_size+=r.size,o.samples_duration+=r.duration,void 0===o.first_dts&&(o.first_dts=s.dts),this.processSamples();var a=this.createSingleSampleMoof(r);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),r}},y.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(e.track_id);return s.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",e.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var e,t,i,s,r,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=r[a].grouping_type+"/0",(n=new d(r[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=n))}else for(a=0;a=2&&(l=s[a].grouping_type+"/0",n=new d(s[a].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=n))},y.setSampleGroupProperties=function(e,t,i,s){var r,o;for(r in t.sample_groups=[],s){var a;if(t.sample_groups[r]={},t.sample_groups[r].grouping_type=s[r].grouping_type,t.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?t.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:t.sample_groups[r].group_description_index=-1,0!==t.sample_groups[r].group_description_index)a=s[r].fragment_description?s[r].fragment_description:s[r].description,t.sample_groups[r].group_description_index>0?(o=t.sample_groups[r].group_description_index>65535?(t.sample_groups[r].group_description_index>>16)-1:t.sample_groups[r].group_description_index-1,a&&o>=0&&(t.sample_groups[r].description=a.entries[o])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[r].description=a.entries[a.default_group_description_index-1])}},y.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},y.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=o.sample_counts[v]),t>0?(e.samples[t-1].duration=o.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,a?(t>=_&&(S++,_<0&&(_=0),_+=a.sample_counts[S]),k.cts=e.samples[t].dts+a.sample_offsets[S]):k.cts=k.dts,n?(t==n.sample_numbers[w]-1?(k.is_sync=!0,w++):(k.is_sync=!1,k.degradation_priority=0),d&&d.entries[E].sample_delta+T==t+1&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta,E++)):k.is_sync=!0,y.process_sdtp(e.mdia.minf.stbl.sdtp,k,k.number),k.degradation_priority=u?u.priority[t]:0,d&&d.entries[E].sample_delta+T==t&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta),(h.length>0||c.length>0)&&y.setSampleGroupProperties(e,k,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},y.prototype.updateSampleLists=function(){var e,t,i,s,r,o,a,n,l,d,h,c,p,f,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&y.initSampleGroups(c,h,h.sbgps,c.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?f.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(h.tfdt?f.dts=h.tfdt.baseMediaDecodeTime:f.dts=0,c.first_traf_merged=!0),f.cts=f.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(f.cts=f.dts+g.sample_composition_time_offset[i]),m=a,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),f.is_sync=!(m>>16&1),f.is_leading=m>>26&3,f.depends_on=m>>24&3,f.is_depended_on=m>>22&3,f.has_redundancy=m>>20&3,f.degradation_priority=65535&m;var A=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:b||0===t?d.start:n,f.offset=0===t&&0===i?v?_+g.data_offset:_:n,n=f.offset+f.size,(h.sbgps.length>0||h.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(c,f,f.number_in_traf,h.sample_groups_info)}}if(h.subs){c.has_fragment_subsamples=!0;var S=h.first_sample_index;for(t=0;t-1))return null;var o=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=o)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===o)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+o+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,o),s.alreadyRead+=o,i.usedBytes+=o,this.stream.logBufferLevel()}},y.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},y.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?i.type=o.iinf.item_infos[e].item_type:i.type="mime",i.content_type=o.iinf.item_infos[e].content_type,i.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&u.property_index-1-1))return null;var n=(t=this.stream.buffers[o]).byteLength-(r.offset+r.alreadyRead-t.fileStart);if(!(r.length-r.alreadyRead<=n))return a.debug("ISOFile","Getting item #"+e+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,n),r.alreadyRead+=n,i.alreadyRead+=n,t.usedBytes+=n,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,r.length-r.alreadyRead),t.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},y.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(s)}return t},y.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},u.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},u.tkhdBox.prototype.print=function(e){u.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var A={createFile:function(e,t){var i=void 0===e||e,s=new y(t);return s.discardMdatData=!i,s}};t.createFile=A.createFile}));function ch(e){return e.reduce(((e,t)=>256*e+t))}function uh(e){const t=[101,103,119,99],i=e.length-28,s=e.slice(i,i+t.length);return t.every(((e,t)=>e===s[t]))}hh.Log,hh.MP4BoxStream,hh.DataStream,hh.MultiBufferStream,hh.MPEG4DescriptorParser,hh.BoxParser,hh.XMLSubtitlein4Parser,hh.Textin4Parser,hh.ISOFile,hh.createFile;class ph{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const s=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(s instanceof Error)return console.error(s.message),this.d=!0,e;this.A=!0,this.u=i[1],uh(t)&&this.c++,WebAssembly.instantiate(i[2],s).then((e=>{if(!function(e){return"function"==typeof e.parse&&"object"==typeof e.memory}(e.instance.exports))return this.d=!0,void console.error("video_error_3");this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}class fh extends Kd{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=hh.createFile(),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.transportDescarmber=null,this.player._opt.isFmp4Private&&(this.transportDescarmber=new ph),this._listenMp4Box(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.stop(),this.mp4Box.flush(),this.mp4Box.destroy(),this.mp4Box=null),this.transportDescarmber&&(this.transportDescarmber.destroy(),this.transportDescarmber=null),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.player.debug.log(this.TAG_NAME,"destroy")}_listenMp4Box(){this.mp4Box.onReady=this.onReady.bind(this),this.mp4Box.onError=this.onError.bind(this),this.mp4Box.onSamples=this.onSamples.bind(this)}onReady(e){this.player.debug.log(this.TAG_NAME,"onReady",e);const t=e.videoTracks[0],i=e.audioTracks[0];if(t){this.videoTrackId=t.id;const e=this.getSeqHeader(t);e&&(this.player.debug.log(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,Fe,0,!0,0)),this.mp4Box.setExtractionOptions(t.id)}if(i&&this.player._opt.hasAudio){this.audioTrackId=i.id;const e=i.audio||{},t=Rr.indexOf(e.sample_rate),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:t,channel:e.channel_count},o=Lr(r);this.player.debug.log(this.TAG_NAME,"aacADTSHeader",o,"config",r),this._doDecodeByFmp4(o,Ue,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debug.error(this.TAG_NAME,"mp4Box onError",e)}onSamples(e,t,i){if(e===this.videoTrackId){for(const e of i){const t=e.data,i=e.is_sync,s=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?Wn(t,i):Ln(t,i);let o=this.cryptoPayload(r,i);this._doDecodeByFmp4(o,Fe,s,i,0)}this.mp4Box.removeUsedSamples(e)}else if(e===this.audioTrackId){if(this.player._opt.hasAudio){for(const e of i){const t=e.data;this.player.updateStats({abps:t.byteLength});const i=1e3*e.cts/e.timescale;e.duration,e.timescale;const s=new Uint8Array(t.byteLength+2);s.set([175,1],0),s.set(t,2),this._doDecodeByFmp4(s,Ue,i,!1,0)}this.mp4Box.removeUsedSamples(e)}}else this.player.debug.warn(this.TAG_NAME,"onSamples() trackId error",e)}getSeqHeader(e){const t=this.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new hh.DataStream(void 0,0,hh.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(this.isHevc=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const s=new Uint8Array(t.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(e){let t=new Uint8Array(e);this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)}downloadFmp4File(){const e=new Blob(this.tempFmp4List,{type:'video/mp4; codecs="avc1.640028,mp4a.40.2"'}),t=URL.createObjectURL(e),i=document.createElement("a");i.href=t,i.download=Xr()+".fmp4",i.click(),URL.revokeObjectURL(t)}getInputByteLength(){let e=0;return this.mp4Box&&(e=this.mp4Box.getAllocatedSampleDataSize()),e}}class mh extends Kd{constructor(e){super(e),ah(this,"LOG_NAME","Mpeg4Loader"),this.player=e,this.player.debug.log(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.LOG_NAME,"destroy")}}function gh(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let r=0;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}const yh=3,Ah=4,bh=6,vh=15,_h=17,Sh=129,wh=135,Eh=21,Th=134,kh=27,Ch=36;class Dh{constructor(){this.slices=[],this.total_length=0,this.expected_length=0,this.random_access_indicator=0}}class xh{constructor(){this.pid=null,this.data=null,this.stream_type=null,this.random_access_indicator=null}}class Rh{constructor(){this.pid=null,this.stream_id=null,this.len=null,this.data=null,this.pts=null,this.nearest_pts=null,this.dts=null}}const Lh=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class Ph{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&e&&t}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(e){if(null==this.keyframesIndex)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,s=e.length-1,r=0,o=0,a=s;for(t=e[r]&&t=6?(s=5,t=new Array(4),a=r-3):(s=2,t=new Array(2),a=r):-1!==n.indexOf("android")?(s=2,t=new Array(2),a=r):(s=5,a=r,t=new Array(4),r>=6?a=r-3:1===o&&(s=2,t=new Array(2),a=r)),t[0]=s<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===s&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Lh[r],this.sampling_index=r,this.channel_count=o,this.object_type=s,this.original_object_type=i,this.codec_mimetype="mp4a.40."+s,this.original_codec_mimetype="mp4a.40."+i}}class Ih extends Kd{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.first_parse_=!0,this.tsPacketSize=0,this.syncOffset=0,this.pmt_=null,this.config_=null,this.media_info_=new Ph,this.timescale_=90,this.duration_=0,this.pat_={version_number:0,network_pid:0,program_map_pid:{}},this.current_program_=null,this.current_pmt_pid_=-1,this.program_pmt_map_={},this.pes_slice_queues_={},this.section_slice_queues_={},this.video_metadata_={vps:null,sps:null,pps:null,details:null},this.audio_metadata_={codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},this.last_pcr_=null,this.audio_last_sample_pts_=void 0,this.aac_last_incomplete_data_=null,this.has_video_=!1,this.has_audio_=!1,this.video_init_segment_dispatched_=!1,this.audio_init_segment_dispatched_=!1,this.video_metadata_changed_=!1,this.audio_metadata_changed_=!1,this.loas_previous_frame=null,this.video_track_={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this.audio_track_={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._remainingPacketData=null,this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.media_info_=null,this.pes_slice_queues_=null,this.section_slice_queues_=null,this.video_metadata_=null,this.audio_metadata_=null,this.aac_last_incomplete_data_=null,this.video_track_=null,this.audio_track_=null,this._remainingPacketData=null,super.destroy()}probe(e){let t=new Uint8Array(e),i=-1,s=188;if(t.byteLength<=3*s)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*s);for(let r=0;r=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:s,sync_offset:i})}_initPmt(){return{program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}}dispatch(e){let t=new Uint8Array(e);this._remainingPacketData&&(t=gh(this._remainingPacketData,t),this._remainingPacketData=null);let i=t.buffer;const s=this.parseChunks(i);s?this._remainingPacketData=t.subarray(s):t.length>>6;i[1];let o=(31&i[1])<<8|i[2],a=(48&i[3])>>>4,n=15&i[3],l=!(!this.pmt_||this.pmt_.pcr_pid!==o),d={},h=4;if(2==a||3==a){let e=i[4];if(e>0&&(l||3==a)){if(d.discontinuity_indicator=(128&i[5])>>>7,d.random_access_indicator=(64&i[5])>>>6,d.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*(i[6]<<25|i[7]<<17|i[8]<<9|i[9]<<1|i[10]>>>7)+((1&i[10])<<8|i[11]);this.last_pcr_=e}}if(2==a||5+e===188){t+=188,204===this.tsPacketSize&&(t+=16);continue}h=5+e}if(1==a||3==a)if(0===o||o===this.current_pmt_pid_||null!=this.pmt_&&this.pmt_.pid_stream_type[o]===Th){let i=188-h;this.handleSectionSlice(e,t+h,i,{pid:o,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}else if(null!=this.pmt_&&null!=this.pmt_.pid_stream_type[o]){let i=188-h,s=this.pmt_.pid_stream_type[o];o!==this.pmt_.common_pids.h264&&o!==this.pmt_.common_pids.h265&&o!==this.pmt_.common_pids.adts_aac&&o!==this.pmt_.common_pids.loas_aac&&o!==this.pmt_.common_pids.ac3&&o!==this.pmt_.common_pids.eac3&&o!==this.pmt_.common_pids.opus&&o!==this.pmt_.common_pids.mp3&&!0!==this.pmt_.pes_private_data_pids[o]&&!0!==this.pmt_.timed_id3_pids[o]&&!0!==this.pmt_.synchronous_klv_pids[o]&&!0!==this.pmt_.asynchronous_klv_pids[o]||this.handlePESSlice(e,t+h,i,{pid:o,stream_type:s,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}t+=188,204===this.tsPacketSize&&(t+=16)}return this.dispatchAudioVideoMediaSegment(),t}handleSectionSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=this.section_slice_queues_[s.pid];if(s.payload_unit_start_indicator){let a=r[0];if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t+1,Math.min(i,a));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):this.clearSlices(o,s)}for(let n=1+a;n=o.expected_length&&this.clearSlices(o,s),n+=l.byteLength}}else if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t,Math.min(i,o.expected_length-o.total_length));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):o.total_length>=o.expected_length&&this.clearSlices(o,s)}}handlePESSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=r[0]<<16|r[1]<<8|r[2];r[3];let a=r[4]<<8|r[5];if(s.payload_unit_start_indicator){if(1!==o)return void this.player.debug.warn(this.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=this.pes_slice_queues_[s.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?this.emitPESSlices(e,s):this.clearSlices(e,s)),this.pes_slice_queues_[s.pid]=new Dh,this.pes_slice_queues_[s.pid].random_access_indicator=s.random_access_indicator}if(null==this.pes_slice_queues_[s.pid])return;let n=this.pes_slice_queues_[s.pid];n.slices.push(r),s.payload_unit_start_indicator&&(n.expected_length=0===a?0:a+6),n.total_length+=r.byteLength,n.expected_length>0&&n.expected_length===n.total_length?this.emitPESSlices(n,s):n.expected_length>0&&n.expected_length>>6,n=t[8];2!==a&&3!==a||(i=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,o=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:i);let l,d=9+n;if(0!==r){if(r<3+n)return void this.player.debug.warn(this.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");l=r-3-n}else l=t.byteLength-d;let h=t.subarray(d,d+l);switch(e.stream_type){case yh:case Ah:this.parseMP3Payload(h,i);break;case bh:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(h,i):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(h,i):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(h,i):this.pmt_.asynchronous_klv_pids[e.pid]?this.parseAsynchronousKLVMetadataPayload(h,e.pid,s):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(h,i,o,e.pid,s):this.parsePESPrivateDataPayload(h,i,o,e.pid,s);break;case vh:this.parseADTSAACPayload(h,i);break;case _h:this.parseLOASAACPayload(h,i);break;case Sh:this.parseAC3Payload(h,i);break;case wh:this.parseEAC3Payload(h,i);break;case Eh:this.pmt_.timed_id3_pids[e.pid]?this.parseTimedID3MetadataPayload(h,i,o,e.pid,s):this.pmt_.synchronous_klv_pids[e.pid]&&this.parseSynchronousKLVMetadataPayload(h,i,o,e.pid,s);break;case kh:this.parseH264Payload(h,i,o,e.random_access_indicator);break;case Ch:this.parseH265Payload(h,i,o,e.random_access_indicator)}}else if((188===s||191===s||240===s||241===s||255===s||242===s||248===s)&&e.stream_type===bh){let i,o=6;i=0!==r?r:t.byteLength-o;let a=t.subarray(o,o+i);this.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,s)}}else this.player.debug.error(this.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)}parsePAT(e){let t=e[0];if(0!==t)return void Log.e(this.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let s=(62&e[5])>>>1,r=1&e[5],o=e[6];e[7];let a=null;if(1===r&&0===o)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=s;else if(a=this.pat_,null==a)return;let n=i-5-4,l=-1,d=-1;for(let t=8;t<8+n;t+=4){let i=e[t]<<8|e[t+1],s=(31&e[t+2])<<8|e[t+3];0===i?a.network_pid=s:(a.program_pmt_pid[i]=s,-1===l&&(l=i),-1===d&&(d=s))}1===r&&0===o&&(null==this.pat_&&this.player.debug.log(this.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),this.pat_=a,this.current_program_=l,this.current_pmt_pid_=d)}parsePMT(e){let t=e[0];if(2!==t)return void this.player.debug.error(this.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,s=(15&e[1])<<8|e[2],r=e[3]<<8|e[4],o=(62&e[5])>>>1,a=1&e[5],n=e[6];if(e[7],1===a&&0===n)i=this._initPmt(),i.program_number=r,i.version_number=o,this.program_pmt_map_[r]=i;else if(i=this.program_pmt_map_[r],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let l=(15&e[10])<<8|e[11],d=12+l,h=s-9-l-4;for(let t=d;t0){for(let s=t+5;s0)for(let s=t+5;s1&&(this.player.debug.warn(this.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new Vr(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame());){i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ue};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseLOASAACPayload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;if(this.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);t.set(this.aac_last_incomplete_data_,0),t.set(e,this.aac_last_incomplete_data_.byteLength),e=t}let i,s;if(null!=t&&(s=t/this.timescale_),"aac"===this.audio_metadata_.codec){if(null==t&&null!=this.audio_last_sample_pts_)i=1024/this.audio_metadata_.sampling_frequency*1e3,s=this.audio_last_sample_pts_+i;else if(null==t)return void this.player.debug.warn(this.TAG_NAME,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.audio_last_sample_pts_){i=1024/this.audio_metadata_.sampling_frequency*1e3;let e=this.audio_last_sample_pts_+i;Math.abs(e-s)>1&&(this.player.debug.warn(this.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new Hr(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame(Co(this.loas_previous_frame)?void 0:this.loas_previous_frame));){this.loas_previous_frame=a,i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ue};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseAC3Payload(e,t){}parseEAC3Payload(e,t){}parseOpusPayload(e,t){}parseMP3Payload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],s=[22050,24e3,16e3,0],r=[11025,12e3,8e3,0],o=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let n=(12&e[2])>>>2,l=3!==(e[3]>>>6&3)?2:1,d=0,h=34;switch(o){case 0:d=r[n];break;case 2:d=s[n];break;case 3:d=i[n]}switch(a){case 1:h=34;break;case 2:h=33;break;case 3:h=32}const c={};c.object_type=h,c.sample_rate=d,c.channel_count=l,c.data=e;const u={codec:"mp3",data:c};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"mp3",object_type:h,sample_rate:d,channel_count:l},this.dispatchAudioInitSegment(u)):this.detectAudioMetadataChange(u)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(u));let p={payload:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_,type:Ue};this.audio_track_.samples.push(p),this.audio_track_.length+=e.byteLength}detectAudioMetadataChange(e){if(e.codec!==this.audio_metadata_.codec)return this.player.debug.log(this.TAG_NAME,`Audio: Audio Codecs changed from ${this.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==this.audio_metadata_.audio_object_type)return this.player.debug.log(this.TAG_NAME,`AAC: AudioObjectType changed from ${this.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return this.player.debug.log(this.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${this.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==this.audio_metadata_.channel_config)return this.player.debug.log(this.TAG_NAME,`AAC: Channel configuration changed from ${this.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==this.audio_metadata_.sampling_frequency)return this.player.debug.log(this.TAG_NAME,`AC3: Sampling Frequency changed from ${this.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return this.player.debug.log(this.TAG_NAME,`AC3: Bit Stream Identification changed from ${this.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return this.player.debug.log(this.TAG_NAME,`AC3: BitStream Mode changed from ${this.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==this.audio_metadata_.channel_mode)return this.player.debug.log(this.TAG_NAME,`AC3: Channel Mode changed from ${this.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return this.player.debug.log(this.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${this.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debug.log(this.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debug.log(this.TAG_NAME,`Opus: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){const t=e.data;if(t.object_type!==this.audio_metadata_.object_type)return this.player.debug.log(this.TAG_NAME,`MP3: AudioObjectType changed from ${this.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debug.log(this.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debug.log(this.TAG_NAME,`MP3: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1}dispatchAudioInitSegment(e){let t={type:"audio"};t.id=this.audio_track_.id,t.timescale=1e3,t.duration=this.duration_;let i="";if("aac"===this.audio_metadata_.codec){let s="aac"===e.codec?e.data:null,r=new Bh(s);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale,i=vt;const o=Lr({profile:this.player._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});console.error("aacADTSHeader",`profile: ${r.object_type}, sampleRate: ${t.audioSampleRateIndex}, channel: ${t.channelCount}`),this._doDecodeByTs(o,Ue,0,!1,0)}else"ac-3"===this.audio_metadata_.codec||"ec-3"===this.audio_metadata_.codec||"opus"===this.audio_metadata_.codec||"mp3"===this.audio_metadata_.codec&&(t.audioSampleRate=this.audio_metadata_.sample_rate,t.channelCount=this.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0,i=St);0==this.audio_init_segment_dispatched_&&this.player.debug.log(this.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;let s=this.media_info_;s.hasAudio=!0,s.audioCodec=t.originalCodec,s.audioSampleRate=t.audioSampleRate,s.audioChannelCount=t.channelCount,s.hasVideo&&s.videoCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.audioCodec}"`,i&&this.player.audio.updateAudioInfo({encTypeCode:i,channels:t.channelCount,sampleRate:t.audioSampleRate})}dispatchPESPrivateDataDescriptor(e,t,i){}parsePESPrivateDataPayload(e,t,i,s,r){let o=new Rh;if(o.pid=s,o.stream_id=r,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/this.timescale_);o.pts=e}else o.nearest_pts=this.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/this.timescale_);o.dts=e}}parseTimedID3MetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`Timed ID3 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseSynchronousKLVMetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`Synchronous KLV Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseAsynchronousKLVMetadataPayload(e,t,i){this.player.debug.log(this.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)}parseSMPTE2038MetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`SMPTE 2038 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}getNearestTimestampMilliseconds(){if(null!=this.audio_last_sample_pts_)return Math.floor(this.audio_last_sample_pts_);if(null!=this.last_pcr_){return Math.floor(this.last_pcr_/300/this.timescale_)}}_preDoDecode(){const e=this.video_track_,t=this.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Fe?this._doDecodeVideo({...e,payload:t}):e.type===Ue&&this._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Wn(t,e.isIFrame):Ln(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength}),e.isIFrame&&this.calcIframeIntervalTimestamp(e.dts);let s=this.cryptoPayload(i,e.isIFrame);this._doDecodeByTs(s,Fe,e.dts,e.isIFrame,e.cts)}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByTs(i,Ue,e.dts,!1,0)}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}class Mh{constructor(e){return new(Mh.getLoaderFactory(e))(e)}static getLoaderFactory(e){const t=e._opt.demuxType;return t===k?ih:t===T||e.isWebrtcH265()?th:t===x?sh:t===R?lh:t===L?fh:t===P?mh:t===I?Ih:dh}}const Uh=[44100,48e3,32e3,0],Fh=[22050,24e3,16e3,0],Oh=[11025,12e3,8e3,0],Nh=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],jh=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],zh=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Gh(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),i=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let s=t[1]>>>3&3,r=(6&t[1])>>1,o=(240&t[2])>>>4,a=(12&t[2])>>>2,n=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(s){case 0:l=Oh[a];break;case 2:l=Fh[a];break;case 3:l=Uh[a]}switch(r){case 1:o{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(nt.webcodecsAudioInitTimeout)}),1e3)):this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=Xr(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ua(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData({videoFrame:e,ts:e.timestamp}):this.player.video.render$2({videoFrame:e,ts:e.timestamp})):ua(this.player.playback.isPlaybackPauseClearCache)&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})))}handleError(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(rs)?this.player.emitError(nt.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(os)||-1!==t.indexOf(as)||-1!==t.indexOf(ns)?this.player.emitError(nt.webcodecsDecodeError,t):-1!==t.indexOf(ls)&&this.player.emitError(nt.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player&&(this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed"):this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback())}handleErrorAudio(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,s){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(this.isDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===gt){i=xn(e.slice(5))}else t===yt&&(i=zn(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(nt.wcsWidthOrHeightChange,`width ${s.width}->${s.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(ha(e))return void this.player.debug.log(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=!1,r=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=r,s=!0);const o=r-this.prevTimestamp;this.decodeDiffTimestamp=o,o>500&&!s&&this.player.isPlayer()&&this.player.debug.warn(this.TAG_NAME,"decodeVideo diff time is ",o);const a=e.slice(5),n=new EncodedVideoChunk({data:a,timestamp:t,type:i?li:di});this.player.emit(rt.timeUpdate,t);try{this.decoder.decode(n)}catch(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(is)||-1!==t.indexOf(ss))&&this.player.emitError(nt.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debug.log(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===gs){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===yt&&!wo()){const e=uo();return this.player.debug.warn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(nt.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=Xr());let i=null,s=null;const r=e.slice(5);if(t===gt?(s=xn(r),i={codec:s.codec,description:r}):t===yt&&(s=Gn(r),i={codec:s.codec,description:r}),!i||i&&!i.codec||s&&0===s.codecWidth&&0===s.codecHeight)return this.player.debug.warn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(nt.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth,this.isInitInfo||(this.player.debug.log(this.TAG_NAME,`updateVideoInfo: ${s.codecWidth},${s.codecHeight}`),this.player.video.updateVideoInfo({width:s.codecWidth,height:s.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,t),this.player.video.bindMediaStream(),this.player.debug.log(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{i.optimizeForLatency=!0,i.hardwareAcceleration="prefer-hardware",this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debug.error(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(ls)?this.player.emitError(nt.webcodecsH265NotSupport,t):this.player.emitError(nt.webcodecsDecodeConfigureError,t)}}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(Pr(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.isDecodeFirstIIframe){if(this.isAudioDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),s=i.length/this.player.audio.audioInfo.sampleRate*1e3,r=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(s,10)});try{this.decoderAudio.decode(r)}catch(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,s=t===St,r=t===vt,o=t===_t;let a="";a=r?i?16:8:0===i?8:16;const n={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(r||s){let t=null;if(Pr(e)){const i=e.slice(2);t=Fr(i),t&&(n.codec=t.originalCodec,n.numberOfChannels=t.channelCount,n.sampleRate=t.sampleRate),l=i,this.isAAC=r}else s&&(t=Gh(e),t&&(n.codec=Ar,n.numberOfChannels=t.channelCount,n.sampleRate=t.samplingRate))}else n.codec=o?yr:gr,n.numberOfChannels=1,n.sampleRate=8e3;if(n.codec&&n.numberOfChannels&&n.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:n.numberOfChannels,sampleRate:n.sampleRate,depth:a}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debug.log(this.TAG_NAME,`decoderAudio.configure() and codec is ${n.codec}`);try{this.decoderAudio.configure(n),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(nt.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debug.error(this.TAG_NAME,"configure audio error",e.code,e),e.toString()}}}}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getDecodeDiffTimes(){return this.decodeDiffTimestamp}isDecodeStateClosed(){return"closed"===this.decoder.state}isDecodeStateConfigured(){return"configured"===this.decoder.state}isDecodeStateUnConfigured(){return"unconfigured"===this.decoder.state}isAudioDecodeStateClosed(){return"closed"===this.decoderAudio.state}isAudioDecodeStateConfigured(){return"configured"===this.decoderAudio.state}isAudioDecodeStateUnConfigured(){return"unconfigured"===this.decoderAudio.state}}const Hh={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制",narrow:"缩小",expand:"放大",ptz:"操作盘",ptzActive:"操作盘激活",zoom:"电子放大",zoomStop:"关闭电子放大",close:"关闭",performance:"性能面板",performanceActive:"性能面板激活",face:"人脸识别",faceActive:"人脸识别激活",object:"物品识别",objectActive:"物品识别激活",occlusion:"遮挡物检查",occlusionActive:"遮挡物检查激活",logSave:"保存日志"};var Wh=Object.keys(Hh).reduce(((e,t)=>(e[t]=`\n \n ${Hh[t]?`${Hh[t]}`:""}\n`,e)),{});function $h(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function Jh(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const s=e.length,r=t.length,o=Math.max(s,r),a=2e3,n=Math.ceil(o/a);let l=0,d=0;function h(){let r="",o="";for(let i=0;i\n ${i.title}\n

          \n `);const a=t[d];a&&(o+=`\n
          ${a.title}
          \n `),d+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),o&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",o),l+=1,l0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){const r=s%60==0;let o=!1;i&&(o=$h(e,Oo(i,s))),t.push({title:Uo(s),timestamp:s,dataType:"min",hasRecord:o,isStart:r})}return t}(e);Jh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function Kh(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){let r=60*s,o=r%1800==0,a=!1;i&&(a=$h(e,No(i,r))),t.push({title:Fo(r),timestamp:r,dataType:"second",hasRecord:a,isStart:o});let n=60*s+30;o=n%1800==0,i&&(a=$h(e,No(i,n))),t.push({title:Fo(n),timestamp:n,dataType:"second",hasRecord:a,isStart:o})}return t}(e);Jh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",s=t+":30";t<10&&(i="0"+i,s="0"+s),e.push({title:i,hour:t,min:0,second:0}),e.push({title:s,hour:t,min:30,second:0})}return e}(),t)}function Yh(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<144;s++)for(let r=0;r<60;r++){let o=10*r+600*s,a=o%600==0,n=!1;i&&(n=$h(e,No(i,o))),t.push({title:Fo(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);Jh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let s=1;s<6;s++){let r=s+"0";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0})}}return e}(),t)}function Qh(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<288;s++)for(let r=0;r<60;r++){let o=5*r+300*s,a=o%300==0,n=!1;i&&(n=$h(e,No(i,o))),t.push({title:Fo(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);Jh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let s=1;s<6;s++){let r=s+"0",o=s+"5";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0}),e.push({title:i.replace(":00",":"+o),hour:t,min:10*s+5,second:0})}}return e}(),t)}function Xh(e){const t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),s=Math.floor(e-3600*t-60*i);return(t>0?[t,i,s]:[i,s]).map((e=>e<10?`0${e}`:String(e))).join(":")}function Zh(e,t,i){const s=e.$playbackProgress,{left:r}=s.getBoundingClientRect(),o=Zr((ao()?i.touches[0].clientX:i.pageX)-r,0,s.clientWidth),a=parseInt(o/s.clientWidth*t,10);return{second:a,time:Xh(a),width:o,percentage:Zr(o/s.clientWidth,0,1)}}function ec(e,t){return e.classList.add(t)}function tc(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function ic(e,t,i){return e&&e.style&&xo(t)&&(e.style[t]=i),e}function sc(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function rc(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var oc=(e,t)=>{const{events:{proxy:i}}=e;let s=document.createElement("object"),r=`jb-pro-object-${aa()}`;s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.setAttribute("id",r),s.type="text/html",s.data="about:blank",eo(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,a=e.height;const n=bo((()=>{e.width===o&&e.height===a||(o=e.width,a=e.height,e.emit(rt.resize),y((()=>{b()})))}),500);i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{n()}))})),e.$container.appendChild(s),e.on(rt.destroy,(()=>{try{if(!rc(s)){const t=e.$container.querySelector(`#${r}`);t&&e.$container&&e.$container.removeChild(t)}}catch(e){}h&&(clearInterval(h),h=null),c=null,u=null,p=0,s=null,r=null})),e.on(rt.volumechange,(()=>{!function(e){if(0===e)eo(t.$volumeOn,"display","none"),eo(t.$volumeOff,"display","flex"),eo(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=to(t.$volumePanel,"height")||60,s=to(t.$volumeHandle,"height"),r=i-(i-s)*e-s;eo(t.$volumeHandle,"top",`${r}px`),eo(t.$volumeOn,"display","flex"),eo(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(rt.loading,(i=>{eo(t.$loading,"display",i?"flex":"none"),(ua(e._opt.backgroundLoadingShow)&&ca(i)||ua(i))&&eo(t.$poster,"display","none"),i&&(eo(t.$playBig,"display","none"),eo(t.$tipsMessage,"display","none"),t.extendBtnList.forEach((e=>{e.createdMoment===_r&&(e.$iconWrap&&eo(e.$iconWrap,"display","flex"),e.$activeIconWrap&&eo(e.$activeIconWrap,"display","none"))}))),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&eo(t.$extendDom,"display","block"),i||e.getRenderType()===W&&ua(e._opt.useMSE)&&l()})),e.on(rt.removeLoadingBgImage,(()=>{l()}));const l=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debug&&e.debug.log("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",eo(t.$loadingBg,"display","none"))},d=t=>{$o(t)===e.$container&&(e.fullscreen,m(),e._opt.androidMobileFullscreenRotate&&ao()&&(e.fullscreen?(e.$container.classList.add("jb-pro-fullscreen-android-rotate"),e.setRotate(270)):(e.$container.classList.remove("jb-pro-fullscreen-android-rotate"),e.setRotate(0)),f()))};let h=null,c=null,u=null,p=0;const f=()=>{c=e.rect,c.width=parseInt(c.width,10),c.height=parseInt(c.height,10),p=0,h=setInterval((()=>{const t=kr.isFullscreen;u=e.rect,u.width=parseInt(u.width,10),u.height=parseInt(u.height,10);const i=screen.width,s=screen.height,r=u.width===c.width&&u.height===c.height,o=!t||i-u.width<10&&s-u.height<10;if(r&&o||p>=5)return h&&(clearInterval(h),h=null),void y((()=>{b()}));c=u,p++}),1e3)},m=i=>{if(ua(e.isPlaying()))return;let s=Do(i)?i:e.fullscreen;eo(t.$fullscreenExit,"display",s?"flex":"none"),eo(t.$fullscreen,"display",s?"none":"flex")},g=()=>e._opt.playType===_&&e._opt.playbackConfig.showControl,y=i=>{ao()&&t.$controls&&(e._opt.useWebFullScreen||e._opt.androidMobileFullscreenRotate)&&setTimeout((()=>{if(e.fullscreen){const i=g()?Yt:Kt;let s=e.height/2-e.width+i/2,r=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-s}px) translateY(-${r}px) rotate(-90deg)`,t.$zoomControls){const i=156,s=30,r=e.width/2+i/2-s/2;t.$zoomControls.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,s=20,r=e.width/2+i/2-s/2;t.$recording.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}t.$ptzControl&&(t.$ptzControl.style.transform="rotate(-90deg)")}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)",t.$zoomControls&&(t.$zoomControls.style.transform="translateX(-50%) translateY(0) rotate(0)"),t.$recording&&(t.$recording.style.transform="translateX(-50%) translateY(0) rotate(0)"),t.$ptzControl&&(t.$ptzControl.style.transform="rotate(0)");i&&i()}),10)};try{kr.on("change",d),e.events.destroys.push((()=>{kr.off("change",d)}))}catch(e){}e.on(rt.webFullscreen,(e=>{ao()&&(m(e),y((()=>{b()})))})),e.on(rt.recording,(()=>{e.playing&&(eo(t.$record,"display",e.recording?"none":"flex"),eo(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(eo(t.$recording,"display",e.recording?"flex":"none"),ua(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=Mo(0))))})),e.on(rt.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=Mo(e))})),e.on(rt.zooming,(()=>{e.playing&&(eo(t.$zoom,"display",e.zooming?"none":"flex"),eo(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&eo(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(rt.playing,(e=>{A(e)}));const A=i=>{i||e.isPlayFailedAndPaused&&ua(e._opt.playFailedAndPausedShowPlayBtn)?(eo(t.$play,"display","none"),eo(t.$playBig,"display","none")):(eo(t.$play,"display","flex"),eo(t.$playBig,"display","block")),eo(t.$pause,"display",i?"flex":"none"),eo(t.$screenshot,"display",i?"flex":"none"),eo(t.$record,"display",i?"flex":"none"),eo(t.$qualityMenu,"display",i?"flex":"none"),eo(t.$volume,"display",i?"flex":"none"),eo(t.$ptz,"display",i?"flex":"none"),eo(t.$zoom,"display",i?"flex":"none"),eo(t.$scaleMenu,"display",i?"flex":"none"),eo(t.$faceDetect,"display",i?"flex":"none"),eo(t.$objectDetect,"display",i?"flex":"none"),eo(t.$occlusionDetect,"display",i?"flex":"none"),eo(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&eo(t.$speedMenu,"display",i?"flex":"none"),m(),t.extendBtnList.forEach((e=>{e.createdMoment===Sr&&(e.$iconWrap&&eo(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&eo(e.$activeIconWrap,"display","none"))})),e._opt.showPerformance?eo(t.$performanceActive,"display",i?"flex":"none"):(eo(t.$performance,"display",i?"flex":"none"),eo(t.$performanceActive,"display","none")),eo(t.$poster,"display","none"),eo(t.$ptzActive,"display","none"),eo(t.$recordStop,"display","none"),eo(t.$zoomStop,"display","none"),eo(t.$faceDetectActive,"display","none"),eo(t.$objectDetectActive,"display","none"),i||(t.$speed&&(t.$speed.innerHTML=function(e){if(null==e||""===e)return"0 KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}("")),eo(t.$zoomControls,"display","none"),eo(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")),b(),i&&v()};e.on(rt.playbackPause,(e=>{A(!e)})),e.on(rt.kBps,(i=>{const s=function(e){if(null==e||""===e||0===parseFloat(e)||"NaN"===e)return"0 KB/s";const t=["KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"];let i=0;const s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));let r=s/Math.pow(1024,i);return r=r.toFixed(2),r+(t[i]||t[0])}(i);t.kbpsShow=s,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=s),b())}));const b=()=>{if(g()&&e._opt.playbackConfig.controlType===Q.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;ao()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},v=()=>{if(!g()||e._opt.playbackConfig.controlType!==Q.normal)return;const i=t.$playbackCurrentTime.style.left;let s=parseInt(i,10);const r=t.controlsPlaybackTimeInner.width;s=s-r/2>0?parseInt(s-r/2,10):0,t.$playbackTimeInner.scrollLeft=s};if(g()){const i=()=>{if(g()){let i=0;const s=e.playback&&e.playback.playingTimestamp;if(s){const r=new Date(s),o=r.getHours(),a=r.getMinutes(),n=r.getSeconds();e.playback.is60Min?i=60*o+a:e.playback.is30Min?i=2*(60*o+a)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*o+a)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*o+a)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*o+a)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===Si&&t.$playbackNarrow.classList.add("disabled"),e===Ti&&t.$playbackExpand.classList.add("disabled")};e.on(rt.playbackTime,(s=>{if(e._opt.playbackConfig.controlType===Q.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=mo(s,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===Q.simple){const i=(r=s,o=e.playback.totalDuration,Zr(r/o,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${Xh(s)} / ${Xh(e.playback.totalDuration)}`}var r,o})),e.on(rt.playbackPrecision,((r,o)=>{g()&&e._opt.playbackConfig.controlType===Q.normal&&(t.$playbackTimeScroll.classList.remove(ki.oneHour,ki.halfHour,ki.fiveMin,ki.tenMin),t.$playbackTimeScroll.classList.add(ki[r]),t.rafId&&(window.cancelAnimationFrame(t.rafId),t.rafId=null),t.changePercisitionInterval&&(clearTimeout(t.changePercisitionInterval),t.changePercisitionInterval=null),t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",t.changePercisitionInterval=setTimeout((()=>{switch(t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",r){case Si:qh(o,t);break;case wi:Kh(o,t);break;case Ei:Yh(o,t);break;case Ti:Qh(o,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&s(r),v()}),16))})),e.on(rt.resize,(()=>{b()})),e.on(rt.playbackTimeScroll,(()=>{v()})),b()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(rt.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("jb-pro-quality-menu-item-active"),i===e&&t.classList.add("jb-pro-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let s="";i.forEach((e=>{s+=`\n
          ${e}
          \n `})),s&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".jb-pro-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(rt.viewResizeChange,(e=>{i(e)}));const i=i=>{const s=e._opt.scaleConfig[i];t.$scaleText.innerText=s,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("jb-pro-scale-menu-item-active"),yo(t)===yo(i)&&e.classList.add("jb-pro-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let s="";i.forEach(((e,t)=>{s+=`\n
          ${e}
          \n `})),s&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".jb-pro-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(rt.playbackRateChange,(e=>{i(e)}));const i=i=>{const s=e._opt.playbackConfig.rateConfig.find((e=>yo(e.value)===yo(i)));s&&(t.$speedText.innerText=s.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("jb-pro-speed-menu-item-active"),yo(t)===yo(i)&&e.classList.add("jb-pro-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let s="";i.forEach(((e,t)=>{s+=`\n
          ${e.label}
          \n `})),s&&(t.$speedMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".jb-pro-speed-menu-item")}))})();const s=e.playback?e.playback.playbackRate:1;i(s)}e.on(rt.stats,(function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e._opt.showPerformance){eo(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const s=ro,r=ma(),o=e.getCpuLevel(),a=xo(o)&&-1!==o?`${Ws[o]}`:"",n=e.video&&e.video.videoInfo||{},l=e.audio&&e.audio.audioInfo||{},d=e._times||{},h=e.getRenderType(),c=e.getCanvasRenderType(),u=e.getDecodeType(),p=e.getDemuxType(),f=e.getStreamType(),m=e.getAudioEngineType();let g=e.getRecordingDuration(),y=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),b=e.videoIframeIntervalTs;g=Mo(g),y=vo(y);const v=e.isPlayback()?"录播":"直播";let _=i.isDropping;const S=e._opt.useMSE&&e._opt.mseDecodeAudio,w=e.control?e.control.kbpsShow:"0 KB/s",E=e.getVideoPlaybackQuality(),T=`\n
          \n 版本 ${s}\n
          \n ${e._opt.isMulti?`\n
          \n UUid ${e._opt.debugUuid}\n
          \n `:""}\n ${e.isInMulti()?`\n
          \n 窗口下标 ${e._opt.multiIndex}\n
          \n `:""}\n ${r?`\n
          \n 内存大小限制 ${vo(r.jsHeapSizeLimit)}\n
          \n
          \n 可使用的内存 ${vo(r.totalJSHeapSize)}\n
          \n
          \n 已使用的内存 ${vo(r.usedJSHeapSize)}\n
          \n `:""}\n ${a?`\n
          \n CPU压力情况 ${a}\n
          \n `:""}\n\n ${r&&r.usedJSHeapSize>r.totalJSHeapSize?'\n
          \n 可能内存泄漏 是}\n
          \n ':""}\n
          \n 播放模式 ${v}\n
          \n ${e.isPlayback()?`\n
          \n 播放倍率 ${e.playback.rate}倍\n
          \n
          \n 播放模式 ${e.playback.isUseFpsRender?"固定FPS":"动态FPS"}\n
          \n ${e.playback.isUseFpsRender?`\n
          \n 固定FPS ${e.video.getStreamFps()}\n
          \n `:""}\n `:""}\n
          \n 解封装模式 ${M[p]}\n
          \n
          \n 解码模式 ${u}\n
          \n
          \n 渲染组件 ${h}\n
          \n ${h===W?`\n
          \n 渲染引擎 ${c}\n
          \n `:""}\n
          \n 网络请求组件 ${f}\n
          \n
          \n 视频格式 ${n.encType||"-"}\n
          \n
          \n 视频(宽x高) ${n.width||"-"}x${n.height||"-"}\n
          \n ${e.isPlayer()?`\n
          \n 视频GOP(ms) ${b||"-"}\n
          \n `:""}\n
          \n 音频格式 ${wt[l.encType]||"-"}\n
          \n
          \n 音频引擎 ${m||"-"}\n
          \n
          \n 音频通道 ${l.channels||"-"}\n
          \n
          \n 音频采样率 ${l.sampleRate||"-"}\n
          \n ${e.isPlayer()?`\n
          \n 播放器初始化(ms) ${d.playTimestamp}\n
          \n
          \n 开始请求地址(ms) ${d.streamTimestamp}\n
          \n
          \n 请求响应(ms) ${d.streamResponseTimestamp}\n
          \n
          \n 解封装(ms) ${d.demuxTimestamp}\n
          \n
          \n 解码(ms) ${d.decodeTimestamp}\n
          \n
          \n 页面开始渲染(ms) ${d.videoTimestamp}\n
          \n
          \n 初始化到页面渲染(ms) ${d.allTimestamp}\n
          \n ${e.recording?`\n
          \n 视频录制时间 ${g}\n
          \n
          \n 视频录制大小 ${y}\n
          \n `:""}\n `:""}\n
          \n 音频码率(bit) ${i.abps}\n
          \n
          \n 视频码率(bit) ${i.vbps}\n
          \n
          \n 视频帧率(fps) ${i.fps}\n
          \n
          \n 视频峰值帧率(fps) ${i.maxFps}\n
          \n
          \n 解码帧率(fps) ${i.dfps}\n
          \n
          \n 音频缓冲帧 ${i.audioBuffer}\n
          \n
          \n 音频缓冲时长(ms) ${i.audioBufferDelayTs}\n
          \n ${e.isPlayer()?`\n
          \n 视频待解码帧 ${i.demuxBuffer}\n
          \n `:`\n
          \n 缓存时长(ms) ${i.playbackCacheDataDuration}\n
          \n
          \n 视频待渲染帧 ${i.playbackVideoBuffer}\n
          \n
          \n 视频待解码帧 ${i.demuxBuffer}\n
          \n
          \n 音频待解码帧 ${i.audioDemuxBuffer}\n
          \n `}\n
          \n 待解封装数据(byte) ${i.streamBuffer}\n
          \n ${e._opt.useMSE?`\n
          \n MSE缓冲时长(ms) ${i.mseDelay}\n
          \n
          \n MSE待解码帧 ${i.msePendingBuffer}\n
          \n
          \n MSE缓存时长(s) ${i.mseStore}\n
          \n
          \n MSE解码间隔(ms) ${i.mseDecodeDiffTimes}\n
          \n
          \n MSE解码时间(ms) ${i.mseTs}\n
          \n
          \n MSE播放模式 ${i.mseDecodePlaybackRate>1?"加速":"正常"}\n
          \n `:""}\n ${e._opt.useWCS?`\n
          \n WCS解码间隔(ms) ${i.wcsDecodeDiffTimes}\n
          \n `:""}\n ${e.isOldHls()?`
          \n HLS缓冲时长(ms) ${i.hlsDelay}\n
          \n `:""}\n ${e.isUseHls265()?`
          \n HLS缓冲时长(ms) ${i.hlsDelay}\n
          \n
          \n HLS待解码帧 ${i.hlsDemuxLength}\n
          \n
          \n HLS待解码视频帧 ${i.hlsDemuxVideoLength}\n
          \n
          \n HLS待解码音频帧 ${i.hlsDemuxAudioLength}\n
          \n `:""}\n ${e.isPlayer()&&E?`\n
          \n Video已渲染帧 ${E.renderedVideoFrames}\n
          \n
          \n Video已丢弃帧 ${E.droppedVideoFrames}\n
          \n `:""}\n ${e.isPlayer()?`\n
          \n 网络延迟(ms) ${i.netBuf}\n
          \n
          \n 缓冲时长(ms) ${i.buf}\n
          \n
          \n 最新缓冲时长(ms) ${i.pushLatestDelay}\n
          \n `:""}\n ${e._opt.useMSE||e.isWebrtcH264()||e.isAliyunRtc()?`\n
          \n video显示时间(s) ${i.videoCurrentTime}\n
          \n
          \n video间隔时间(s) ${i.videoCurrentTimeDiff}\n
          \n
          \n videoBuffer缓存时间(ms) ${i.mseVideoBufferDelayTime}\n
          \n `:""}\n
          \n 视频显示时间(ms) ${i.currentPts||i.ts}\n
          \n ${e._opt.hasAudio&&e.isAudioNotMute()&&ua(S)?`\n
          \n 音频显示时间(ms) ${i.audioTs}\n
          \n ${e._opt.hasVideo?`\n
          \n 音视频同步时间戳(ms) ${i.audioSyncVideo}\n
          \n `:""}\n
          \n 音频播放模式 ${A?"加速":"正常"}\n
          \n `:""}\n
          \n 视频解码时间(ms) ${i.dts}\n
          \n ${e.isPlayer()?`\n
          \n 解码前-解码后延迟(ms) ${i.delayTs}\n
          \n
          \n 总延迟(网络+解码)(ms) ${i.totalDelayTs}\n
          \n `:""}\n ${e.isPlayer()&&i.isStreamTsMoreThanLocal?'
          \n 是否超过一倍率推流 是\n
          \n ':""}\n ${e.isPlayer()?`\n
          \n 是否播放流畅 ${i.videoSmooth}\n
          \n `:""}\n ${e.isPlayer()?`\n
          \n 是否在丢帧 ${_}\n
          \n `:""}\n
          \n 网速 ${w}\n
          \n
          \n 播放时长(s) ${Mo(i.pTs)}\n
          \n
          \n `;t.$performancePanel.insertAdjacentHTML("beforeend",T)}else t.$performancePanel.innerHTML="",eo(t.$performancePanel,"display","none")})),e.on(rt.togglePerformancePanel,(e=>{eo(t.$performance,"display",e?"none":"flex"),eo(t.$performanceActive,"display",e?"flex":"none")})),e.on(rt.faceDetectActive,(e=>{eo(t.$faceDetect,"display",e?"none":"flex"),eo(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(rt.objectDetectActive,(e=>{eo(t.$objectDetect,"display",e?"none":"flex"),eo(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(rt.occlusionDetectActive,(e=>{eo(t.$occlusionDetect,"display",e?"none":"flex"),eo(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function ac(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}ac('@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-webkit-keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jb-pro-container video::-webkit-media-controls{display:none!important}.jb-pro-container .jb-pro-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.jb-pro-container .jb-pro-ptz-controls{position:absolute;width:156px;height:156px;visibility:hidden;opacity:0;border-radius:78px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4BAMAAAA9UfJZAAAAMFBMVEUAAABHcEy0tLRZWVmysrKoqKi1tbWvr6+2traBgYG1tbWWlpa1tbW1tbVUVFS1tbVGCHqkAAAAD3RSTlMzAO9U3LSWySp3aZcVRDUDw823AAAJYUlEQVR42u3d32sbVxYH8EPHxgg/lBsa7SBkukmpSbwLI2KbEPpgZ5MQtwmM0wRMmgdhP6RgEuwlSVnYlmGMYaEvMU1KKX4QNq0pocVmm7CYfRBaQguFpbgPKRSC/4V2LGliO+bulWKrkvVrftyZ+WbxeTRG+nDnnnNmRjP3EpMR6tMH18du/0Xj1tGz5+9cf/DUlPKx5PsTkr8s3eZ1cX7ym1zkuI/f1wTFunNt9fP+FIno7/98/tFY+Y8ffBUlLrmkl2Cr96guTv27BMxP5iLCqUvi68+tpqhJKPNXBH3SjACnfimm/7Wmsl3fI/FP75lh457oPH+1Da3M+1T8481QcT0T7UetevR618LDPdH4hTlyHLGH3LoZEk6d4PlvyVW8pfNeMwzcDwa/kCKXoTzk9tfB455o1mXyEIOa+0PrFvcFt+fIU8QM/k6guOQifzNFHkN5l/flgsOJVHibfMR9l2nhBqem+VXyFZ/xghkMTp3il8lnDPKiGQROhs2lzjEuKcVW1uWk4ybk2Eq63pxk3CK/RZLiJO+Ti/vZXw3ZX1E+kon7jv+JJMY/+Q15uIRWIKmRthZk4VTDTsnFKYZtSsItWiskObq1Pjm4f8gqIrUF5W8ycAl+nAKIT/iCf1zSKFAgkW4/7drifrLmgsHF2k87alvhblFAcbJttWuDU/VtCiyyedMXbjGfCg6n6H1+cHE+TQFGFx/3jksa2xRoZO2cZ9xsUJn6e8aOeMX1aGco4Biw1jzilm0KPNJb3nBxvhI8rrtVTlCLK5ptCiEyBS+474POhr2c+NA9Lqm/QaHEiXzONW42yN5Q2ydG3OLU4MvI7+XEdImbCWvgSkN3zB1O1YYptOhoNnRNcDM2hRjGMTc4VZsOE9fVZOioyYyjUKPJrKPGNW44XFxX41rXEPc4vFTdS9iLTnFJ4wyFHAO2U1zcSoWNU7RLDnFTb1DocaLoDJfgc+HjYo3uTjTArW9TBJHdcYJTtdEocJ0NCnE97nGBIon0RQc4YzgaXIfdHhdBHdmrJuNtceubFFFkdtrhVG0lKlx3XUrsxz22KbIwLrbBTQ1Hhxsotsb18FR0OIWvtcT9Z5sijOyfW+KM6ShxXXYrXMJKRYlTtIUWuLubFGlknrXAGaPR4jrt5riERRFH7XGtwc1sRo3LHGuKi/qo7j+uhJOr9flKMBW4QR2uxk1NR4/rKjbGRdpXG/bXKtxrAEdVHNfTDXHLf0TAvbLVCJfU5hBwMSvXABfPE0To4w1wP25i4DLPG+CmRjFwncV6nIpQSF4UE7MOd7hAIJG+VIe7u4GCG3pWh0uPouA6C/txMFOuetIR3JSrmnQEN+WqJh2BVbmaSreLS+JMudKky9Xg4jYBRXq8BndoEwmXOVKDWx5GwnVs1eD0OSRcLF+N67EIKrS1Klx8GwuXHa/C/biBhRt6XoVbnsbCdW1V4bDyoZIRZZwKlg8iI8wKLl5Aw73oEWXcoQ003NCRCm59GA3XsVPBTa2g4bqLFZyWQsMp1h6uJ09woa/t4tCaV6WBEWSy7qYrQSbrbroS2MVNzUUOAXbWSnel0sU+AUbpsl/gEjYizlgo4w5vI+Kyl8o4xEryopYI3N1hRFzHszJueRQR17lVxqXnEHGxQhmHd06yd15CgBcQlcsIYokCJi69IHDxbUycOGki9toGJm7otMC9/ism7tXfBA6zBperMIHW4HIVJsDrwsrVIYE2CNEibIHDbBDlFkFJ0AYhWkSOemxUnLFGqN2r1L8ItXuV+hfFN1FxmXH6wwYqbuivdAgXd4RQ+36p8xNq3y91flqfRsV17dD6KCquc4eWcXFbtLyCiusu0hQ0bg4VFytSGhdXICOFilNs0nFx+QOcZ5xGsGEd4DzjOC6OH+A847QD3P9jtuJ2CGjcQeP3gYM+2YQ+TYe+wMG+NETGQd+OgL6RA30LDPrm4eu/ouJe/Q37hjX0rX7oH0mgf16C/mEO+idN6B+DoX9Gx34AAfrRDeiHXqAfF0Lt/OUHrVAfUcucRn+4D/qxSOgHSqEfxcV+iBn68W/EV3AqD85Dv3IA/bIG9GsumC8IaSb+q1XYL6VBv84H/SIk9Cuk0C/fQr+2jP3CN/Sr8tCLDEAvzwC9sAX0kiDYi6lAL0MDvYAP9NJH0ItGYS+3Bb1QGVaP2LfEG/TieNDLCmIvyAi9lCX0IqDQy6diLzwLvWQv9GLH0MtER76rRqWxPgdemtwYf9kWdYdeDh97IwHoLRigN6/A3vYDesMU6K1msDfpgd7eiOmjSEf1ZdpSC3ozMuht3LA3wIPeOjDSTRdfKb7M21VCb/QJvUUq9uay0NvyYm9oHFFKdDvaChp6E23s7cehN25nh5G3vE8aZ8LGDdjMIY49zoc9dPpFx7ikHnIh7sjnHOPYTMj36oxjzDlO1UI9Xe9oUICb49iMDTBwzXCqFuKsG2gycM1wYtaFlrCK3mTgmuJU7UzkA9cUx2bDGjpFH2FucUk9pA57onGNa4lj31uhnJzEtA+ZexxLh3KpkykwL7g4D+GUuJuPe8Kx5RCuJtJbzBuuJ/hyMmCtecSx2aBzIqaNMK+4pBHwtU7WznnGiZwI9Oykq1U2tMWxxSD7hKL3MT84VQ/wwGbzpi8c+47fCsp2kt9g/nDsp6AyNqb1Mb+4pBFQKU7bpm8cS/DjQdg+aXT/wTWOzfLL8m2DfITJwLFFS/oZQHf7CecQpxq25GqnGO0nnEMcS2iSq13WWmCycKLaHZebDDeYPBz7mb8tz3aff8Rk4tiivJQd5H1MLo5NyNIN8t6cbJw6ZV2WYys6tTnHCZ2MsRM2k8nHSdG5srnBMTXNr/qzfcYLLmyucEyd8FdR7vNeNzZ3OJZc5G967mTKu7wvx4LDMfYFtz2efMYM/o7LL3OLY080byVlULNusqBx7AeDX3B9aJWH3P6aBY8rpUX+W3e2t3SXqeAZVzq0/JyLmRe7wt0fUs849t8Jzv/u8Ngq/+K8d42FhxODp/P8VQc85VPxjzc9folXHFO/1Lh1rc3BjT0S//SeycLGCd6Sxvm51abDp8xf4dyaNL1/gw+caBhLuvj6O6v36mWn5scEPe+H5hMn4uP3hUEAr63e6y+PYX//qflHY+U/fvCVzw/3ixPD98vSbV4X5ye/yfn+aP+4MvDpg+tjZ4+K8bKOnr1z/cFTU8rH/g92biFxn2S73AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;transition:visibility .3s,opacity .3s;right:43px;bottom:135px}.jb-pro-container .jb-pro-ptz-controls.show-vertical{right:43px}.jb-pro-container .jb-pro-ptz-controls.show-vertical .jb-pro-ptz-btns{left:0;top:156px}.jb-pro-container .jb-pro-ptz-controls.show-level{right:163px}.jb-pro-container .jb-pro-ptz-controls.show-level .jb-pro-ptz-btns{min-height:156px;left:144px;top:0;display:flex;flex-direction:column;justify-content:center}.jb-pro-container .jb-pro-ptz-controls.jb-pro-ptz-controls-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-bg-active{visibility:hidden;opacity:0;width:156px;height:156px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4CAMAAAD4oR9YAAAAM1BMVEX///////////////////////////9HcEz///////////////////////////////////85yRS0AAAAEXRSTlO5DCgVgZBxAK2fQDRkBR5XTPLKM/gAABnnSURBVHja7F0Jkqs6DGQPO9z/tD8Jq6WWbCCvIjKfzAGmulrW3ooedr6ui+M4TdP++SXPr1l/SdL3aRrHhv7ZyA5qb9xe0L3Am+DrkzeCL/BeX908MezTuPsfOArdgl3KsZuhq99fk/Tx3waum+ByAHua5QbYilkzY1aP728YhrH5InrfBa57OLAtVjpRbYaumex04dq4APeC7vnVSfo/45bXLe33jGscMx3f0A1vyg3t69e2dRL/NeA6wrgdcCvjyPM2U25mXDt9xVD3f/qN0yi3Mm6P20S54vlXtGPS/R3GPSbYOsC4ZAvmJtiaGiL3Zlzx/Ht+Y/KXTJXbqmaqe9za1VYn3N7YpX/OVGev2qduOLIiB7xqOzGuWCiXFVmWtU3368A5lkqeOJI21I5XXaORxVRnxmUTdNnY/4U3riNvHMJts9XRtdXVUttipdzrK/4x7UyY6sK4Gbo+nU21T1zKcd9AGJetlMvyLKvj3zXVfeqQElMljINx3MK4xVQ3xj2Ry7N/6CiMOIfYyVUXWxUyBx7HuZRbcHt9bf/Lb9zsHlzKzabauJaK47iVcC7jJujS33/joKkmxDnM4QiJ4xDjZuT+DXQW3jgxV012qcPuiePhCGfchlv1/P0D6Czmqmuq2gPGkbIS8Q4ZsNU3dGP3Y2+cW1RyKpkrbAnwqhi3iXHFHrU3bFVV5c3vBsCsOALjkXErAW85F3rjFvBm5Kos+TngCOXYG7fA1ojFER7GPUHbmer0tfGPANeROM6pjvDMQSkrsWQ1d564Fbr61964TvSqDa6O0ELmAtvGuc2rrpQrn/aa/qCpYq+6mSpOVhnjWBy38u2JXFl9yL8acg6CV3Ur5yxVZfW4AsRxG+XKssz6n3njVMYR4Eg8sj1yi3tgtroxrpyhG38gc+h8PYddPQ551dVQW5jju2/cG7kXdB946Uy9cbDnQOpxuCCHcq5dHDcht8D2/K67VxPNGtLJd7qDTcgb1zLGbXEcY9z0Fd39GReTzIH1B/2lcxrGTYxjXnXyqxNyef8zpipVlfDsyCCmDkuumhGvWq6W+vyisqxvDJwwOxJQO6fNmjaQcRt0ZdR2dwWOFZViuculNWtgBZjk+DNq1cq45y+Lf5NxE25B3oEyLueFJWqtT+Ciqr8r48jsCAyAG+2Na53MAdQxX16VhHEL4Z7Ilc2dGad28pskaULiEdDlyijjdqa6gBeNtwSu63AnP3V6NUnAG9cu1RHOuL2hVi5qr6+9Za4qV0dCGcfCEfDIufWRFbsZvKy7KeNgW7XHvRqxWfOGLhO6XCrjoiiPb/rGdZ75uGRfj9u3B1sWAEtdLuxVF/Cq9HaMe4A4TptkZYwLqI44rmGDbUe5E8hZcg54zquRbHXu5NN6HKuO7N84YqwbdGV/Q8YF5arUN7CJTNLkgplD5T5xG+OOI2ehAhxv00ocOlpWwhHwljns5uNg6bxCb9wbueSupip6VTnj2jGudSvnOeqrVo6h7vl2nHM2K8AkV1WyfDYDvHUcWF+1VBl3EDlLKdc2dQ6aNbhXw2eAt14Nf+MqFse5rDuS8tucHUmhqaJppYF6B8440h7E8cjhqMTiLtcaAL+ga9jWZb35hpbHceyNI9WRSmHcE7n4jqbqTp2D2nnzgm154mB1hJQy1cwBIpd3twCOrjnEoDsoTZ2jepybb2VKrhpx3zB92Z29Khpl1ZN8MHWzJV1CdYQHJEeqTMbqcfEMW+obLBwES83w7AgvY0YlMNT3N96GcXEHGQdxG2t3CQ5kDkoFeO8esHd4fc193jinAtxvXhUN3Ywz5VAFGM3cENfgVM4x5YICYRumqu5yIVMdJuhaLXMAFWBKOIhbWFBiO44Dg4Usxx/cCrDyxqESMIYuu4lX1fYcGnVaaVmtKXZxHOzW5Bvfqtk3iLAFuVaLew4HluDUzIH1VYMZF+AgLMZxcAYY1uNYBTgrwPDIaqxOQ1p540IchBFTJW9c2ofNAO99Q+sYaugbJ35Vd4sKsPbGqVM33KsWmdpXLeXqufsVNwhH8FyhOh8n74foKb5WVDr0zFky1Rgt+iaJZyJTWErKMynpqsqgVy4q0xv0VTvZq0pJPq5jzn41zzzVET0aCYjmTO05OLaaBEwWqhvSenUkKtVw5P0N96mOpNr2YCPuh4AJCGEAoioDver7628Sx8WAcU2i1eM259AWhZBzuQEJieN07JR6sCHgXoSLnepI7yo9NqgCLE5A6K4hjHGKsVqK49JYEGyBg4XIq2b7FREUx5Xu2LkXOtmz2pJBW5sOqdjJF3sOjHG5fz7OT7n8DtURwjjPtBKtx7VLOa6Q4zh5Wkn8xhvU4xbG9al/s2bAbxwYkJO7XCGME43VIuMc56Dnqi7hpPE4cVopBLnibozTp5X4DHAQ49iwfsCX3IhxYFoJB8C0y7Xr1iwBSZXDulIUjF11G6+qr5aPALlCmTrfyWfQzCEK49xoPMnnjFMaq3QlX9tzQPuq0QFbLeNbMU6cHRn3Sb60HwJ6NXAhKQi61nzpPAbtQaY8jUUgQnRHSodxZSjjoig161W7HePIRGZDJzJHQXiEzE4DpRtSjotCHzkUkhj2qqJi4V54T1S6cWwVp/nhjAP1JQuDhbs4TtFW0spKTgW4UHJVFv4GQpcZA64jkt1xDNS8lDEv9Y3z5KpRGY4biIINMC7e2lxKNFJDqUfQquGZA2yrHoINUM7G6ZX1iVM2RKDUI08dssVUfduDRyI5QDkbFWCnscrWVWV1/RZ2uaRc9UyKL1LO0r7q1qwBm761WsmEUjdge9ApAB9iHHWslq4kMalHTbHQieO0zXKljHmIc4XdOE695yCpsg7eOE7t5B/4Uqv1uDSGKhDYq0r6yQWYj5NnRw5BNxjOHJAKRJB+nJqr4jcuOki4qOzs5qrgulSDJzJHUcyrCNMdOc44ty5nel815KDZ4HTypeoILAEfZJxbCjYkSpVKgZx/IpOfXgnarDkKXWIrHAm7kiTqxw1er+oQzg2Bj32FTcYJ2kpCIx9PK2XMq1ZCz+EM46LYZK4qaCsdmo+TqiOV5FWPITdYLZ2jOqYa/6LN8kJSZT1dxkSTJEYKmZ2/OuI5aIYYh+UzKn3TN9A9mLjL1cl6LexKkqof575xVJWVx3HRefdgUbGQNGs2U2Ul4HYQ60o+HeBzjCtt9VXVqXMpc3DEzh2NzEJSnr7OuG35wUTpPGjqXN3lQgdE0AWRA2sOHls1eO2yh/uqWM1LbUgvQzeatOhR5NZM39QIBNyQbviBVajYItbOYa56knCbrRrUj0vxTn5QVQlOnUtdrjKKztuqpbMEJ27WtCG3BzX9uMPfYqsmlW7SPnRfFeSqwTrAp9641VZtXi1PlX1VN44THzlvPe4k45aZLys9h+7cvuqsAqEpBAm6I9HJN24pZ9oIRzp5XzVUsVCZOnd0Ry4zbu52GdMBDn7j+NVyYXaEneW6+sbNrQcjtwdJCTh4WmlrSLcF3axRZ4AvMC6zxjj9annty1X9M8BoefBMQGKudB5UjnMnMltQV1JuD5JK5jnGTUU52zeke+4cfMJ7ygxwSZuDJ6EbzDEuZF+VNLnczCETlPdkdf3Tj5yhAHhNVdV9VXgJGV9JyqWjjRdS1fWRs6vmRctK1KuiLD/b22q2KyvlWJT1HOPeo3IWqyNwlwtrxJNrlwW69ZNr0qKnoBsfNrWVcH+w9gzIFXxDeisr5cxSrzCusFVWkpVukH7coF/0zQRt0a2QGZ1HLrfAuIfDOL/uiLOTz9UMMiTmtXMOVXmxW/P+OqM6wPBKEmLcbuiGMw4lq9cmIPbewa5iIb3LdYxxKHMouYDcSeRqcxd9+dS5VFWCGZd3e9DtR5+21dbYRd/1EAaagUC6IzDLV7YHj4pSKbmDkZRLnmRNcHeQ3azZdvLJ9qCUOVyhXGVmQUSpx9GWAzNW6Y0DmYMzrbTeHjzxxTeI41zktugXtQezAsRxon7caUt9VZZMMQ7pAPMnjnTyB5lxJHPgU+enGTeajONUHWB46wfW41jmAE79nHerNiYyFeXpBu/keycyM8983CWv+sxWLe2rsgpwH7qRxPuqb7pl6IKe61RPYpcbvefQy3e58LSSbwY4B071CuNKk31VtswlTyuJ+6oZuss1h3HVCTEDluZb7Ks6prqrjijlOLTLxRlXUhng85RLo+77por7qp5c1fUN8I1Tbw9eqce9ArkvA6eqxOOr5UQGgrdVC1l5GszHnYSuNsC4OKgeF6au73S5Mt983IU3bvwqcN3jAe9y9VgkvvHPskp7DuI9h7PfYOGNw3EcH7rx91XRPbNPT2TOEbCNNw7uJOGhG+naD8+5PG/cJcI9gYu/CxuYVuqd+6reHbgBWqrvavlV5LLvAqfdc6AFYElcyW1IS0eScqg7ch65/MvABXW5ElWvZXDiOL2Tz3VHzn7Vt4F7iNuDobMjwp7DUh3hfKs+EQCbAs43O9KgG9KDrK6vMe5qIPdd4NS7XFLi4NxzADf0eEPa8aqX1lV35REjb5zac1geuYVwtfjGbTmXsJH0qf7g14Hz9xzE9iD0qigewTv5F71qaeKNwz0HXI+jb5zLODABQWaAP+MbXA2SbxdH9KlzMjw9jvAUMr72o6363hQ4VyQ+lU+vkH70ALVFM2cnP8f1uOojhLPgVZnWI7y9Enjtcr+TT/qDJdj0LW9tqlgFQtUdYQfNQupxnHE3dw5aripmDgOcOt90gHOpOvKRF85EOCJKPSrVEa/y9D9QLDQEXKco3UiqVPtdrjZIIxNuSEeX+qomc9U+3S/WUIUgvD2o7nJ9UnfECnAPWQUiSOu8HYKERz6oO2IDuE7THcHOATIO9xzQhnT1IcblVhjnagRp8QjZVw1gHOFb9ZnSuY1OvutVe3/86w4Be7XOc6GvetsuF47jAq5dElFWn9a5oJF5YUDOBHCdds9BzRw2xrWy1jl946qrC6tfb0i7uWoKZ0eaoJs1e8LR+6pQPy66GMiNhqaV4ljbc/DqjrTC1fL8n/RVa0ummiI1r0a/yyUPT2dcXBR08s9Cl9gVpdKvEvgO00LB7qta585g4eP7jIuDxEXdaSV87TID91WdiUx67uf011lkHBTea/R6HN1XhTdr0AmROw9Pd1h5euurJvxKEh2e9uyrfnYn38q4vnp7cLchXXuVbtxdLoFx1UVtpWnv0uLNGudquTCROXj2HHI6riRK791zJakjIxDKRGatMI5fu8z81y4vzU5bE2yJmYLyFsc1jaythPcc+CW4j2grGVi71GTQgnLV1tFrQduDUj3uWvwb27p2Sefjel/PAXXy+QywoFh4IZKrTF67lC6I1H6NTHEGOBeWB88LoVm6dimoGaxO1a+RiafOpX3V8r7yGayOuZfPgGsOQhy3V4Fgew7wSlJ5hXG1aY1Msj2IK8B0BAK8cYIIxBXG9bZuD6ZUlCqk5zC0x/Yczh9YtSVK9ZA3pAN6Dqq6vnAo9ANx3Ndl0LazXPK0kq/n4J06F+45XMkc7Ajv0Sy/VzZrpAsiLUnyhZ38fQX4vOqIOXX9o9cutRlgfZfrSuZgTVxU9KrKPQdQOgd3CZB7OO9VzcnZ4pYDHddnkoVSrprlAXe5ynN5gxF1/Vi7ocenp7XdcueJyxSt8wtjhRYku2EcB3Hb1LxqHMb9192VJTmuw7DxSsfxdv/Tvn7TSceiAEpylqYnH/lWsWBRXABMVLHQ8B4cjvWUfN1xTYU6wJEqqy7y1ynBEIGt8ycqBxe2BGh3JEt3hO3HtXjm0KFJ/kHIOTDCmEUM2RFMH9ygn8N+WoNmDpcLZEgfFuz2pQPMKof7eHBME0RsxAVX3OFS1Y/Zj77jtGQ34nLRWjVeHtFF/pOIc2EvRdf1m/2UKy11s+8qtXzmAKQMhiNNTDefqiWtFIlkQqEbNJFuO7g6oqr84p8PC710IxN0R0bK5VIFV2svTx9CnCPTxspm1iiGiBKeptmh26tAYOXpp+y3HSGuqUwnONzIZN7bRAdYp4bDZpee5qq5OsAKcdTQISjykUjmM/aq3lRZK3rH6a5SOMmPZw5BQ47yQ05rvm3NVVXhkLCs0YqF2EN60A4iw8Ev1dtcNXvmsGK+qukh/QIRtEHE06cK1fXtKRfLqoTLRadcw8Ev1ZkTXBXzVdkdt5k1PvtQo/24I604520lvq0EFAvxXLXlytPHpjUXcRU4tTuiJvkx4EbugxHojrRJTn4p5jY3gcspucLQKW0lVnNhFQhF5ir+VhsvgZsN/Tji9cOcVybD6wcOuQ5MuXpxirhyt0tTea9NTPKLEVf7CdzMaZdZbpd0Pw6LZ1wiN7PhWGpwk1Uz/BzQDsSEnOB6vXT+cLscntoB3sQZ4qiaV/qOixjSJYgrBNwwu0OcSYKzzbe1ExwYrF6InFdpVp3EG+IIJSlsnWv9uEQ/DrMH497IcOgt4hNxC9vXv2b5ElhU32fuuF78IQ4r3XyreV3NST5V86K16uG6YRF3iIt1gJscxRbgE9oG88E2oa5fdMu14h9x5pZX2I9DuaGn+nGXmOdw6PHrvh+X9OWagGdNbzCkI5uk7NhpwHliSDf2sIY4wQHl6ZysWvoaqcUz4hLyGUrsfF85QIZIvASsh1zZsYsA54qTDyuHSAViM7wH+x6NarDWeRHiFpHT3HE1g5zldsk6wEDOdiiwJejFJeKYvaqtWEhFqShfFSkWHikaPHZH0qJUxEOvnK9a4CE9ibvACVQsbMLKwWTWGP6qMeKOAW6o3AWOXHHZ/TiD55BGXHZW3UScfqqPVdbGMjSLa1VVcRG+KmRI53fOOxGnn2piedpgSK9GB5h0MssBVzsM3AwdfXPuuFh3ZGLaonBUk3/J9eIfcXDmcC1RLEwotgTvuDzIDY3LwM1z0kMam/1gjcyWjQePq7VscjrE2YuFxNHMLFWB1vlwKDO4rlX1tj7ROidZNc1XzZJPZh/q73O5BPBVo90R5PaTyKqYPVhcdK3iGXHxJB8RRLT14KZYl1FW7RJa5zkf6uw2cJJ8x5kbmcDsx+yO6NglQreInO+Oy9oBNry348qh2M5hFTkH4sysihA3WXNVvAIciQSVtH2d745kdZUYQ9pa1o8QNxzLqO4m+eFcNRk6BLmWiHZ3gK+a+FZH8Y444q9qbuuTmcMLlad7Ee+Iq9gOcNJ7cFqZDjCXOs98AV9m8Y84OFitI7fLK0VcwHPoqZ+Dks+wPtRhEf+IS4kZ1ElqOZrW3CBH+ar2O24U34GT8rmqntWsif24jjFrrCtuEjkD4qC2kpqrjrQ9cpDLZXlIt+I+cEl/VernsB7Zj9PTQZIYKjkX4iCz5go7mYpZY2qdI77qH+M9MtRyGsQZXC5rrzBWnt77OQCNzKB2YIi7ipwDcZXJ5YJS54p32UM/h84WAmZZdZMTBE435LLt3sm2foajbyqtTnKCwCkVCFMlHnKSpkhev4UdYHDHke5IK2cIXKACYbuWm7UqVp7uzDsOI66bzxE4ogKBZg5ZtWqCIR2+4wDiLtl2s84m+VW8ra+YNXZ3BHaA4VwVvn8vjcipEJezr8/UDOgOMDeYYv24ZGXvtzuS0Y9jO8AT3QHmnPzhz9G4OZs5QKIvFgJW40FYqraAWRP4OQSRK4qbM55Dxpeqd4B/uiNTmj1oVg5ZhZbvKZdi1mBHMyIuanPydXdk97GW4U28GZqFSjdL8h2nkgN+x7E7bo+40rj50AHOkTq3NYIQ4tpolRXKi36/Q0rj5m2uWkV81ZS6/hRvK/XRyIHRHIby95v/d1y9WEk1lmW1uVx4XekWua4SOSHiKuZnZu3HYXV9yh6EPIc74NojBuQe9uMqUz+ujp4jI+2dt6w7Qp3ghuw+krNaNctBrwYqaNB7MHgAdyk/h5K+pdfx4GzusoafKujHRR3gDu/HhfpxfxF3lTMGbrZtCdB+XIi4KDegmQPagbh1zsufIY4QV2ltJcVXDTn5EeKKuFyqcmgrOWng9g05pZG5RFvnd8SNtDuiPKRbw9H3/ztumkVOjrg5ra2kEIe7IxBx4e7IA3DjMwf3eMfhh9xovH/73dZ5n9cBHrpFzhs4hbhgB5iqeaH5IGDWtCazZuhnOXHg5jmdVX9mDte0u9TjAQz9HB6Iu4zPHt2v7kgNe+cb3FbqeVa9qBfw39C1jZw9cMBDmr7jwqHDylzL+5Sfw2V9wcn9Iy5qZFoTaZRV9b7+k1nB55Sr2gEOaysFiFO+tCSrhqsj2yzyjyAu3lYCHnojyap85gAdfV9wu3l+x2V0R36INSvWAUbvuMvzydRprWogTmfVO+AI4uB+XF/JvxK4UHekMZRucHdkQhsQvdqPuwGurV95cl+LhUR3hPfjTN5lkFa78bUH97StdEdcOJC277h0bvgO24ty6RkQV5OtG5Pn0GIy19S8/OCeKofojlu47gjVT+4/EjZvdu9grnq1uVxAB1il1beEzRtBJJQICv1VMeKU93a0OzItbzq5k90RgLhl+XGCqy3ERdYrO0fftXnb2T3VqjfE5aigMbf3YANirN54co93XMjJT20rhWteP5Hrr/NbT+7xjoPMctOzJkqq6/Luk3u84+7vuGUBSzeBweoE3yPTm8Hm444LiA5gyMXuuJU56G3NR07uAXHVwwo5fgBTf1Xo2rjVnzq7r6yK1LwSr5HHHTdt9fy5k5/R7XLcJdX7FbeOy2dP7trPweQ57FRZx7r6+Mndq3ldEzrAY938ysl9uiQ1cJNVa2SO16X6tZP/dj8uDqJW2VfM/O/ftf7FmPkK3OMZ3MAu8G3T6ytiTTU7OK8jxMlfuN1idg/X91/9VUZ81WOVo8P+Bw+0DogP6NDPAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-up{transform:rotate(-90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left{transform:rotate(180deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-down{transform:rotate(90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-up{transform:rotate(-135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-up{transform:rotate(-45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-down{transform:rotate(135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-down{transform:rotate(45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left{left:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-up{top:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right{left:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-down{top:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-up{top:39px;left:39px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-down{left:39px;top:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-up{top:39px;left:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-down{top:67px;left:67px}.jb-pro-container .jb-pro-ptz-icon{position:relative}.jb-pro-container .jb-pro-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.jb-pro-container .jb-pro-ptz-btns .jb-pro-ptz-btn{display:flex;justify-content:space-between}.jb-pro-container .jb-pro-ptz-expand .jb-pro-ptz-expand-icon{display:inline-block;width:28px;height:28px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAANlBMVEVfX19fX19fX19fX19fX19fX19fX19HcExfX19fX19fX1/////Pz8+oqKjCwsKhoaHn5+eWlpaOqTaDAAAAC3RSTlP/3CaKxwJiAELtp4ri/s4AAACuSURBVCjPfZPREoUgCERXBdPRyv7/Z6/Z1aQp9oWJMyYLiKUrOIpAJBdGCldgbzBkPM/QEoTI3jBEPBRDhwEvChe08Q1Ge0ImvIq4Qj8ljrLdH77CyQPWlCdHC0Q1e9rmmuC+oQN9Q4LwcQg40L6eyqm0uEpXSUqe3fKpkkqL+Y/o+07SrahNEO0T0LBsvOitf4xsLqiNTB32wtqaVKosGLO2mhUrS93+PZ4D99wPqzMJVcbEyA8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-expand:hover .jb-pro-ptz-expand-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////i4uLZ2dnIyMjExMS8vLy+iXNeAAAACnRSTlMAYomLxwEm9+NCLo6DKwAAALNJREFUKM99k9kWgyAMRIMmEMLm/39tKaVKFJkXl3sYJ4sAXeQ3ZOcYd0+gRYblFBuFLYoS2ot5lpvYn8zJQ65TO2GVNmdCmQq/qczw4gjpejD14BgmhziEIvCjVRlPioftHW6A7xBB1a8CCUMvsuSqEkPM7eZX6h8GrQ67bYpNIbRL6rb4/k2EfVXKsgmqfQrW9qnGq96a28jGQG1ky2HXpVysyYyeDIhWq7le6ua9P36HD6+2GRi8iBZBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-narrow .jb-pro-ptz-narrow-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/9/f2/v7/y8vLUObqxAAAADXRSTlMA3IrE6SZi9wI+y0gNXAn3CgAAAI5JREFUKM+Fk1kOwyAMBQ04bJHT3P+0JVUMNMWv8zvSk1cipfjAKXHwhR7k6KTjYp7dVuWLug1XWB5wz96T/JD2O3Phmv0k5ypL6lVVFIPYpLOka5WKSSFvS0/BloHYlkza5HkMzrvVLo8ZlRr7mtFYWBBsBQ4BjC//GTxcGVw2PpOVHQ6fJj7qS4936OoN2K4e5yE6N1UAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-narrow:hover .jb-pro-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-far .jb-pro-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAASFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+kpKRzc3ODg4PFxcW1tbXW1tbk5OT29vaVlZVmZmZ8vCMFAAAADHRSTlMAxGJ5Mssm9+NCiYtiH91SAAABAklEQVQoz41T7Q6DIAyEJQooUL55/zddhVazzZjdHyqXXo8DhWCYTWqltNyN+MZLuxP69UGti/vAsl6c0e4L+tQ2yv1AEbvecMhO5cXdYhk+6aO3WGrNAMwentlMz/ZAKIlNoRsqY2wtFWu9t8wasc0iYVN0LkQfrG1zbxNyrIBcntOQrH1Ukkb60QcxYF1xMA2dh8zWj6ZDsLCsIrL4Ds5Hm9FMbCEROWUB0COaLXEIZJKV7CKybGO7UuxjxY2C/TkMbxboKBQCxgMN6MCJQ6Ch/QjOZg/B13LGx8FDTe3IFvl+Bc9XBi3UWoex68qeL/vxmdyxyvz3NJ8f9dDef36HN7koIK2LjxB0AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-aperture-far:hover .jb-pro-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v6cnJzr6+u/v7+xsbGlpaXNzc3b29vqh7uRAAAAC3RSTlMAyRjKA59J/3PzPhe1wxwAAAD2SURBVCjPjZPrssMgCIR1mkYtisD7P+zBCyZpM5mzv5hs0M8VnZvaok9BlXzc3FXbO5z0vtifFC5Kn8OL4UfxwVvuHm61d5Z0b6ZGZZwZpQAUosWsjVZntVS1sH3ZFo1IRVYfGXgx+VGwNkkIVbhq9/jm3cAhaNv1Uk3IA8mNn7D3kbQeWK3TLH2jCthrDFcTMwUWaKiClc9mJtJWhS3SF5BpJqMQW1b3xwnkDahMoHYomkeJRgSENA/MFsKML7fgoCBVbGvM+Cx4JcKWbWHKK/h1ZYS1Jy/nK3u8bB3KhzG5deMxtfv3aO7/Heq+9ms8h9fxHP4AHzAWU9zlWNgAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-near .jb-pro-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+FhYWbm5vz8/Nzc3OwsLDi4uLDw8PW1tZmZmYgm6a+AAAAC3RSTlMAYmOLx4kn9+NCIVJiPGAAAAD+SURBVCjPjVPttoMgDMOJAqOU8uH7v+qKFN2c597lF5LTJg1VqQG3aGuM1bNTV0wWDtjpg3pq+IB+npyzcIE9ejsDXzDCrjccs+tOariF3n2OLyw5xko0vh9MDjNb9Q0hp2GK3cixlIApe4/JD9appR8SFxWAUFLg6n63iB1irnY1Jv0mlrok7nUdcZRa1YeshxBA9iijChlxI6iZEaBgSEL2tkRcymPGGJpqlbZ6uDg0WR/F0DwuMpxDkYwiIXA8hO2uMJdGCCK6teB8RQoY8xGfevQjxYQt25qoRwDT25MRBjZ7GtP/P/afa3LHmrflXa+ruf661Hvv+et3eAF6Fh3v+sSUGgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-aperture-near:hover .jb-pro-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZn///+qqqq9vb3z8/PMzMzo6Oja2tpXGg+mAAAACnRSTlP/JomLxwJiAONCr+rW2wAAAOtJREFUKM99U9sWhCAInEpLBS///7WLEWy7p9O8qEzCMBIOQ15DAlLYsoegS9yFMKQ93skl4Adh+ZI54Q8pG5nxgKzkgkcsk4zhmQxRyN1OPHqtncjOu5AuppcJ6s1EHTA1YzC3Wgq3YmzGqpsmlwZAo7F8oLEVKoeE6+TbSxK0JJ/3FLOwFnUxzXuoltYDDMLoAlmYXLAWIrkqbdZKs+q4KBfkNV1uwGaBim9TdLWS3R7iGRvCNTPB7JvGlc5EXK8cKbrxooint73RzXh7Msl6Oj/uT/b62O9j8sj6gMXX0Xwf6jP3Zr9DtNAHTYMMXrXSK0YAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-focus-far .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAPFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////92dnbs7OyFhYWjo6Pe3t7Ly8uxsbG8vLyG+Q0EAAAAC3RSTlMAiWJjx9wm/0Lti7mfpe0AAADaSURBVCjPfVMJDoQgDERFC/bg8P9/XUSO6CqTqA0TptNDpSrMpC2A1btRT8wrNKzzjdo03KC3zhkLD9imbeAFhd3sG2kvZQ2v0NknfGBJZKkhBM9MxOxDKBV1N4iHi0TRHYjN01Qi7/kK2PtyNDU7DAEJgDAAN0u1jsQEFEkcVVmrqjeXrkWRmC67eqbgG7bJyvkQSQkvUvec7szpek6t9ubWJSK/uJVSm+APzHKCh++DWWuH4plQKNYOpfappcjy2VvJn9744cjGwx6uyXjBxqs5Xuqsvf/9Dj8rLhRg+bQ5VAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-focus-far:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZmZmZn///+xsbGoqKjt7e309PTExMTQ0NDe3t774OlGAAAAC3RSTlP/itxixwImAELtp8B2gZgAAADmSURBVCjPjZMLjsUgCEVpq60G8Lf/xQ62gvNeOmZuUiWeKHC1cKnC5iJAdFuwJXgmf+xg2g//G54OPuTOCUOEL8WgMMCLwgPP+Abj2aF38CrnBR7whw6Bo4fWUk7MMrQ2OrpAq0GspTLLgKg1wTailNITZA0EaTkZGjIAY5NwlATah5CGRMJYj50tFtlWiapsLvAPRdtL/WOmET7QzZyl5ywzp7NWsjBJ1odsragJqeJ9HGFNZoLaJw71hMTm0O7NeDE1Z6YsU5rGL69sedmXXz0ToW8PzA/oV09T8OJR32fb7+B17Qe3WwtC9PVbHAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-focus-near .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAARVBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/////t7e2dnZ3W1tbGxsa3t7eDg4Oqqqri4uKTk5NImu/5AAAADXRSTlMAYieJ3MvE/0Lti4oh87zNagAAAOtJREFUKM+NU1sOwyAMY30FtoWS8Lj/UZe2gWpVh2aJH1wcO0mNqbDj4gDc8rLmiscEDdPji3rP8IX5fXLWwQWuaVu4gbKDuyPdsJMz3GLefcIPbJ6PDCEAFDlUAJiORM3NigQFAXAFlqOeRhWJyFFIHxNGvRrN0mp470U++3axGM2RAmXcXqKnkDSN0a9WIk5Sa01MpDXBQAdVtrA8lBhFnnKpsmoo5VBrhszV0KuJ5N2tP92O50iQjpzcctravoihdoi0Q1NrfN56m0VWzFBoje+OrD/s7pr0F0yUr6s5/LvUu/bz+B2ep+IHdMIV2SUZfCsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-focus-near:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////c3Nz09PTp6enR0dHFxcW7u7uwsLAUKT0cAAAADXRSTlMA3IrE6WIm9wI+y0gNQZpqdwAAAOdJREFUKM99U9GShCAMQ8BF3Cmlpfz/r15dAe88l8zwQiQkoRrTEa3zIXhno7lhWxcYWNbtN/fa4Q/218VFDzf4of0O8A/h3TQfOGU/ytsOj9gPVyt8warkmYEQQAgABYDxTKROz88koS6AVIB1fRCNbSI1cVUy15Jq27LGjTtyzipPeWw40/IXQkrHyZSRmqw3LaQgctFNKYzYyGACfEXossLMojFEj7J0WfdwJ3dD9uY2X25tL0Hj45mTR87Y66u9IQFsDS1bL57o7JbUDNIofvpk08eej8kTe3Hz0ZwP9UFfv8OgfgBUByCEUZhYtAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-play .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJWSURBVHgBtZe/b9pAFMefbSYWMjCjdOtmYEYqXVC3umMlBFRiT7qxkexITcdKSDUSYna2iqX+E/DG6LCQgcETUiR+5Pv8I3Kc+McF5ysZ3x2++9x79/zuLFEG9Xq9s/1+r8my/AnVJq4z/2LZfB0Oh1tFUQxd1+208aQ0GAa7kCTpMgRJk4kJXk+nU5NEoe12W8PM/wrAotIx2Z+w3MkE7XQ6Q3S4otNlY5zPUZdL7wiMBUsRIK/fDeWvhQ92XS0HrQia83cCsqoIyMug8gQ9Ho/DpF7FYpEajQa9VTBoyIZxWeEfv6IndSqVSjQYDKhcLtNqtaLtdkuigmGSZVn/XKiqqr9wqyZ1YEtbrRZVKhX3zvX1ei0Eh7Ufa7Xan8C9VRIUg9lyQZfzO19VOOugkBpAgaXRtnq97oLZ5ZvNJm0YQkBZ8m63E7YyKl5ntrrf77vlJCF/qzLlKLZ4NBqRpmmuF2LBlLOyBFYBchDKlIeWyyWNx+PUtS2Qtx+eJA6i2WzmQtMEA+8KnA+73a6N+jkJil1pGAbN5/PMfRBIZsGn3+LFvSABMYiBgpnJgZEeFHQD4EzQrOsWI4N/nrY2uPg/eeefV8WvAKfALOsWJ3jzA++rcqjhB25OXAd244nA62AjV4LGxWLhIBk/oPiF8pc9mUy+BZVnyQEzueEZUb5yjyvhBiX6BCw2YTGvdZNyAkYPZsprT/rgO/K2vDcdQQH7jes7gPcv/kvqyCcKbEVX6PxVAG76QWPGPZAIDcEZqGECTQyokpe9wp8VfNqzyA2L9M+KRzm19l1i6ZQBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-play:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHgBtZe7buJAFIYPjsVFAok3wBUlYcUDLNvQISUSDVVCA0IUYZ8gmzcgBeIiJLwdFau8QToaQKygovI20CJBARKX/Y/jICPAF3B+yRpjZvzNOWfOzLGLLKrZbAaXy+WdKIq32+1WcrlcQe0vZb1e/8XvQT6ff7fyLpdZh0qlEr+5uXne7XZxMpciCIKMSfzGBBSyCwVMAqxpEXYEhzdeAJYtQ2u12h2aJq4gXadSLpf7aQptNBoPm81GJofEsc5ms9/0zwT9j3K5HHUSyEJ4ovV6vXkSyjHEyvxDXyCAHxGy4hEUq+4JjWQ02O/30xV65rTbQ9lKNEWjEYFAgFKpFMViMbpQnOfFPRSKWxnldrtVaDqdpnA4THalefMDinx8sDOYrY7H45RIJOy6PMibjch3F24AJEmSeo3HY+p2u7RYLEzHwNqogOUcpSvFrk4mk5Zcjry9FZCX1+46qj5dzvEOhUKGfQVyWAyPRCLqojsnEYtohpiSE5rP59TpdEhRFMN+Itw7Q3DpGq1WKxqNRurF90YC75+gnXszulBsVbvdpl6vZwpkwasDNWVw9r3BWlu5Op1OVdBkMrEzTD11RO1exmUJytb0+30aDodkV7DyjT2rBpNrG8zg3WwQW9ZqtS4CatASt/sVhAC/GA3glWk1bqcEo+TPwm0P5QeYySt9jRS9UQe54vF4fqEZkMNCdXivrw4PoJlMZoad5IeDYE7F+0KhcPC+syVotVotIQ5PdLm4CD8CGkJZfAIhzlw3SWRdM+T9q9frLbHnTnUwrfBZfPCiecQG8v3MBHj/HvAm4/P55HMwW1C9tG8a/RmsGH1CnNJ/17UakVMOx7kAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-pause .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHySURBVHgBxZc7bsJAEIbHdprQJAU1ckln3FM4J4jTIkSMRB9uQDhBlBPECIk2yQ1MSeeIxg0KZQoKKpSCR/4xtsXTNmA7v2ThHe/ut7M7O7sIFEOGYdzO5/OSJEn3KGp4ZDy33ucxP6vVqo86H71ez47qT4iCLZfLJ0EQmhuQKNlo89rtdk06FVqtVjV49kZrr86RicG2TdMcx4LWarUWGjzT5Rqjn7tdsJAi8Ch4C4op1TGl75S8GKwCPOWC6FsRNDKAL5SOZER30HcAhbFFEUFTLBapXC5v2fL5/J7tiOCXofHLlVfikRhRrSqVChUKBXIchyaTiWtrNBruYLjM9jB5jlmup4vFQqMYyuVydKE03vsuVBTFR8pIcFD317REGQlRXBJ5PSl+iktCskgZC57eZA5l/Q/Uy4lTykjYq1++p5EHb1LC9rRdKA7dT8pO64yERG/SmVM8m81OqW7yckr8Ztv2r6Io1whnLawF59fhcLiVY0ejkWsfDAYUJfRfB+snOE85J2KRvym9RGF2Op06vwRbhg9YHgmlIz7E235B2vwC1x1VVdl7jZLT3nVF2q0BsJUg+ODFTDpU0wP3PfC5a2wB+BD7CuqLgws/TQQYn7cyxYfxfdc6ViEUujMAHUlER4cKHfhbATvPjBUG8/UH1xXJDxHoYGQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-pause:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH/SURBVHgBxVY7bsJAEJ01CAkJKUhUULmiDSnpoKYINyBuQIgi3AA4QZQKIQq4QaChhhuQCxAXSERUSDSIb944axSS+CPA5kn27o7X+2Z2dz6CXKDT6URXq1UqGAw+Hg6HDB4V4qj8rAsh9N1uN9rv971KpTJ2Wk84kW2322csVv1BYr+gEGMo8Foul7uWc6w+NJvNjKIoHXRVOgMg74K8AXLdFWm73a7BujpdDh3rZH8TCw8JLYlPSFutVh7NG10feigUetA0bcEDxZTiDFU0L+QN1M1mc1z7SBoIBGrkcGkSiQQlk8kTWSQS+SP7D3CzJ76c3A/yi61kodOP6XSaYrEYzWYzWi6XhiybzVI8HjfGLLeDNGxoWpohF8C50CXgwMK+r0gNCuQTENnyitQgRT4BQSOlyFvrKsRdCapC/uPuFqR0G1IZExfkH94NSzkHkk+Ap4wNUiTqPvmH74gUDoe7dOYWr9dr13M5sfNxBnjQ7/dXuVwuDGHG7ieOr9Pp9CTGzudzQz6ZTMgJ2FFtMBh8HvMpx0Ro/UEeBQq2slgsatw/uoxMsBp5A64WG+bgxE9LpVIPpUWDrgv7csUE4nEdlWCNPCC0JJXEF5Wg8MchHs11CWpCVvZVkBfckksyrneHVnMEuQRXitiqPBS4lwpEJYmORkc7Qju0IzPxBZ2t+3mW/JtqAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKgSURBVHgBtZe/jtpAEMYH28WJioIa+URDF8MTkAalO6cH4YIiFbk8QXS8QO6oUlCAkGjDtTRHJBoa4nQ0KBZdJApoEAV/Mp9jkAF7bXPcJ5ndtdf725nZWdYxiijDMBKr1SqhKIqKNpdms9mcRxkjFqZTsVjMy7J8x1WdL9WjC6D97Xb73G63m0HjxULAvnI1T+FlMfxBBPeEwoW73Q6we7pcViwWe8+utwKhDFQZ+IOrGr1eAH9ksOkLdSz8Rd5xu1RzBmfdFkvupwz8dmUgBENeYNAZtFQqGVwY9DZSnTVi6+Decrn8h0JYWSgUKJfLHdrL5ZKm0ykNBgOazWbCd9nNt3CzgoZjpUohlEqlKJPJHN3DJHRdp16vR51Ox/ddTiVkw70NlSTp7rRDMpmkWq1G4/HYvmANSpHghXg8To1Gw/M5W1oGVEZD07TvXNy4O8Btw+GQFouFbV06nabRaGRbhbaf8AzvTiYTr8c32Wz2p8KrSuMgJ7x6IEa4AIuivau9tNlsNGm9XqsBY9gxhOvCCi728wa7OCHhRzQAZl2pVGyXRZEoBAoFCDGs1+v2QooiUfpIHE+LBEL+VatVezVfDcp/whYJhAWBVHFvCEFCfz8op6cpORuxJRokajz98tSRae+97OJnUS/RanQLkwNQ4FrzsA2yyU0Gf/br2e12A90LlwYAkS5Pdrm/wRs+/rh1ChAshuV7wTqAQoTAarVat6gorll8YWvzXBXmbdTUcY3/sK/L+4ppmnPeF/9SCGsvAXIsH8+gDthkMFyepyuJgS0GHh3w5NNOzO0zeMHVD/R64BMDP53d93vBORW+0GVnpvmpS0NBXXDDSacwR9K5kxaPok+NUJ8VDlzlQucJvKNj63G2/U3/E78fZqx/rk0w4ggu8jUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgBtVa9jtpAEB58/EqArqCBBqehorgTVDQxPVJOiD5QAEJUeYLjniBcgRACKeQJQsQDBBoqkIigookraC1BwT+ZcQBBsNd7Ovgk2LV3vd/M7PyZgBPlclnc7XZPFovFv91uRZPJdL9fktfr9W987udyuRbPWSajDUgm3d3dPSOhBMaQUaAXu93eSKVSCryVtFQqPaBWXznJNMlR8zo3aa1W+7zZbIo4vYd3QBCEQjqdfjEkrVarzyhlAa4EvOt6JpNJ6ZJWKpUnHH7A9VHMZrNfLkjJO9Ecv3Aqwg2A1osevFs4vCQP5SF0Op3g9XrPflar1egzut9vCNVHzPS3j8EkcCAcDkMgELh4PxqNoNvtwmw20/tUXC6XSRyLqqZ7LS80CgaDqiY8IEESiQSIoqi7B53qE40qqVYsolTgdrshEokAeh9IkgRGIDPTPhJYC8SD4eg3k52RQNQi7XQ66txms+kepEUcjUah2Wxqrq9Wq6h5Pp8/4CUzD1osFuqPFwfnIsE1IBKbyDqANIzFYhCPx+EtYPmCGQxAppJlGQaDAVwLaFlBgRtAx7T/SNGNZWCg1WqpoeP3+4EX0+kUJpOJNiEqKWA49HGusA6gwPd4PMCLXq+nu4bpsK+6LVV9YMDlcqnkPKD7JyF1oFD+PSSHV9ZB4/EYQqEQGGE4HEK73dZdR+Ua6nh4gWXtD3AkfCL3+XzHZ4pfyrekIQnHApr2A2oqn4YM1TvDWkr3xbozPVAxJ0KaH1MRFllSvQG3gYztz7FtOct/mLqorZDhulD2BVzWJKW2kTZckVjBnviM8IKUQBtQ40ck/w7vAIUhnvGYz+cvwpHZbGNHkcQMwtXGnICs9YrCF/Q2GHb4e3IJBxLgo44ACsY6afbT4XDUWd09N+kpqOhTDT55Jf9/Z0b4C/UJLQCcLGi1AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIjSURBVHgBtZe9UsJAEMc3l1Q0WvAA2NEp1MyInVbGnoE8AVrSqW+gT2CY4QGwpTEFNcaOEqksKKiYcYYP/xsSJoRwx8f5n7nRu9u73+7lbu8waAc5jnM6m81sIcQlqhcoOZTTsHvAZT6fv5um2XZdd6Caz1DBMNm9YRgPMYhKHhx8brVaHu0LrVQqNjx/2wOWlAtnn9MiT4VWq9VHDHii4zXAPFdJsPGPwK1gIwHk7/dC+sXgAsBjroioFZsmpznCuHKLxeIxqqwirdVqvGmcbaOy2SyVSqW1tuFwGJTRaES7CEGd8TJbXOEo4YkjG8BQ27ZT+7rdLrXbbSUcx4+P3oOIVQ4Wr0Cj0aBMJiO1Q6Q1PvsirFzSkeKVqNfrKjM+8xeCybRMbUcrn88HRSasqs2R5kijisWitB+reiKm0+mhaS5VvMwqCdIs1WYKoJZljUmj+NwqobS8D7Wp1+tJ+5EPvkWYD33SIE4S/X5faoOHgCdC+jsdKc5GnJUUGiNIzwrpbjwh76tOpxMAJ5OJyjTwKp7wP/CnvM06LeFzdPwNd4AFihL+Chom/U86/HmiAr4CGOR4M2r0fX9cKBR+8e816deg2WzeRJW15ABPXvgxRXoVPFfiDWbSAhF7iJiXvUyagMmHmZlmGYK/aXn7HPSNAWui3AH4s9EnG8ibiy94DL6l3W8jL3zvetsMpNCEAw4cKGPCc9r8WeGj/YuBMlikP+yn3EGZYjlWAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI5SURBVHgBxZZLjtpAEIbLjUFih8QFnBUrJCIOEHOCROIACStALBhOMMwJMlkgBCyYnCDMCUJWrJCQYB+zBwkJFiBe+QvZyEz86IEezSc1dj/w76pyV5dGEnS73cR6vf4SiUQ+HY9HE0MJu5GmaSNcFrvd7hn3vXK5bIU9TwsTw8Oqh8PhzhGRoIf1tSBxX9F2u12FVfVXiL3ksVgs1khWtNVqfcfljm7HgtW5l1Zrbyh4Fo7FYh8LhcLCGRDu2U6nc69YkDG22+0v98DZ0mazaQgh/tLbUUOMHy9E8eH8treDJ8lkkgzDuBibz+c0m81otVqRBAu4+QO7WecerDSDBB3RbDbrOTcej2kwGFAIvNc5dPVTTLHpv9INpNNpyufzBEsC1yF81dOVf8KslCHIEy4SjUYjIxDLDDoGKYAtDrNW13VT7Pf7azOOJ6lUKnAeySLB7jVIIezmMAS9A/igxIIUwns3VBQ+HpFCLMsKnGcjhX0CKLF2MpnQcrkMXIPzuX+KKax9phthtw6Hw7BlVqVSGel25wntqqy02WxOFnLj+xB6/HNTwmdXTqdTGTHmfKA7lhKSxAOCbPr9g90n82X6AcGfTgVxUTngtKlD+J4UAw/2S6VSzulfJAe8SZ3fiNRiQbTgHvgvI0H4Gxb9IAVwTexVmHmmQbiCD1suHy26En7xaDSa86p/A4ttrpuIT3ohpLcTxw/tAWJ9vzUaSWCLm3DXZzS+z7hELFzYjX/i8fiTu9T04x9LgQk+PbvDKQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALxSURBVHgBtVYrrBpBFJ0FFAqBqCIrUXRBk5QaUleewBBIlwSDoW1CUlzz0CSlaJJHA8FgqMBg4CWIKkpRuEfQCDAYAvSeYYfsLgss6fYkk5ndmXvP/c1HYjaQTqdjbrf7PQ0VarLWgBW1Cdput3tutVrdW7qka5OZTEZ1uVwfaBhj9jDf7/ePzWazwe4hVFVVPhwOT3cQnRFLkvS20WjMzRMuCzKFyH7/AxkAg18oQp/ME24LsgENfcwBkJfvQqHQejqd/jr905HJGpnMHIYW3iHGp5AS2df/QabpfiKHfCdCVCN1qh1hv9/PIpEIi0ajLBgMskAgcDZfKBTMYjJVL8+nh7MeS/8ioFiQbDYbtlgseA/lXq+Xt9lsxrrdLkulUmw8Hp/poLB+JC+rkpa7FysiKEokEpyo3+/zBiIrr2EU1kKmWCxariMvsy46IRJWZFBSLpf5GApgvZUSYLlcstFoxMfwHnKQN4Mi+cYdDoe/IGpmslKpxJV0Oh223W7ZLcTjcb6uVqtxLxFayJtkfSga2Sycy+X4YnhlBzAQhGI9euTRqnhAaNjkKA5Unl0yALlD0SC0Au12m/fIvx5nRxsEYV2lUrHMgxmiYMwGwmiE1qzDrSiKSv0r8QMxF2Wdz+fZer3mhXAJCP9gMOCGAiBJJpM8h6jqXq9nWO+hLfGH9ohiVoTFIEbxwFqECMoQInwLy4V3mEMe0SB7YWtMJJzoVK7fLnkgKg65BVBM8Bj5gjHwDORoGNfrdUMu9SDnfl7d+HqAEArFCYNQYoxtAODfJSIBimTWpV2Swxt8PLwiRAgjGrwXuEVGmBNXw6MxP5KXMWYTCKs4U+2COH6g59tCu6uG7A7AYxteCcypVU+EmgVZbcJxkO4HcmplIEQuMcGOTz8nyT6T7on4Npw0mMBzgDnkqUZWNfyzWujQM/FB79lVQh2xeudbZ0VE36mvipzdRagjjtFtnSBlr9nxuS9uGCidk1HPdFp1xcvsGv4CcbeEIeSIw9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgBtVa/SyNREJ7dBLVQELU4bdwrtFJOUCxsXEG0Ue4OK6tLKhEb/QsO/4LzChVtvGvE0sPOxtiYJuFyJBBICtOlSSAQCEnIj5tvyC676ybZYPLB4y373ptv5puZt6uQB1xeXup+v/9zs9lc4qHxK621VFAUJYbRaDSeDw4O7rvZUroQBXw+3zcm0ckbMkx8enh4+It6IWQijYlueiByI95g4oxzQXW+OD8/X1JV9e87yACNbbxeXV0dOxcUJxnn6okfx6l/OOHcnr0hhIzsFcg06jNa8obwbErKOfs+CDIhUdUbxrhJiGrknAW8HB4bGyNN02h+fp6mp6dpcnLStj46OkpbW1vOY1q5XJZ8iqTX19dPnYpkZmZGSObm5qharVI+n5cZ5ENDQzKy2SxFIhFaW1ujTCZDqVTKaabA+z4qrdy9uhHB0PLyskSTSCRkVCoV16gRLfYODw/T7e2tOOQE5zKocmRf3Mggzd7eHvEtQnd3dxSNRl3JgGKxaEaE6HEO553gOllXuQ3W3ch2d3fFyMvLS1siKxYXF0XWh4cHOYfzUMgKpE1t3Y026LouhxCVF8DBhYUFcz9m5HF7e9u5VUOV2pp8dnaWpqamPJMBKysrEh2kNRAOh2VG/q14c7XhILzb3993zYMT2IOCcTo4MTEhkqKgrPCx1gGePxgv6vW6EKJYNjc3qVQqSSG0A+RPJpPiKACS1dVVaQ9UdSwWs+33c6n+47ZYchqKx+NCvLOzI80NiWAMEkFyeM75lx5FdFhD4SCXIEJluxRbTLm4uDjmcv3RLgIYgrfILZBOpymXy0m+UImIDLLCATyHQiFbLq1gB/90bHwrcNPAILwGAaREcz8+Pso6CNsRGZDGx0eS8xXqRgh5DYkgIwZuFQPdyGACfwJ+PHGhnHKUOnkEetS4U72Co/uNWdoC3yovUVqBiD1EZW4fGRk5MwkBjjKIBRoAarXa12AwWLARIpdY4McC9RcnR0dHZjPabhosMOkG9S9S2/8MMLDfRKhljawjoYU4wNXby79OgavxJwrEyFlPhBZinasYH+pPPOMaNL4wMJphJZ553Bt/Zp3wHwTYnvHjbDCuAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANOSURBVHgBtVc9TCJBFB52r7jYyCXWnhcbO1aru8RErjGXWBxX2BijGG1svNhJo56VhQU2ViQsgdDQYEFDc5rQ0BDoaMgRGhoKaMhdCHDve+6QZVhgMfglm9mdn/e9v3kz6xEusL+/79c0bcvj8fjpc8V6gCY9VXqK3W73MZFIpN3I80wj03X9il79wh2q/X7fJAXvTdNszkQaDAZXaHF0BrIRcvLKERE/OQ3qYwh/06shXg8vRPl8PlEqlZ4nktoIV8QcgBxwItbfitBOvL6+XioWi2XZp8kXIryaN6FNdpSM8spvthRWUmPaJ25vb4vV1VVRqVSGBCwtLYm1tTUeW1hY4KfVak2hFe+J+B+5+QkfnL2Hh4fI1KAq/OLiQlxeXorl5WWxsbEhNjc3RbvdFrVajVvMkcTlclmk02nRaDTGETfJ1Z+wlTxWLP84zQoEAkwEodlslh+QqZDWY36hUGByp3m9Xu88Ho+HNaokfidCCAIh2kgkMlYQAOtyuZy4vb1lBW9ubnidCioa37klkw0nQrgWgpLJJMfXDUAOBbEO66GAAkOS+tSRk5MTXgjr4FIAMXULrIObz87O1CHv8fHxR03thXAkDhbahezt7TlpzkA8sc7uUngIQIhUgNRr70AWQsu7u7uBEPTBdaqboQTcCIUgXL4DUBzjTrHVDcP4BmVlR6fTYVLg9PSU9yC2CIghEG7HHIC2GluJOGYyGR6DYiDCGEKD/iErNS2sU238QnH9rGqDopDP5zm+EIJ3aL6zs8NEUAKCQSiVwxp4BFaHQqGRwkJoRqPRkEZ7tCjGAAJQHED28PDAVkirsX1kUcAc7FEXWc5c7+iQTltnpyMgHNYgUSSZBL5BhqTBHkVMAZnxKsijMbQ6Vf+/FFe/mFLs6/X6IJZ20t3dXXb34uIihwFuTqVSI3Mt0nPia3LtpVLot461V0FWLiiBZwzMWCx2xOSy5+DgIEya/BRvA1xfvlKxr+JjUBwola/Fy81u7iDCX5JwiJSPHNJm3sQWoTnUp06a57XFIrxW+0dug8guutM8EvEHpxPIJRDDH6qFA2UmrSSrg0SO5HJLjhDdUxue+bLtQG7QqR8ggVvC4beCFHumRMSxVJxEJvEfnFm91YrgD/sAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBtZa/SyNBFMffboJaKAS10SZ7hXqFegGbCyjmUPTAH3eHlZWmULG6u/Kqi/9BLEQRIdoKigf2l1Q2ChGtBLmtFAQloPgL1HvfRyZuJhuzBvOFzezOj/eZee/NZAzyoMXFxYjf7+99enqK8GNxlZVtyhiGYXOZ5vo/MzMzW17sGaVgPp/vN2DkTbZpmqs8wfloNJqh10AZZjEs8QpYAfzx8TE6Ozub9AQFkGf7l55dWLbYTmxqamruRehbAl8CG5UEOvTNmWSmekHCVAgIJVgB9eHHD1bJSTPp7NXe3k68Hejg4CBvdF1dHTU0NFBVVRVdXl7S/f09nZ+fl2BS4Pb29geXMXyIe5eXlxM6FMaHh4dpY2ODGhsbybIsamlpyUFQog/geE5PT2l3d5eurq6KgTPc7x22kpGN5T+3Xl1dXdTa2ipGDw8P5bm7uyvoB3hTU5P0t22b9vb2ZFIu+smxjSOmEbfW2tpaAcJgMpkUQ25ACG4+Ojqi7e1tqq6uprGxMRmvi8P1BaXJLyE34MjIiBja2dmhzs5O8iLAMUGMw3h4yCkOobDYs+YHfXAkEpGBWJ1KJMTUqzAObh4cHNSbAisrK0FTrw0Gg5I4GKiEBAmHwwUzV2pubpZJOV0KD0EIkS6TlxxwViALMcvx8fGcEdQhKzs6OvIGYxLIcEwIxuFSvEP19fXSjpzQ5RsdHf3M5XtV8fDwIFDs0f7+frq+vpYtAjAMwu3oA/X09MgqEcf9/X1pQ/wBQhuyPZ1O56/SNOO+oaGhMAM+6rM5Ozuj4+NjiS+M4B2ZGQqFBHRyckLd3d2USqWor6+Pbm5uZAySqa2tjdbX1+VbU2Z6evoX3JumIoIBHA6ATUxMyCl1cXEhQOxD1ON9c3NT9qjufl2K5a+pqdliA4liHWEc7kOiwMXOvYpvwJA02KOILwS3FoGuoTTlWDKMJJUQ4qwfDmoyAwMDkkiYIBIOsS2iJH7k7MW1JPu3VpbUyYWVw91u4oWtcjyjOSi0tLQU54bvVBnh+vKJry82PnKHAydFDI1UATFwTgHzoIgtZvPW4Cxw1VlX0YtZFhjT6wvOXrgBK+ZnjcqXimHMrbHUZXuSV43kCpE3IUTzvPfjr75s61pYWAgx/Ctndy9/WlxaCsKPzZs+xc8Ww9IvwZT+A8hTw5fcMmXrAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.jb-pro-container .jb-pro-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-loading-bg{display:none}.jb-pro-container .jb-pro-loading-bg,.jb-pro-container .jb-pro-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-play-big{position:absolute;display:none;height:100%;width:100%;z-index:1;background:rgba(0,0,0,.4)}.jb-pro-container .jb-pro-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jb-pro-container .jb-pro-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.jb-pro-container .jb-pro-recording{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:101px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jb-pro-container .jb-pro-recording .jb-pro-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;-webkit-animation:magentaPulse 1s linear infinite;animation:magentaPulse 1s linear infinite}.jb-pro-container .jb-pro-recording .jb-pro-recording-time{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-recording .jb-pro-recording-stop{height:100%}.jb-pro-container .jb-pro-recording .jb-pro-icon-recordStop{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:156px;height:30px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jb-pro-container .jb-pro-zoom-controls .jb-pro-icon{vertical-align:top}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-narrow{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-expand,.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-stop2{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jb-pro-container .jb-pro-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jb-pro-container .jb-pro-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen-exit,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-microphone-close,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-pause,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-play,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-quality-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record-stop,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-scale-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-screenshot,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-template-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-volume,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom-stop{display:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed{padding:0}.jb-pro-container .jb-pro-controls .jb-pro-controls-item-html{position:relative;display:none;justify-content:center}.jb-pro-container .jb-pro-controls .jb-pro-playback-control-time{position:relative;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-icon-mute{z-index:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom{display:flex;justify-content:space-between;height:100%}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-left,.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-right{display:flex;align-items:center}.jb-pro-container.jb-pro-controls-show .jb-pro-controls{opacity:1;visibility:visible}.jb-pro-container.jb-pro-controls-show-auto-hide .jb-pro-controls{opacity:.8;visibility:visible;display:none}.jb-pro-container.jb-pro-hide-cursor *{cursor:none!important}.jb-pro-container .jb-pro-icon-loading{width:50px;height:50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAIVBMVEVHcEx4eHh4eHh4eHh4eHh3d3d4eHh4eHh4eHh4eHh4eHiqaCaRAAAACnRSTlMAikwX3CxpwZ7zIGi5xgAAAZ9JREFUOMt9lb9Lw0AUx2Njqm4iGEqmEnBxslKUdhJctFMVcW5wKZ0CLpJJQRw6iVqQbg3FtPdX+l5+XHJ3796bQj557773fe8ujtOI+6jz5p84dHjTkYD4+RhT9CIRZWRPJr1bChnbY532GhT4oUpbI6HEuqvgIH9544dh9J4/rpr0Ms8oV3zMNT7X1MXSmaznzfHjM4n72moe5n8ryYrW9rKRvgf0S93JA7yKa9lbzUg3keJb8OVCtwkrFmoO4MnsAuj5rGqnZg+GZXUXkl9NjEui9n3YA9XgpMgakLXz6ujMTIgrCkPVv0Jil8KgKQN/wRN69hLcb1vrbR2nQkxwiZTGQ5Teb7TO8PUaS8Q03sE+zkjP8qbjzgJtEhRbV4gnlkOFeM7hDYNdxPbiYFvKSHN6L2NmY5WzMYPtplZdTxncRvn2sI+DHIoug22jWMaA12Y7BrXzrG8BX32XPMDKWVzw1bdMOnH1KNqNi8toqn7JGumZnStXLi0e4tcP6R3I635Nc/mzsMxl9aux9b78UVmn2pve8u6eR50j9c0/ywzyVl5+z84AAAAASUVORK5CYII=");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;-webkit-animation-name:rotation;animation-name:rotation;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jb-pro-container .jb-pro-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEzMzMzMzMzMzMzMzMzNzc3MzMzMzMzNzc3Nzc3MzMzMzMwv5ahDAAAAC3RSTlMAW+8S2UGVwyyZnOTRhEMAAAEfSURBVDjLzZKxbsJADIYdBQpsSCyVMlXAdEuQYGKpWFk6dWHJgsQ7sMDSpUv3PgITAQT0f7ly57ucQ45KXRAZot+/89k+X4ju9KzL4XOhlm3pR0enYrWViSRPXQIQSASkRSkIJEFRimYCuQAHSW89IOv6SH5TCsuAj68Ab1wDzqkAzqoC7AUAPtgsABgkBBgkCJiNHehGok//KRVsHqd+3Dj1/vukt3AH/Jj05s5/AmyZhFVWXDls44iVvfQWkCvgxU6g9ZdJfCLvjJbYaT3GvjOY4mQSG3SJGjhr/Y1Xohp+TGKqqzexZ/1GVGdNCitt6R8zVvb9d+JmKdl8o5sPWbtxT6zFuJcDQtk92MNmYiXHquYlZlVt1j4P6cd7fgHFW7Nhqu29TwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEz////////////////////////////////////////////////////////NXt0CAAAADnRSTlMAWe+X2TINXUYZvctoYyuS2NgAAAEVSURBVDjLzZKhDsJADIZLCAsEg8WgEGCWGSwCgZxB4MgEAonB8wQEXoBH4BEWXgPJgEBG0mdgR3u77raRYAgnlq+9+/t3TQF+dKbZcJXSYSnzlViT457lRScKmBqILSFA3GoO8S4E+Ex5JiSJ4CbVdyOQdZNomX9D4dl+ko3NC8vFFmhPy8FIsi0ZlwLBW/LY5BxYYreUSgoFAEmhB5Rc9OCbUoXmTmDadQKTn4y6A/XTaoSKdb6KyGU6RJ7eHgpb3ABinAoil303xB6vQnRahNhXvMdre+fzOgxVrokX4jHAnBh8PALU8Eq8BqgTg/vePF8tpuPy9/NFaalSc273RizarYqfkswjifNMQ/TyTGMv4v87L+ks5gqDbc9OAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-recordStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAOVBMVEVHcEz///////////////////////////////////////////////////////////////////////99PJZNAAAAEnRSTlMAMPndsnZj1CSYPcmL6wsdoU80pOJLAAABu0lEQVRIx5VV26KEIAhMA++p9f8fezatFDPr8LSrjMxwiWlqzRuMYKW0ENH46c3WuGyVLXEduuO83UyK59fl1jX5EEUXD9DOaSh43XEP5zUIdZ4pAecTofVnWSt3ip4rx7N61vjnY1D30CpH4QQR8vsP+RA5Rs3KpjfMU/pMim/LgbvH7DF2F8sU0owqapKLqgnhuGWwImUagn2zhUX6WQQoYkXG9WxSAJd700/ygsCpAoliaDsPiG48GM1X5Ft/06sfp8DrDE+3DpekWjxM6366fgEcnklC+AIIWYQmPEeAaUmjFOnhCLDfxZRH+w1gU5b/DYjfNcyJ0p7dxX8B+FwxQVtvAGB5ig0d5gFA5KbzS91hI8CenvlHflfN/XvzJQnxbBEko1gbvVnPii+FadSVRUEaYylQfJtpLB+aRG4LY/80yKdUbCraM0lozGR4ewZ0Wtnj1iC7hjWKNnjYmR62W15cLlL3+2pyMR09jccyuyUrHKsvthc5xsY1iWJ0Xk3t+2XP7AnWwrAQmBH6asXubmL1Z5Lz6o992jWiu9lnMSiQsK27FS9NxhCumZgB2fTBPFsFolhZr5B/D3o9sJAI6skAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEwimP0imPwimP8imPwimP0imPsimP0imfsimPwimP0imPwimf8imPwimPwimPxLmg1rAAAAD3RSTlMA15sisGUvdz3szYwMT8H+hDJEAAABx0lEQVQ4y3WUO08CQRCADxBQchBiMDE24KswFlw0Wtig/oHzUWglJBZWio3GDjUxlhhrEzT+ABMrO2iptLLVRluDggI+xtmdXW73LkxxNzvfzuzszNwZhhDzdOxqaPGgYrgkOgFczh90ezAJQmpL2v6OHYnqk2aWxOTtAnu/O/Y5XNZXmTZjo3ot7aESwLdFeqAM0MoJkMf9ltwVQJ9PcQN0UFIJogvdJgLQVFMsAlxyBaPmVBDCE8W7qd+2SDsx0q4OwhSrCG134W54jDfKLjDNxaL8/9AAMM/solptRnoALBbwEPWYrOEzLnrZsTGoMW+fBHG2SiLPUNI6KMOH8QS/XsCMBYQekIEv7NGZF/Rht2yqmA4i3UG9O0iTqgMfhirDhRdU8XJZqqEO8tDAqje8IIt1r+I5HmBjfD9AxQ1MgJQRpc6GJRALHOAS1WRlhMs4VaSFzwIWzCUF3op71kdNsNs/FDCuA58YqCQl7IhN3WbDnlLtfjnuON515WM17c7w41QPOuBIzDT5wqi0T4ESGV3gjtTjkuPATwHoX9+cPRlmmvJ57YAir2qKy459QL/UhrS/uAu3xf8KiX3DI+b22t6jc9F/qfaum9E1pJ4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreen{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEzMzMzOzs7Pz8/MzMzMzMzNzc3MzMzMzMzMzMzMzMzMzMzNzc3MzMzMzMxdHBitAAAADnRSTlMA8AwGYt0aUcg+til5kgmZywUAAAGWSURBVDjL1VM9SwNBEB12IcGkMagxNktQSZFCYimIJAqKpZ3Vco3YBYs0NkKQgBg4ECtLFSFVCGgQrERBsLayPE0Ip7n5De73BdKLTrE3ezPvze6+GYDfsAQKy/Rz0i/OZJjY9XREuohTKulS+ZFGiADfyZXU5uHktI44VH5apDx554aXwJqloiIwiEsStAjCAsRNF1jCmGqa4Vc+BvS4JkjwzyPE6xiwzsxxeTbZxqjkANSWZFkoIj5bQBl4aBDfkPDNpeRRialB+SRAFz8UU1sAaEUjSCDoJ7iukZJ1V+c01bFczM1pWaa+a0Rp7MHn4V8Z1R9vLLCv9WjKdVFfk77JP+bZdz35YAfKXx6KhKp93abUYVbrj49g9aAYSuFCLbPUwzdCsYEWTloXgw1oGwQbENeuKwxzXhxwAADRMFd+zzRc6AAASY6RH8VjUHaXTrlOpDgCUP3gelc01e2d+f16cWbnQ46BGCRNVsWAWQJVw2xGfUXVv2k1OsLfazXqblzS99u1FwKFvBJioXBY2+r82U75Ab7O0ypVV0wKAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreen:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEz///////////////////////////////////////////////////////////////////+GUsxbAAAAEXRSTlMA3clDHfdfDQbsVG00u4Cqkr04dRsAAAGaSURBVEjH7VXLdsQgCPUBAROdjP//s1UTDUxsz3TRTc+wC94bHsLVmP9hkE8LIdvgupt2tFhcpy2CMZyVxNePEoqDp4hwEGz5PTqWoZNzLrmD9riltBEYzzpZQ8bweXy56Qy6Tivsp5JQYtawuMH3eJlSxIJtdSSa4xer4lMB89pK23mKrwjZVpsRzLq35vEE3+r26h6w5EKppcp3fP2lIpTPWJvoXoobeNI1sM3haHvx56tu2sdElJ54GbnPQ7RZ1sCpl8qPEMXBNQ8vN82jNbzLCPzGSDOZj/2Bqd19R1rELIEbDFrUJfKYdlALbDuDMko/hz7t8DqtCfr8h1Vt4rn7eh/6Ph37ch20aW8McsfGCOXzcr+GOlQG1rJ2HSHUDO/4Mu01qVAqTCpCJfgZ3phTS2pKm5aZOMUbs7Q6nk6L8UzRh6W78jH+gD/VRxHokPuNgUGTaPPR+zDR1mrlvcGgwkAVacSbeoN4Z0rb5/6XLrW/2GTLk2NhXHRKzrqAt9cD4rr4ddvae0NAYgOICdZyvPj4UYRf2BdfbB8iWvnTUwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAe4Fzh7MZbKPtN8gpX19xAAAA3klEQVQ4y8XUIQ7CQBAF0CWhKQHDGtQKQFcURUgqEARBED0Aoqp3IKnoATAEW8MNOACmhQYKcyi6uyjmr+aLqXj56bSbVoh/J3HBxcw0ZfA2c3FiQLGeQcWh1lOVDDJTAeCbCgAR6QqCDj0xCEU5Bl2BIALKMwhdKjGILRUYfCIOEynlvABANk64M5jabJxHfJY2I76yzYu/ZCc0s1WbNYAQ3jxqwMoGHoqWGHpUQajEgcYYcKWFtjLE4FGJQewoxODRDQOqKPPcHl9sfzSXa/0L349tEDsOsp/8+2/xAY+BZBY9KhM5AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-mute{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMztXryaAAAAD3RSTlMAHd4P7ztyiy1OnKhdx7uY2gyAAAAB8ElEQVQ4y72Uu0vDQBzHE45C3SJFaSGjUEiRpJRCBifXokkpSv0DfOBrEKxUUSoFH9ClFAUfU7c4OARRCs5WjThIsJuDlLo4ldvPe8SYxGyCt1zgw+dev+8vHPcvYybvfCR2OgUv2CoLdI62bUn3gq5UJxOomZofXPUNrIChJRklfcDSiKK2bYQ6PiCaREk0EQoYPFYa3F73F+DGsBJLmAjBAMBKakG15KAxqIhd2KuK5reRccBDNbqGJhfSlnNc/kBh4OY+vaoR5QrRC0afKgxMrKdXNKI8yxRENpyd+i0VA6wMm5IOBmORCwfAFjGwolofevbuPrvpGhRgpVaqiJflrLuUQQFRToS9l894EMDe7q6yL7/G5wMATc5mQCiAvQo3HAbwLtyYHQZgTxhohgGUa/CP12EA16W2/Ou4ZEj1dNG9oPMkZGiwJWQ8j+huPoJy9Z/XHTfUFSbAURveCtE5px5vs7hQDKS25FSDn2KR5Up1/lRmIHne7BvKd82LMRJbSjr5M40lmaYZ5/PRpiCpizjJyk+CwOGOzACLpSdz02QxkiuRhd8dNOwkV7zl2YX1mcySKJrQiPkXY9klSt6rkJPRwIlmzrcWSGyzHuTb11V/N0y/S6SdwdCR4m/47OIN7XOQCfwJwHGp8IcfyRdBLEZK4Uxp6wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-mute:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAP1BMVEVHcEz///////////////////////////////////////////////////////////////////////////////9KjZoYAAAAFHRSTlMAbk2o8o0P5TsGnVojFi/XHcV9urLaq0oAAAIQSURBVEjH3ZZZkqswDEXxLM8T+1/rkw0BuwM0f131+IvDyZVk6SrL8p88QCHp8UAnWmoWoG8AwQRN4/vOiqwUuwWqiob646MMhEW+KnMLMIXffgiZoODBusb7kCzjByF7OOszkOyp4amJ7fWVPwCN6BpyWRypvANPCvi7u4aTXe13YI+KkYA5bMRTSMlLnSyGwisSH40B0FJOrKVB6iAw2U7sGgPgQ/DTPQjitCOZT4Q6gWCtGwGFbSM34ENUNSpAKTACmC31rnRgJwjDdkFAJpfkAsZcAJvCSVQB2FaWWKdB/ATMAHwIUYL21lRBZRDiC5AnsBHBUqxEyaraFMoz0AnvHNa6xDWS34FGgNf6PYAEZoCt+BroUWFVbeb5HbCqSvB2cToyca+Adjlycdawt0C/HeyScl1W/w3gsU3aAd7JF8AuAN6isr7NAogXAFeq59Ec7ifAm49hF8wCMWfVNXAeCAkjEGuBr6R5ZGJzBrl4gGniBME+w8aMMyCsNZtfaemnmYaAQ6I3Rz0fnDhHJxc93Vrr7sHWjP3XRtTba2L3EkdFVaPC6YmXxKI9DGF1YPLdiwfD2r37cL5nDVw+uKzU5K27hsXCXPtyC2uyyl0D0p2TY7VaIvFYWU0Dm8TdOXmrVp52HG4lU4K/N38PpS/Kw70dbmb/sC0WCcQwNNzzjrzUj7veUyIIyL/4m/EP8V829O8zh5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptz{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzNzc3MzMzNzc3MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxDm1AzAAAAEXRSTlMAHqw+E8It/gjxc03jhGDTlgAjE2kAAAI6SURBVEjHpVbZkoQgDBwg3Of/f+12gtfMbK1Yy4NampCju4Ov1y8ruNyyo9fyCibVlNW6vUu29GpWQwTVdPTernqwffHex0WP4Nro3k+PrMKCvew/PcZ95aoNsY9yua+cGxTZsnf2K7ch4CAdGnWwYx/5LgKZCgxGdrhH3BeqNmnwviFXPZbQJmcM25HJ5n7/Pczr2QqksMJfO7BJOHLKLWFdMiL1QXYRwFagMklb4GB1zS7s8Le3fqH7Q28tVLkKdIzeaOJB2OKtY8KfTQCUa4++dNsLbrqpTR7xguHGt8hfg8P+seuaEkNdBjahzOD7g1cHP21SL2LtMNBKMdTRJjffTX1wVgrsEb1ITJU6QknwYJAcQky2cE02NbzPp70KyKggtpu9xM7Ik+CBIqY+8FrYyRUkrs+MEm1TG6tG9LZxNDNFGDue63TYGgIHqUUcuNhvhyZtn5LnlDq3Juxa4noCuX0scErOpNMDCrVcHPCS5rFGuQR9KZpxnB6CQ0ZO+AIBcTPk3UdbTx1L7jLEEHsMW7ZYm8NlIFyxn8+xdL7MURYEhzd5k2N2TabxIAORwC2r00QQfNSgrnqTJfh7cDmDu9ggtV0EZFr7kGu4KAxtNDln406TLwF9iZCIwn9EfjPuncRHYm5x3NfK3cFAS5kWxljSnTFlPHBAUFg5HsCCVOd9cdwXq+027un2QJlMjqISJutCDceRtTTuT4+1Q3HWHR8cu0fh9sGvADTYH9iLah/9nPz5+/MDJnQfoIVoAnQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptz:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEVHcEz////////////////////////////////////////////////////////////////////////////////////1bZCPAAAAFXRSTlMAeVoYDS1pBiPv4/g6lkzO2qSxvoixscijAAACi0lEQVRIx51W2ZLcIAwcLnPf+P9/NS2wp5xkq0ziF3ZRC3R0i/l8fvi04oxx89n+RBi1sqB38TKw7lw7lNzDa3U0e57bHhJ4d567HlqGC08eLAj9Gv8XD4/OwtsdhlfCW2s9LfWtuNrMhG1uLWP17Xh14LF4m8dx1OJ9jkm85YCYch5JzDVy81on3MFYkpTNYGmHHloYI+aqlNhlh5ZSvmH1AyBUwPcMX+u/clW3XYvA2YgRGXyZIZX6PXv0l3GlV9Jp9FKcK7mytJIg8xEeBdaBtV4P8tAixexnp73tY7ZBkrk9WEL8t7ZUDqtIA3jXa8sODSeUVqw5aztT+g4QeNAgM0PGTA0+EmfVeUvU0CEW4hX+lt/zseE7jJKDSmi0EUKBhr7EAMKPvNjOA9Fz4Yk/CFgcGRSdkYOHCLRxQfzKRN5SB/b5Ot8SzzQiKqcb6ipFdCfi1JI84OBdxzarhJ8RkpxHOQszl7bpn0GpmnXq6R4OfTkwwlyUWzeQg7rSLNhNUzEUEqJF3DMHeeXgqRIaYwHimLKipK8hMZOYVfJ5oKtIFSgXk5z4KcNx3GOIPGYfPigh9YGHBNQKVKbZhxMnqq+OHfWBHARZfWm1dnfSXfJuXInplse8wy39zkisdQ5kuLY+Bpc5hwGiH8Mx1rE24DFaLqXkfrNVkjk+8JPTPF0bUw+R9MCVuA8ks/xDyF/9orMqpBQeiob5RbIbmv7/TxvoX1Oqa914TsYg7QUWx8Y7R89JQY8mY6Dat1G5GARuMOgYHY9cbL1vNvc++fk67olLk4nrQSl7457OPqdeKn+vEwm4LPzW87DyXvqIyei9znHS+cZz9SxV+Qf8nNbjn37NkDx4+PmCXzHOLUMtjgmUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptzActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEwgmv8imPwimPwhmP8imP8imPwimPwmmf8imPwimPwhmP0imPwimPwimPwimPsimP0imPoLqfILAAAAEnRSTlMADprCJBnU/gXwh3LiUKxAXjJ/ELXKAAACbklEQVRIx5VW2bbjIAwLa1jM9v8/O7Iht+09MwPlpS2VwLZkJ9f1lxVG1joPdZ0u1ZIxurhv8DH6dMpQI5t439GAEc7xYPgTRnAtV7plReRhd5kDP8+fd+wzt70yPhIJzWT7/6DCJCAYLReZPMIuJC4pClSktHqbNpJO1aTmmAme3cvtWs9NSfq52CPhnJNjlbVHwgmWSWGHeQHcKFjj7fygwidf2fa4mbVOuladcnsoDn9/CKKAWf6HEtpANiJvUp9Fgr0SvocPP/sqjOCK9ktpyCAo4Kt/d4n4/6baseNKAt5XrauPN1A4ZLAd30RUI4kNfELVx+yd3lrXYIg1Bp/B/dGs5N8mPsJoVyiwkofQSlm+K9aiwmoQMDoI4wefoK/rhkESrSuV+BR2i6HZH9juLzxCtBmn6rFmB66gNJQwBOSxncT/N3FAlxAoLQfJDy2+6rMLI3aznl9fhOcGSdZzoNhex2K3TXJEVe3M4Zb6QhHuJc5BWakYIqqietcPw6FK+EHofUHRqtLEQ5X8dKVENXXgEpLOpcjwkFI30YFVHE8fyx2ShZJ/ydTKlZwZ4BCOv/af9uMi0DILe4kieynScgPbhai+DRDckTT6N6zJpI3HMghM3BMg+q9pHmwrbR0Q0D5wc0JHPy0E5Ur7Nf3Rk68LnR0NHfO28/T5P4cNr+uLFR7eEdiNxvMRbd5Onlqsis4iIVdme4di3akWOz+3T0aUnFWHa8QZrO51NO69MeLPafrNuBenxel/3d21j8k/jyxf+75OQabFxOtuT94G3Lpjzb0zBn2Dl0ep/waPidQ/p/XB60Dp7e8F/QO7WSJg4zEzdwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptzActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcExru/9ru/9qu/9ru/9ru/9ru/9ru/9svP9ruv9ru/9ru/9ru/9ru/9ru/9ru/9ru/9ru/+3uxEqAAAAEnRSTlMA5q0cR/PC/ggSKtN5OIhaa5izIOiAAAACV0lEQVRIx5VW2ZLjMAiMToNu/f/PboNsJ5PaKWv8kKRkWkDTQF6v/zyUfO+JX9sP1dKKd/v2acQcm992kbo1R4il7iHIif0BRNtCUOozH4cikAdt2YfjRLTnzN15/8I85wFCI2xDzlnyMLO7R0aFoTzbFGB+jIkYLkyePvmW8d2fs2ZfZuv8It9s6zvV5uSr2LmKb9oVh37QvpjYOcf8fcO3Cb1jGqOU0SvTTd6X2KUBLgKdLzaiDtE2n+isTh8/+AX7E6/Vh/NNSyfVm10RXIe1nxXRapmsDQB7SMnkmE0IxgqvUn0jteEf1T2CHXgr0gjZllGk1HoJL7lD7fRpD20CgJcwQ6EdSh3lLK0zVfuqz2WvPlPJh7HqnCQ4MysxoAYQE0vHub/toRuqzRy5pEUvbg62MzlJQn1MHBe1x7WSAddpNDSN1c9wRMhKfi2jrICwAIsQvHkD7Al41bOrBNC1Y7QdmSg15LDokGETJB/imxYJKfmFMDqI3FjUkDS3NSEDjBaxknRYSb+4nj4kC43W2OKrkqGB8jV2Fq03YiWbhHQTpUV1mMHXWYf8HlNX7ZUQRC6iwBAIK0r0ILr1UxqKsPattAkhwSIiMl76bT/Ft/TbTy2jHQoM7Cz9isHVMb6GILl0H4DGivbw7xNc8rAtiJn3O/qvD6JT/wgs7Y370ZSdWmbZWEKiG1lXImldW7Q1jGMbZW9tUVKZmGjjGvf+EXAqzWiX5OfFSHVp/zjbfGPc3whdcbTF67V2N1e79qYMru2/AnzVYFsdWFt/+nOypv8vQvoHou4gOtSrG5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performance{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTM7OzszMzM3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzW8hQDoAAAAMdFJOUwC/gO8ra6tUQNmVEKtAA1gAAAE4SURBVDjLzZMhT8RAEIWnpS3tXcWdQ6wgOJIKfFdUICv6AyruB5w4EuSJCwRXgUBWkGArLsEi6JVuaZkfxawguSWz/p7azLdtdt97C3ASagp+PpeXPDjHVx7McMWDCBc8qPCZB4m44YFIeOBh+ckCf9z+sCCYqi8WvA/5Nwu26cfA+JRBs4h7WmX/tr9AXcQHAPdgzEPZh5idTQBOZ3zyiModISKQGxZ7dd85E0SKfMGjM7vXeI/5AE5LvrwpcK9IOrQYB5BlCsFIvjzgrkaSjsBZbmC9XsGsAxfn8gKXpL9sSlnQFBwFTTuaKWXgI5Ar+sfHTrW6DUDO+2jEEtCNQ9wL6gNujMvvdFS3eugxGT51fBXxTvF1wLLngbT0BGphKalAy0MQ3Z4Ha2V7UoMFJKkFVAWcvH4B0OJfd9YsTl0AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performance:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwD2qdfrViyAwW2XORBGtSCsD6SyAAABN0lEQVRIx+2VzQ7DIAyDYfxToH7/p10CbQ+T2s33Rb1MijM3/qDG/EurolD9zSNRggBU0hFelMABmenfADhGkJDhGUFGgiX6I1AAQlDgZK/td8ELtQORiTmIq42I2bYdCD8NjzPmYQxO+rbn2S5qzEUF6YjkgcJude56X3s0SoL7LRAeylyaVPiFq0Jyx230mpeXmXVOHssRbhackhCq25Sny++xcBW1n6Snqw6BTgrqRP6kzfDcgmRLGonDWSf2OecwB491dOrEVZpNsxiyiHzWJ0Z+BbBwzaoWVb49HrqVfSkxHen7WNznLhzl8xpQlT3E9oHUtYaufB+7NY9g9ctbjFfj/h1DwXUrzDltMn1Ql9M814EQWPLmEBg4R7JSzpFQxTmSBMkLvJKOhFHfKEEnv3L/+qw3DuMPzAFH9pIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performanceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAtUExURUdwTBGW2xKV2hKW3BKW2xGW3BKW2xGW3BGW2xKW2xKV3RGW2xGW2xGW3BKW2+P2IvgAAAAOdFJOUwC/gCvzq1RAleURc9VmrA9rXAAAAT9JREFUOMvNkzFLw1AUhU+SxtTahnZyC+IsIeAenDuE/oJQcS/FTYTi6hKcHYpDZ/EXBME95BeURpM0Me39Db4Mgk/u23umcL8kvHfOucBBKEr5eW95xoMjeuBBlyY86NOQBwt654HrPPHAca/YuUHrDQsG9eybBWa1+GLBqvS3LJiNX0vGJw/R0N6LJ+/f6x9I3uwG0D+luRU0FnmdCtBy6ZM7KvQdjgXwJYuNZVNrFfqF8IX+nFm/oBvyS2iZ8OWxgH4u1IZmU4kgfoa5E77c0jwhoTYCbTRFGE7QrXFCveCURkK/2cRBCp2gFYiyWk7Jw4AgXOmQZMAqa9uAeCP+JsViihtb9OKIPtBUuvy8jeqyHRpMhvc5X0W6Lvg60HrPg0DREySOoqQJKRbByRWbExaqlSoVwB0rwCLFwesHquttxhcsa64AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performanceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTH3G63zE6n3G7H3F633G7H3F633G633F7H3F7HvG7H3G7H3F6xOzy+EAAAAMdFJOUwC/hKbvK0BT2XURZct0z00AAAE3SURBVDjLzZMhU8NAEIX3LiSUNqI1qBMMChFRgYxAd07E4CI6HQwzEUXgKjC4CH5ABAKJyA+oaHqBJO3+KPaYYSZh9nyfyuyXu7l77x3ASSgu+flYX/HgHOc8kC4wwikPMnzhQaTueKAiHvi43bFg0m4OLPBM9sWCjyb9ZsHm8NkwPiUQT8MjfSX/fn+F/C3syJf9YB7oLsDkjIaiHix5QCNbGBmAFPve+3lXi/0viLB3ZnmDz5g2ICry5daAvCbZhSE2oIsFeC35ssJljiQbgZitIY7nIGu4wLG+xBnpL5tClxQhCANR1Q5TSmCCQK7YjftOVbYNUOxot0EsHl0uwHdFfcD14PJLG9W9HfpMho81X0V8MnwdcHvkgS4cBcqVo6QKHQ9B1a6XY1zAcSiIFg6QlXDy+gEd714RcAqEowAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-face{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTL+/v76+vsDAwL+/v7+/v7+/v8DAwL+/v7+/v96T4QgAAAAJdFJOUwBAgSCbs9hZap+hQJoAAADvSURBVDjLY2AYRkAJCAygbEZBQUEBKJtpJhDAOJpA9kSYxESgKphuIaBuhASqyYzESjC2hDRilQBZ64BFgm2qMLPYNCwSkQpAwlMBWYIRzJsKYrKCxZSRncKSDFYzBSNY2MD2MqRhSFgqgClPAwwJBxwSbAk4jGKZDCKZp2JIsEOcOx0ztjQDYL5ENwsYJKrTsMSvGSgepzVg2pE5qSikPRPT8sopBuDod0ATZ54JsbZyBrJgAVAp1Ax2oPXMykjxYQaLA2CMoERUZQDMrgBUCc8CKIdzAvHJhyQJpLQLSu0TCaV2lPwBSu0KQy+LAwBuJj5UbruNggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-object{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA51JREFUaEPtmT1oFEEUx9/bnRALGxE70btkZjcR7QMiRisRbCzEQvxCLGyEhCDRBC/RoNaWFgYLFUSwUBAUDKKFFqIQ3OzNJpfCyspS8HaejNyG87J7t7N3l03gttydefP/vbcz8+YNwhZ/cIvrhx5A3hFMjEAQBDwMwzOmAi3LWhBCLDTr5/t+ycSubdtLnPOncX1iAfQAlmXdNBmkru2RVgBSSspg+5kQ4lRjv1iAIAgqRFTIMIju0i2AWNvrAKSUowDwLqP4tACm9rWmbABCiFxXKimlhu0BtPFHtdc19wj4vn/Wtu3XnPOfWVByA5BSngCAuwCwryb8Hud8EhGNltANB/B9/5BlWXcA4GCMx/8g4jjn/H7aaGwYgOd5BxhjcwCgPd/0QcRVAJhM2l3rO3cdQEq5GxFvEdH5VsLX7aKIH8MwLLmu+zapb9cAFhcXt/f3988AwJip8Jj2L2zbLg0MDHxr/NY1gCAIpohIJ2V2BwC0iUd9fX2lQqFQ6cQvtJbICSGOxHhlVOdKjuPMl8vlqzrxI6IdWUAQ8Um1Wp0ZGhryiYghYrUtgDQionxJT0al1IwGkVJeBAANvieNDQB4joglzvmilHIXAIwrpX67rmuUamfKcxoTvnoQ3/dP27Z9g4j2J4C81KBCiC9LS0suY2yMiC7rttoZuQBEQhsiopfT6wAwUvv+hjE2XSwWP0kpRxBxgohO1kPmDhAHEgTBUaVU1XGc98vLy8eVUhoqbpPLPwIx6/wqEV2ovX8AALzZ/Ng0EWgQGa1iLQ8xPYCUyx8YHjt7EWjm2I7sAy0it7ERqNWEDkeiklIJg8pFWwC1ZC6SM9NYc1oXgcaiVlxVYmVlZW8YhlMAcCnFvOkEQPqqRBqASLTneTsZY3pjapZSpwF4Y1nW7ODg4Ie202kTgGiwSqWyrVqtXgOA6Zj0OhGAiF4R0azrup87dqDJAlA/eLlcnkDESQCI0us4gOdEdNtxnK+tfkHjA027AJEgKeUVANBROVd7p3fixwAwJ4T43kp4nR2zylynAOoE/JuAiPiDcx6kFb5pAEwF5zKJ2xXZrH9uc6BTUD0AAGh639Xo6bjUI+G/NglS+p3Y87wCY+y/2ozJSGkuRDLekQFjbEexWPxVryfpjuxhllKhNtwtAESc55xHx9M1hsR0WlcOlFLHTLyv26Ypi5hesyql5oeHh3VBeN2T6TxgCtXN9j2Abno3je0tH4G/KbtRT7VUKs8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-object:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwdJREFUaEPtmTuIFTEUhv8fLSxsFrET3UIQRHtBRNdKBBsLsRBfiIWNoIisD1xfqLWlhYuFCiJYKAgKLqKFFqIgoiBoYWVlKbjwy4HMJXs3M5Nk7tzZCzfdvZPk/F9OHicnxIgXjrh+jAG69mCpByStB3AgQ+AcybmqdpJmEvv9SvJhqE0QwBm4lGikqD4VAaCMvh+R3NffrgzgB4DJDCPWpC2AYN+LACTtAPAqU3wsQGr/pikPgGSnO5Ukgx0DNJhRzZp27gFJBwE8J/k7B6UzAEl7ANwEsNEJvwVgmmTSFjp0AEnbANwAsDUw4v8AnCZ5O9YbQwOQtBnAdQA28nXlp/NG8HT1G7cOIGkNgKsADtepDnx/C2CG5Muytq0BSFoJ4DKAUxnC+5s8cSCf+j+0CXDBjAJYNgAA6+Keg7AwpldyAXqBHMmpwKjYyThJclbSSQBWfyIT5IF5kuQ3SctJzjcCiBHhxUu2GM24gRx1IGtj+gDw2I34Z0mrbXcC8JdkUqidFecEAj4fZD+A8wA2lYA8NVCSHyRtcGvouKtrg9EJQKHVB7Ht9ByALe7jCwAXSb6TZP+dAbC3D7JzgBDITgDzJF9L2u2gQoectV0yAD7IEffjDgC7plaVJQdgYotdLOYSMwaI2gETr51jD1SN6qDOgSobw/WAywltLxRVhBIxi7LxInaxUCHHFvmCpFkorWInoR8LheqsA2DB3LGIRdPIAznBXC1AIVrSKncwVYXUMQB2Sl8h+SYQOCanVaIBPJAVAM5aqBAIr6sAnjnh78s82aoHQkYlWYwz7YXXIQCLRK+R/Fg3BYcO4HnlhPPKIfefTYX7dm8m+aVOuNdP+1OoSow79KzKL5LfY4UvGYBUwZ0s4qYiazzY7RRqCtfZIm4qfGBrAEDle1e/0FDoUTKvUxiT3gfsaWlBbibFUsyDiKSkBK9nf4LkH19P2RvZ3cxUIVoEmCVZXE97DFXPrJY52JUy+lY3Ji2S8cxq4i3jsahk3QdSodqsPwZoc3Rj+h55D/wH5CHfQHNA9EUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-objectActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA9JJREFUaEPtmU+IE1ccx7+/N7O0BwUn24UeRKOd7LalvS+I6HoSwYsH8SCtLf1jEqWoyLJVMfEP6nlNIgi6eFChCB4UChaU0h7aQ1GQrnFSdw9e/JNs9LTFzPvJZI27m8xk5k02m13I3sK+33vfz/u9N+/7fo+wzP9ometHF6DTGfTMQF+mYNqwd6sKlFLcK++P3WsWF8nkUyr9stAeTcXN624xrgDVAUgcVxmk1lbaGPIFyFocou9fSonYzvo4d4BsYQLgaIhB0EYA174bAFaNWpuFhrthxDsxQQCMrKXUPwGbvfr2BSglYh39UjmwXYCwy2kh4jqegd5M/itdaL8+i5vPwwB1DMDIWNuJcBbA545wAs4V4+YIiJQ+oYsOYGTzGwniDIANLjP+hkCHiglzNGg2Fg3AGB3/Ugj9NBO2+4ujSSaMeJ2uc+PbDhC5aK1GhU6CeY+/8IZz9E+CnSomBn7zim0bQF/m4QqbPkgDOKgufH4EAzdZaKny3vUP6vtqG0BvtnCUwY4p01oFcOIZuCJ7elKvvo9OtLyESMN7IzeViA3VC3TshiY4Wkz2j0Uyj3+aMX5shAIhuia4kn6Z+DSPu6xjiCotAQQRMeuXaJJYpqsgOetbcBV8TZA+ANxgotRU3Hz48SWr7800DjHL6VJyQMlqh/I5jYZvFsTI5XcRa0cA/sLDv98iieMv98X++Sj7aEBCPwjwD9W2LNMdAqhJnQMyc5D9DGBwRhzukK4fK/647q9I1hoE6DDAO+ZBdh6gEaQ3V9hi27JS3tf/u3Hhv20kpQPldsgthQw0fOcnpc3fVK2EhosEmE33x9LJwKxM54Lj/Ap0SeoCBPz+qVw7uxnwmdQFOge8R1n0DDg1ISaxqSbJy0oE2pTvqhStbOK5FQy2ka6vOTVkoL6o5VaVWHX+yVoh7KMAvvPbNq1mQNmNBgGoiV55fry3R+jOweRpqQMBMO4wxImp5Cd/tGynVQBqg0UvT3z4eroyDMaxenvdHIBvE/GJYnzgb69MtjUDboMa2ceHCTQCoGqvPQBuSOZT5WT/fb8luOgANUFGxkoQYVja+Lq2iQm4ygKnS3tj//oJf9+PamUuzBJqJsY59Jz/9wh6+iJpFoIKXzIAqoI7solbFdksvmN7YKGgugAMNH3vqp9pN+vhtq5VMqT2PpAbjwrW59VmVAYL8iASCfdGBvm/bpQPrCvP1eP+RpYrXA5XKgTaBkA0Voqb1eupL4DToFo5YLlVZfadtkHKIqrPrFLIsXL8s0k3LaHuA6pQ7WzfBWjn7Abpe9ln4C11Qo9Pmb2aMgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-objectActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA8hJREFUaEPtmU1oU1kUx//nvthx4cJqX3RgGLsQBNG1tq8Z7axkwM0sxIX4hbhwIygibfPMeyapunY5iymzGAURZjEDAwoVm8SPhSiIKAjtQtAmiooLiyb3yEtNm76+5L37kjQp5C2Te879/+65H+eeS1jlH61y/egCtDuCNSOQyH3cWirNHVIXKO6kYvqdenbxqVlLxS8J8Txp6Ne9bDwBnA5IiIRKJ5W2LDHsB2BmC6zqmxk3UkP6AbedJ4CZfTsNcL9qJ077VgHU8r0MID5V2EsCk2HEBwbIFdT8M/aGBkgaelt3KtOB7QKEnU9NsGt7BMyp2cOa4P8tY3M+DE/bAC7cK+xnxmUwtjvCCXzFHtRHiEhpC11xADOTjwG4BCLDY8S/MvhsyoheDRqNFQMwc292QmppEPb7i6MZgEdqna7V9i0HSNx/95MscRLgo/7CXS0IWS6VrFRs8+1ati0DSEzm18kesgGcURa+3OAfSGklY5ueuP9qGYCZzceZySKC1gQAgPkvXtNjpXatn258CmlYSOSSg/qwW+B8usH9SSM6Ec/lTxM7iR/3hgEh4Jpk2Kkh/UVikiP2MBUbAggiYjFfchajtB0QM/fuOFg64D8H8QHQTQ3CsowNT8cffdLnPn8+KyXPpWKb1FLtYJ0tbbU84asCyRYOEmiMwTtq+P63JJAYH9AfxTOFbUTlNXRyPlmTdpsAKlIXQZyDDJJGGbx7/l++BSHM5EDfg7HMm91CRM6B+fdqyA4AWA5iZd/++hWymDaid+OZ/G8EGgXB65DrhAi4Jw3NsORj5VRC4A8AW+tN2Q6KwKJM54b2HcD3EtMFCLojqVw7uxHwGdVQ992OjkC5JqSJPRXw2qlEsMpFo1OonMx9/7gE211z8iirLC1qeVUlxrLvtwgU4wBO+K2bpgCoVSX8ASqiRx682hgp/jBaL6UOBsC3pMTFdCyaaUI6HRyg0llicnptqWfdeTBMd3pdH4D/kyQupgf7HtaKZIj7gDpAdefxzOw5IjECoJxeewEQ6CZBpmwj+thvCq44QEWQmZ09BYjzLHFk4SQm/C2KIm3/svGZn/AFP+qVucYi4BbmbLnOb5rGr+zB6MugwjsGQFVwWxZxoyLr2bdtDTQLqgsAQt33LvdIe6UenvNaJUQqJ3Hi3ut+KSNLajMqfQV5EAnzRuZoEF8ivfZw74dqPbXeyP4MVSoE0DoAmkgafeXrqS+A08CpHBDTPpXRd9oGKYuoPrNqETlhD/w446Ul1H1AFaqV7bsArRzdIL5XfQS+AaeCtE+rbksUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACCVJREFUaEO9Wn2MXFUVP+e96X5oa9UoYpUszrzzZlqLKDYhgAFaaKU2+M2W9Q8TNUQSQEsiRUjFVaHGNmoBMTUmaPwD2iIhqKR8WEBFGkLFUjbtzDtvpjYrVhpCXAtm1867x5zxvnXm9c28mR13b7LpdO65557fveeez0GYp1Gr1d4VRdF7lL3rui/n8/lX5mMr/H8wDcPwIgC4QkQuAwAVWv9eA4BJy/8sAHg7ALysf4i4DwAe9Tzvj/3uP2cA5XL5CsdxNiLi5QBwUkQeQcRHrNB/JaKZZuGYeRAA3gsAZ4nIBkTcAABLROS3xpjdpVLp0bmA6RlApVI5FxE3OY4zGkXRdkTc6/v+c3PZPAiC80Vkveu6Nxlj9ojIjmKx+GIvvLoGcODAgTctXbp0CwBsEpGHEXEbEf25l83a0TLzh0RkMyJ+AgB2TE1N3b5q1ap/dcO7KwC6AQDsRMQhAPiu53m7umHeK00YhlcDwC0iMg0A13ZzQJkAlKmI3A8ADyDi9Z7nnehVsF7owzA8Q0R+BABXIeJY1mF1BMDM3wSAcRHZ5Pv+nb0I0i9tEARfRcQdxphvFYvF8Xb82gJg5gsA4FkiyrylfoQVEScIgttyudxLhULhwSQvZhYAuJCI9qftkyrckSNHzs7lckdFZJ3v+0/0I2CntRMTEwNDQ0P3i8inAeCUPmLP8/Y2rwmCYC0iPl6v19+3fPnyvyT5nQZAmQ4ODv5aRF70fX/zfAk/OTk5PD09rcbg4/EeiPgPEfkUET2dALENEc+dmZm5cuXKlf9unjsNADNvBYD1AHAJEf1zPgCUy+UljuPsQsSPpfD/m95Is29h5rcAwO8AYC8R3doWgDopx3H2I+IXs17/XIEdOnTobcPDw3ry6zrwCKMo+kypVDoU01hreK8x5oJmZ9dyA0EQ/AwAhnzfH5urgJ3WVSqVd7iuu8vGTB23SLM+QRCoOZ/2ff8Ls2oXf9DYJpfLPSgiH+nGgfQKcGJi4szBwUE9+Uuy1orIQREZKxaL5WZadaiI+Ey9XtfbacROszfAzL8wxtQ62dysjdvNM7MGcSq8Rq1ZY/+pU6fGVqxYcSyNsFKpjDuOkyeizycBHBeRjb7v/z5rh17ma7XaSBRFuwHg/C7WPYWIV3fy9kEQXIyIu4no3bMAqtXqZcaYnUREXWzSNQkzFwBAhf9wF4v2RlG0sVQqncyiZWZ2HOfaQqGwr6FCYRhuE5E3E9F1WYuT83qluVzu74VCYWfzXLlcLuqDBYAPZvEUkYeIaBQR61m0Os/M9yDiG57nbW4AYOZnAeDWpAPJYsbMNwLAD5TOdd2L8/n8Hyy/FfbkV2bxaKgB4s89z5u1LFlrmPlSANhKRBfGAPTBrCGiatbieN7GSpoaDut3IvLa4sWLi8uWLXvVbvBUFi+NchFR00/V6+16ollr7AGpaj5JRCMxAL06VaGWNLATM2ZW4dc00yDinZ7nbdLvrLXQaDZ1iMi9vu9/ySb/BwHgTAC4kYh2ZIGw6ekbRJRDy+AlIjoja2E8X6vVilEUtdhoOzdBROdY4fcYY0Ydx0kDcQ8RXd90m+qVH9P/qwPTf9WcK5+YJmnemfmE67rnIDOfBwA/JaJuLEWDHzNrAPZwGmCNGnO53HYAWA4Aoykgvk9EX0uuDcPwBhG5KwahAjOzqqHqewNYMwhm/hMAXDMnAEEQaP76vTY39v4oiiZd1/0VALyzGYSI3OH7vubVqYOZ9fE3NEENin1LDdqkgZkFMBcVqlarG4wxv0mR4nUiWqLfHz58eGTRokXfdl33tnw+n+pVu1XZNLpZFbIq0fKIm6yIOhX10K8g4t1E9IDSa84wMDBwHBG1WNU8NIObDReY+RYA0EqDhhJqbQ4SkRYI+hotj9gCaDGj1Wp1lTHm+ZRdvk5EDdVh5h9qiaWZBhHXe57XCLKYWVXoygSPk0SksX1fw3r4FjPa4shsVqanP5DcyRhzebFY3Hf06NG31ut1fWQNT4uIWzzPu0M/d3gjTxPR6r6k/+/htDqyMAy/Y4zRPOCmmLn1zprYJ8eriLja87yJSqXyScdxHtKSi4YCVvgxRLyvjZCpFqhXQEEQbHccZ9rzvG/EsdBFIqKmVK1AYzQJl8Z/NH4PzHxV/NkCuAsRb0hb1C4x7xUAMx9GxGu0ONycD0yKyGcTuegLAJD26K4joh+nbczMe7QolZwTkZt939/Wq7BJeq2nIuIviUgr3v9LaDSdFJFjKR7vtMcYOxXVRWPMpY7jCBE1PGiz84k3F5G7fd//Sr/CW80YR8SROK2cvYFOKSUzr0PED2hGZYw5ISLHrafUx9QI2uICmFY1RORsx3FmEPE5EXne8zz1mn2Pjiml1d+ekvrmqHO+K3hWvvZJvb2ensoqCwmgq7KK1eGttnuyNqsSvVAAtGINAE9oF6hjYUsB2EaG6vWx2La3U96FAmAt28jU1NTqZOMjtbhrGxovZJXVFwJAXGYHgPPS6lVtS+dxY6PT41wIAFpe79To6Fj7j9PCdmX2TvF6vzYzLqtrgyX2MWk8M5sXcaNDRLQjeft8Vaxj4bQSLSJbEFHjsraNjZg+E4AS2obHTzRb0kxsvirXVm1vBoAT9Xr9y2kNjeQtdAVAF9kQW5PseW+zzszMjCcbGe1UsmsAMYOURveTc62nap1TRNYsSKM7eQIaO7mu+zkAWAsArwPA45oXdPNTAxutaillsTqoKIruW7CfGqRdpRaHReSj2lvo8scezyDiY1qc7dda9axC3W64UD+3+Q/fZENVhTDr2gAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABphJREFUaEO9WmnIVVUUXSuiuahopOLLIqTBBgtCC01Ty8JmS/sRVESBNgiVJVZaaag0WBlGYNEPrSyiQdTKskEjpNKSCBqlzAqJSAsbYMV67vt13/3uffe+93pvw+Mb7rn77HXOPntY5xEdEkkHAjgk1G8k+VMnpuL/oVTSaQDOBnBmGG3DfwHwXeg/DMC+ADbGZwWAZSRXtTt/ywAk2eDLAIwAsAXAkvjY6O9J/pk2TtLOAA4FYDDnxmdPAG8AeJbkslbANA1A0gkAbgJwKYA5AJaS/KCVySWdCmA0gFsAPAfgIZLrmtFVGYCk3QBMDeNfAjCb5MfNTFY0VtJJAG4FcL5BALiX5B9VdFcCEBPMB7ALgPtIPlNFebNjJI0DcDuAbQCuq7JApQBC6SIAiwFMJPlzs4Y1M17SAQAeBTAWwPiyxWoIQNJdAKbZbUjObcaQdsdKujHcaTpJ25ArhQAkDQKwmmTpLrVjrKQdANwJ4FOSL2R1SRKAwSTfz5sn1zhJhwP4BsAokq+3Y2CjdyXtBMDueRGAv32ISS7NhN+RAF4D0I/kt1l9fQCE0lcArCPpyNARkbQrAAeD81IT/ArgQpIrMyBmA3D4HkPyr/SzPAAzIzYPJflbJ6yX5ARm48/J0f+DdySdWyTtBeDtyDlTCgFEkrKvXVV2+lsFJmmfMH5UAx1fAriY5CfJmIiGCwAMSie7uh2Q9KRjPcnxrRpY4vP7hfGumcqkT/SR5POyjeSVycu9AKK2cRQ4vUoCKZs9J5ocFMYPrfDu2sgBn2fOgjP2e7E7tdopDeBpAF83irkVJs4dIslFnH3eVWuZ2IWdwDbkDZTknHAEySuyADa5uiT5TtkMzTyX1ONqE4ALtzJ5C8C4Rtle0pCoXg/uBSDJPjmf5FFlMzTzXNKRYfzJFd5z/PcCujRvKJK+iFppRc2FJDnO7k5yQtnLOb7tLf2RpIu9XpHUP9zmxAo6X3R5TvKfCmNt7zwAvztPJQBWA5iSTSBlyiRNAvBAjBtC8t1YkGNi5Y8r0xHPn0pHlrJ3JJ0BYCbJwQkAH5jhJL8qezl5HrWSW0NnVItbyP4kN8cE9ucycVh0+2m/nlM184drvkmyJwHgrbML1bWBjWaXZOOHZ8bMJeluzdts13I1WyQLSF4dzb/DpsPsJJJuaBpKtKd2oR0ZClwJug6vJOHfdTE6XlxPckAY7xbRbWceiHkkJ6Z201l5efw93T8dzkNP7d/Z8C7JfckAAxgI4AmSVSJFTZkkF2BuK/OkX/TKRweALIj7Sd6cfVHS9QAeTkAEALuh/d1Sl5klfQjgmlYBuEqdVQDg2KBTXgawfwbEDJLuq3NFkg9/zRMcUOIsJTuQrVB7AZiAataFTIu8mmPFVpKuNL1LTmB3u1kpyqqV/LUY7HYXisnqDnEqijipOEObVXuEpPtiG+dGxP83WZUWd3C95YIkN+hmGlxKONqsJel6pi2pO8RhUF0YlXQKgDU5s9xGsuY6kh4MiiU9bHRCUEmyC43J6NhC0rV9W5IXRusSWaywV98rnZURJFdI2huAD1mSaaeSnBHgis7ISpLD2rJ+++L1SWT3RB9ghqwmkgzKjX1WNgMYRnK9pAsAuAxYTNLRxu+5l1hYYGRuBGoWkCQzgu4L7kjOgP3WodRRIAGQGJen33VLch7GJr8HAIdCh8Q8yW3MWwDwWS2EkqvS/YBJ2UsyvehHAPIO3QSSj+VNLMkJzKRUViaTdNHYlgSf+jxJk8R1DY3byQ05GS/vMNaSSvii/VEkaxlUUjr5JMY6gt3QluX/eYZLlJ6k+KvUUkpyqj8+OirH300pALWiLSHAJJnVMK/kusqs9RqSTjptS3C0+S1lrF5TTX266uw0gxf2FTf1McDkUWVapZsAKtEqAcIu4FJhZBkT3S0AwVib4lxCspjYCgC+yLBf+0DXYnuRdBGAI5trK+efuouPInLXodMhtCGt3g0AKZp9YB5f1Yhe923JokaHs0sATK8XXnSUXXAkbWEuzd6oXm83ZkpKaPVpSY7J01l6eZFcdESX5cu3jjDWiXHBRLvpcV1WeLGRjC8FEAfbienx6JZmdZC5tttOBuBkeW3ehUZ2FyoBCBAurWv3ZdEPd/Ka1W5Td5FR5JKVAaS2OHvRbX6mJT41eE5TM52/6M6uQNDxlzvhAdga91gusat81cDVquurPQA4QS3s2lcN8rYyyOGzfLdQ8cseLsiWu7NrN1o17UJVJ+zW123+BfogD+TkdLQFAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACItJREFUaEO9Wn+MVNUV/s59+wOqyM7bFaxAsDBvFqnWak0MYhBQUEqUVssi/aNJawg7bxaKScFqqKyt0gip4sK8XUKqjX/IL43RlqBSxLZWYqwWdWNh3oIlFClkebMUaXfZefc0983MMjv7Zt7MLrvvn93MPec753v33HPuPfcRhukZt+3YeCndCQpeCO3kmWVTTg+HKbocoKHWjpnEuBfMd4GgnJ7ADAcCJzx8iUlE0AGcBOMkiPYz4c1kNPzXodofNAE9fvheQCyBoLvBOA/wHunSHq7CiXM9+BdWGj39nGuxq8dWYyJdxCSh8UKAFoIwBpL/CMidTmzam4MhUzaBmpYjNwmNVoFEA9jdSEx7zzZFPhiM8dotiduYeAFIWw2Wu6TLm7pW1n9SDlbJBK7d+rev/c8du5aAVQC/Lok2dEWNv5djrJBsTat9s2BeA9AiBjaN1s499eXyW/9bCnZJBNIG0AbQKCb8OhkN7ygFvFyZUGvHQ8R4DOBuSWgs5QUFEkiD8nYAuyuJmk5Hw2fKdawc+fGtHeN6mbcAWMxES4NeVlECequ9DoxmMK9yYpHny3FkqLJ6PPFTEG0CyyedWH1zIbyCBPQ2ewYk3ndMI3CWhuTsOhb6uMQTEBWfOdGpr+Zj6ZbNELjdaTQO+tnxda6m9R/XCa74AoLnO42RfUNysJjyuvYqffyo7QA/AKCXQYuSZnhvrorelpgHSW9LSn2jK3r9P/PhBhLY1V6ld1b/HuBPHDOyZricn/jsidEXRnXvIOD+SzaoS7r8/a4Vxrv9SFiJDQDd5NT13IeGGy7mjg0gELLs9QQsQAp3OiuN/wwHgbrfHh4ju8UOEH3XB/9LkvxAbm3RW+yrUIE/MbA3aRqPFyTgFakKcZCJfhK0+gdLbKz1aUjDaJWG5xfCYKADcB9MmtM+zcpksuELMiVn5Ba7fjOgxxMvgjDKMSNLB+tgMb0xW4/UVUpth7dnCnp8so9uJbaD0e3EIj/OqvcR8PY2VPGqJL6jlAISZD9//Op4+zWSqncwcGewLh8il5eeXVF/OFc2XVDpPXDqwezeqY9AyLJfIpbHiuXcYMP+EnqLPREVUGEzMxCDcFC6vUu7mqYf95PV40eamcSUpGn8SI1fmgHLPiUFL+lqjPw50EgZAjVbjk0Wwt0J4LYgNQYOVBE9VKza17QlZglJOx3T+Hofgdq2o3dJKduSpmEEGSlnfOxWe6pwsZOA75Sgt1dUu0s6H552Pkg2ZNm2EKLxbOPU/d4M6FbHBma+IhkzYkHK+ePpKa34d9Kc2pY7VmcdrpfQVNh8OxCT+TVnutGAOZQKlAUQittxIrrgmOE1aQJx+30p8Xh+AQkC01vtR8B4VskxtFlJc8pfPLw2ezokVNjcEIThjRP9zomG+zJLkE7NZnu2EFjvxIzbMzNgH3c1zD233DgapJwd17fYM0DYD8Lo9G/s9GpX1p9ffm2nZ0DDgUAstcsVNAGMWQBtVG80UAeACk3NxTuOaUzOEkg5KVwx4BhYBE237P0A5vYTIXreiYZXpWf1SDNIrCsIwfyCE4s8rA7/qV73EIBrADzimMamQBItdrVegQuOaVSQAui96H6WjBnjAhUzAnXWsXoJt1+Ozgy1O6Zxo+e8JnbBlQ1+JBiIJ02jqW824/Z8EN5KT6R8Uv1R6dzDyTz56T0Ut89UVmk3Ut1W+xZXYlsyapSSKTy4Osu+XwKv+xFWu0aBio1gXA+BhgEkGL9xYsbP8nVrrY4VDG7JklAOhyz7AAGzc3/L6oVa7Y80gWWDIhCKJ9YQ0TO+MybwTVHpnnB7tDcIuDqXBDM/nYxF1haaabX4ZS+8SFAJRa2lrGx+gukjMJgQCllHFxLkH3wc+coxjTHq95otn08mUflLltoTXU1TfKtqqSHrJ9cXQt6Cs+x+izgni6iicgrg0wBtdkxjtwfmHUSqTgGkmlW5jzrB9W0Xai37MQYWAZioml0ADjmmcfNQHPd0cxdxhkC/NFrXdvRWKeWH+YYY+HnSNLzQ0S37OXgtlpyHaYETC3sNqlrLfoOB+/IwzjumcdVQCQxMo/mFzHvD1ertV+UbIynvPttUv7/muS9qRHVK5Xqv0hLT2rOx8NPq/0JrhIF3k6YxZ6gEfApZx68Aqc4Bq7PgqjqDMMPHWCcTzUlGw+211pHvMcRrquXimEZDxvmlRPSyr5MFMlC5hHQrsREQ3Y4Z/oVXyNLNWd7mmMb0LFiOc374Ddn1oFv24r61obCsRAuBVvgpFTqYl0/A/pyJlqnm8KXtdKt9glz+Qe5ZtNayP2ZgwKJjRiwZMyw/w7pl71JNqQHrh/nRZCyyoVxn8+W9fqpGrzhRY5IXupdCJvEiwMfzK57vYswc99KxKGdDCHaihldB+xWfDDiDNyfNyMqhOu8lD6860+TssbKkI6WuSj3oW0yYSZBnwHxKEc3dtGUbYF5Xg/k6CNHDTB9o4A87zfBHl8P5okfKNLvyDvV+BC6Ho4Uwih7qlVK5bZWRJFBSWyUTw+sJtLCSMC+oEz1SBNIda+xj8J6ijS1FQF1kdLtjVYE6ns3thaZ0pAhkMtvkUdq5OfkXHwWau96FxsdBbfWRIJBts0vCLX79qoKt8+zFRrH2+ogQsGwudtFR/IIjeyws0GYvtl8fajbKttVBaM7WGD/MwMuL7EUHwBuRoqeGq2PdV1C9TjSvBWh1sYuNrHwgAS+9pi88tgIYx0TPDFfnOhO2jwI4Iym13O9CI38WSiLgKe1qrwp1VjePxDVrsq6nOf8io1BIlk4gg5B/0S01emew/VSvz+ny3BG56M5/A6odz6T9kIB5DHwFxtsssbuUTw1IYDEI8wm4koF9xO7LI/apgd9UquYwS74HzHeU+LHHeyToLdWcHWq2KjuESjU4Up/b/B9u0kgtWdqPkwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACJpJREFUaEO9WntsW9UZ/33HaZJCX7S5TmhalQ1NaAzGYJUgvk7pe5QKusGa0v0xaZvQkKBbK60BWl/b8XWKaLWtUJg6IcG0P+hrCMHWlcdK2OLrFPFYGdU0ac+q9BHfFPoC2sQ+33SufVPXvfa1kyaWolg+3+t3zznfd87vu4Qx+nQfONc8yF+0KvP1NPHoxjsm9Y+FK7oSRo2+fh0I3AUpFwHUyoxWIv6EiI4o+8w8m5mmE+EowEchxH4g95rZ1myN1v+IAUR6M3eRwCqAFgM4C8ZeZuyFmHDk9OmpH2+7my4UB7fmj9wwderpWZBDs4mwHOoPmAzwn1hiV7I9+NpIwNQMwOjtvwWC1gLUwVJuIfA+s73lnZE4N3pP3M6gZSTEeoB3Q/JWs735w1psVQ0g/t6xq+T5uogkrCXQKyDebIaCf63FWTlZI525FUydDF4hGFtFYzYZnzvz82psVwVAOSCI7QA3MuMJU9d2VmO8VhnDsh8gwuMAnWfIh6p5QL4AlFEAO5ixp45yj8T1lkytgdUiH7dOBLMceIYIKwGs9ntYFQFELDtGQJyJ1yZDwadqCWS0spF05qfEtJWl7Eq2N8fL2SsLwLBOtgEybeqa7yyNJthYjEVucSYqRN1HCX3GS6W2DMtmQIRMfUaflx/P4GJ9x6+Tsu6/xGJpIjzjzdEEWEk3tvtQvZzVsgPM9zEwJJhXJMLBfcU60dTJJUzyDSGyX+pqu/Z/pfYuAxA7xPXytP17YvowEdY6xyr4dekjEydxo0oG9170QadY8neS7drbl4KwNzPxLWKqdk/XTTRYPHYZgGgqs0kSLQsExJ1dd8w4MxYAOlP25AaCCv5uD/vHIHP3FdeW2IGTU3I5+WfBvC8RDm4oC0AVKRbUR6Af+u3+kQJ7rPfwNXVi4k4CLS1vg/+Vy/H9m+Y1/82VUdmQwc+T5LbiYnfJDBhW5gWAGk1dWz3SACvpxd8705QbHNwJ5kV+9r2yj2HZOwA+b+rBH7j6wwDyZxt6CcThagqIXwCl47GeTIusJ7Vs7vTTZfDBHGVXPxGa+Y9i2ULFTrHk+92z00UAlv1bSPmfSjnXz3G58c6ej2c1TGjYCYLub4P6JAZXd+szD3vJRnr74xDiy0ld+74aHwZgpOzjknhVtx78i7+T6iU2Wp/OEZzdBcLtVWj1BJB7oFK132hl5gmmXWZYu3YYQDQ9sIiZt5u69pUqnFQtErH6rycWKvhv+ioR9l2QWLU5rJ31kzUs+59E9FAi1LTfmYFo2t7MzFebevBhP+XScTWlVCdOmG3a9uKxSMq+QRB2MvANX5vML4shraNrAWV9ZQEYVuZZIvosEdI6HQCGlUmzpA2lBcTPWLTPXscSv3DkmOeZ4WCv+ho7cPLGXC63i0A3+dnIj9NvTL1pOLP46UR67fkkeJOpB0MFAPZhxoSFSX3av/2U3XHD6m9j0H4CTSz89kmgoeGG+NwpA3kH6PGzxcAOAbQyMI8IW9QT9dNR4xHr1PWEobdMXZvjAIik7OzpM01Xl14DKxkzLHs/gIXFMgR6KqE3rXVsqqUlRKy8DX7e1IM/2nCgvzmQFQdBaAFjnRnWtvqBcK6nUwY+S4a1OlLswfnc5x+ZejDop+iOq/VNhEtytLOKwIeSevBmFXxgQt3u3FC2wwsEMT+bCAcfGbZn9S8liNcdG1J2qf8qnTsps/ApTe+Glck0Bq66mWJ99m3MeC4R0vwzRcFYpM++lyRe8QKsTo1STtgC4KsiQB2lIAj4eULXflaqG7UG1jD4aReECthI2z1gzC/+zdWLpu33ifDgiAAYVn8nIJ70BBAQX/siK480CLwKJq0YBIG7E3owUm6mnc0/JJ2VoBKK2ksXZ6DkhOoCGMkSilr2cgb+4BHIOVPXJqvfN1rH5giqT0gORLv1azyrarVL1ktueAl5beKiLKL4nuMg9BPxtkQouEfJOxeR1ubjAKaXbOJ0Qm8aPi5E0gOPE7ACzLMAtBJwMKFrt44mcKV7ySZWPxjWpWk0lrLnSsK7pY4Y9FhSb3KWjpG2fwmGk3HcD5NYlgzNcAgqI22/CsY9JTbOmro2ZbQALkujpYWs8IRVSa8vdUa53OLEvJb9sZ5Pp3F9tsettAyKJPWm7vwDKbNHCG+bIW3BqAFcVsj6BkzkuNEMa+td4woUQG0ezgYCCCyI69MPRdL93yYWLyvKJRnWOpy1n7ZXC8aLXkGWy0C1AjJS9hYE6LzZ1mTkK7EiZ6V4ztS1G11jbnCegRB3uPshms6sdL87+8nKPE2gNV565S7mNQOw7L9DyAcVOXzxOG3ZRyBz3y2+ixqW/QEAj01HD5t606+8HEdS9u4CKVUyLB819ebNtQZbKq/4VIjA70xdm63GigBkXmDJhy+reB6b0b3u5fO0nA8hOKlrTgUtLj7Dmxu8LakHfzLa4J0Zdo4oNMe9VlZ1pYyoUk/i62DSAc6wlMfzpf7ioc0lwAqsxnUEugDB7yCLd8127f0rEXzFK2U+e9R2qfcCcCUCLWej4qXeAVAjrTKeAKqiVRQItQQgaLng3BI/Jnq8ACjGWlLgTUjeW5HYUgCcRsZgfY9UG7qQ28tN6XgBUJlNCJoj6gcXlDY+PMndwmb5wI9WHw8ALs0O4tu8+KoK9Hq+sVGJXh8PAHl6vXyjo3KDo3AtLEezVzqvjzYbubQ6A3G3xpQ5nlR25TY6iLGF6kRyrBhrNwrFRHNWRpiwvlJjw5WvqvuSb3gEfs2gIAFPjhVznU+VeJTAGSFyP/ZqaJQ+7qoAKCXV+OBTdnw82qw0TYuXNjLKrZOqAbgGShvdLOitkfKpiuckyQvHpdFd+gQUHQ9B3yPGEhDOAfwGS9pT1asGgldCNTgYk5igCtSL4/aqgddUKnIY4G8xc7ialz2IKAXQ64qcHW22qnkJVetwvF63+T9nAHfjRfzL0gAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-logSave{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA1RJREFUaEPtmT1oFEEUx9/bFLFKJzG2WiknZObFxlO8RtFC8SuFWlrYGBtRRNCghV9YmFQWgoVaaAS1ULRRRKvbmYBBQezVYBOIGFMkT0ZuYXPufOxdspuDO7jibmfe/H/z3sy8eYvQ4R/scP3QBSjbg8EemJyc3La4uHgUETcx82YAWNum+N8A8IWZrxLR41ZtBQForUeY+Xarg/j6MfMVIrroa5f13AuglOJWDLfQ56aU8mzefk4ApdR9ADiW12ir7RFxXAgxkqe/FUBrvYeZXzQbY+bh3t7ed5VKZTrPQM2eNHYQ8VGGjTtSypOhtq0AcRyPIeKptCEppTfkbAM3AxhbcRwfyYJg5nEiCvKEVZBS6hUA7EoEIeJ+IcTz0JlpbpcFYNrYIBDxlhDijG88lwd+IGJ/YoCZ1xPRd5/BUA/Mzc31VavVWRcEM18jovOuMV0eWLL7tBM+RoBS6isAbEzERFFUHRwc/JD8dnjishDikg2iSIAJADiU8uhdIjqRFuZYEweI6Gmuc8AWs6EhVK/XR3t6eg4zMyKiEQ/MvOSwQsS3iHhhZmbmY61W++UIp/dSyu2FAmit3zDzTjMoItaFEFuVUt8AYCB0ElLtZqWUfYUCZHlQKXUQAJ60AAC2Nbhia8AWglprAoB7jYQwmGXVACSKzRqJomgLAJjvBh/JqgPwCQ7dRAoPIZ/w5HkXIHQGQlOHvCd56PjdEOpoD6TShT/MfD19OXeFQCPnOYeIaxYWFiaGhoZGQ9Pv5nZthVA6XWjkOsMJRGj+b/IhIURtVQCkIUJvYKUCONLf/+67tjuw+T+rLlTYLmSDCDmwbOIbF6CgC1Vba8B3m3JBuMQXDuC4iGQy+MSXAhAKESK+NAAfRKj4UgFsEHnElw5gBGit9wFAUqy9kbco1vY2Gsfxsha2QrbV1K42gIimAPDvw8zTRLQuy0ZhpcU8AMZ7zPws1ee1lHJ3LoDlLu7mAcioZFuLvYWV130AU1NT/fPz8zuyqtWIuFcI8TKXBxo7QaEvOCyQD6SUx20T4K33F/iKKVOj7yrqBWhsiSv6ki8zNBBPCyHGfKEXBGCMrMBr1mZtPxHxEzN/jqLoYbr07oIIBvDNRFnPuwBlzXwybsd74C95KWhPrxIhsgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-logSave:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAthJREFUaEPtmTuMTUEYx3//TrWdeLRUJCrReISGUBCvLVAqNGiEiASh8IoClUKyBQqPBAWhsREqnYRE9NgoV0T3yci5m9mzc2bmnHvvOXuTO8ktbs7MN//ffPP45hsx4kUjrp8xQNcezPaAmW0EDgFrgLXA0j7F/wG+AlckPW5qKwvAzE4At5p2ktHusqTzGfUWVEkCmJk1MdygzQ1Jp+u2iwKY2X3gcF2jfdS/I8l5O7tUApjZTuBlwNIk8E7STHYvQMCTzs6jgI27ko7l2o4B3AaO+4YkJadcVcdlAGfLzA5WQGR7IgbwGtjuCdoj6UXuyJTrhQBcnQjETUmnUv3FAH4CyzwDKyX9SBnM9QAwIWk2AXFV0tlYnzGAebtPP9OnEPkNWO2J2STpQ+9/xBOXJF2ogmgT4Amw3xNyT9JRX1gEYq+kZyGIoQGY2UXgAPyPt5x4V8qH1TRwDvgk6XdkOr2XtLltgLfA1qLTj5I2mNl3YEWDdTQraaJtgAVryMz2AU8bAFC1Boc5hYKbgJmtB6aKgDCbZdEAeLuOWyPrit+qFMmiA0gJrjr4yu1an0Ip4Z6Hss6hMUBu6FD3JB9PodwRGGkPeOHCX+CafzmPDUAR85wBlrgwQ5LbUueV3AHsaxGbmR8uOAGTPYga8f+0pG2LBWAOosYNrFOAqith6L5bdQee81optG7nHIjE8DlnVlB8EVa3AxCJ4VMAleJbB2gAERXfCUANiKT4zgAyILLEdwoQgcgW3zlAIWA30EvWXq+bFBvESTzQxFZqSyqdAe7i7xIAvTIjaXnIRmupxZoAznvPvTZvJO2oCzDQ5G5NgPKbRGWyt7X0egrAzFwedktFtnqXpFe1PFAsxLYfOEIaH0g6UjUAyXx/i09MQY2pq2gSoPDEsB/5QuJPSnLrMFqyAAqIQT+zloX9Aj4DX4CHfuo9RpANkBqJrr6PAboa+V6/I++Bf0in3kCazcMZAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoom{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAkUExURUdwTMDAwL+/v7+/v7+/v76+vr+/v7+/v7+/v7+/v7+/v7+/vxtcv/AAAAALdFJOUwBVdZCpGdZE7C3B0wnY6AAAAV9JREFUOMt1lDtPwzAQx20ghGwVsHVJhQRDlsywWKqEULsw8FhRJ2iWiglGGJvFCw8xIVVCSEwkKU25L4ftpOHs2Cclsu7v370smxCLecRh+xOH8Ja5kGEs/6dtYf1XONcWZurbwwRCQjYZ9l7uHAPAOBHpI1QC/QSY9g84ldmnAn7Z3htwsfZnvSe54eJd5hlcC7gccxTwSETZEr5+714vLRdfkFraVNtetXLpR7ha+mkHCV1Y/q8ZOW8AgDkecsIaAEIcGbIGyLUq4KcBYl0o7QAB4FZACBMrQKpaJOCZQqyAIhgayYEpgD1DZghXCvBTNJFKmCvgzmhcCEsBwMjSRx6BslYftRX0JLYKrAsLqzDC54EFMwvy58QhMM8hFNq0UpwET+sLC9/4BmEBTytyRCIbDoAEiR1Qp1dbRxfoyv9g3ogaKVuXhVZZbtqX6Ez6H23PxG4CM259QDwt/h8ABfK8nDqSAAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoom:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwCCyreU7KZVRCDaZnETLwj6WaYVAAABUUlEQVRIx5WV2Q6EIAxFoVBWxf7/184AOnGUsvTBqDmXrqRCzNou1kwGtyZIQNuiD0P6evWTURFUMtIoPO+iVoGIZPkMqkdKA0jZgoJ6suQc2EoiGBldOoQ9HSDk5+GTs1Fqo9IlcEpvNv3qv0MBhSalIFSv3+MCJCY8fUaCxasycrMu9dp5VTUhubXZ6CqsAvn66ZAsx+e8fON37oT3bZ4aiRU0kDlavGSrQI95HPBZACt8FuCL16IruBVkzBeBW+CLYHvyfiDQd96IpHpOMqP++fAq9VMQ7rwrM5+6gjwG/3y/D/m8ylPYpvpAeqO7DfvwMPO9D6jnBabG56YFZx77fEjD+9AyLdYEhp8nxoNh5wmJtfY8AS+wzIZZrJNcC4h3wV8IH1p87Iyfnc6XVaAd7ICHAsebw97zgDSxZ/yvViiPuYUfTe650knM2+7Ywz9yOCklzohLOwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoomStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwDjmTC6Y0KBVakX8s8iC3JYR1wyAAABVUlEQVRIx62V2baFIAiGcwJRS97/aU/Zbtht0VzrcJOuvl/AAabpXy1RF0F/m2h2PX5mzucEuO9gMon1MY7KlG8w4LImC1XFQmxDGVkm1DYpXi0qS1gXTEGzKoqNS1ajAxPqJDikFLcFS+aukYJffRfXnAj9kYUXFVi86wzzPjuCFRXBwS3KaC/Pt02Ww7uf1jz3BVYtX/OsyDQFDn7yswPXb+Ovs39eJJWwxrOXV4thgC+//QBf/uMAXwAa4AuRBvgdWR58CB2B+eaRG5e8QO7Jn2sIAvzhbdsDnXzev8q0BengGXv8EciH3y1CY5++yI/BRNx82g/La7lc7b0Am/tUC6n3HoZ4SbDyy5BgzSNivV6wbPXeIPOpHlOU+CjkTQKvQOpXdRdJvn+5xttWQa4EZUOzluonT6+q72X6Zb0+T/lNhQd7hg9vm8LWUhW5gT4iN7c/0ZUo8Q3AttYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTP///////////////////////////////////8kBMKEAAAAJdFJOUwCt0igUwJdJePGbgLgAAADcSURBVDjL1ZMxEoIwFESTCaOWFDapqeicnAALTiANnaWlnVewDTMW/7b+aCAb8jkAVIHN2/lsNkrt73lf8M08nnF1pAYFR/dFmAAx7SIoi4iDbRrWDMAuQFzmmxAGbjjJgjj6dCjMCAND/o8RWQMzUgIRKYE/wsC5TJIRR74rBUZaqqXwLZEXT0WTDGwLW1aavJWQir9qadw++NgykWoMNtcykh8Q5EECgr5C+jjpGjHjPGhPU5eVzyfPJitfnUyhPg6ywMKZ7BygcYcsPCj1Kc8uXYPqpeSLs6PnC4w8S+8OJ9MLAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-narrow{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABm1JREFUaEPVWWuIVVUUXmvfYRosHzUZUUqKjkSXSe5Z+5qJhfawLELCR5ohPhKjjB4EWgkpkopRSWEPS1Mqy7Gkd0iPGaKy6ey9Z3z0opwEQytSMiS5NZ4Ve7j3dubMOfecO96buf/cx17rW+vba52919oH4RQfeIr7DxUjoLW+BhHHAsAAZh5gPwGghpl/TKVSHZ7n7T9+/Ph+ANg/atQo+1mRcUIEtNYzAWAiM09ExLPK8KgNADYw8wYp5Z9l6PUQ7RWBvON3AMClJ2Kcmb9DxAKR33qDVRYBrfUNzLwQESf0xliUDjPvR8T1RLSsXNzEBIwxc5l5fYSBnxGxxfO8bQCwN5VKHc7lcofr6+tzR44cGcTMg4UQgxDRfp8IAJdH4KwlooXlkEhEQGv9EAAsDQF+GwDWEdE75Rg1xlwFADcx83QAOCOg29SvX79ZDQ0NuSSYsQS01h8BwBUBsF45HnTIGHMBM9uFmR2Ya0bEWxzHORBHoiQBY8xmZp4RAFlNRIvigMuZN8asYOb7Azq7hBCTMpnMvlJYkQSMMUuYeblf2fO8ZdlsNiyVyvE3VNZ13XFCiGb/JCK+6DjOrLIJ2N0GAN4KKG4hIpuzVRtKqf6I+HvAwAIiWhdlNDQCSqntga3yUyK6rGqe+4Db2tqu8zzv3cJfiPiLfQYdx/k6zH4PAvlD6iWf8B7P8yZls9mO/4KAtaG1fhgAHvCReN1xnClJCXweOGFLhrAapJqamlLDhg372H9eMPNMKeXmoL1uEVBKTUXEJp+QJiJZDSfjMIOZgIibHMcJbrfdq1Gt9WMAcI8P/D9f/YJtpVQfW7n6isSDRHReyQhorXcCwMV5oWN1dXWD0un04bjVqta81to+i7bi7RpCiAmZTOYDv71iCu3cuXNQZ2env07fRkSTq+VcEtyQ7XwNEfkz5N8Ucl13khDiDR/b+ZlM5vkkhqopo5Q65Euj74loRGgElFJ3IuIThUnP8xqz2eyeajqXBFtrvR0AiuU7EXXbeIo/tNaPAMB9BVBmrpVS/l3KiDFmBjNPKbMbK0A+6zjOq3EktNavAUAxlUsR2AIA0ywgM3dIKYfFgRtjmph5apxc2Dwz/ySlHBynq7V+wV+tliLwPgBcmwdsJaLRceDGmD3MnI6Ti5j/g4j6x+lqrZ8EgGKTE0nAGPM0M9+Wj8BhKWV9HLjrukuFEPMBoMf+HKdrm3oimhcnFyy1IwkopRYj4soCYF1dXf3JPAMKfiilNiFisaSOJOC67nQhxCu+h3i0lLI1boWqPW+M6WDmoXk7+4io8L3rr+IuZIwZycztPocWEdHqajtYCl8pdSEifuOT2UhEc/w63fZUrfWvADCwixlii+M4408mAa31AgB4xufDHCLaGElAKbUZEf09cAMR/XCySGit7TXO3IJ9IcTQYI8cLKfvQsQ1BYVq9sBxi9La2jqipqbmMwA4Oy8bWtoHCTiIaBua0/JKB5hZSikPxhms9LxSah0i2i26MHoUct0eYt+2tRIRF5/MKGit7YFqD9auYU9tRBwfls49emJjzEBm3gEAxVKCmadJKbdWepWj8LTWHwLAlb75hUS0Nkw+6lbidkTspoCI6aibgUoSU0otR8QlBUxE3Oo4TleNlpiAFQwWUfa/XC7XZ8yYMccq6bAfS2v9OADcHUidqUT0RdkE8iS+BIBsQHkkEe2qNAml1HOIeGsA914isqQiR5LL3aMAcHoAYTIR2av0Ex7t7e3ne563mplvDoIh4le2xC+VurEE8pGwh1m3/sBec3ie96iUcndvWLS3t4/o7OycK4SYw8znRKZIDIlEBPIk7IrfGDB01JIAgJZsNtuShIjruplUKmWdtidsMLK2lFmFiPP8fUapSCQmYJ2L6cDsNfh7iLiXme1VjG3GOwFguOd5DYg4HAAa7O/Q3QTRXiavchxnhzHmIgCw3V6xWYoiURYBa9h13atTqdTssJxNEoEImQeJaIV/LimJsgkUjCilLrGXToho33mFrmoMod2I+LLneW9KKb8Nk01CotcE/AaVUmOFENcz8zgAGAIA54Y4dAgADiCifejtjcQnSSIWRgIAniIi+5q3cm/q/c40NzfX9e3bd4gQ4kxEPFhbW3sgnU7/lcThJJHwV8kViUBvHStHz0aCme2qe7W1tasbGxu7rkFPGQKR50Q5q/B/lP0HjgOoT/ydvaYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-narrow:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABS1JREFUaEPVmgmoVVUUhr+fosKC5ogGSsqIpKQwMqjIBpsICdMGQ7ISo4wGApugJCoxLClssElpNEuaI5okKjOI5onKhEQrSiKiaKA/Vu3zOu+8c88593qvj7fgcO99e6/h33udtdda+4khThri9tM1ALaPAQ4Btso9GwNfAyuBb7JHUnzvCq0XANuTgePSs00bFr0L3BuPpF/b4BswtSMAyfDzgYPXRznweQ7ID53IaguA7ROBGcC4TpRV8IRL3SNpVrtyGwOwfVYoaaHgW2AZsBT4CliXnt+BXYBd02d8D5c7rIWc+ZJigRpTIwC2rwauKZH6NLBA0jONNQK2jwJOAU4FtijwPgpMkRTga6kWgO2XgSMKkjoyvGiN7d3SwpxZGHsVOEPSmjoElQBsPwScVhAyR9LMOsHtjNu+Hri8wPMBMF7SqipZLQHYvgq4tsA8S1KZK7Vjb+lc24cDsfJ5ul/SlLYBpGjzVIFxsaTw2Z6R7S2BnwoKpkta0Epp6Q7YfqEQKl+XdGjPLM8Jtn088GzuT9/FOyjpkzL9AwCkQ+qB3OSPki9GOrBByPZ1wBU5ZY9LOrkpgDcLJ2zlFvYCke2NgFcK58VkSRFU+lG/HbA9EYg4nNE7kkb3wsg6mSWesEhSMdz2z0Zt3wRcnBO+wVc/0217WMpesyRxraSd6nbgfWC/NOm3OP4lRVowKGQ73sXIeDMaJ+nFvDF9LmQ78pR8nr5U0oRBsTwpLQnn8yTlPeR/F7I9HngiZ/A0SXcPJoDQbftHIHOjLyTt1WoHLgBuyQ3uKylC6KBS8UyS1C/w5F3oRuDSnLWbSPqzynrbkSdFfG6nGstE3inpkbrVsf0Y0OfKVQAWA5OSwJWS9mggPEJuhN5OaLWkqBMqyfZ9QF/4rALwPHBskrZC0pgGwsPFRtbNazH+s6TIfeoA3JqqwH/nVQG4HTg3SVsnadsGwiMznQYMiM91vKmgP7tuXjHVrgJwGXBDTuC2g3kGZHbYXhQVWva7CkCkyg/nAIyRtKJuhXo9bjuSyOFJzypJ2ff/XCqHdBTwXs6gmZLm9NrAKvm29wY+zc1ZKGlqnqeYzH0PbJ8mLJM0dpABTAfuyNkwVdLCKgDFGniEpC8HC4TtaONEOyej4cUaubgDFwLzcgw9q4HrFsV2pAxvANuluaWpfRHAAUAUNJsmpmhrjJa0tk5ht8dtRx0cITqjAYlcv5c49zJHKI2QmtEG3wXbcaDGwZrRamBsmTuX1cTxEi8H8qnEJElLur3KreTZfgk4Mjc+Q9L8svmtuhLnAUWGka06A90EZjt6UdGTymiJpCxHG6CqqrHVL4lKnMMkRaXWE7J9M3BRwXUmSnqrlcK61uLbwIEF5lGSou3XVbJ9F3BOQeglkgJUS2rS3P0F2LwgYYKkaKWvN9neGYgT//QSYR9Hil/lurUAQqjtOMyK9UEkWXMlfdgJihTn45CK1GCHChmVIBoBSCBixU8qKIrdmRuXG5LigqOWbO+fjA7jizsbqcxsINLsfJ3REkRjAAlEVQUWbfDncjc0UYz/BewJjCh8lgGNZvJsSctt75MabLUg2gKQQBydSrwyn63dgRYTrpQUdwR91BRE2wAyDbYPSk2nuPOKVW6X4t15EHhS0mdlzE1AdAygsFpxwX0CEJcUuwM7lhgULhW5VRgeHYnXmiBuAeI2SXHN272b+gKgzRKQrYFIBNdI+qOJwQ13oi8/68oOdGpYO3xpJ2LV/45zI/t3hSEDoBXYIQ/gH99H3EBePlczAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-expand{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABvJJREFUaEPVWWmIXEUQrnqzZseYxGM9QBNF4hrJEDfzqieuAY/gFRXPyMYbzUHwQBQUzx+KeBAJKhrRqEhEQWMU75AYXREPlunu3bjxIDGraIwiuJpFkL26pMK84eXtm3lvZieGFAzsTtf1VVd3V9Ug7OOE+7j/0BAAnZ2d2UmTJl2cyWTaAOBA+TDzgYjYDAB/y4eZ5fNjc3Pze7NmzfqlUYEbFwBr7TUAcAEzXwAA2bROIeKnzrkNALBeKWXTysXx1QXAGHMVANwEACePxzgzjyLi057nrczn81vr0VUTAGOMRPtmRDy7HmOVZBDxL+fcyr6+vgc7OjqGatGdGoC19hZmfrKC8t9LafEWAGzLZDL9g4OD/S0tLYM7d+6cyszTPM+biojy97kAcGoFPV8ODw8vbG9v354WRCoAxpiXAUDyPUrvAcAqIno/rUHhs9aeCQALmflyAJgUlkXEf5xzp6U9G4kAjDHcKMejeqy1xzDz/QBwXYyNViL6ISkwVQEYY74AgLkRJcuJ6M4kxbWsW2sfZua7ozJNTU1HtLW1/VFNV0UAxpjlAHBHWNg590ChUJCINZyKxeLpnud1RhSvmzJlyiWtra2DFS+AuAW5bQDg3cja60QkObvHSGstj588fGVi5heVUktqAqC1Xh+5Kj8nolP2mOchxd3d3ec55z6I2JpPROvj7I9JodIj9UqIebNz7qJCodD3fwAQG8aYhwDgnpC99UQ0Py2ALyMv7DIiWvV/OS921qxZk5k+ffon4fcCEZf4vv9i1I/ddkBrfSUivhpiMkSkanXeWnsFAFwCADNHR0fX1nPwYzJhAxGdkwTgJUQM38l1Rd8Y8yYAXFoytoOIjqo1CFrriQDwCyIeEsh6nndsPp//KayrvANbt25tHhgY+AsA9i8x/JvNZqfmcrn+Wo1bazuZ+fRAjogSH8w4G8YYOYtSOAZ0GxE9EQvAGCMRk8gF9BYRLajVeeFvIIDdrnOpt3zfnxcLwFr7CDPfFdqupfl8/oW9CUBsa63/DKXRz0R0TCUAzzDzDcGic25WoVDYvLcBGGPk/i+X7wMDA/vNmzdvJPCrnJvW2leZ+cpggZknKKWGqwGw1l7IzOcg4swoX/gMyNbH6HnO9/3XkgJkjFkLAOVUzmQyM2bPnr1lDABjjJTE58sCM/cppaanUK4BgJL44taZebtSalqSrDHmpXC1ysynKKU+j9uBj5hZ6nShLiJqT1Jurd3MzLkkvgrrfxPRwUmyxpinAODmSqkdTqE3mPmy0g70K6VakpQXi8X7Pc9bCgBHJvHGrEsjtCxJLlpqDw8PTwt3bGEAzzNzuerLZrMt9bwB4lCjrtHSLbQaEa8NgGaz2cm5XO6fuDPwGADcHjrE7UqprqQIxa03EoC1to+Zjy3ZGZN25R3QWt+IiCtDDt1JRNLU1EyNAqC1PgERvws58DYRSY1VpjKA3t7eaUNDQz+Xtybm1UuLpFEAjDFyRp4N2a1cSsTlLgCkaqyjwBoIQMrnRYH+0dHR/Jw5c3pid6B0YO5GxIdDV1ZdPbC19nLn3GOIOAUA1hLR4rS7F/B1dXUd39TUJEOFQ+U7RNzo+/5ZUT3RfsBHRGloZCgrtIOZlVLqt1odGC+/1noVIsoVHdAiIpJHbTcaU+ZqrR9BxHJRtycnEZVAGmOkfVwXOo9bJk+efGLcdGIMAGvtYcz8FQCUSwlm7lBKvTHeqKaVN8ZsBIAz0qRybKMRc6VKDuZ83/82rRP18mmtH0TE+0LyHxNRUOKMUVuxU7LWlkuLQGpwcHDi3Llz/63XuSQ5Y8zjAHBrwMfM/cy8oFAoxFWzu9iSRou/xtQ5bUT0dZIzta5rrZ+XyUNYDhFv931/RTVdVQF0d3e3OufKtXdI0QIiklH6uKmnp+co59zycC8SOrzfAEBHtdRNbLaLxeIMz/O+H3N9Ia52zq1QSvXWg6Knp+f4kZGRRZ7nXc/Mh1fSgYhVQSQCEMW9vb1HDA0NyS0UHS/KLF+2+NNqeRp2rlgs5jOZjDgtL+wBEcdlEv0oIi4O9xnVQKQCIEZkTuN53uqgZ4iJmMxrPkTEbXL4AECaceldj3POtSLicVKayP9x0UZEGSY/6vv+V9ZaaVHXpAGRGkBgtFgsnpXJZK6Ly9l6Uqkkcy8RlUsY+S4tiJoBBE5qrU9CxKvlZ1YA2G3UkRJIr4wxnXPvKKXGnLG0IOoGEHZSnn5EvIiZTwKAowEgrh39U2orRJRDLxOJz9IAjdsJAHiGiORn3sb8Uh91ZNOmTQeMjIwcjYgHIeJvEyZM2JHL5Wr6+TSsMwoCEVf4vr+re2zIDqSJ5Hh5BAQzS9R/IiJpf3fRPgOg4jsx3sjsbfn/AH37LF5g3/BiAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-expand:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABYZJREFUaEPVmXmoVVUUxn8f0WRzVkJlIWVGUmIJWWADTVaUldFclCnSQBQYNv1RSCWGVFRSlkRh0GBS2YBmJWGJUBHNNJiYWQSZfwTRxBfrce5jv/3Ovefc++4z3oKLD/fea61v7bXXdMQQJw1x/ekKANs7AOcA44Ddkt/2wJbk9z2wTNIP3TLcgADYvhw4q/gFiLq0ClgBLJf0Ud1DZfs6AmD7UuA64JiBCAf+BR4GHpH0TSe82gJgO6x9PXBqJ8JanPktQABzJP3VDu/aAGzfADzYhPnPQLjFUuA7YHPx+xPYHxhZ/Bt/nw4c14TP+8CFkjbWBVELgO2ngfD3nJYBCyW9Wldg7LN9cigKXATsnJ39HTi+7tuoBGDb3VI852P7QOBO4MoSGaMlfVtlmJYAbL8HHJsxmSdpdhXjdtZt3wPcWnJmhKRfWvFqCsD2PODm7PBdksJiXSfbJwDvZIzfAM6VFG+plEoBFNHmlezEc5LCZweNbEcSjMSX0iJJ09sFsDwLlaslTRo0zRPGts8AXstkTZYUOvWjfjdQJKnFyc7PgCmS1m0NACHD9t3AbYm8yNiT6wKIWJxm2JmSFm4t5QsA2wBvZ/liuqRFuR59bsD2JcAzyaYPJU1oV3nbF8fjAw4DlnTy8Es8YYWk06oAPJnF5I6sb/tF4LxC2CZJ+3VghGFAVK17JmdHSVqf8uq9AdtR+kZNsmOx4Y9I/5KiLGiLbEc4jLDYQ5IqE2aZANvxFqNwbNBNkh5oBiAsFpZr0FJJU9vSvNjcRQBRPKbhfJWkE5sBuBe4JVmcIemJ/xNAyLb9a+JGGyRF+dFLqQstAK5J1g6XFCG0berWDRQA8py0raR/et2z8YftiD4RhRq0naS/W2lv+2wgIkNEm5x630BRaufrj0l6tso6tpcAqSuPkfR1GYAoic8sFtZJOqgG8w+Ao6r2NVnfKCn6hJZkO4+MkyStLgPwJhB1etBaSRNrMA8XG1u1r8n6Fkl7VJ21/VDRBTa29nHt9A28AJxf7NosaXgN5lGZzgD2rdpbsh6N0MyqcyWl9si0Y0sBPA6kVd/wTnJAKNTlR/wUcEUCdBdJ0bX1UArgPmBWsnGipLVVFipb7zKAKCJHFXL6uV0K4NpiMtDQabakaGrapm4BsH0o8GWiwEuSosbqpRRARIQNyVq/rFcXSRcBxBt5NJHbvJQo812gVmOdA+sigCifpyX8x0v6uPQGCgDRWEeD3aCOemDb0XrGm9q1KKevrnt7jX22DwFiqLBX8X8rJZ2S88n7gSOBaGiiMg3aBEyQ9FO7Cgx0v+1ooiJEN2iapEhqfaispcyLuo5uYSAAbEf7GBOJBkXpcETZdKIMwN7AGiAtJS6QFIluq5DtlcBJdVy52VglD6nBa6ykLwYbge05wB2JnLckNUqcfuJbDbbS0qJxcJik6NQGhWzfD9yYMI9ucKqkGByXUtVo8ceSOmecpE+6jcB2XsqEiFmS5reSVQVgNNBbeyeMwioxSh8w2Y6GPzJ+2os0+H4OxPtr6rqVzbbtMcBXJZpGkTVf0qedoCjifCSpq4B9WvBoCaISQDC2PQKIN5GPF6MqjCuOsqOpn6bK2R5fKB3K75QpHpPouUAkvrTPaAqiFoACRMxpwuqNniE3WsxrXk++0EQzHr3rwVGSZP+WGTymD3MlrbEdLerzdUDUBtCQaDvSeXyQKPPZTrwpztwuKS1h4tZrgWgbQALkaOCy4hNrn1FHTRTxdmKQ8LKksjdWC0THADK/jtQ/BQhQBwBl7Wi4VNRWoXhMJN6tA7TJTSyQFJ95u/OlPlfEdjzOALI7EIVgzEfb+nyaGSh3p4h+Pd1jV26gjiUHuqe4ibD6eklRqvfQkAHQzABDHsB/7aMVT352GH8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.jb-pro-container .jb-pro-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.jb-pro-container .jb-pro-menu-list,.jb-pro-container .jb-pro-quality-menu-list,.jb-pro-container .jb-pro-scale-menu-list,.jb-pro-container .jb-pro-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;overflow:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.jb-pro-container .jb-pro-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-speed-menu-shown{visibility:visible;opacity:1}.jb-pro-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jb-pro-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container .jb-pro-quality-menu{padding:8px 0}.jb-pro-container .jb-pro-menu-item,.jb-pro-container .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-speed-menu-item{display:block;height:25px;line-height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jb-pro-container .jb-pro-menu-item:hover,.jb-pro-container .jb-pro-quality-menu-item:hover,.jb-pro-container .jb-pro-scale-menu-item:hover,.jb-pro-container .jb-pro-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-menu-item:focus,.jb-pro-container .jb-pro-quality-menu-item:focus,.jb-pro-container .jb-pro-scale-menu-item:focus,.jb-pro-container .jb-pro-speed-menu-item:focus{outline:none}.jb-pro-container .jb-pro-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-speed-menu-item-active{color:#2298fc}.jb-pro-container .jb-pro-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-wrap.jb-pro-volume-panel-wrap-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jb-pro-container .jb-pro-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:before{bottom:-54px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-volume-panel-handle:after,.jb-pro-container .jb-pro-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-controls,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-controls{width:100vh}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-play-big:after,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading{flex-direction:row}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading-text,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading-text{transform:rotate(270deg)}.jb-pro-container .jb-pro-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;left:10px;top:10px;min-width:200px;padding:5px 0;background-color:rgba(0,0,0,.9);border-radius:3px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu{cursor:pointer;font-size:12px;display:block;color:#fff;padding:10px 15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 2px rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu a{color:#fff;text-decoration:none}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span{display:inline-block;padding:0 7px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span.art-current,.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span:hover{color:var(--theme)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:last-child{border-bottom:none}.jb-pro-container.jb-pro-contextmenus-show .jb-pro-contextmenus{display:flex}.jb-pro-container .jb-pro-extend-dom{display:block;position:relative;width:100%;height:100%;display:none}.jb-pro-container-playback .jb-pro-controls{height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time-text{position:absolute;box-sizing:border-box;padding:0 5px;width:60px;left:-25px;top:15px;border:1px solid red;height:15px;line-height:15px;cursor:move;background-color:#fff;color:#000;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-hour{width:1440px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.half-hour{width:2880px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.ten-min{width:8640px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.five-min{width:17280px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-min{width:86400px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-day{height:100%;overflow:hidden}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-one-wrap{height:8px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-wrap{height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-btns{display:flex;align-items:center}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.active,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.active{background-color:orange;cursor:pointer}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.start,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.start{background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one:hover .jb-pro-playback-time-title-tips,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one:hover .jb-pro-playback-time-title-tips{visibility:visible;opacity:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips{pointer-events:none;position:absolute;left:0;top:100%;visibility:hidden;opacity:0;transform:translateX(13%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:#000;border-radius:4px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips.jb-pro-playback-time-title-tips-left{transform:translateX(-100%)}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips .jb-pro-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute{float:left;position:relative;width:60px;box-sizing:border-box;border-top:1px solid #999;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:left;height:25px;line-height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child{border-left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child .jb-pro-playback-time-hour-text{left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:after,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-text{position:absolute;left:-13px}.jb-pro-container-playback .jb-pro-playback-expand.disabled .jb-pro-icon-expand,.jb-pro-container-playback .jb-pro-playback-narrow.disabled .jb-pro-icon-narrow{cursor:no-drop}.jb-pro-container-playback .jb-pro-control-progress-simple{position:absolute;box-sizing:border-box;left:0;top:-2px;width:100%;display:flex;flex-direction:row;align-items:center;height:8px;cursor:pointer}.jb-pro-container-playback .jb-pro-control-progress-simple:hover{top:0;align-items:flex-start}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner{height:100%}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner .jb-pro-progress-indicator{transform:scale(1);visibility:visible}.jb-pro-container-playback .jb-pro-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.jb-pro-container-playback .jb-pro-progress-hover{display:none;width:0}.jb-pro-container-playback .jb-pro-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.jb-pro-container-playback .jb-pro-progress-indicator{visibility:hidden;align-items:center;justify-content:center;position:absolute;z-index:40;border-radius:50%;transform:scale(.1);transition:transform .1s ease-in-out}.jb-pro-container-playback .jb-pro-progress-indicator .jb-pro-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-progress-indicator:hover{transform:scale(1.2)!important}.jb-pro-container-playback .jb-pro-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700;white-space:nowrap}.jb-pro-container-playback.jb-pro-fullscreen-web .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-playback-time-inner{overflow-y:auto}.jb-pro-zoom-control{cursor:-webkit-grab;cursor:grab}.jb-pro-performance-panel{position:absolute;box-sizing:border-box;z-index:10000;left:0;top:0;padding:5px;font-size:10px;background:rgba(0,0,0,.2);color:#fff;max-height:100%;overflow-y:auto;display:none}.jb-pro-performance-panel .jb-pro-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.jb-pro-performance-panel .jb-pro-performance-item-block{height:10px}.jb-pro-tips-message{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));overflow:auto;box-sizing:content-box;display:none}.jb-pro-tips-message:before{color:hsla(0,0%,100%,.3);content:"X";font-family:Arial,Helvetica,sans-serif;font-size:40px;left:0;line-height:1;margin-top:-20px;position:absolute;text-shadow:2em 2em 4em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.jb-pro-tips-message .jb-pro-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.jb-pro-tips-message .jb-pro-tips-message-close .jb-pro-tips-message-close-icon{width:20px;height:20px;border-radius:10px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-color:#fff;background-size:100% 100%}.jb-pro-tips-message .jb-pro-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%;z-index:99999}.jb-pro-tips-message .jb-pro-tips-message-content .jb-pro-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class nc{constructor(e){var t;this.player=e,this.TAG_NAME="Control",this.extendBtnList=[],((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jb-pro-controls-show-auto-hide"):e.$container.classList.add("jb-pro-controls-show");const i=e._opt,s=i.operateBtns,r=`\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          00:00:00
          \n
          \n
          \n
          \n
          \n ${i.playbackConfig.showPrecisionBtn?`\n
          \n
          ${Wh.narrow}
          \n
          ${Wh.expand}
          \n
          \n `:""}\n
          \n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
          `:""}\n
          \n \n
          \n ${i.loadingIcon?`\n
          \n ${Wh.loading}\n
          ${i.loadingText}
          \n
          \n `:""}\n ${i.hasControl&&s.play?'
          ':""}\n ${i.hasControl&&s.ptz?`\n
          \n
          \n
          \n
          \n
          \n
          \n ${i.ptzMoreArrowShow?'\n
          \n
          \n
          \n
          \n ':""}\n
          \n
          \n ${i.ptzZoomShow?'\n
          \n
          \n \n \n 缩放+\n \n
          \n
          \n \n \n 缩放-\n \n
          \n
          \n ':""}\n ${i.ptzApertureShow?'\n
          \n
          \n \n \n 光圈+\n \n
          \n
          \n \n \n 光圈-\n \n
          \n
          \n ':""}\n ${i.ptzFocusShow?'\n
          \n
          \n \n \n 聚焦+\n \n
          \n
          \n \n \n 聚焦-\n \n
          \n
          \n ':""}\n ${i.ptzCruiseShow?'\n
          \n
          \n \n \n 巡航开\n \n
          \n
          \n \n \n 巡航关\n \n
          \n
          \n ':""}\n ${i.ptzFogShow?'\n
          \n
          \n \n \n 透雾开\n \n
          \n
          \n \n \n 透雾关\n \n
          \n
          \n ':""}\n\n ${i.ptzWiperShow?'\n
          \n
          \n \n \n 雨刷开\n \n
          \n
          \n \n \n 雨刷关\n \n
          \n
          \n ':""}\n
          \n
          \n `:""}\n ${i.hasVideo?`\n
          \n
          ${Wh.narrow}
          \n
          电子放大
          \n
          ${Wh.expand}
          \n
          ${Wh.zoomStop}
          \n
          \n
          \n
          \n
          00:00:00
          \n
          ${Wh.recordStop}
          \n
          \n `:""}\n\n ${i.hasControl?`\n
          \n
          \n
          \n ${i.showBandwidth?'
          ':""}\n
          \n
          ${i.controlHtml}
          \n
          \n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.normal?r:""}\n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.simple?'\n
          \n
          \n
          \n
          \n
          \n
          00:00
          \n
          \n
          \n ':""}\n
          \n ${i.playType===_&&i.playbackConfig.showRateBtn?'\n
          \n
          \n
          \n
          \n
          \n
          \n ':""}\n ${s.close?`
          ${Wh.close}
          `:""}\n ${s.logSave?`
          ${Wh.logSave}
          `:""}\n ${s.performance?`
          ${Wh.performance}
          ${Wh.performanceActive}
          `:""}\n ${s.aiFace?`
          ${Wh.face}
          ${Wh.faceActive}
          `:""}\n ${s.aiObject?`
          ${Wh.object}
          ${Wh.objectActive}
          `:""}\n ${s.aiOcclusion?`
          ${Wh.occlusion}
          ${Wh.occlusionActive}
          `:""}\n ${s.quality?'\n
          \n
          \n
          \n
          \n
          \n
          \n ':""}\n ${s.scale?'\n
          \n
          \n
          \n
          \n
          \n
          \n ':""}\n ${s.audio?`\n
          \n
          \n ${Wh.audio}\n ${Wh.mute}\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n `:""}\n ${s.play?`
          ${Wh.play}
          ${Wh.pause}
          `:""}\n ${s.screenshot?`
          ${Wh.screenshot}
          `:""}\n ${s.record?`
          ${Wh.record}
          ${Wh.recordStop}
          `:""}\n ${s.ptz?`
          ${Wh.ptz}
          ${Wh.ptzActive}
          `:""}\n ${s.zoom?`
          ${Wh.zoom}
          ${Wh.zoomStop}
          `:""}\n ${s.fullscreen?`
          ${Wh.fullscreen}
          ${Wh.fullscreenExit}
          `:""}\n
          \n
          \n
          \n `:""}\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jb-pro-poster"),configurable:!0}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".jb-pro-loading-bg"),configurable:!0}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".jb-pro-loading-bg-image"),configurable:!0}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jb-pro-loading"),configurable:!0}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".jb-pro-loading-text"),configurable:!0}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jb-pro-play"),configurable:!0}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jb-pro-play-big"),configurable:!0}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jb-pro-recording"),configurable:!0}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jb-pro-recording-time"),configurable:!0}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jb-pro-recording-stop"),configurable:!0}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jb-pro-pause"),configurable:!0}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jb-pro-controls"),configurable:!0}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jb-pro-controls-bottom"),configurable:!0}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jb-pro-controls-left"),configurable:!0}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jb-pro-controls-right"),configurable:!0}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jb-pro-volume"),configurable:!0}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jb-pro-volume-panel-wrap"),configurable:!0}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jb-pro-volume-panel-text"),configurable:!0}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jb-pro-volume-panel"),configurable:!0}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jb-pro-volume-panel-handle"),configurable:!0}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jb-pro-icon-audio"),configurable:!0}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jb-pro-icon-mute"),configurable:!0}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jb-pro-fullscreen"),configurable:!0}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jb-pro-fullscreen-exit"),configurable:!0}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jb-pro-record"),configurable:!0}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jb-pro-record-stop"),configurable:!0}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jb-pro-screenshot"),configurable:!0}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jb-pro-speed"),configurable:!0}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".jb-pro-controls-item-html"),configurable:!0}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jb-pro-controls-playback-time"),configurable:!0}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jb-pro-controls-playback-time-inner"),configurable:!0}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jb-pro-controls-playback-time-scroll"),configurable:!0}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jb-pro-controls-playback-time-list"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jb-pro-playback-time-one-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jb-pro-playback-time-second-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time-text"),configurable:!0}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jb-pro-controls-playback-btns"),configurable:!0}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jb-pro-playback-narrow"),configurable:!0}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jb-pro-playback-expand"),configurable:!0}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".jb-pro-ptz"),configurable:!0}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".jb-pro-ptz-active"),configurable:!0}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".jb-pro-ptz-controls"),configurable:!0}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".jb-pro-ptz-bg-active"),configurable:!0}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".jb-pro-ptz-control"),configurable:!0}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".jb-pro-ptz-arrow"),configurable:!0}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".jb-pro-ptz-expand"),configurable:!0}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".jb-pro-ptz-narrow"),configurable:!0}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".jb-pro-ptz-aperture-far"),configurable:!0}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".jb-pro-ptz-aperture-near"),configurable:!0}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".jb-pro-ptz-focus-far"),configurable:!0}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".jb-pro-ptz-focus-near"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePlay",{value:e.$container.querySelector(".jb-pro-ptz-cruise-play"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePause",{value:e.$container.querySelector(".jb-pro-ptz-cruise-pause"),configurable:!0}),Object.defineProperty(t,"$ptzFogOpen",{value:e.$container.querySelector(".jb-pro-ptz-fog-open"),configurable:!0}),Object.defineProperty(t,"$ptzFogClose",{value:e.$container.querySelector(".jb-pro-ptz-fog-close"),configurable:!0}),Object.defineProperty(t,"$ptzWiperOpen",{value:e.$container.querySelector(".jb-pro-ptz-wiper-open"),configurable:!0}),Object.defineProperty(t,"$ptzWiperClose",{value:e.$container.querySelector(".jb-pro-ptz-wiper-close"),configurable:!0}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".jb-pro-quality-icon-text"),configurable:!0}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".jb-pro-quality-menu"),configurable:!0}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".jb-pro-quality-menu-list"),configurable:!0}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".jb-pro-scale-icon-text"),configurable:!0}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".jb-pro-scale-menu"),configurable:!0}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".jb-pro-scale-menu-list"),configurable:!0}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".jb-pro-zoom"),configurable:!0}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".jb-pro-zoom-stop"),configurable:!0}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".jb-pro-zoom-narrow"),configurable:!0}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".jb-pro-zoom-expand"),configurable:!0}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".jb-pro-zoom-stop2"),configurable:!0}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".jb-pro-close"),configurable:!0}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".jb-pro-zoom-controls"),configurable:!0}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".jb-pro-performance-panel"),configurable:!0}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".jb-pro-performance"),configurable:!0}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".jb-pro-performance-active"),configurable:!0}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".jb-pro-face"),configurable:!0}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".jb-pro-face-active"),configurable:!0}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".jb-pro-object"),configurable:!0}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".jb-pro-object-active"),configurable:!0}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".jb-pro-occlusion"),configurable:!0}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".jb-pro-occlusion-active"),configurable:!0}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".jb-pro-contextmenus"),configurable:!0}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".jb-pro-speed-icon-text"),configurable:!0}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".jb-pro-speed-menu"),configurable:!0}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".jb-pro-speed-menu-list"),configurable:!0}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".jb-pro-logSave"),configurable:!0}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".jb-pro-control-progress-simple"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".jb-pro-progress-tip"),configurable:!0}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".jb-pro-progress-hover"),configurable:!0}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".jb-pro-progress-played"),configurable:!0}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".jb-pro-progress-indicator"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".jb-pro-playback-control-time"),configurable:!0}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".jb-pro-tips-message"),configurable:!0}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".jb-pro-tips-message-close"),configurable:!0}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".jb-pro-tips-message-content"),configurable:!0})})(e,this),e._opt.extendOperateBtns.length>0&&e._opt.extendOperateBtns.forEach((e=>{this.addExtendBtn(e)})),e._opt.extendDomConfig&&e._opt.extendDomConfig.html&&this.addExtendDom(e._opt.extendDomConfig),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls&&t.$controls.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner&&t.$controlsInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft&&t.$controlsLeft.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight&&t.$controlsRight.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0},configurable:!0}),oc(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e,r=e._opt,o=r.operateBtns;function a(e){const{bottom:i,height:s}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return Zr(i-e.y-r/2,0,s-r/2)/(s-r)}if(lo()&&i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(t.$controls,"click",(e=>{e.stopPropagation()})),o.play&&(i(t.$pause,"click",(t=>{r.playType===_&&r.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:qo(o.pauseFn)?o.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:qo(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))}))),i(t.$playBig,"click",(t=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:qo(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),o.screenshot&&i(t.$screenshot,"click",(t=>{t.stopPropagation(),qo(o.screenshotFn)?o.screenshotFn():e.video.screenshot()})),o.audio&&(lo()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jb-pro-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jb-pro-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=a(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=a(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),eo(t.$volumeOn,"display","none"),eo(t.$volumeOff,"display","block");const s=e.volume;e.volume=0,e._lastVolume=lo()?s:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),eo(t.$volumeOn,"display","block"),eo(t.$volumeOff,"display","none"),e.volume=lo()?e.lastVolume||.5:1}))),o.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),qo(o.recordFn)?o.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),qo(o.recordStopFn)?o.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),qo(o.recordStopFn)?o.recordStopFn():e.recording=!1})),o.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),qo(o.fullscreenFn)?o.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),qo(o.fullscreenExitFn)?o.fullscreenExitFn():e.fullscreen=!1}))),o.ptz){i(t.$ptz,"click",(e=>{e.stopPropagation(),eo(t.$ptzActive,"display","flex"),eo(t.$ptz,"display","none"),t.$ptzControl.classList.add("jb-pro-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),eo(t.$ptz,"display","flex"),eo(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")}));const n=_a();if(t.$ptzArrows.forEach((s=>{if(r.ptzClickType===K)i(s,"click",(i=>{i.stopPropagation();const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(rt.ptz,pa(s)),setTimeout((()=>{t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Di.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(rt.ptz,xi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let r=!1;i(s,n.down,(i=>{i.stopPropagation(),r=!0;const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(rt.ptz,pa(s))}));const o=()=>{r=!1,t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Di.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(rt.ptz,xi)};i(s,n.up,(e=>{e.stopPropagation(),r&&o()})),i(window,n.up,(e=>{e.stopPropagation(),r&&o()}))}})),r.ptzZoomShow)if(r.ptzClickType===K)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Li),setTimeout((()=>{e.emit(rt.ptz,xi)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Pi),setTimeout((()=>{e.emit(rt.ptz,xi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let l=!1,d=!1;i(t.$ptzExpand,n.down,(t=>{t.stopPropagation(),l=!0,e.emit(rt.ptz,Li)})),i(t.$ptzNarrow,n.down,(t=>{t.stopPropagation(),d=!0,e.emit(rt.ptz,Pi)}));const h=()=>{l=!1,d=!1,e.emit(rt.ptz,xi)};i(t.$ptzExpand,n.up,(e=>{e.stopPropagation(),l&&h()})),i(t.$ptzNarrow,n.up,(e=>{e.stopPropagation(),d&&h()})),i(window,n.up,(e=>{e.stopPropagation(),(l||d)&&h()}))}if(r.ptzApertureShow)if(r.ptzClickType===K)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Bi),setTimeout((()=>{e.emit(rt.ptz,Ri)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Ii),setTimeout((()=>{e.emit(rt.ptz,Ri)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let c=!1,u=!1;i(t.$ptzApertureFar,n.down,(t=>{t.stopPropagation(),c=!0,e.emit(rt.ptz,Bi)})),i(t.$ptzApertureNear,n.down,(t=>{t.stopPropagation(),u=!0,e.emit(rt.ptz,Ii)}));const p=()=>{c=!1,u=!1,e.emit(rt.ptz,Ri)};i(t.$ptzApertureFar,n.up,(e=>{e.stopPropagation(),c&&p()})),i(t.$ptzApertureNear,n.up,(e=>{e.stopPropagation(),u&&p()})),i(window,n.up,(e=>{e.stopPropagation(),(c||u)&&p()}))}if(r.ptzFocusShow)if(r.ptzClickType===K)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Mi),setTimeout((()=>{e.emit(rt.ptz,Ri)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Ui),setTimeout((()=>{e.emit(rt.ptz,Ri)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let f=!1,m=!1;i(t.$ptzFocusFar,n.down,(t=>{t.stopPropagation(),f=!0,e.emit(rt.ptz,Mi)})),i(t.$ptzFocusNear,n.down,(t=>{t.stopPropagation(),m=!0,e.emit(rt.ptz,Ui)}));const g=()=>{f=!1,m=!1,e.emit(rt.ptz,Ri)};i(t.$ptzFocusFar,n.up,(e=>{e.stopPropagation(),f&&g()})),i(t.$ptzFocusNear,n.up,(e=>{e.stopPropagation(),m&&g()})),i(window,n.up,(e=>{e.stopPropagation(),(f||m)&&g()}))}if(r.ptzCruiseShow&&(i(t.$ptzCruisePlay,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Fi)})),i(t.$ptzCruisePause,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Oi)}))),r.ptzFogShow&&(i(t.$ptzFogOpen,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Ni)})),i(t.$ptzFogClose,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,ji)}))),r.ptzWiperShow&&(i(t.$ptzWiperOpen,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,zi)})),i(t.$ptzWiperClose,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,Gi)}))),r.ptzSupportDraggable){function y(){t.isPtzControlDroging&&(t.isPtzControlDroging=!1,t.$ptzControl.style.cursor="grab",t.tempPtzPosition={x:0,y:0})}t.isPtzControlDroging=!1,t.tempPtzPosition={x:0,y:0},i(t.$ptzControl,n.down,(e=>{e.stopPropagation(),t.isPtzControlDroging=!0,t.$ptzControl.style.cursor="grabbing";const{posX:i,posY:s}=Ko(e);t.tempPtzPosition={x:i,y:s}})),i(t.$ptzControl,n.move,(e=>{if(t.isPtzControlDroging){e.stopPropagation();const{posX:i,posY:s}=Ko(e),r=t.tempPtzPosition.x-i,o=t.tempPtzPosition.y-s;t.$ptzControl.style.left=t.$ptzControl.offsetLeft-r+"px",t.$ptzControl.style.top=t.$ptzControl.offsetTop-o+"px",t.tempPtzPosition={x:i,y:s}}})),i(t.$ptzControl,n.up,(e=>{e.stopPropagation(),y()})),i(window,n.up,(e=>{e.stopPropagation(),y()}))}}if(o.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),o.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),o.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),o.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),o.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)}))),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(eo(t.$controls,"display","block"),b())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(eo(t.$controls,"display","block"),b()))})),i(e.$container,"mouseout",(()=>{v(),eo(t.$controls,"display","none")}));let A=null;const b=()=>{v(),A=setTimeout((()=>{eo(t.$controls,"display","none")}),1e3*e._opt.controlAutoHideDelayTime)},v=()=>{A&&(clearTimeout(A),A=null)}}if(e._opt.playType===_){let S=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("jb-pro-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("jb-pro-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=$o(t);if(i.matches("div.jb-pro-speed-menu-item")){const t=i.dataset;e.emit(rt.playbackPreRateChange,t.speed)}}))),S===Q.normal?(i(t.$playbackNarrow,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.narrowPrecision()})),i(t.$playbackExpand,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.expandPrecision()})),i(t.$playbackTimeList,"click",(t=>{const i=$o(t);i.matches("div.jb-pro-playback-time-minute-one")&&e.playback&&e.playback.seek(i.dataset)})),e._opt.playbackConfig.supportWheel&&i(t.$playbackTimeInner,"wheel",(t=>{t.preventDefault(),(t.wheelDelta?t.wheelDelta/120:-(t.detail||0)/3)>0?e.playback&&e.playback.expandPrecision():e.playback&&e.playback.narrowPrecision()}))):S===Q.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let s=0,r=0;if(e.isInWebFullscreen())s=i.touches[0].clientY/e.height,r=s*e.playback.totalDuration;else{const o=Zh(t,e.playback.totalDuration,i);s=o.percentage,r=o.second}e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mousemove",(i=>{eo(t.$playbackProgressTip,"display","block");const{width:s,time:r}=Zh(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=r;const o=t.$playbackProgressTip.clientWidth;s<=o/2?eo(t.$playbackProgressTip,"left",0):s>t.$playbackProgress.clientWidth-o/2?eo(t.$playbackProgressTip,"left",t.$playbackProgress-o+"px"):eo(t.$playbackProgressTip,"left",s-o/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{eo(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:s,percentage:r}=Zh(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}o.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("jb-pro-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("jb-pro-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=$o(t);if(i.matches("div.jb-pro-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),o.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("jb-pro-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("jb-pro-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=$o(t);if(i.matches("div.jb-pro-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),o.zoom&&(i(t.$zoom,"click",(t=>{t.stopPropagation(),e.zooming=!0})),i(t.$zoomStop,"click",(t=>{t.stopPropagation(),e.zooming=!1}))),i(t.$zoomExpand,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.expandPrecision()})),i(t.$zoomNarrow,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.narrowPrecision()})),i(t.$zoomStop2,"click",(t=>{t.stopPropagation(),e.zooming=!1})),o.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",eo(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e;let s={};function r(e,t){s[e]?s[e].push(t):s[e]=[t]}t.keys=s,r(bi,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(vi,(()=>{e.volume+=.05})),r(_i,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=s[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),Go(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),Go(e._opt.ptzPositionConfig)&&this.updatePtzPosition(e._opt.ptzPositionConfig),this.kbpsShow="0 KB/s",this.player.debug.log("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!rc(this.$performancePanel)){const e=this.player.$container.querySelector(".jb-pro-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$performancePanel}if(this.$poster){if(!rc(this.$poster)){const e=this.player.$container.querySelector(".jb-pro-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$poster}if(this.$loading){if(!rc(this.$loading)){const e=this.player.$container.querySelector(".jb-pro-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loading}if(this.$loadingBg){if(!rc(this.$loadingBg)){const e=this.player.$container.querySelector(".jb-pro-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loadingBg}if(this.$controls){if(!rc(this.$controls)){const e=this.player.$container.querySelector(".jb-pro-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$controls}if(this.$playBig){if(!rc(this.$playBig)){const e=this.player.$container.querySelector(".jb-pro-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$playBig}if(this.$recording){if(!rc(this.$recording)){const e=this.player.$container.querySelector(".jb-pro-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$recording}if(this.$ptzControl){if(!rc(this.$ptzControl)){const e=this.player.$container.querySelector(".jb-pro-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$ptzControl}if(this.$zoomControls){if(!rc(this.$zoomControls)){const e=this.player.$container.querySelector(".jb-pro-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$zoomControls}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!rc(this.$contextmenus)){const e=this.player.$container.querySelector(".jb-pro-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$contextmenus}if(this.$tipsMessage){if(!rc(this.$tipsMessage)){const e=this.player.$container.querySelector(".jb-pro-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$tipsMessage}if(this.$extendDom){if(!rc(this.$extendDom)){const e=this.player.$container.querySelector(".jb-pro-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$extendDom}try{delete this.$tipsMessageContent,delete this.$tipsMessageClose,delete this.$playbackProgressTime,delete this.$playbackProgressIndicator,delete this.$playbackProgressPlayed,delete this.$playbackProgressHover,delete this.$$playbackProgressTip,delete this.$playbackProgress,delete this.$logSave,delete this.$speedMenuList,delete this.$speedMenu,delete this.$speedText,delete this.$contextmenus,delete this.$occlusionDetectActive,delete this.$occlusionDetect,delete this.$objectDetectActive,delete this.$objectDetect,delete this.$faceDetectActive,delete this.$faceDetect,delete this.$performanceActive,delete this.$performance,delete this.$performancePanel,delete this.$zoomControls,delete this.$close,delete this.$zoomStop2,delete this.$zoomExpand,delete this.$zoomNarrow,delete this.$zoomStop,delete this.$zoom,delete this.$scaleMenuList,delete this.$scaleMenu,delete this.$scaleText,delete this.$qualityMenuList,delete this.$qualityMenu,delete this.$qualityText,delete this.$ptzWiperClose,delete this.$ptzWiperOpen,delete this.$ptzFogClose,delete this.$ptzFogOpen,delete this.$ptzCruisePause,delete this.$ptzCruisePlay,delete this.$ptzFocusNear,delete this.$ptzFocusFar,delete this.$ptzApertureNear,delete this.$ptzApertureFar,delete this.$ptzNarrow,delete this.$ptzExpand,delete this.$ptzArrows,delete this.$ptzControlCircular,delete this.$ptzBgActive,delete this.$ptzControl,delete this.$ptzActive,delete this.$ptz,delete this.$playbackExpand,delete this.$playbackNarrow,delete this.$controlsPlaybackBtns,delete this.$playbackCurrentTimeText,delete this.$playbackCurrentTime,delete this.$playbackTimeListSecond,delete this.$playbackTimeListOne,delete this.$playbackTimeList,delete this.$playbackTimeScroll,delete this.$playbackTimeInner,delete this.$playbackTime,delete this.$controlHtml,delete this.$speed,delete this.$screenshot,delete this.$recordStop,delete this.$record,delete this.$fullscreenExit,delete this.$fullscreen,delete this.$volumeOff,delete this.$volumeOn,delete this.$volumeHandle,delete this.$volumePanel,delete this.$volumePanelText,delete this.$volumePanelWrap,delete this.$volume,delete this.$controlsRight,delete this.$controlsLeft,delete this.$controlsInner,delete this.$controls,delete this.$pause,delete this.$recordingStop,delete this.$recordingTime,delete this.$recording,delete this.$playBig,delete this.$play,delete this.$loadingText,delete this.$loading,delete this.$loadingBgImage,delete this.$loadingBg,delete this.$poster,delete this.$extendDom,delete this.controlsRect,delete this.controlsInnerRect,delete this.controlsLeftRect,delete this.controlsRightRect,delete this.controlsPlaybackTimeInner,delete this.controlsPlaybackBtnsRect}catch(e){}this.keys=null,this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("jb-pro-controls-show-auto-hide"),this.player.$container.classList.remove("jb-pro-controls-show")),this.player.debug.log("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,s=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(s>r){const s=(t-i*r)/2;e.$container.style.padding=`0 ${s}px`}else{const s=(i-t/r)/2;e.$container.style.padding=`${s}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debug.log("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||ao()?(e.getRenderType()===W||e.getRenderType()===$)&&this._initLoadingBackground():this._initLoadingBackgroundForRatio(),ic(this.$loadingBg,"display","block"),e._opt.loadingBackground="",e._opt.loadingBackgroundWidth=0,e._opt.loadingBackgroundHeight=0)}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".jb-pro-icon-loading");t&&(e.width&&ic(t,"width",`${e.width}px`),e.height&&ic(t,"height",`${e.height}px`),e.background&&ic(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(ic(t,"animationName","none"),ic(t,"animationDuration",0),ic(t,"animationTimingFunction","ease"),ic(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const s=this.player._opt;let r=0;this.player.isControlBarShow()&&(r=s.playType===_?Yt:Kt,i-=r);const o=this.player._opt.loadingBackgroundWidth,a=this.player._opt.loadingBackgroundHeight,n=o/a,l=e[0]/e[1];if(this.$loadingBgImage.src=this.player._opt.loadingBackground,n>l){const e=l*a/o;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${r}px)`,this.$loadingBgImage.style.padding=`0 ${(t-t*e)/2}px`}else{const e=o/l/a;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${r}px)`,this.$loadingBgImage.style.padding=(i-i*e)/2+"px 0"}}_initLoadingBackground(){const e=this.player;let t=e.height;const i=e._opt;if(this.player.isControlBarShow()){t-=i.playType===_?Yt:Kt}let s=e.width,r=t;const o=i.rotate;270!==o&&90!==o||(s=t,r=e.width),this.$loadingBgImage.width=s,this.$loadingBgImage.height=r,this.$loadingBgImage.src=e._opt.loadingBackground;let a=(e.width-s)/2,n=(t-r)/2,l="contain";i.isResize||(l="fill"),i.isFullResize&&(l="none");let d="";"none"===i.mirrorRotate&&o&&(d+=" rotate("+o+"deg)"),"level"===i.mirrorRotate?d+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(d+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=l),this.$loadingBgImage.style.transform=d,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=a+"px",this.$loadingBgImage.style.top=n+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debug.warn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debug.warn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debug.warn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=na(_s);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",s=this.$controlsRight,r=e.createdMoment||Sr,o=e.activeIcon&&e.activeClick,a=`\n
          \n ${e.icon?`
          \n \n ${e.iconTitle?`\n ${e.iconTitle}\n `:""}\n
          `:""}\n ${e.activeIcon?`
          \n \n ${e.activeIconTitle?`\n ${e.activeIconTitle}\n `:""}\n
          `:""}\n
          \n `,n=Array.from(s.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):tc(s,a);const l=s.querySelector(`.jb-pro-controls-item-wrap-${i}`),d=e.icon?s.querySelector(`.jb-pro-icon-extend-${i}`):null,h=e.icon?s.querySelector(`.jb-pro-control-extend-${i}`):null,c=e.activeIcon?s.querySelector(`.jb-pro-icon-extend-${i}-active`):null,u=e.activeIcon?s.querySelector(`.jb-pro-control-extend-${i}-active`):null,{events:{proxy:p},debug:f}=this.player;e.icon&&(ic(d,"background",`url(${e.icon}) no-repeat center`),ic(d,"background-size","100% 100%"),ic(h,"display",r===vr?"flex":"none"),e.iconHover&&(p(d,"mouseover",(()=>{ic(d,"background",`url(${e.iconHover}) no-repeat center`),ic(d,"background-size","100% 100%")})),p(d,"mouseout",(()=>{ic(d,"background",`url(${e.icon}) no-repeat center`),ic(d,"background-size","100% 100%")})))),e.activeIcon&&(ic(c,"background",`url(${e.activeIcon}) no-repeat center`),ic(c,"background-size","100% 100%"),ic(u,"display","none"),e.activeIconHover&&(p(c,"mouseover",(()=>{ic(c,"background",`url(${e.activeIconHover}) no-repeat center`),ic(c,"background-size","100% 100%")})),p(c,"mouseout",(()=>{ic(c,"background",`url(${e.activeIcon}) no-repeat center`),ic(c,"background-size","100% 100%")})))),e.click&&d&&p(d,"click",(t=>{t.preventDefault(),o&&(ic(h,"display","none"),ic(u,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&c&&p(c,"click",(t=>{t.preventDefault(),ic(h,"display","flex"),ic(u,"display","none"),this.player.isInMulti()?e.activeClick.call(this.player,t,this.player._opt.multiIndex):e.activeClick.call(this.player,t)})),this.extendBtnList.push({name:i,createdMoment:r,$iconContainer:l,$iconWrap:h,$activeIconWrap:u})}toggleExtendBtn(e,t){const i=this.extendBtnList.find((t=>t.name===e));i&&i.$activeIconWrap&&i.$iconWrap&&(Do(t)||(t="none"===to(i.$activeIconWrap,"display",!1)),t?(ic(i.$iconWrap,"display","none"),ic(i.$activeIconWrap,"display","flex")):(ic(i.$iconWrap,"display","flex"),ic(i.$activeIconWrap,"display","none")))}getExtendBtnActive(e){const t=this.extendBtnList.find((t=>t.name===e));let i=!1;return t&&t.$activeIconWrap&&(i="none"!==to(t.$activeIconWrap,"display",!1)),i}addExtendDom(e){if(this.player.debug.log(this.TAG_NAME,"addExtendDom"),e.html){const t=`\n
          \n ${e.html}\n
          \n `;this.player.$container.insertAdjacentHTML("beforeend",t),Object.defineProperty(this,"$extendDom",{value:this.player.$container.querySelector(".jb-pro-extend-dom"),configurable:!0}),e.showBeforePlay&&ic(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(Do(e)||(e="none"===to(this.$extendDom,"display",!1)),ic(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.player.debug.log(this.TAG_NAME,"updateExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML=e)}removeExtendDom(){this.player.debug.log(this.TAG_NAME,"removeExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML="")}updateLoadingText(e){this.$loadingText&&(this.$loadingText.innerText=e)}getExtendBtnList(){return this.extendBtnList}showTipsMessage(e,t){const i=this.$tipsMessage,s=this.$tipsMessageContent;if(i){const r=`\n
          ${e}
          \n ${t?`
          Error Type:${t}
          `:""}\n `;s.innerHTML=r,ic(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage,t=this.$tipsMessageContent;e&&(t.innerHTML="",ic(e,"display","none"))}updatePtzPosition(e){const t=this.$ptzControl;if(Go(e)&&t){let i="auto";e.left&&(i=Number(e.left)===e.left?e.left+"px":e.left),ic(t,"left",i);let s="auto";e.top&&(s=Number(e.top)===e.top?e.top+"px":e.top),ic(t,"top",s);let r="auto";e.bottom&&(r=Number(e.bottom)===e.bottom?e.bottom+"px":e.bottom),ic(t,"bottom",r);let o="auto";e.right&&(o=Number(e.right)===e.right?e.right+"px":e.right),ic(t,"right",o)}}showPlayBtn(){ic(this.$playBig,"display","block")}toggleBar(e){this.$controls&&(Do(e)||(e="none"===to(this.$controls,"display",!1)),ic(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==to(this.$controls,"display",!1)),e}}ac(".jb-pro-container{position:relative;width:100%;height:100%;overflow:hidden}.jb-pro-container.jb-pro-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}.jb-pro-container .jb-pro-loading-bg-for-ios{position:absolute;z-index:100;left:0;top:0;right:0;bottom:0;height:100%;width:100%;opacity:0;visibility:hidden;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-loading-bg-for-ios.show{opacity:1;visibility:visible}");var lc=e=>{const{_opt:t,debug:i,events:{proxy:s}}=e;if(t.supportDblclickFullscreen&&s(e.$container,"dblclick",(t=>{const i=$o(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),s(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,i.log("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(i.log("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),lo()&&s(document,["click","contextmenu"],(t=>{sc(t,e.$container)?(ca(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(rt.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(rt.blur))})),t.isCheckInView){const t=bo((()=>{e.emit(rt.inView,function(e){const t=e.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight,s=window.innerWidth||document.documentElement.clientWidth,r=t.top<=i&&t.top+t.height>=0,o=t.left<=s&&t.left+t.width>=0;return r&&o}(e.$container))}),200);s(window,"scroll",(()=>t()))}if(t.autoResize){const t=bo((()=>{e.resize()}),500);s(window,["resize","orientationchange"],(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&s(screen.orientation,"change",(()=>{t()}))}};class dc{static init(){dc.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in dc.types)dc.types.hasOwnProperty(e)&&(dc.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=dc.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,s=Array.prototype.slice.call(arguments,1),r=s.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let o=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return dc.box(dc.types.trak,dc.tkhd(e),dc.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return dc.box(dc.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return dc.box(dc.types.mdia,dc.mdhd(e),dc.hdlr(e),dc.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return dc.box(dc.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?dc.constants.HDLR_AUDIO:dc.constants.HDLR_VIDEO,dc.box(dc.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?dc.box(dc.types.smhd,dc.constants.SMHD):dc.box(dc.types.vmhd,dc.constants.VMHD),dc.box(dc.types.minf,t,dc.dinf(),dc.stbl(e))}static dinf(){return dc.box(dc.types.dinf,dc.box(dc.types.dref,dc.constants.DREF))}static stbl(e){return dc.box(dc.types.stbl,dc.stsd(e),dc.box(dc.types.stts,dc.constants.STTS),dc.box(dc.types.stsc,dc.constants.STSC),dc.box(dc.types.stsz,dc.constants.STSZ),dc.box(dc.types.stco,dc.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?dc.box(dc.types.stsd,dc.constants.STSD_PREFIX,dc.mp3(e)):dc.box(dc.types.stsd,dc.constants.STSD_PREFIX,dc.mp4a(e)):"avc"===e.videoType?dc.box(dc.types.stsd,dc.constants.STSD_PREFIX,dc.avc1(e)):dc.box(dc.types.stsd,dc.constants.STSD_PREFIX,dc.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return dc.box(dc.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return dc.box(dc.types.mp4a,s,dc.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return dc.box(dc.types.esds,s)}static avc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return dc.box(dc.types.avc1,r,dc.box(dc.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return dc.box(dc.types.hvc1,r,dc.box(dc.types.hvcC,t))}static mvex(e){return dc.box(dc.types.mvex,dc.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return dc.box(dc.types.trex,i)}static moof(e,t){return dc.box(dc.types.moof,dc.mfhd(e.sequenceNumber),dc.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return dc.box(dc.types.mfhd,t)}static traf(e,t){let i=e.id,s=dc.box(dc.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=dc.box(dc.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=dc.sdtp(e),a=dc.trun(e,o.byteLength+16+16+8+16+8+8);return dc.box(dc.types.traf,s,r,a,o)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,dc.box(dc.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let s=e.duration,r=e.size,o=e.flags,a=e.cts;return i.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),dc.box(dc.types.trun,i)}static mdat(e){return dc.box(dc.types.mdat,e)}}dc.init();class hc extends wa{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this.mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource,this.isDecodeFirstIIframe=!!ua(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=window.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=Aa(),this.canvasRenderInterval=null,e._opt.mseUseCanvasRender?(this.$videoElement=document.createElement("video"),this._useManagedMediaSource?(this.$videoElement.disableRemotePlayback=!0,this.$videoElement.srcObject=this.mediaSource):this.$videoElement.src=this.mediaSourceObjectURL,this.initVideoEvents()):(this._useManagedMediaSource?(this.player.video.$videoElement.disableRemotePlayback=!0,this.player.video.$videoElement.srcObject=this.mediaSource):this.player.video.$videoElement.src=this.mediaSourceObjectURL,this.$videoElement=this.player.video.$videoElement),this._bindMediaSourceEvents(),this.audioSourceBufferCheckTimeout=null,this.audioSourceNoDataCheckTimeout=null,this.hasPendingEos=!1,this.player.isPlayback()&&this.player.on(rt.playbackPause,(t=>{ua(t)?(ca(e._opt.checkFirstIFrame)&&(this.player.debug.log(this.TAG_NAME,"playbackPause is false and _opt.checkFirstIFrame is true so set isDecodeFirstIIframe = false"),this.isDecodeFirstIIframe=!1),this.clearUpAllSourceBuffer(),this.$videoElement.play()):(this.$videoElement.pause(),this.cacheTrack={})})),this._useManagedMediaSource?this.player.debug.log(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.stop(),this._clearAudioSourceBufferCheckTimeout(),this._clearAudioNoDataCheckTimeout(),this._stopCanvasRender(),this.eventListenList.length&&(this.eventListenList.forEach((e=>e())),this.eventListenList=[]),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.$videoElement&&(this.player._opt.mseUseCanvasRender&&(this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"))),this.$videoElement=null),this.mediaSourceObjectURL&&(window.URL.revokeObjectURL(this.mediaSourceObjectURL),this.mediaSourceObjectURL=null),this._resetInIt(),this.mediaSource=null,this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}needInitAudio(){return this.player._opt.hasAudio&&this.player._opt.mseDecodeAudio}_resetInIt(){this.isAvc=null,this.isAAC=null,this.videoMeta={},this.audioMeta={},this.sourceBuffer=null,this.audioSourceBuffer=null,this.hasInit=!1,this.hasAudioInit=!1,this.isInitInfo=!1,this.isAudioInitInfo=!1,this.audioMimeType="",this.videoMimeType="",this.cacheTrack={},this.cacheAudioTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0,this.firstRenderTime=null,this.firstAudioTime=null,this.$videoElement=null,this.mediaSourceAppendBufferFull=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAddSourceBufferError=!1,this.mediaSourceBufferError=!1,this.mediaSourceError=!1,this.prevTimestamp=null,this.decodeDiffTimestamp=null,this.prevDts=null,this.prevAudioDts=null,this.prevPayloadBufferSize=0,this.isWidthOrHeightChanged=!1,this.prevTs=null,this.prevAudioTs=null,this.eventListenList=[],this.pendingRemoveRanges=[],this.pendingSegments=[],this.pendingAudioRemoveRanges=[],this.pendingAudioSegments=[],this.supportVideoFrameCallbackHandle=null}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===yi}get isStateClosed(){return this.state===Ai}get isStateEnded(){return this.state===gi}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{debug:e,events:{proxy:t}}=this.player,i=t(this.mediaSource,Wi,(()=>{this.player.debug.log(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(rt.mseSourceOpen)})),s=t(this.mediaSource,Hi,(()=>{this.player.debug.log(this.TAG_NAME,"sourceClose"),this.player.emit(rt.mseSourceClose)})),r=t(this.mediaSource,$i,(()=>{this.player.debug.log(this.TAG_NAME,"sourceended"),this.player.emit(rt.mseSourceended)}));this.eventListenList.push(i,s,r);const o=t(this.$videoElement,Xi,(e=>{if(ua(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debug.log(this.TAG_NAME,`mseUseCanvasRender is ${this.player._opt.mseUseCanvasRender} and\n $videoElement ts is ${t}, but not in render and vbps is ${this.player._stats.vbps} and fps is ${this.player._stats.fps}`)}}));if(this.eventListenList.push(o),this._useManagedMediaSource){const e=t(this.mediaSource,Ji,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(rt.mseSourceStartStreaming)})),i=t(this.mediaSource,qi,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(rt.mseSourceEndStreaming)})),s=t(this.mediaSource,Ki,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(e,i,s)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events;this.player.on(rt.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getMseBufferMaxDelayTime()&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300)}));const t=e(this.$videoElement,Yi,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(rt.removeLoadingBgImage),Aa()?this.supportVideoFrameCallbackHandle||(this.player.debug.log(this.TAG_NAME,"video canplay and requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.isUseHls265()&&(this.player.debug.log(this.TAG_NAME,"video canplay and use canvas render and fps is 25"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debug.log(this.TAG_NAME,"video play")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"video play error ",e),this.player.emitError(nt.mediaSourceUseCanvasRenderPlayFailed,`code is ${e.code} and message is ${e.message}`)}))})),i=e(this.$videoElement,Qi,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,Xi,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,Zi,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&this.player.debug.warn(this.TAG_NAME,"ratechange and video is paused")}));this.eventListenList.push(t,i,s,r)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"));const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.handleRender(),this.player.video.render({$video:this.$videoElement,ts:i}),this.player.isUseHls265()&&this.player.updateStats({fps:!0,ts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}decodeVideo(e,t,i,s){const r=this.player;if(r)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===gt){i=xn(e.slice(5))}else t===yt&&(i=zn(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(nt.mseWidthOrHeightChange,`width ${s.width}->${i.codecWidth}, height ${s.height}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(ha(e))return void this.player.debug.log(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t,this.player.debug.log(this.TAG_NAME,`firstRenderTime is ${this.firstRenderTime}`)),r=t-this.firstRenderTime,r<0&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevTs},\n firstRenderTime is ${this.firstRenderTime} and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration}`),r=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.player.emitError(nt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&r<=this.prevDts){if(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${this.prevDts} ,\n and now ts is ${t} and prev ts is ${this.prevTs} ,\n and diff is ${t-this.prevTs} and firstRenderTime is ${this.firstRenderTime} and isIframe is ${i},\n and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration},\n and prevPayloadBufferSize is ${this.prevPayloadBufferSize} and payload size is ${e.byteLength}`),r===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(r=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.emit(nt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,r,i,s,t):this.player.isPlayback()&&ua(this.player.playbackPause)&&(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,r,i,s,t)),this.prevDts=r,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debug.log(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===gs){const s=15&e[0];if(r.video.updateVideoInfo({encTypeCode:s}),s===yt&&ua(So()))return void this.player.emitError(nt.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=Xr()),this.hasInit=this._decodeConfigurationRecord(e,t,i,s)}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(ua(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(Pr(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.isDecodeFirstIIframe){if(this.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,this.player.debug.log(this.TAG_NAME,`firstAudioTime is ${this.firstAudioTime}`)),i=t-this.firstAudioTime,i<0&&(this.player.debug.warn(this.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevAudioTs},\n firstAudioTime is ${this.firstAudioTime}`),i=null===this.prevAudioDts?0:this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration,this._checkAudioTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeAudio is max diff , ts is ${t} and prevTs is ${this.prevAudioDts}, diff is ${this.prevAudioDts-t} and emit replay`),void this.player.emitError(nt.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debug.warn(this.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${i} and prev dts is ${this.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${this.prevAudioTs} ,\n and diff is ${t-this.prevAudioTs}`),i=this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration)}(this.player.isPlayer()||this.player.isPlayback()&&ua(this.player.playbackPause))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}else this.player.debug.log(this.TAG_NAME,"decodeAudio first frame is not iFrame")}}_checkTsIsMaxDiff(e){return this.prevTs>0&&eX}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&eX}_decodeConfigurationRecord(e,t,i,s){let r=e.slice(5),o={};if(s===gt?o=xn(r):s===yt&&(o=Gn(r)),zo(o)||0===o.codecWidth&&0===o.codecHeight){this.player.debug.warn(this.TAG_NAME,"_decodeConfigurationRecord",o);let e="";return e=zo(o)?"config is empty object":`config is not empty object and codecWidth is ${o.codecWidth} and codecHeight is ${o.codecHeight}`,this.player.emitError(nt.mediaSourceDecoderConfigurationError,e),!1}this.isInitInfo||(this.player.debug.log(this.TAG_NAME,`updateVideoInfo: ${o.codecWidth},${o.codecHeight}`),this.player.video.updateVideoInfo({width:o.codecWidth,height:o.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,s);const a={id:Zs,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},n=dc.generateInitSegment(a);this.isAvc=s===gt;let l=o.codec;return this.videoMimeType=l?`video/mp4; codecs="${o.codec}"`:this.isAvc?hi:ci,this._initSourceBuffer(),this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack={},!0}_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,s=e[0]>>1&1,r=i===St,o=i===vt;let a="";if(a=o?s?16:8:0===s?8:16,ua(o||r))return this.player.debug.warn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(nt.mediaSourceAudioG711NotSupport),!1;const n={id:er,type:"audio",timescale:1e3};let l={};if(Pr(e)){if(l=Fr(e.slice(2)),!l)return!1;n.audioSampleRate=l.sampleRate,n.channelCount=l.channelCount,n.config=l.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!r)return!1;if(l=Gh(e),!l)return!1;n.audioSampleRate=l.samplingRate,n.channelCount=l.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=l.codec,n.duration=0;let d="mp4",h=l.codec,c=null;r&&ua(co())?(d="mpeg",h="",c=new Uint8Array):c=dc.generateInitSegment(n);let u=`${n.type}/${d}`;return h&&h.length>0&&(u+=`;codecs=${h}`),ua(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:n.channelCount,sampleRate:n.audioSampleRate,depth:a}),this.isAudioInitInfo=!0),this.audioMimeType=u,this.isAAC=o,this._initAudioSourceBuffer(),this.appendAudioBuffer(c.buffer),!0}_initSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),e.log(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(t){return e.error(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(nt.mseAddSourceBufferError,`code is ${t.code} and message is ${t.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const i=t(this.sourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",t),this.player.emitError(nt.mseSourceBufferError,t.toString())})),s=t(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debug.log(this.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(i,s)}}else e.log(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),e.log(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(t){return e.error(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(nt.mseAddSourceBufferError,`code is ${t.code} and message is ${t.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const i=t(this.audioSourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",t),this.player.emitError(nt.mseSourceBufferError,t.toString())})),s=t(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debug.log(this.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(i,s),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(nt.mediaSourceAudioNoDataTimeout)}),1e3))}}else e.log(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,s,r){const o=this.player;let a=e.slice(5),n=a.byteLength;if(0===n)return void o.debug.warn(this.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let l=(new Date).getTime(),d=!1;this.prevTimestamp||(this.prevTimestamp=l,d=!0);const h=l-this.prevTimestamp;this.decodeDiffTimestamp=h,h>1e3&&!d&&this.player.isPlayer()&&o.debug.log(this.TAG_NAME,`_decodeVideo now time is ${l} and prev time is ${this.prevTimestamp}, diff time is ${h} ms`);const c=this.$videoElement;if(this.cacheTrack.id&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(dc.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let s=dc.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let a=new Uint8Array(s.byteLength+i.byteLength);a.set(s,0),a.set(i,s.byteLength),this.appendBuffer(a.buffer),o.emit(rt.timeUpdate,r),o.isPlayer()?o.isUseHls265()?o.updateStats({dfps:!0,mseTs:t}):o.updateStats({fps:!0,dfps:!0,ts:r,mseTs:t}):o.isPlayback()&&o.playback.updateStats({ts:r}),o._times.videoStart||(o._times.videoStart=Xr(),o.handlePlayToRenderTimes())}else o.debug.log(this.TAG_NAME,`cacheTrack = {} now dts is ${t}, and ts is ${r} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=Zs,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=n,this.cacheTrack.dts=t,this.cacheTrack.cts=s,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=a,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},o._opt.mseUseCanvasRender&&ua(this.isSupportVideoFrameCallback)&&ua(o.isUseHls265())&&o.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){const s=this.player;let r=this.isAAC?e.slice(2):e.slice(1),o=r.byteLength;if(this.cacheAudioTrack.id&&t>=this.cacheAudioTrack.dts){let e=8+this.cacheAudioTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(dc.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts;let s=dc.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendAudioBuffer(r.buffer)}else s.debug.log(this.TAG_NAME,`cacheAudioTrack = {} now dts is ${t} cacheAudioTrack dts is ${this.cacheAudioTrack&&this.cacheAudioTrack.dts}`),this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=er,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=o,this.cacheAudioTrack.dts=t,this.cacheAudioTrack.cts=0,this.cacheAudioTrack.data=r,this.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}appendBuffer(e){if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.warn(this.TAG_NAME,"appendBuffer() player is destroyed"));const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceBufferError is true"):(this.pendingSegments.push(e),this.sourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&(this._handleUpdateBufferDelayTime(),this._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ua(this.getSourceBufferUpdating())&&this.isStateOpen&&ua(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is end")))}appendAudioBuffer(e){if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.warn(this.TAG_NAME,"appendAudioBuffer() player is destroyed"));const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceBufferError is true"):(this.pendingAudioSegments.push(e),this.audioSourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&(this._handleUpdateBufferDelayTime(),this._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ua(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&ua(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is end")))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debug.warn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=Jo();if(this.player.debug.log(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&ua(i)){if(ua(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(ua(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)if(this.getSourceBufferUpdating()||this.getAudioSourceBufferUpdating())this.hasPendingEos=!0;else{this.hasPendingEos=!1;try{this.player.debug.log(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debug.warn(this.TAG_NAME,"endOfStream() error",e)}}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer){try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}ua(this.getSourceBufferUpdating())&&this._doRemoveRanges()}if(this.audioSourceBuffer){try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}ua(this.getAudioSourceBufferUpdating())&&this._doRemoveRanges()}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.error(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debug.error(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer error",e)}}}_hasPendingSegments(){return this.pendingSegments.length>0||this.pendingAudioSegments.length>0}getPendingSegmentsLength(){return this.pendingSegments.length}_handleUpdatePlaybackRate(){if(!this.$videoElement)return;const e=this.$videoElement;this.player._opt.videoBuffer,this.player._opt.videoBufferDelay;const t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getMseBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(nt.mediaSourceBufferedIsZeroError,"video.buffered is empty");const a=this._getPlaybackRate(i-s);e.playbackRate!==a&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${a} `),e.playbackRate=a)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_checkVideoPlayCurrentTime(){const e=this.checkSourceBufferStore();if(e<0){const t=this.getVideoBufferStartTime();this.player.debug.warn(this.TAG_NAME,`checkVideoPlayCurrentTime store is ${e} < 0 and set currentTime ${this.$videoElement.currentTime} to ${t}`),this.$videoElement.currentTime=t}}_doAppendSegments(){if(this.isStateClosed||this.isStateEnded)this.player.debug.log(this.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==this.sourceBuffer){if(this.needInitAudio()&&null===this.audioSourceBuffer)return this.player.debug.log(this.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===this.audioSourceBufferCheckTimeout&&(this.audioSourceBufferCheckTimeout=setTimeout((()=>{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(nt.mediaSourceAudioInitTimeout)}),1e3)));if(ua(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(nt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(nt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(rt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}if(ua(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(nt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(nt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(rt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}}else this.player.debug.log(this.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")}_doCleanUpSourceBuffer(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime;if(this.sourceBuffer){const t=this.sourceBuffer.buffered;let i=!1;for(let s=0;s=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:r,end:t})}}else o=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:r,end:t})}}else o0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&ua(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&ua(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&ua(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&ua(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}_needCleanupSourceBuffer(){if(ua(this.player._opt.mseAutoCleanupSourceBuffer)||!this.$videoElement)return!1;const e=this.$videoElement,t=e.buffered,i=e.currentTime;return t.length>=1&&i-t.start(0)>=this.player._opt.mseAutoCleanupMaxBackwardDuration}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getVideoBufferStartTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.start(0):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getMimeType(){return{video:this.videoMimeType,audio:this.audioMimeType}}getMseBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}isVideoPlaying(){return this.$videoElement&&ua(this.$videoElement.paused)&&ua(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}}const cc=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&ua(po());class uc{constructor(e){this.player=e,this.enabled=!1,cc()?(this.player.debug.log("NoSleep","Native Wake Lock API supported."),this._wakeLock=null,this.handleVisibilityChange=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()},document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("fullscreenchange",this.handleVisibilityChange)):(this.player.debug.log("NoSleep","Native Wake Lock API not supported. so use video element."),this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQRChYECGFOAZwEAAAAAABLfEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHYTbuMU6uEElTDZ1OsggGXTbuMU6uEHFO7a1OsghLJ7AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmsirXsYMPQkBNgI1MYXZmNTguNDUuMTAwV0GNTGF2ZjU4LjQ1LjEwMESJiECzmgAAAAAAFlSua0C5rgEAAAAAAABO14EBc8WI9UhIq9EDJPCcgQAitZyDdW5khoVWX1ZQOIOBASPjg4QF9eEA4AEAAAAAAAAbsIIBQLqB8FSwggElVLqB8FWwiFW3gQFVuIECrgEAAAAAAABZ14ECc8WIUEWPA9J/iJ6cgQAitZyDdW5khoZBX09QVVNWqoNjLqBWu4QExLQAg4EC4ZGfgQG1iEDncAAAAAAAYmSBIGOik09wdXNIZWFkAQE4AYC7AAAAAAASVMNnQcJzcwEAAAAAAACXY8CAZ8gBAAAAAAAAFUWji01BSk9SX0JSQU5ERIeEaXNvbWfIAQAAAAAAABZFo41NSU5PUl9WRVJTSU9ORIeDNTEyZ8gBAAAAAAAAJ0WjkUNPTVBBVElCTEVfQlJBTkRTRIeQaXNvbWlzbzJhdmMxbXA0MWfIAQAAAAAAABpFo4dFTkNPREVSRIeNTGF2ZjU4LjQ1LjEwMHNzAQAAAAAAAIZjwItjxYj1SEir0QMk8GfIAQAAAAAAAB5Fo4xIQU5ETEVSX05BTUVEh4xWaWRlb0hhbmRsZXJnyAEAAAAAAAAhRaOHRU5DT0RFUkSHlExhdmM1OC45MS4xMDAgbGlidnB4Z8iiRaOIRFVSQVRJT05Eh5QwMDowMDowNS4wMDcwMDAwMDAAAHNzAQAAAAAAAIdjwItjxYhQRY8D0n+InmfIAQAAAAAAAB5Fo4xIQU5ETEVSX05BTUVEh4xTb3VuZEhhbmRsZXJnyAEAAAAAAAAiRaOHRU5DT0RFUkSHlUxhdmM1OC45MS4xMDAgbGlib3B1c2fIokWjiERVUkFUSU9ORIeUMDA6MDA6MDUuMDE4MDAwMDAwAAAfQ7Z1T2TngQCjh4IAAID4//6jQKSBAAeAMBIAnQEqQAHwAABHCIWFiIWEiAICAAYWBPcGgWSfa9ubJzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh69AD+/6tQgKOHggAVgPj//qOHggApgPj//qOHggA9gPj//qOHggBRgPj//qOHggBlgPj//qOegQBrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCAHmA+P/+o4eCAI2A+P/+o4eCAKGA+P/+o4eCALWA+P/+o4eCAMmA+P/+o56BAM8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IA3YD4//6jh4IA8YD4//6jh4IBBYD4//6jh4IBGYD4//6jh4IBLYD4//6jnoEBMwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggFBgPj//qOHggFVgPj//qOHggFpgPj//qOHggF9gPj//qOHggGRgPj//qOegQGXANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCAaWA+P/+o4eCAbmA+P/+o4eCAc2A+P/+o4eCAeGA+P/+o4eCAfWA+P/+o56BAfsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ICCYD4//6jh4ICHYD4//6jh4ICMYD4//6jh4ICRYD4//6jh4ICWYD4//6jnoECXwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggJtgPj//qOHggKBgPj//qOHggKVgPj//qOHggKpgPj//qOHggK9gPj//qOegQLDANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCAtGA+P/+o4eCAuWA+P/+o4eCAvmA+P/+o4eCAw2A+P/+o4eCAyGA+P/+o56BAycA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IDNYD4//6jh4IDSYD4//6jh4IDXYD4//6jh4IDcYD4//6jh4IDhYD4//6jnoEDiwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggOZgPj//qOHggOtgPj//qOHggPBgPj//qOHggPVgPj//qOHggPpgPj//qOegQPvANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCA/2A+P/+o4eCBBGA+P/+o4eCBCWA+P/+o4eCBDmA+P/+o4eCBE2A+P/+o56BBFMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IEiID4//6jh4IEnID4//6jh4IEsID4//6jnoEEtwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggTEgPj//qOHggTYgPj//qOHggTsgPj//qOHggUAgPj//qOHggUUgPj//qOegQUbANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBSiA+P/+o4eCBTyA+P/+o4eCBVCA+P/+o4eCBWSA+P/+o4eCBXiA+P/+o56BBX8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IFjID4//6jh4IFoID4//6jh4IFtID4//6jh4IFyID4//6jh4IF3ID4//6jnoEF4wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggXwgPj//qOHggYEgPj//qOHggYYgPj//qOHggYsgPj//qOHggZAgPj//qOegQZHANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBlSA+P/+o4eCBmiA+P/+o4eCBnyA+P/+o4eCBpCA+P/+o4eCBqSA+P/+o56BBqsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IGuID4//6jh4IGzID4//6jh4IG4ID4//6jh4IG9ID4//6jh4IHCID4//6jnoEHDwDRAgAFEBAUYABhYL/QACIAEM1+tck+ccwAAKOHggccgPj//qOHggcwgPj//qOHggdEgPj//qOHggdYgPj//qOHggdsgPj//qOegQdzANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCB4CA+P/+o4eCB5SA+P/+o4eCB6iA+P/+o4eCB7yA+P/+o4eCB9CA+P/+o56BB9cA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IH5ID4//6jh4IH+ID4//6jh4IIDID4//6jh4IIIID4//6jh4IINID4//6jnoEIOwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgghIgPj//qOHgghcgPj//qOHgghwgPj//qOHggiEgPj//qOegQifANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCMCA+P/+o4eCCNSA+P/+o4eCCOiA+P/+o4eCCPyA+P/+o56BCQMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IJEID4//6jh4IJJID4//6jh4IJOID4//6jh4IJTID4//6jh4IJYID4//6jnoEJZwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggl0gPj//qOHggmIgPj//qOHggmcgPj//qOHggmwgPj//qOHggnEgPj//qOegQnLANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCdiA+P/+o4eCCeyA+P/+o4eCCgCA+P/+o4eCChSA+P/+o4eCCiiA+P/+o56BCi8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IKPID4//6jh4IKUID4//6jh4IKZID4//6jh4IKeID4//6jh4IKjID4//6jnoEKkwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggqggPj//qOHggq0gPj//qOHggrIgPj//qOHggrcgPj//qOHggrwgPj//qOegQr3ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCwSA+P/+o4eCCxiA+P/+o4eCCyyA+P/+o4eCC0CA+P/+o4eCC1SA+P/+o56BC1sA0QIABRAQFGAAYWC/0AAiABDNfrXJPnHMAACjh4ILaID4//6jh4ILfID4//6jh4ILkID4//6jh4ILpID4//6jh4ILuID4//6jnoELvwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggvMgPj//qOHggvggPj//qOHggv0gPj//qOHggwIgPj//qOHggwcgPj//qOegQwjANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDDCA+P/+o4eCDESA+P/+o4eCDFiA+P/+o4eCDGyA+P/+o4eCDICA+P/+o56BDIcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IMlID4//6jh4IMqID4//6jh4IMvID4//6jh4IM0ID4//6jnoEM6wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg0MgPj//qOHgg0ggPj//qOHgg00gPj//qOHgg1IgPj//qOegQ1PANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDVyA+P/+o4eCDXCA+P/+o4eCDYSA+P/+o4eCDZiA+P/+o4eCDayA+P/+o56BDbMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4INwID4//6jh4IN1ID4//6jh4IN6ID4//6jh4IN/ID4//6jh4IOEID4//6jnoEOFwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg4kgPj//qOHgg44gPj//qOHgg5MgPj//qOHgg5ggPj//qOHgg50gPj//qOegQ57ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDoiA+P/+o4eCDpyA+P/+o4eCDrCA+P/+o4eCDsSA+P/+o4eCDtiA+P/+o56BDt8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IO7ID4//6jh4IPAID4//6jh4IPFID4//6jh4IPKID4//6jh4IPPID4//6jnoEPQwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg9QgPj//qOHgg9kgPj//qOHgg94gPj//qOHgg+MgPj//qOHgg+ggPj//qOegQ+nANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCD7SA+P/+o4eCD8iA+P/+o4eCD9yA+P/+o4eCD/CA+P/+o4eCEASA+P/+o56BEAsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IQGID4//6jh4IQLID4//6jh4IQQID4//6jh4IQVID4//6jh4IQaID4//6jnoEQbwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghB8gPj//qOHghCQgPj//qOHghCkgPj//qOHghC4gPj//qOHghDMgPj//qOegRDTANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEOCA+P/+o4eCEPSA+P/+o4eCEQiA+P/+o56BETcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IRQ4D4//6jh4IRV4D4//6jh4IRa4D4//6jh4IRf4D4//6jh4IRk4D4//6jnoERmwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghGngPj//qOHghG7gPj//qOHghHPgPj//qOHghHjgPj//qOHghH3gPj//qOegRH/ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEguA+P/+o4eCEh+A+P/+o4eCEjOA+P/+o4eCEkeA+P/+o4eCEluA+P/+o56BEmMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ISb4D4//6jh4ISg4D4//6jh4ISl4D4//6jh4ISq4D4//6jh4ISv4D4//6jnoESxwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghLTgPj//qOHghLngPj//qOHghL7gPj//qOHghMPgPj//qOHghMjgPj//qOegRMrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEzeA+P/+o4eCE0uA+P/+o4eCE1+A+P/+o4eCE3OA+P/+oAEAAAAAAAAPoYeCE4cA+P/+daKDB/KBHFO7a5G7j7OBB7eK94EB8YIDX/CBDA=="),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACORtZGF03gIATGF2YzU4LjM1LjEwMAACMEAOAAACcQYF//9t3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MSByMzAyNyA0MTIxMjc3IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTAgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTcgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0wIHdlaWdodHA9MCBrZXlpbnQ9MjUwIGtleWludF9taW49MTAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAADvZYiED/JigADD7JycnJycnJycnJycnJycnJycnJ11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111114BGCAHARggBwEYIAcBGCAHARggBwAAAAdBmjgf4BLYARggBwEYIAcBGCAHARggBwAAAAdBmlQH+AS2ARggBwEYIAcBGCAHARggBwAAAAdBmmA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZrAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0Ga4D/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbAD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbID/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm0A/wCWwARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwEYIAcAAAAHQZuAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0Gb4D/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmiA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmkA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZpgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmwA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtgP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbgD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm+A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcAAAAHQZogP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaQD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GaYD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GagD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmqA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwAAAAdBm4A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBm6A/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZvAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZvgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZoAO8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaIDfAJbABGCAHARggBwEYIAcBGCAHAAAMxm1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAABOgAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAPLdHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAABOIAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAElVVUA8AAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAATiAAAAAAAAQAAAAADQ21kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAKAAAAMgAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAu5taW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAKuc3RibAAAAKpzdHNkAAAAAAAAAAEAAACaYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAFAAPAASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADRhdmNDAULAC//hABxnQsAL2QFB+/8ACwAMEAAAAwAQAAADAUDxQqSAAQAFaMuDyyAAAAAQcGFzcAAAAAsAAAAMAAAAGHN0dHMAAAAAAAAAAQAAADIAAAQAAAAAFHN0c3MAAAAAAAAAAQAAAAEAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAA3HN0c3oAAAAAAAAAAAAAADIAAANoAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAANhzdGNvAAAAAAAAADIAAABFAAADwQAAA9wAAAP3AAAEFgAABDEAAARMAAAEawAABIYAAAShAAAEwAAABNcAAATuAAAFDQAABSgAAAVDAAAFYgAABX0AAAWYAAAFtwAABdIAAAXtAAAGBAAABh8AAAY6AAAGWQAABnQAAAaPAAAGrgAABskAAAbkAAAHAwAABx4AAAcxAAAHUAAAB2sAAAeGAAAHpQAAB8AAAAfbAAAH+gAACBUAAAgwAAAITwAACGIAAAh9AAAInAAACLcAAAjSAAAI8QAACCV0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAAE6AAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAABOIAAAEAAABAAAAAAedbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAACsRAADYVRVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAAHSG1pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAHDHN0YmwAAABqc3RzZAAAAAAAAAABAAAAWm1wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAACsRAAAAAAANmVzZHMAAAAAA4CAgCUAAgAEgICAF0AVAAAAAAENiAAABVQFgICABRIIVuUABoCAgAECAAAAYHN0dHMAAAAAAAAACgAAAC8AAAQAAAAAAQAACtUAAAAsAAAEAAAAAAEAAArWAAAALAAABAAAAAABAAAK1QAAACwAAAQAAAAAAQAACtUAAAAaAAAEAAAAAAEAAAH/AAABzHN0c2MAAAAAAAAAJQAAAAEAAAABAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAEAAAAAQAAAAUAAAAFAAAAAQAAAAYAAAAEAAAAAQAAAAgAAAAFAAAAAQAAAAkAAAAEAAAAAQAAAAsAAAAFAAAAAQAAAAwAAAADAAAAAQAAAA4AAAAFAAAAAQAAAA8AAAAEAAAAAQAAABEAAAAFAAAAAQAAABIAAAAEAAAAAQAAABQAAAAFAAAAAQAAABUAAAAEAAAAAQAAABcAAAADAAAAAQAAABgAAAAEAAAAAQAAABoAAAAFAAAAAQAAABsAAAAEAAAAAQAAAB0AAAAFAAAAAQAAAB4AAAAEAAAAAQAAACAAAAAFAAAAAQAAACEAAAAEAAAAAQAAACIAAAACAAAAAQAAACMAAAAFAAAAAQAAACQAAAAEAAAAAQAAACYAAAAFAAAAAQAAACcAAAAEAAAAAQAAACkAAAAFAAAAAQAAACoAAAAEAAAAAQAAACwAAAAFAAAAAQAAAC0AAAACAAAAAQAAAC4AAAAEAAAAAQAAAC8AAAAFAAAAAQAAADAAAAAEAAAAAQAAADIAAAAFAAAAAQAAADMAAAAEAAAAAQAAA1xzdHN6AAAAAAAAAAAAAADSAAAAFQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA3HN0Y28AAAAAAAAAMwAAADAAAAOtAAADzAAAA+cAAAQCAAAEIQAABDwAAARXAAAEdgAABJEAAASsAAAEywAABOIAAAT5AAAFGAAABTMAAAVOAAAFbQAABYgAAAWjAAAFwgAABd0AAAX4AAAGDwAABioAAAZFAAAGZAAABn8AAAaaAAAGuQAABtQAAAbvAAAHDgAABykAAAc8AAAHWwAAB3YAAAeRAAAHsAAAB8sAAAfmAAAIBQAACCAAAAg7AAAIWgAACG0AAAiIAAAIpwAACMIAAAjdAAAI/AAAABpzZ3BkAQAAAHJvbGwAAAACAAAAAf//AAAAHHNiZ3AAAAAAcm9sbAAAAAEAAADSAAAAAQAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTguMjAuMTAw"),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),document.querySelector("body").append(this.noSleepVideo),this.handleNoSleepVideoTimeUpdate=()=>{this.noSleepVideo&&this.noSleepVideo.currentTime>4&&(this.noSleepVideo.currentTime=1)},this.noSleepVideo.addEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate))}destroy(){if(this._wakeLock&&(this._wakeLock.release(),this._wakeLock=null),this.noSleepVideo){this.handleNoSleepVideoTimeUpdate&&this.noSleepVideo.removeEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate);try{this.noSleepVideo.parentNode&&this.noSleepVideo.parentNode.removeChild(this.noSleepVideo)}catch(e){this.player.debug.warn("NoSleep","Failed to remove noSleepVideo element.")}this.noSleepVideo=null}this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("fullscreenchange",this.handleVisibilityChange))}_addSourceToVideo(e,t,i){var s=document.createElement("source");s.src=i,s.type=`video/${t}`,e.appendChild(s)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(cc())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.warn("wakeLock",`${t.name}, ${t.message}`),t}));return this.noSleepVideo.play().then((t=>(e.log("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,t))).catch((t=>{throw e.warn("wakeLock",`noSleepVideo ${t.name}, ${t.message}`),this.enabled=!1,t}))}disable(){cc()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debug.log("wakeLock","Disabling wake lock.")}}function pc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var fc={exports:{}};!function(e,t){var i,s,r,o,a;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,s=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var r=a.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=a.normalizePath(r.path),a.buildURLFromParts(r)}var o=a.parseURL(t);if(!o)throw new Error("Error trying to parse relative URL.");if(o.scheme)return i.alwaysNormalize?(o.path=a.normalizePath(o.path),a.buildURLFromParts(o)):t;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");if(!n.netLoc&&n.path&&"/"!==n.path[0]){var l=s.exec(n.path);n.netLoc=l[1],n.path=l[2]}n.netLoc&&!n.path&&(n.path="/");var d={scheme:n.scheme,netLoc:o.netLoc,path:null,params:o.params,query:o.query,fragment:o.fragment};if(!o.netLoc&&(d.netLoc=n.netLoc,"/"!==o.path[0]))if(o.path){var h=n.path,c=h.substring(0,h.lastIndexOf("/")+1)+o.path;d.path=a.normalizePath(c)}else d.path=n.path,o.params||(d.params=n.params,o.query||(d.query=n.query));return null===d.path&&(d.path=i.alwaysNormalize?a.normalizePath(o.path):o.path),a.buildURLFromParts(d)},parseURL:function(e){var t=i.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(r,"");e.length!==(e=e.replace(o,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}(fc);var mc=fc.exports;function gc(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function yc(e){for(var t=1;t`):Cc}(t)}))}const Lc=xc,Pc=/^(\d+)x(\d+)$/,Bc=/(.+?)=(".*?"|.*?)(?:,|$)/g;class Ic{constructor(e){"string"==typeof e&&(e=Ic.parseAttrList(e)),vc(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=Pc.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(Bc.lastIndex=0;null!==(t=Bc.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function Mc(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class Uc{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){Lc.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=vc(new Ic({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);_c(e.getTime())&&(this._endDate=e)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(_c(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&_c(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class Fc{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}}var Oc="audio",Nc="video",jc="audiovideo";class zc{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[Oc]:null,[Nc]:null,[jc]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let s;s=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[s,parseInt(i[0])+s]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=mc.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class Gc extends zc{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new Fc,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!_c(this.programDateTime))return null;const e=_c(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,s,r,o=!1){const{elementaryStreams:a}=this,n=a[e];n?(n.startPTS=Math.min(n.startPTS,t),n.endPTS=Math.max(n.endPTS,i),n.startDTS=Math.min(n.startDTS,s),n.endDTS=Math.max(n.endDTS,r)):a[e]={startPTS:t,endPTS:i,startDTS:s,endDTS:r,partial:o}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[Oc]=null,e[Nc]=null,e[jc]=null}}class Vc extends zc{constructor(e,t,i,s,r){super(i),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new Fc,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=s;const o=e.enumeratedString("BYTERANGE");o&&this.setByteRange(o,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class Hc{constructor(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);const t=this.lastPartSn-e.lastPartSn,i=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!i||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||0===t&&i>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&_c(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function Wc(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function $c(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),s=e[e.length-1].split(",");if(2===s.length){const t="base64"===s[0],r=s[1];t?(e.splice(-1,1),i=Wc(r)):i=function(e){const t=Jc(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(r)}}return i}function Jc(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const qc="undefined"!=typeof self?self:void 0;var Kc={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Yc="org.w3.clearkey",Qc="com.apple.streamingkeydelivery",Xc="com.microsoft.playready",Zc="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function eu(e){switch(e){case Qc:return Kc.FAIRPLAY;case Xc:return Kc.PLAYREADY;case Zc:return Kc.WIDEVINE;case Yc:return Kc.CLEARKEY}}var tu="edef8ba979d64acea3c827dcd51d21ed";function iu(e){switch(e){case Kc.FAIRPLAY:return Qc;case Kc.PLAYREADY:return Xc;case Kc.WIDEVINE:return Zc;case Kc.CLEARKEY:return Yc}}function su(e){const{drmSystems:t,widevineLicenseUrl:i}=e,s=t?[Kc.FAIRPLAY,Kc.WIDEVINE,Kc.PLAYREADY,Kc.CLEARKEY].filter((e=>!!t[e])):[];return!s[Kc.WIDEVINE]&&i&&s.push(Kc.WIDEVINE),s}const ru=null!=qc&&null!=(ou=qc.navigator)&&ou.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var ou;function au(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const nu=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,lu=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,du=(e,t)=>{const i=t;let s=0;for(;nu(e,t);){s+=10;s+=hu(e,t+6),lu(e,t+10)&&(s+=10),t+=s}if(s>0)return e.subarray(i,i+s)},hu=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},cu=(e,t)=>nu(e,t)&&hu(e,t+6)+10<=e.length-t,uu=e=>{const t=mu(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,fu=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=hu(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},mu=e=>{let t=0;const i=[];for(;nu(e,t);){const s=hu(e,t+6);t+=10;const r=t+s;for(;t+8"PRIV"===e.type?yu(e):"W"===e.type[0]?bu(e):Au(e),yu=e=>{if(e.size<2)return;const t=_u(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},Au=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=_u(e.data.subarray(t),!0);t+=i.length+1;const s=_u(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=_u(e.data.subarray(1));return{key:e.type,data:t}},bu=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=_u(e.data.subarray(t),!0);t+=i.length+1;const s=_u(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=_u(e.data);return{key:e.type,data:t}},vu=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let s=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return s/=45,i&&(s+=47721858.84),Math.round(s)}},_u=(e,t=!1)=>{const i=wu();if(i){const s=i.decode(e);if(t){const e=s.indexOf("\0");return-1!==e?s.substring(0,e):s}return s.replace(/\0/g,"")}const s=e.length;let r,o,a,n="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(r);break;case 12:case 13:o=e[l++],n+=String.fromCharCode((31&r)<<6|63&o);break;case 14:o=e[l++],a=e[l++],n+=String.fromCharCode((15&r)<<12|(63&o)<<6|(63&a)<<0)}}return n};let Su;function wu(){if(!navigator.userAgent.includes("PlayStation 4"))return Su||void 0===self.TextDecoder||(Su=new self.TextDecoder("utf-8")),Su}const Eu=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function Iu(e,t){const i=[];if(!t.length)return i;const s=e.byteLength;for(let r=0;r1?r+o:s;if(Du(e.subarray(r+4,r+8))===t[0])if(1===t.length)i.push(e.subarray(r+8,a));else{const s=Iu(e.subarray(r+8,a),t.slice(1));s.length&&ku.apply(i,s)}r=a}return i}function Mu(e){const t=[],i=e[0];let s=8;const r=Ru(e,s);s+=4;let o=0,a=0;0===i?(o=Ru(e,s),a=Ru(e,s+4),s+=8):(o=Lu(e,s),a=Lu(e,s+8),s+=16),s+=2;let n=e.length+a;const l=xu(e,s);s+=2;for(let i=0;i>>31)return Lc.warn("SIDX has hierarchical references (not supported)"),null;const l=Ru(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:n,end:n+a-1}}),n+=a,i+=4,s=i}return{earliestPresentationTime:o,timescale:r,version:i,referencesCount:l,references:t}}function Uu(e){const t=[],i=Iu(e,["moov","trak"]);for(let e=0;e{const i=Ru(e,4),s=t[i];s&&(s.default={duration:Ru(e,12),flags:Ru(e,20)})})),t}function Fu(e){const t=e.subarray(8),i=t.subarray(86),s=Du(t.subarray(4,8));let r=s;const o="enca"===s||"encv"===s;if(o){const e=Iu(t,[s])[0];Iu(e.subarray("enca"===s?28:78),["sinf"]).forEach((e=>{const t=Iu(e,["schm"])[0];if(t){const i=Du(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=Iu(e,["frma"])[0];t&&(r=Du(t))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const e=Iu(i,["avcC"])[0];r+="."+Nu(e[1])+Nu(e[2])+Nu(e[3]);break}case"mp4a":{const e=Iu(t,[s])[0],i=Iu(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=Ou(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=Ou(i,e);const s=i[e++];if(64!==s)break;if(r+="."+Nu(s),e+=12,5!==i[e++])break;e=Ou(i,e);const o=i[e++];let a=(248&o)>>3;31===a&&(a+=1+((7&o)<<3)+((224&i[e])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const e=Iu(i,["hvcC"])[0],t=e[1],s=["","A","B","C"][t>>6],o=31&t,a=Ru(e,2),n=(32&t)>>5?"H":"L",l=e[12],d=e.subarray(6,12);r+="."+s+o,r+="."+a.toString(16).toUpperCase(),r+="."+n+l;let h="";for(let e=d.length;e--;){const t=d[e];if(t||h){h="."+t.toString(16).toUpperCase()+h}}r+=h;break}case"dvh1":case"dvhe":{const e=Iu(i,["dvcC"])[0],t=e[2]>>1&127,s=e[2]<<5&32|e[3]>>3&31;r+="."+ju(t)+"."+ju(s);break}case"vp09":{const e=Iu(i,["vpcC"])[0],t=e[4],s=e[5],o=e[6]>>4&15;r+="."+ju(t)+"."+ju(s)+"."+ju(o);break}case"av01":{const e=Iu(i,["av1C"])[0],t=e[1]>>>5,s=31&e[1],o=e[2]>>>7?"H":"M",a=(64&e[2])>>6,n=(32&e[2])>>5,l=2===t&&a?n?12:10:a?10:8,d=(16&e[2])>>4,h=(8&e[2])>>3,c=(4&e[2])>>2,u=3&e[2],p=1,f=1,m=1,g=0;r+="."+t+"."+ju(s)+o+"."+ju(l)+"."+d+"."+h+c+u+"."+ju(p)+"."+ju(f)+"."+ju(m)+"."+g;break}}return{codec:r,encrypted:o}}function Ou(e,t){const i=t+5;for(;128&e[t++]&&t{const l=n.byteOffset-8;Iu(n,["traf"]).map((n=>{const d=Iu(n,["tfdt"]).map((e=>{const t=e[0];let i=Ru(e,4);return 1===t&&(i*=Math.pow(2,32),i+=Ru(e,8)),i/r}))[0];return void 0!==d&&(e=d),Iu(n,["tfhd"]).map((d=>{const h=Ru(d,4),c=16777215&Ru(d,0);let u=0;const p=0!=(16&c);let f=0;const m=0!=(32&c);let g=8;h===o&&(0!=(1&c)&&(g+=8),0!=(2&c)&&(g+=4),0!=(8&c)&&(u=Ru(d,g),g+=4),p&&(f=Ru(d,g),g+=4),m&&(g+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),Iu(n,["trun"]).map((o=>{const n=o[0],d=16777215&Ru(o,0),h=0!=(1&d);let c=0;const p=0!=(4&d),m=0!=(256&d);let g=0;const y=0!=(512&d);let A=0;const b=0!=(1024&d),v=0!=(2048&d);let _=0;const S=Ru(o,4);let w=8;h&&(c=Ru(o,w),w+=4),p&&(w+=4);let E=c+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function $u(e,t,i,s){const r=Ju(e);let o=0;o+=t;let a=0,n=0,l=0;for(;o=r.length)break;l=r[o++],a+=l}while(255===l);n=0;do{if(o>=r.length)break;l=r[o++],n+=l}while(255===l);const e=r.length-o;let t=o;if(ne){Lc.error(`Malformed SEI payload. ${n} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===r[t++]){const e=xu(r,t);if(t+=2,49===e){const e=Ru(r,t);if(t+=4,1195456820===e){const e=r[t++];if(3===e){const o=r[t++],n=31&o,l=64&o,d=l?2+3*n:0,h=new Uint8Array(d);if(l){h[0]=o;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const s=r[t++].toString(16);e.push(1==s.length?"0"+s:s),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const o=n-16,l=new Uint8Array(o);for(let e=0;e0?(o=new Uint8Array(4),t.length>0&&new DataView(o.buffer).setUint32(0,t.length,!1)):o=new Uint8Array;const a=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let s=8,r=i;for(;r--;)s+=t[r].byteLength;const o=new Uint8Array(s);for(o[0]=s>>24&255,o[1]=s>>16&255,o[2]=s>>8&255,o[3]=255&s,o.set(e,4),r=0,s=8;r>8*(15-i)&255;return t}(e);return new Yu(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=$c(this.uri);if(t)switch(this.keyFormat){case Zc:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case Xc:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=qu(e,null,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),s=String.fromCharCode.apply(null,Array.from(i)),r=s.substring(s.indexOf("<"),s.length),o=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(o){const e=o.childNodes[0]?o.childNodes[0].nodeValue:o.getAttribute("VALUE");if(e){const t=Wc(e).subarray(0,16);!function(e){const t=function(e,t,i){const s=e[t];e[t]=e[i],e[i]=s};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=Ku[this.uri];if(!e){const t=Object.keys(Ku).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),Ku[this.uri]=e}this.keyId=e}return this}}const Qu=/\{\$([a-zA-Z0-9-_]+)\}/g;function Xu(e){return Qu.test(e)}function Zu(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let s=i.length;s--;){const r=i[s],o=t[r];o&&(t[r]=ep(e,o))}}function ep(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(Qu,(t=>{const s=t.substring(2,t.length-1),r=null==i?void 0:i[s];return void 0===r?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${s}"`)),t):r}))}return t}function tp(e,t,i){let s,r,o=e.variableList;if(o||(e.variableList=o={}),"QUERYPARAM"in t){s=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(s))throw new Error(`"${s}" does not match any query parameter in URI: "${i}"`);r=e.get(s)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else s=t.NAME,r=t.VALUE;s in o?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${s}"`)):o[s]=r||""}function ip(e,t,i){const s=t.IMPORT;if(i&&s in i){let t=e.variableList;t||(e.variableList=t={}),t[s]=i[s]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}function sp(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const rp={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function op(e,t,i=!0){return!e.split(",").some((e=>!ap(e,t,i)))}function ap(e,t,i=!0){var s;const r=sp(i);return null!=(s=null==r?void 0:r.isTypeSupported(np(e,t)))&&s}function np(e,t){return`${t}/mp4;codecs="${e}"`}function lp(e){if(e){const t=e.substring(0,4);return rp.video[t]}return 2}function dp(e){return e.split(",").reduce(((e,t)=>{const i=rp.video[t];return i?(2*i+e)/(e?3:2):(rp.audio[t]+e)/(e?2:1)}),0)}const hp={};const cp=/flac|opus/i;function up(e,t=!0){return e.replace(cp,(e=>function(e,t=!0){if(hp[e])return hp[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let s=0;s0&&s.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:o.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let n=0;for(mp.lastIndex=0;null!==(s=mp.exec(e));){const e=new Ic(s[1]),o=e.TYPE;if(o){const s=a[o],l=r[o]||[];r[o]=l,Zu(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const d=e.LANGUAGE,h=e["ASSOC-LANGUAGE"],c=e.CHANNELS,u=e.CHARACTERISTICS,p=e["INSTREAM-ID"],f={attrs:e,bitrate:0,id:n++,groupId:e["GROUP-ID"]||"",name:e.NAME||d||"",type:o,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:d,url:e.URI?bp.resolve(e.URI,t):""};if(h&&(f.assocLang=h),c&&(f.channels=c),u&&(f.characteristics=u),p&&(f.instreamId=p),null!=s&&s.length){const e=bp.findGroup(s,f.groupId)||s[0];wp(f,e,"audioCodec"),wp(f,e,"textCodec")}l.push(f)}}return r}static parseLevelPlaylist(e,t,i,s,r,o){const a=new Hc(t),n=a.fragments;let l,d,h,c=null,u=0,p=0,f=0,m=0,g=null,y=new Gc(s,t),A=-1,b=!1,v=null;for(yp.lastIndex=0,a.m3u8=e,a.hasVariableRefs=Xu(e);null!==(l=yp.exec(e));){b&&(b=!1,y=new Gc(s,t),y.start=f,y.sn=u,y.cc=m,y.level=i,c&&(y.initSegment=c,y.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,v&&(y.setByteRange(v),v=null)));const e=l[1];if(e){y.duration=parseFloat(e);const t=(" "+l[2]).slice(1);y.title=t||null,y.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(_c(y.duration)){y.start=f,h&&kp(y,h,a),y.sn=u,y.level=i,y.cc=m,n.push(y);const e=(" "+l[3]).slice(1);y.relurl=ep(a,e),Ep(y,g),g=y,f+=y.duration,u++,p=0,b=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);g?y.setByteRange(e,g):y.setByteRange(e)}else if(l[5])y.rawProgramDateTime=(" "+l[5]).slice(1),y.tagList.push(["PROGRAM-DATE-TIME",y.rawProgramDateTime]),-1===A&&(A=n.length);else{if(l=l[0].match(Ap),!l){Lc.warn("No matches on slow regex match for level playlist!");continue}for(d=1;d0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new Ic(r);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=p>0?e[e.length-1]:void 0,s=p++,o=new Ic(r);Zu(a,o,["BYTERANGE","URI"]);const n=new Vc(o,y,t,s,i);e.push(n),y.duration+=n.duration;break}case"PRELOAD-HINT":{const e=new Ic(r);Zu(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new Ic(r);Zu(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:Lc.warn(`line parsed but not handled: ${l}`)}}}g&&!g.relurl?(n.pop(),f-=g.duration,a.partList&&(a.fragmentHint=g)):a.partList&&(Ep(y,g),y.cc=m,a.fragmentHint=y,h&&kp(y,h,a));const _=n.length,S=n[0],w=n[_-1];if(f+=a.skippedSegments*a.targetduration,f>0&&_&&w){a.averagetargetduration=f/_;const e=w.sn;a.endSN="initSegment"!==e?e:0,a.live||(w.endList=!0),S&&(a.startCC=S.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(f+=a.fragmentHint.duration),a.totalduration=f,a.endCC=m,A>0&&function(e,t){let i=e[t];for(let s=t;s--;){const t=e[s];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(n,A),a}}function vp(e,t,i){var s,r;const o=new Ic(e);Zu(i,o,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(s=o.METHOD)?s:"",n=o.URI,l=o.hexadecimalInteger("IV"),d=o.KEYFORMATVERSIONS,h=null!=(r=o.KEYFORMAT)?r:"identity";n&&o.IV&&!l&&Lc.error(`Invalid IV: ${o.IV}`);const c=n?bp.resolve(n,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new Yu(a,c,h,u,l)}function _p(e){const t=new Ic(e).decimalFloatingPoint("TIME-OFFSET");return _c(t)?t:null}function Sp(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const s=i.filter((t=>function(e,t){const i=rp[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));s.length&&(t[`${e}Codec`]=s.join(","),i=i.filter((e=>-1===s.indexOf(e))))})),t.unknownCodecs=i}function wp(e,t,i){const s=t[i];s&&(e[i]=s)}function Ep(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),_c(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function Tp(e,t,i,s){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",s&&(e.levelkeys=s),e.initSegment=null}function kp(e,t,i){e.levelkeys=t;const{encryptedFragments:s}=i;s.length&&s[s.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||s.push(e)}var Cp="manifest",Dp="level",xp="audioTrack",Rp="subtitleTrack",Lp="main",Pp="audio",Bp="subtitle";function Ip(e){const{type:t}=e;switch(t){case xp:return Pp;case Rp:return Bp;default:return Lp}}function Mp(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class Up{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.LEVEL_LOADING,this.onLevelLoading,this),e.on(Ec.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(Ec.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.LEVEL_LOADING,this.onLevelLoading,this),e.off(Ec.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(Ec.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,s=t.loader,r=new(i||s)(t);return this.loaders[e.type]=r,r}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Cp,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:s,pathwayId:r,url:o,deliveryDirectives:a}=t;this.load({id:i,level:s,pathwayId:r,responseType:"text",type:Dp,url:o,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:xp,url:r,deliveryDirectives:o})}onSubtitleTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Rp,url:r,deliveryDirectives:o})}load(e){var t;const i=this.hls.config;let s,r=this.getInternalLoader(e);if(r){const t=r.context;if(t&&t.url===e.url&&t.level===e.level)return void Lc.trace("[playlist-loader]: playlist request ongoing");Lc.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),r.abort()}if(s=e.type===Cp?i.manifestLoadPolicy.default:vc({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(e),_c(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===Dp&&null!==e.level?t=this.hls.levels[e.level].details:e.type===xp&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===Rp&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);s=vc({},s,{maxTimeToFirstByteMs:Math.min(t,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,s.maxTimeToFirstByteMs)})}}}const o=s.errorRetry||s.timeoutRetry||{},a={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0},n={onSuccess:(e,t,i,s)=>{const r=this.getInternalLoader(i);this.resetInternalLoader(i.type);const o=e.data;0===o.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),bp.isMediaPlaylist(o)?this.handleTrackOrLevelPlaylist(e,t,i,s||null,r):this.handleMasterPlaylist(e,t,i,s)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),s||null,t)},onError:(e,t,i,s)=>{this.handleNetworkError(t,i,!1,e,s)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};r.load(e,a,n)}handleMasterPlaylist(e,t,i,s){const r=this.hls,o=e.data,a=Mp(e,i),n=bp.parseMasterPlaylist(o,a);if(n.playlistParsingError)return void this.handleManifestParsingError(e,i,n.playlistParsingError,s,t);const{contentSteering:l,levels:d,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p}=n;this.variableList=p;const{AUDIO:f=[],SUBTITLES:m,"CLOSED-CAPTIONS":g}=bp.parseMasterPlaylistMedia(o,a,n);if(f.length){f.some((e=>!e.url))||!d[0].audioCodec||d[0].attrs.AUDIO||(Lc.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new Ic({}),bitrate:0,url:""}))}r.trigger(Ec.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:m,captions:g,contentSteering:l,url:a,stats:t,networkDetails:s,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}handleTrackOrLevelPlaylist(e,t,i,s,r){const o=this.hls,{id:a,level:n,type:l}=i,d=Mp(e,i),h=_c(n)?n:_c(a)?a:0,c=Ip(i),u=bp.parseLevelPlaylist(e.data,d,h,c,0,this.variableList);if(l===Cp){const e={attrs:new Ic({}),bitrate:0,details:u,name:"",url:d};o.trigger(Ec.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:d,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,s,r)}handleManifestParsingError(e,t,i,s,r){this.hls.trigger(Ec.ERROR,{type:Tc.NETWORK_ERROR,details:kc.MANIFEST_PARSING_ERROR,fatal:t.type===Cp,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:r})}handleNetworkError(e,t,i=!1,s,r){let o=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===Dp?o+=`: ${e.level} id: ${e.id}`:e.type!==xp&&e.type!==Rp||(o+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(o);Lc.warn(`[playlist-loader]: ${o}`);let n=kc.UNKNOWN,l=!1;const d=this.getInternalLoader(e);switch(e.type){case Cp:n=i?kc.MANIFEST_LOAD_TIMEOUT:kc.MANIFEST_LOAD_ERROR,l=!0;break;case Dp:n=i?kc.LEVEL_LOAD_TIMEOUT:kc.LEVEL_LOAD_ERROR,l=!1;break;case xp:n=i?kc.AUDIO_TRACK_LOAD_TIMEOUT:kc.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case Rp:n=i?kc.SUBTITLE_TRACK_LOAD_TIMEOUT:kc.SUBTITLE_LOAD_ERROR,l=!1}d&&this.resetInternalLoader(e.type);const h={type:Tc.NETWORK_ERROR,details:n,fatal:l,url:e.url,loader:d,context:e,error:a,networkDetails:t,stats:r};if(s){const i=(null==t?void 0:t.url)||e.url;h.response=yc({url:i,data:void 0},s)}this.hls.trigger(Ec.ERROR,h)}handlePlaylistLoaded(e,t,i,s,r,o){const a=this.hls,{type:n,level:l,id:d,groupId:h,deliveryDirectives:c}=s,u=Mp(t,s),p=Ip(s),f="number"==typeof s.level&&p===Lp?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(Ec.ERROR,{type:Tc.NETWORK_ERROR,details:kc.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(Ec.ERROR,{type:Tc.NETWORK_ERROR,details:kc.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i});else switch(e.live&&o&&(o.getCacheAge&&(e.ageHeader=o.getCacheAge()||0),o.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),n){case Cp:case Dp:a.trigger(Ec.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:r,deliveryDirectives:c});break;case xp:a.trigger(Ec.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c});break;case Rp:a.trigger(Ec.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c})}}}function Fp(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function Op(e,t){const i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error(`addCue is failed for: ${t}`)}catch(i){Lc.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){Lc.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function Np(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function jp(e,t,i,s){const r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&e.cues.length>0){const r=function(e,t,i){const s=[],r=function(e,t){if(te[i].endTime)return-1;let s=0,r=i;for(;s<=r;){const o=Math.floor((r+s)/2);if(te[o].startTime&&s-1)for(let o=r,a=e.length;o=t&&r.endTime<=i)s.push(r);else if(r.startTime>i)return s}return s}(e.cues,t,i);for(let t=0;t{const e=Wp();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function qp(e,t){return e.getTime()/1e3-t}class Kp{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:e}=this;e.on(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Ec.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Ec.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(Np(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tJp&&(s=Jp);s-i<=0&&(s=i+.25);for(let e=0;ee.type===Gp&&n:"video"===s?e=>e.type===Hp&&a:e=>e.type===Gp&&n||e.type===Hp&&a,jp(r,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:s}=this,{dateRanges:r}=t,o=Object.keys(r);if(s){const e=Object.keys(i).filter((e=>!o.includes(e)));for(let t=e.length;t--;){const r=e[t];Object.keys(i[r].cues).forEach((e=>{s.removeCue(i[r].cues[e])})),delete i[r]}}const a=t.fragments[t.fragments.length-1];if(0===o.length||!_c(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const n=a.programDateTime/1e3-a.start,l=Wp();for(let e=0;e{if(t!==s.id){const i=r[t];if(i.class===s.class&&i.startDate>s.startDate&&(!e||s.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:s}=e,{liveSyncDuration:r,liveSyncDurationCount:o,lowLatencyMode:a}=this.config,n=this.hls.userConfig;let l=a&&i||t;(n.liveSyncDuration||n.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:o*s);const d=s;return l+Math.min(1*this.stallCount,d)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const s=i.edge,r=e-t-this.edgeStalled,o=s-i.totalduration,a=s-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(o,r),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Ec.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(Ec.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Ec.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(Ec.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var i;t.details===kc.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&Lc.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:s,maxLiveSyncPlaybackRate:r}=this.config;if(!s||1===r||!t.live)return;const o=this.targetLatency;if(null===o)return;const a=i-o;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,r)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const Qp=["NONE","TYPE-0","TYPE-1",null];const Xp=["SDR","PQ","HLG"];var Zp="",ef="YES",tf="v2";class sf{constructor(e,t,i){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=i}addDirectives(e){const t=new self.URL(e);return void 0!==this.msn&&t.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.href}}class rf{constructor(e){this._attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.url=void 0,this.frameRate=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.supportedPromise=void 0,this.supportedResult=void 0,this._avgBitrate=0,this._audioGroups=void 0,this._subtitleGroups=void 0,this._urlId=0,this.url=[e.url],this._attrs=[e.attrs],this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.frameRate=e.attrs.optionalFloat("FRAME-RATE",0),this._avgBitrate=e.attrs.decimalInteger("AVERAGE-BANDWIDTH"),this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.codecSet=[e.videoCodec,e.audioCodec].filter((e=>!!e)).map((e=>e.substring(0,4))).join(","),this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return of(this._audioGroups,e)}hasSubtitleGroup(e){return of(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.push(t)}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function of(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function af(e,t){const i=t.startPTS;if(_c(i)){let s,r=0;t.sn>e.sn?(r=i-e.start,s=e):(r=e.start-i,s=t),s.duration!==r&&(s.duration=r)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function nf(e,t,i,s,r,o){s-i<=0&&(Lc.warn("Fragment should have a positive duration",t),s=i+t.duration,o=r+t.duration);let a=i,n=s;const l=t.startPTS,d=t.endPTS;if(_c(l)){const e=Math.abs(l-i);_c(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),r=Math.min(r,t.startDTS),n=Math.min(s,d),s=Math.max(s,d),o=Math.max(o,t.endDTS)}const h=i-t.start;0!==t.start&&(t.start=i),t.duration=s-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=r,t.endPTS=s,t.minEndPTS=n,t.endDTS=o;const c=t.sn;if(!e||ce.endSN)return 0;let u;const p=c-e.startSN,f=e.fragments;for(f[p]=t,u=p;u>0;u--)af(f[u],f[u-1]);for(u=p;u=0;e--){const t=s[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let r,o=0;if(function(e,t,i){const s=t.skippedSegments,r=Math.max(e.startSN,t.startSN)-t.startSN,o=(e.fragmentHint?1:0)+(s?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,n=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=r;e<=o;e++){const r=l[a+e];let o=n[e];s&&!o&&e{e.relurl&&(o=e.cc-s.cc),_c(e.startPTS)&&_c(e.endPTS)&&(s.start=s.startPTS=e.startPTS,s.startDTS=e.startDTS,s.maxStartPTS=e.maxStartPTS,s.endPTS=e.endPTS,s.endDTS=e.endDTS,s.minEndPTS=e.minEndPTS,s.duration=e.endPTS-e.startPTS,s.duration&&(r=s),t.PTSKnown=t.alignedSliding=!0),s.elementaryStreams=e.elementaryStreams,s.loader=e.loader,s.stats=e.stats,e.initSegment&&(s.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){Lc.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const s=vc({},e);i&&i.forEach((e=>{delete s[e]}));return Object.keys(t).forEach((e=>{const i=new Uc(t[e].attr,s[e]);i.isValid?s[e]=i:Lc.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),s}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(o){Lc.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),r?nf(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):df(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const n=t.advancedDateTime;if(t.advanced&&n){const e=t.edge;t.driftStart||(t.driftStartTime=n,t.driftStart=e),t.driftEndTime=n,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function df(e,t){const i=t.startSN+t.skippedSegments-e.startSN,s=e.fragments;i<0||i>=s.length||hf(t,s[i].start)}function hf(e,t){if(t){const i=e.fragments;for(let s=e.skippedSegments;s{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function ff(e){switch(e.details){case kc.FRAG_LOAD_TIMEOUT:case kc.KEY_LOAD_TIMEOUT:case kc.LEVEL_LOAD_TIMEOUT:case kc.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function mf(e,t){const i=ff(t);return e.default[(i?"timeout":"error")+"Retry"]}function gf(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function yf(e){return yc(yc({},e),{errorRetry:null,timeoutRetry:null})}function Af(e,t,i,s){if(!e)return!1;const r=null==s?void 0:s.code,o=t499)}(r)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,s,o):o}const bf=function(e,t){let i=0,s=e.length-1,r=null,o=null;for(;i<=s;){r=(i+s)/2|0,o=e[r];const a=t(o);if(a>0)i=r+1;else{if(!(a<0))return o;s=r-1}}return null};function vf(e,t,i=0,s=0){let r=null;if(e){r=t[e.sn-t[0].sn+1]||null;const s=e.endDTS-i;s>0&&s<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(r=t[0]);if(r&&(!e||e.level===r.level)&&0===_f(i,s,r))return r;const o=bf(t,_f.bind(null,i,s));return!o||o===e&&r?r:o}function _f(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const s=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-s<=e?1:i.start-s>e&&i.start?-1:0}function Sf(e,t,i){const s=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-s>e}var wf=0,Ef=2,Tf=3,kf=5,Cf=0,Df=1,xf=2;class Rf{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=Lc.log.bind(Lc,`${t}:`),this.warn=Lc.warn.bind(Lc,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t){const i=null==t?void 0:t.renditionReports;if(i){let s=-1;for(let r=0;r=0&&e>t.partTarget&&(o+=1)}return new sf(r,o>=0?o:void 0,Zp)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:s,stats:r}=t,o=self.performance.now(),a=r.loading.first?Math.max(0,o-r.loading.first):0;if(s.advancedDateTime=Date.now()-a,s.live||null!=i&&i.live){if(s.reloaded(i),i&&this.log(`live playlist ${e} ${s.advanced?"REFRESHED "+s.lastPartSn+"-"+s.lastPartIndex:s.updated?"UPDATED":"MISSED"}`),i&&s.fragments.length>0&&lf(i,s),!this.canLoad||!s.live)return;let a,n,l;if(s.canBlockReload&&s.endSN&&s.advanced){const e=this.hls.config.lowLatencyMode,r=s.lastPartSn,o=s.endSN,d=s.lastPartIndex,h=r===o,c=e?0:d;-1!==d?(n=h?o+1:r,l=h?c:d+1):n=o+1;const u=s.age,p=u+s.ageHeader;let f=Math.min(p-s.partTarget,1.5*s.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${s.age}`),f=0;else{const e=Math.floor(f/s.targetduration);if(n+=e,void 0!==l){l+=Math.round(f%s.targetduration/s.partTarget)}this.log(`CDN Tune-in age: ${s.ageHeader}s last advanced ${u.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}s.tuneInGoal=f}if(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l),e||!h)return void this.loadPlaylist(a)}else(s.canBlockReload||s.canSkipUntil)&&(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l));const d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,c=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const s=e.fragments,r=4;if(s.length&&i*r>t){const e=1e3*s[s.length-1].duration;ethis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==n&&s.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,s){let r=function(e,t){const{canSkipUntil:i,canSkipDateRanges:s,endSN:r}=e;return i&&(void 0!==t?t-r:0)=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=gf(a,o);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,s.resolved=!0}return n}}class Lf{constructor(e,t=0,i=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=i}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class Pf{constructor(e,t,i,s=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=i,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new Lf(e),this.fast_=new Lf(t),this.defaultTTFB_=s,this.ttfb_=new Lf(e)}update(e,t){const{slow_:i,fast_:s,ttfb_:r}=this;i.halfLife!==e&&(this.slow_=new Lf(e,i.getEstimate(),i.getTotalWeight())),s.halfLife!==t&&(this.fast_=new Lf(t,s.getEstimate(),s.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new Lf(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,s=8*t/i;this.fast_.sample(i,s),this.slow_.sample(i,s)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const Bf={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},If={};function Mf(e,t,i,s,r,o){const a=e.audioCodec?e.audioGroups:null,n=null==o?void 0:o.audioCodec,l=null==o?void 0:o.channels,d=l?parseInt(l):n?1/0:2;let h=null;if(null!=a&&a.length)try{h=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const s=t.groups[i];if(!s)throw new Error(`Audio track group ${i} not found`);Object.keys(s.channels).forEach((t=>{e[t]=(e[t]||0)+s.channels[t]}))}return e}),{2:0})}catch(e){return!0}return void 0!==e.videoCodec&&(e.width>1920&&e.height>1088||e.height>1920&&e.width>1088||e.frameRate>Math.max(s,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(r,8e6))||!!h&&_c(d)&&Object.keys(h).some((e=>parseInt(e)>d))}function Uf(e,t,i){const s=e.videoCodec,r=e.audioCodec;if(!s||!r||!i)return Promise.resolve(Bf);const o={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(o.transferFunction=a.toLowerCase());const n=s.split(",").map((e=>({type:"media-source",video:yc(yc({},o),{},{contentType:np(e,"video")})})));return r&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);_c(i)&&i>2&&n.push.apply(n,r.split(",").map((e=>({type:"media-source",audio:{contentType:np(e,"audio"),channels:""+i}}))))}})))})),Promise.all(n.map((e=>{const t=function(e){const{audio:t,video:i}=e,s=i||t;if(s){const e=s.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return If[t]||(If[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:n,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:n,decodingInfoResults:[],error:e})))}function Ff(e,t){let i=!1,s=[];return e&&(i="SDR"!==e,s=[e]),t&&(s=t.allowedVideoRanges||Xp.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),s=i?s.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:s}}function Of(e,t){Lc.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function Nf(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let s=0;s-1===s.indexOf(e)))}(n,t.characteristics))&&(void 0===i||i(e,t))}function zf(e,t){const{audioCodec:i,channels:s}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==s&&s!==(t.channels||"2"))}function Gf(e,t,i){for(let s=t;s;s--)if(i(e[s]))return s;for(let s=t+1;s{const o=this.fragments[s];if(!o)return;if(r>=o.body.sn)return;if(!o.buffered&&!o.loaded)return void(o.body.type===i&&this.removeFragment(o.body));const a=o.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(o.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:s}=e;if(!t||"initSegment"===i.sn)return;const r=Kf(i),o=this.fragments[r];if(!o||o.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const r=i.elementaryStreams[e];if(!r)return;const n=t[e],l=a||!0===r.partial;o.range[e]=this.getBufferedTimes(i,s,l,n)})),o.loaded=null,Object.keys(o.range).length){o.buffered=!0;(o.body.endList=i.endList||o.body.endList)&&(this.endListFragments[o.body.type]=o),qf(o)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(o.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=Kf(e);let s=this.fragments[i];!s&&t&&(s=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),s&&(s.loaded=null,s.buffered=!0)}getBufferedTimes(e,t,i,s){const r={time:[],partial:i},o=e.start,a=e.end,n=e.minEndPTS||a,l=e.maxStartPTS||o;for(let e=0;e=t&&n<=i){r.time.push({startPTS:Math.max(o,s.start(e)),endPTS:Math.min(a,s.end(e))});break}if(ot){const t=Math.max(o,s.start(e)),i=Math.min(a,s.end(e));i>t&&(r.partial=!0,r.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return r}getPartialFragment(e){let t,i,s,r=null,o=0;const{bufferPadding:a,fragments:n}=this;return Object.keys(n).forEach((l=>{const d=n[l];d&&qf(d)&&(i=d.body.start-a,s=d.body.end+a,e>=i&&e<=s&&(t=Math.min(e-i,s-e),o<=t&&(r=d.body,o=t)))})),r}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||qf(t))}getState(e){const t=Kf(e),i=this.fragments[t];return i?i.buffered?qf(i)?Wf:$f:Hf:Vf}isTimeBuffered(e,t,i){let s,r;for(let o=0;o=s&&t<=r)return!0;if(t<=s)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:s}=t;if("initSegment"===i.sn||i.bitrateTest)return;const r=s?null:t,o=Kf(i);this.fragments[o]={body:i,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:s,timeRanges:r}=t;if("initSegment"===i.sn)return;const o=i.type;if(s){let e=this.activePartLists[o];e||(this.activePartLists[o]=e=[]),e.push(s)}this.timeRanges=r,Object.keys(r).forEach((e=>{const t=r[e];this.detectEvictedFragments(e,t,o,s)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=Kf(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,s,r){s&&!this.hasGaps||Object.keys(this.fragments).forEach((o=>{const a=this.fragments[o];if(!a)return;const n=a.body;n.type!==i||s&&!n.gap||n.starte&&(a.buffered||r)&&this.removeFragment(n)}))}removeFragment(e){const t=Kf(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function qf(e){var t,i,s;return e.buffered&&(e.body.gap||(null==(t=e.range.video)?void 0:t.partial)||(null==(i=e.range.audio)?void 0:i.partial)||(null==(s=e.range.audiovideo)?void 0:s.partial))}function Kf(e){return`${e.type}_${e.level}_${e.sn}`}const Yf={length:0,start:()=>0,end:()=>0};class Qf{static isBuffered(e,t){try{if(e){const i=Qf.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const s=Qf.getBuffered(e),r=[];let o;for(o=0;oo&&(s[r-1].end=e[t].end):s.push(e[t])}else s.push(e[t])}else s=e;let r,o=0,a=t,n=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void n(nm(e));e.gap=!1}const l=this.loader=e.loader=r?new r(s):new o(s),d=am(e),h=yf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:rm};e.stats=l.stats,l.load(d,c,{onSuccess:(t,i,s,r)=>{this.resetLoader(e,l);let o=t.data;s.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(o.slice(0,16)),o=o.slice(16)),a({frag:e,part:null,payload:o,networkDetails:r})},onError:(t,s,r,o)=>{this.resetLoader(e,l),n(new lm({type:Tc.NETWORK_ERROR,details:kc.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:yc({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:r,stats:o}))},onAbort:(t,i,s)=>{this.resetLoader(e,l),n(new lm({type:Tc.NETWORK_ERROR,details:kc.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:s,stats:t}))},onTimeout:(t,i,s)=>{this.resetLoader(e,l),n(new lm({type:Tc.NETWORK_ERROR,details:kc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:s,stats:t}))},onProgress:(i,s,r,o)=>{t&&t({frag:e,part:null,payload:r,networkDetails:o})}})}))}loadPart(e,t,i){this.abort();const s=this.config,r=s.fLoader,o=s.loader;return new Promise(((a,n)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void n(nm(e,t));const l=this.loader=e.loader=r?new r(s):new o(s),d=am(e,t),h=yf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:rm};t.stats=l.stats,l.load(d,c,{onSuccess:(s,r,o,n)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const d={frag:e,part:t,payload:s.data,networkDetails:n};i(d),a(d)},onError:(i,s,r,o)=>{this.resetLoader(e,l),n(new lm({type:Tc.NETWORK_ERROR,details:kc.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:yc({url:d.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:r,stats:o}))},onAbort:(i,s,r)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),n(new lm({type:Tc.NETWORK_ERROR,details:kc.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:r,stats:i}))},onTimeout:(i,s,r)=>{this.resetLoader(e,l),n(new lm({type:Tc.NETWORK_ERROR,details:kc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,s=t.stats,r=s.total;if(i.loaded+=s.loaded,r){const s=Math.round(e.duration/t.duration),o=Math.min(Math.round(i.loaded/r),s),a=(s-o)*Math.round(i.loaded/o);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const o=i.loading,a=s.loading;o.start?o.first+=a.first-a.start:(o.start=a.start,o.first=a.first),o.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function am(e,t=null){const i=t||e,s={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},r=i.byteRangeStartOffset,o=i.byteRangeEndOffset;if(_c(r)&&_c(o)){var a;let t=r,i=o;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=o-r;e%16&&(i=o+(16-e%16)),0!==r&&(s.resetIV=!0,t=r-16)}s.rangeStart=t,s.rangeEnd=i}return s}function nm(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),s={type:Tc.MEDIA_ERROR,details:kc.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(s.part=t),(t||e).stats.aborted=!0,new lm(s)}class lm extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class dm{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}class hm{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class cm{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,s=i[0],r=i[1],o=i[2],a=i[3],n=this.invSubMix,l=n[0],d=n[1],h=n[2],c=n[3],u=new Uint32Array(256);let p=0,f=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=f^f<<1^f<<2^f<<3^f<<4;i=i>>>8^255&i^99,e[p]=i,t[i]=p;const n=u[p],m=u[n],g=u[m];let y=257*u[i]^16843008*i;s[p]=y<<24|y>>>8,r[p]=y<<16|y>>>16,o[p]=y<<8|y>>>24,a[p]=y,y=16843009*g^65537*m^257*n^16843008*p,l[i]=y<<24|y>>>8,d[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,c[i]=y,p?(p=n^u[u[u[g^n]]],f^=u[u[f]]):p=f=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,s=0;for(;s{if(!s)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new dm(s,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((s=>(Lc.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const s=this.flush();if(s)return s.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=au(e,0,i),this.remainderData=au(e,i)),t}logOnce(e){this.logEnabled&&(Lc.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const pm=function(e){let t="";const i=e.length;for(let s=0;s1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}{constructor(e,t,i,s,r){super(),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=fm,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=0,this.startTimeOffset=null,this.loadedmetadata=!1,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.onvseeking=null,this.onvended=null,this.logPrefix="",this.log=void 0,this.warn=void 0,this.playlistType=r,this.logPrefix=s,this.log=Lc.log.bind(Lc,`${s}:`),this.warn=Lc.warn.bind(Lc,`${s}:`),this.hls=e,this.fragmentLoader=new om(e.config),this.keyLoader=i,this.fragmentTracker=t,this.config=e.config,this.decrypter=new um(e.config),e.on(Ec.MANIFEST_LOADED,this.onManifestLoaded,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;null!=e&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=fm}_streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;const i=t.partList;if(null!=i&&i.length){const e=i[i.length-1];return Qf.isBuffered(this.media,e.start+e.duration/2)}const s=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(s)}getLevelDetails(){var e;if(this.levels&&null!==this.levelLastLoaded)return null==(e=this.levelLastLoaded)?void 0:e.details}onMediaAttached(e,t){const i=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),i.addEventListener("seeking",this.onvseeking),i.addEventListener("ended",this.onvended);const s=this.config;this.levels&&s.autoStartLoad&&this.state===fm&&this.startLoad(s.startPosition)}onMediaDetaching(){const e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}onMediaSeeking(){const{config:e,fragCurrent:t,media:i,mediaBuffer:s,state:r}=this,o=i?i.currentTime:0,a=Qf.bufferInfo(s||i,o,e.maxBufferHole);if(this.log(`media seeking to ${_c(o)?o.toFixed(3):o}, state: ${r}`),this.state===Sm)this.resetLoadingState();else if(t){const i=e.maxFragLookUpTolerance,s=t.start-i,r=t.start+t.duration+i;if(!a.len||ra.end){const e=o>r;(o{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===ym||!this.fragCurrent&&i===vm)&&(this.fragmentTracker.removeFragment(e),this.state=mm):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(Ec.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==fm&&this.state!==wm&&(this.warn(t),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===Hf){const t=e.type,s=this.getFwdBufferInfo(this.mediaBuffer,t),r=Math.max(e.duration,s?s.len:this.config.maxBufferLength);this.reduceMaxBufferLength(r)&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===Wf&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const s={startOffset:e,endOffset:t,type:i};this.hls.trigger(Ec.BUFFER_FLUSHING,s)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:s}=t,r=e.decryptdata;if(s&&s.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const o=self.performance.now();return this.decrypter.decrypt(new Uint8Array(s),r.key.buffer,r.iv.buffer).catch((t=>{throw i.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const r=self.performance.now();return i.trigger(Ec.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:o,tdecrypt:r}}),t.payload=s,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==fm&&this.state!==wm&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=mm,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,s,r,o;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===Lp?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(s=e.endPTS)?s:NaN).toFixed(3)}] > buffer:${a?pm(Qf.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var n;if(e.type!==Bp){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=mm)}const t=null==(n=this.levels)?void 0:n[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=mm,a&&(!this.loadedmetadata&&e.type==Lp&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(o=this.fragPrevious)?void 0:o.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:s,partsLoaded:r}=e,o=!r||0===r.length||r.some((e=>!e)),a=new Xf(i.level,i.sn,i.stats.chunkCount+1,0,s?s.index:-1,!o);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,s){var r;const o=null==t?void 0:t.details;if(!this.levels||!o)throw new Error(`frag load aborted, missing level${o?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(r=e.decryptdata)&&r.key?!e.encrypted&&o.encryptedFragments.length&&this.keyLoader.loadClear(e,o.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${o.startSN}-${o.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=gm,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(Ec.KEY_LOADED,e),this.state===gm&&(this.state=mm),e})),this.hls.trigger(Ec.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const r=o.partList;if(r&&s){i>e.end&&o.fragmentHint&&(e=o.fragmentHint);const n=this.getNextPart(r,e,i);if(n>-1){const l=r[n];let d;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${o.startSN}-${o.endSN}] parts [0-${n}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=ym,d=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,s))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,s).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Ec.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):d}if(!e.url||this.loadedEndOfParts(r,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${o?"of ["+o.startSN+"-"+o.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),_c(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=ym;const n=this.config.progressive;let l;return l=n&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,s))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,n?s:void 0),a]).then((([e])=>(!n&&e&&s&&s(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Ec.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,s){return new Promise(((r,o)=>{var a;const n=[],l=null==(a=i.details)?void 0:a.partList,d=t=>{this.fragmentLoader.loadPart(e,t,s).then((s=>{n[t.index]=s;const o=s.part;this.hls.trigger(Ec.FRAG_LOADED,s);const a=cf(i,e.sn,t.index+1)||uf(l,e.sn,t.index+1);if(!a)return r({frag:e,part:o,partsLoaded:n});d(a)})).catch(o)};d(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===kc.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(Ec.ERROR,t)}else this.hls.trigger(Ec.ERROR,{type:Tc.OTHER_ERROR,details:kc.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==vm)return void(this.fragCurrent||this.state===fm||this.state===wm||(this.state=mm));const{frag:i,part:s,level:r}=t,o=self.performance.now();i.stats.parsing.end=o,s&&(s.stats.parsing.end=o),this.updateLevelTiming(i,s,r,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:s,sn:r,part:o}=e;if(null==t||!t[s])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${s}. The current chunk will not be buffered.`),null;const a=t[s],n=o>-1?cf(a,r,o):null,l=n?n.fragment:function(e,t,i){if(null==e||!e.details)return null;const s=e.details;let r=s.fragments[t-s.startSN];return r||(r=s.fragmentHint,r&&r.sn===t?r:to&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return _c(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:s}}=this,r=Qf.bufferInfo(e,t,s);if(0===r.len&&void 0!==r.nextStart){const o=this.fragmentTracker.getBufferedFrag(t,i);if(o&&r.nextStart=i&&(t.maxMaxBufferLength/=2,this.warn(`Reduce max buffer length to ${t.maxMaxBufferLength}s`),!0)}getAppendedFrag(e,t=Lp){const i=this.fragmentTracker.getAppendedFrag(e,Lp);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,s=i.length;if(!s)return null;const{config:r}=this,o=i[0].start;let a;if(t.live){const n=r.initialLiveManifestSize;if(st}getNextFragmentLoopLoading(e,t,i,s,r){const o=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,o&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,s);if(null!==t&&i.len+t.len>=r)return this.log(`buffer full after gaps in "${s}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let s=-1,r=!1,o=!0;for(let a=0,n=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let s=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),s=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!_c(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;i=i||0;for(let s=0;s=e.startSN&&r<=e.endSN){const o=t[r-e.startSN];i.cc===o.cc&&(s=o,this.log(`Live playlist, switching playlist, load frag with next SN: ${s.sn}`))}s||(s=function(e,t){return bf(e,(e=>e.cct?-1:0))}(t,i.cc),s&&this.log(`Live playlist, switching playlist, load frag with same CC: ${s.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(s=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return s}getFragmentAtPosition(e,t,i){const{config:s}=this;let{fragPrevious:r}=this,{fragments:o,endSN:a}=i;const{fragmentHint:n}=i,l=s.maxFragLookUpTolerance,d=i.partList,h=!!(s.lowLatencyMode&&null!=d&&d.length&&n);let c;if(h&&n&&!this.bitrateTest&&(o=o.concat(n),a=n.sn),et-l?0:l)}else c=o[o.length-1];if(c){const e=c.sn-i.startSN,t=this.fragmentTracker.getState(c);if((t===$f||t===Wf&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!h||d[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const t=o[e+1];c=c.sn=o-t.maxFragLookUpTolerance&&r<=a;if(null!==s&&i.duration>s&&(r${e.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${s}`),o}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(s=this.fragCurrent)?void 0:s.url}`);const r=t.details===kc.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction,{action:a,retryCount:n=0,retryConfig:l}=o||{};if(o&&a===kf&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const s=gf(l,n);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${n+1}/${l.maxNumRetry} in ${s}ms`),o.resolved=!0,this.retryDate=self.performance.now()+s,this.state=Am}else if(l&&o){if(this.resetFragmentErrors(e),!(n.5;s&&this.reduceMaxBufferLength(i.len);const r=!s;return r&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${t} buffer`),e.frag&&(this.fragmentTracker.removeFragment(e.frag),this.nextLoadPosition=e.frag.start),this.resetLoadingState(),r}return!1}resetFragmentErrors(e){e===Pp&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==fm&&(this.state=mm)}afterBufferFlushed(e,t,i){if(!e)return;const s=Qf.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,s,i),this.state===Sm&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=mm}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(e){this.warn(`The loading context changed while buffering fragment ${e.sn} of level ${e.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,i,s){var r;const o=i.details;if(!o)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,r)=>{const a=e.elementaryStreams[r];if(a){const n=a.endPTS-a.startPTS;if(n<=0)return this.warn(`Could not parse fragment ${e.sn} ${r} duration reliably (${n})`),t||!1;const l=s?0:nf(o,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(Ec.LEVEL_PTS_UPDATED,{details:o,level:i,drift:l,type:r,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const t=new Error(`Found no media in fragment ${e.sn} of level ${e.level} resetting transmuxer to fallback to playlist timing`);if(0===i.fragmentError&&(i.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(t.message),this.hls.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=_m,this.hls.trigger(Ec.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class Cm{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let s=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:Gp,duration:Number.POSITIVE_INFINITY});r{if(_c(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function Lm(e,t){return 255===e[t]&&240==(246&e[t+1])}function Pm(e,t){return 1&e[t+1]?7:9}function Bm(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function Im(e,t){return t+1=e.length)return!1;const s=Bm(e,t);if(s<=i)return!1;const r=t+s;return r===e.length||Im(e,r)}return!1}function Um(e,t,i,s,r){if(!e.samplerate){const o=function(e,t,i,s){let r,o,a,n;const l=navigator.userAgent.toLowerCase(),d=s,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&t[i+2])>>>6);const c=(60&t[i+2])>>>2;if(!(c>h.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,Lc.log(`manifest codec:${s}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,n=new Array(4),o=c-3):(r=2,n=new Array(2),o=c):-1!==l.indexOf("android")?(r=2,n=new Array(2),o=c):(r=5,n=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&c>=6?o=c-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!s&&1===a)&&(r=2,n=new Array(2)),o=c)),n[0]=r<<3,n[0]|=(14&c)>>1,n[1]|=(1&c)<<7,n[1]|=a<<3,5===r&&(n[1]|=(14&o)>>1,n[2]=(1&o)<<7,n[2]|=8,n[3]=0),{config:n,samplerate:h[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:d};{const t=new Error(`invalid ADTS sampling index:${c}`);e.emit(Ec.ERROR,Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,s,r);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,Lc.log(`parsed codec:${e.codec}, rate:${o.samplerate}, channels:${o.channelCount}`)}}function Fm(e){return 9216e4/e}function Om(e,t,i,s,r){const o=s+r*Fm(e.samplerate),a=function(e,t){const i=Pm(e,t);if(t+i<=e.length){const s=Bm(e,t)-i;if(s>0)return{headerLength:i,frameLength:s}}}(t,i);let n;if(a){const{frameLength:s,headerLength:r}=a,l=r+s,d=Math.max(0,i+l-t.length);d?(n=new Uint8Array(l-r),n.set(t.subarray(i+r,t.length),0)):n=t.subarray(i+r,i+l);const h={unit:n,pts:o};return d||e.samples.push(h),{sample:h,length:l,missing:d}}const l=t.length-i;n=new Uint8Array(l),n.set(t.subarray(i,t.length),0);return{sample:{unit:n,pts:o},length:l,missing:-1}}let Nm=null;const jm=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],zm=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Gm=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Vm=[0,1,1,4];function Hm(e,t,i,s,r){if(i+24>t.length)return;const o=Wm(t,i);if(o&&i+o.frameLength<=t.length){const a=s+r*(9e4*o.samplesPerFrame/o.sampleRate),n={unit:t.subarray(i,i+o.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=o.channelCount,e.samplerate=o.sampleRate,e.samples.push(n),{sample:n,length:o.frameLength,missing:0}}}function Wm(e,t){const i=e[t+1]>>3&3,s=e[t+1]>>1&3,r=e[t+2]>>4&15,o=e[t+2]>>2&3;if(1!==i&&0!==r&&15!==r&&3!==o){const a=e[t+2]>>1&1,n=e[t+3]>>6,l=1e3*jm[14*(3===i?3-s:3===s?3:4)+r-1],d=zm[3*(3===i?0:2===i?1:2)+o],h=3===n?1:2,c=Gm[i][s],u=Vm[s],p=8*c*u,f=Math.floor(c*l/d+a)*u;if(null===Nm){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Nm=e?parseInt(e[1]):0}return!!Nm&&Nm<=87&&2===s&&l>=224e3&&0===n&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function $m(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function Jm(e,t){return t+1{let i=0,s=5;t+=s;const r=new Uint32Array(1),o=new Uint32Array(1),a=new Uint8Array(1);for(;s>0;){a[0]=e[t];const n=Math.min(s,8),l=8-n;o[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const o=t[i+4]>>6;if(o>=3)return-1;const a=[48e3,44100,32e3][o],n=63&t[i+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*n+o];if(i+l>t.length)return-1;const d=t[i+6]>>5;let h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));const c=(t[i+6]<<8|t[i+7])>>12-h&1,u=[2,1,2,3,3,4,4,5][d]+c,p=t[i+5]>>3,f=7&t[i+5],m=new Uint8Array([o<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|n>>4,n<<4&224]),g=s+r*(1536/a*9e4),y=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:y,pts:g}),l}class Zm{constructor(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,s=new Uint8Array(4),r=Math.min(4,t);if(0===r)throw new Error("no bytes available");s.set(e.subarray(i,i+r)),this.word=new DataView(s.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&Lc.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return t=e-t,t>0&&this.bitsAvailable?i<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,s=8;for(let r=0;r{var o;switch(s.type){case 1:{let t=!1;a=!0;const r=s.data;if(l&&r.length>4){const e=new Zm(r).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var d;if(t)null!=(d=n)&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null);n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.frame=!0,n.key=t;break}case 5:a=!0,null!=(o=n)&&o.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.key=!0,n.frame=!0;break;case 6:a=!0,$u(s.data,1,i.pts,t.samples);break;case 7:{var h,c;a=!0,l=!0;const t=s.data,i=new Zm(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(h=e.pixelRatio)?void 0:h[0])!==i.pixelRatio[0]||(null==(c=e.pixelRatio)?void 0:c[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=r;const s=t.subarray(1,4);let o="avc1.";for(let e=0;e<3;e++){let t=s[e].toString(16);t.length<2&&(t="0"+t),o+=t}e.codec=o}break}case 8:a=!0,e.pps=[s.data];break;case 9:a=!0,e.audFound=!0,n&&this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,n&&(n.debug+="unknown NAL "+s.type+" ")}if(n&&a){n.units.push(s)}})),s&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let s=e.naluState||0;const r=s,o=[];let a,n,l,d=0,h=-1,c=0;for(-1===s&&(h=0,c=31&t[0],s=0,d=1);d=0){const e={data:t.subarray(h,n),type:c};o.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(r&&d<=4-r&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-r)),n>0&&(i.data=Vu(i.data,t.subarray(0,n)),i.state=0))}d=0&&s>=0){const e={data:t.subarray(h,i),type:c,state:s};o.push(e)}if(0===o.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=Vu(i.data,t))}return e.naluState=s,o}}class tg{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new um(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const s=e[t].unit;if(s.length<=16)return;const r=s.subarray(16,s.length-s.length%16),o=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(o).then((r=>{const o=new Uint8Array(r);s.set(o,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(e,t,i){for(;;t++){if(t>=e.length)return void i();if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,i),!this.decrypter.isSync()))return}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let s=0;for(let t=32;t{r.data=this.getAvcDecryptedUnit(o,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,s)}))}decryptAvcSamples(e,t,i,s){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void s();const r=e[t].units;for(;!(i>=r.length);i++){const o=r[i];if(!(o.data.length<=48||1!==o.type&&5!==o.type||(this.decryptAvcSample(e,t,i,s,o),this.decrypter.isSync())))return}}}}const ig=188;class sg{constructor(e,t,i){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.videoParser=new eg}static probe(e){const t=sg.syncOffset(e);return t>0&&Lc.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-ig)+1,s=0;for(;s1&&(0===o&&a>2||n+ig>i))return o}s++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:Cu[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=sg.createTrack("video"),this._audioTrack=sg.createTrack("audio",s),this._id3Track=sg.createTrack("id3"),this._txtTrack=sg.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,s=!1){let r;i||(this.sampleAes=null);const o=this._videoTrack,a=this._audioTrack,n=this._id3Track,l=this._txtTrack;let d=o.pid,h=o.pesData,c=a.pid,u=n.pid,p=a.pesData,f=n.pesData,m=null,g=this.pmtParsed,y=this._pmtId,A=e.length;if(this.remainderData&&(A=(e=Vu(this.remainderData,e)).length,this.remainderData=null),A>4>1){if(v=t+5+e[t+4],v===t+ig)continue}else v=t+4;switch(A){case d:s&&(h&&(r=lg(h))&&this.videoParser.parseAVCPES(o,l,r,!1,this._duration),h={data:[],size:0}),h&&(h.data.push(e.subarray(v,t+ig)),h.size+=t+ig-v);break;case c:if(s){if(p&&(r=lg(p)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}p={data:[],size:0}}p&&(p.data.push(e.subarray(v,t+ig)),p.size+=t+ig-v);break;case u:s&&(f&&(r=lg(f))&&this.parseID3PES(n,r),f={data:[],size:0}),f&&(f.data.push(e.subarray(v,t+ig)),f.size+=t+ig-v);break;case 0:s&&(v+=e[v]+1),y=this._pmtId=og(e,v);break;case y:{s&&(v+=e[v]+1);const r=ag(e,v,this.typeSupported,i);d=r.videoPid,d>0&&(o.pid=d,o.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(n.pid=u),null===m||g||(Lc.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${b} to parse all TS packets.`),m=null,t=b-188),g=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=A}}else v++;if(v>0){const e=new Error(`Found ${v} TS packet/s that do not start with 0x47`);this.observer.emit(Ec.ERROR,Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message})}o.pesData=h,a.pesData=p,n.pesData=f;const _={audioTrack:a,videoTrack:o,id3Track:n,textTrack:l};return s&&this.extractRemainingSamples(_),_}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:s,textTrack:r}=e,o=i.pesData,a=t.pesData,n=s.pesData;let l;if(o&&(l=lg(o))?(this.videoParser.parseAVCPES(i,r,l,!0,this._duration),i.pesData=null):i.pesData=o,a&&(l=lg(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&Lc.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;n&&(l=lg(n))?(this.parseID3PES(s,l),s.pesData=null):s.pesData=n}demuxSampleAes(e,t,i){const s=this.demux(e,i,!0,!this.config.progressive),r=this.sampleAes=new tg(this.observer,this.config,t);return this.decrypt(s,r)}decrypt(e,t){return new Promise((i=>{const{audioTrack:s,videoTrack:r}=e;s.samples&&"aac"===s.segmentCodec?t.decryptAacSamples(s.samples,0,(()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)})):i(e)})):r.samples&&t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const s=this.aacOverFlow;let r,o,a,n=t.data;if(s){this.aacOverFlow=null;const t=s.missing,r=s.sample.unit.byteLength;if(-1===t)n=Vu(s.sample.unit,n);else{const o=r-t;s.sample.unit.set(n.subarray(0,t),o),e.samples.push(s.sample),i=s.missing}}for(r=i,o=n.length;r0;)n+=o}}parseID3PES(e,t){if(void 0===t.pts)return void Lc.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=vc({},t,{type:this._videoTrack?Hp:Gp,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function rg(e,t){return((31&e[t+1])<<8)+e[t+2]}function og(e,t){return(31&e[t+10])<<8|e[t+11]}function ag(e,t,i,s){const r={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},o=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t0){let s=t+5,n=a;for(;n>2;){if(106===e[s])!0!==i.ac3?Lc.log("AC-3 audio found, not supported in this browser for now"):(r.audioPid=o,r.segmentAudioCodec="ac3");const t=e[s+1]+2;s+=t,n-=t}}break;case 194:case 135:Lc.warn("Unsupported EC-3 in M2TS found");break;case 36:Lc.warn("Unsupported HEVC in M2TS found")}t+=a+5}return r}function ng(e){Lc.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function lg(e){let t,i,s,r,o,a=0;const n=e.data;if(!e||0===e.size)return null;for(;n[0].length<19&&n.length>1;)n[0]=Vu(n[0],n[1]),n.splice(1,1);t=n[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(o=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,r-o>54e5&&(Lc.warn(`${Math.round((r-o)/9e4)}s delta between PTS and DTS, align them`),r=o)):o=r),s=t[8];let d=s+9;if(e.size<=d)return null;e.size-=d;const h=new Uint8Array(e.size);for(let e=0,i=n.length;ei){d-=i;continue}t=t.subarray(d),i-=d,d=0}h.set(t,a),a+=i}return i&&(i-=s+3),{data:h,pts:r,dts:o,len:i}}return null}class dg{static getSilentFrame(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}const hg=Math.pow(2,32)-1;class cg{static init(){let e;for(e in cg.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},cg.types)cg.types.hasOwnProperty(e)&&(cg.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);cg.HDLR_TYPES={video:t,audio:i};const s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);cg.STTS=cg.STSC=cg.STCO=r,cg.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),cg.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),cg.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),cg.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const o=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),n=new Uint8Array([0,0,0,1]);cg.FTYP=cg.box(cg.types.ftyp,o,n,o,a),cg.DINF=cg.box(cg.types.dinf,cg.box(cg.types.dref,s))}static box(e,...t){let i=8,s=t.length;const r=s;for(;s--;)i+=t[s].byteLength;const o=new Uint8Array(i);for(o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4),s=0,i=8;s>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))}static mdia(e){return cg.box(cg.types.mdia,cg.mdhd(e.timescale,e.duration),cg.hdlr(e.type),cg.minf(e))}static mfhd(e){return cg.box(cg.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?cg.box(cg.types.minf,cg.box(cg.types.smhd,cg.SMHD),cg.DINF,cg.stbl(e)):cg.box(cg.types.minf,cg.box(cg.types.vmhd,cg.VMHD),cg.DINF,cg.stbl(e))}static moof(e,t,i){return cg.box(cg.types.moof,cg.mfhd(e),cg.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=cg.trak(e[t]);return cg.box.apply(null,[cg.types.moov,cg.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(cg.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=cg.trex(e[t]);return cg.box.apply(null,[cg.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(hg+1)),s=Math.floor(t%(hg+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return cg.box(cg.types.mvhd,r)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let s,r;for(s=0;s>>8&255),r.push(255&s),r=r.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),o.push(255&s),o=o.concat(Array.prototype.slice.call(i));const a=cg.box(cg.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(o))),n=e.width,l=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return cg.box(cg.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,n>>8&255,255&n,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),a,cg.box(cg.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),cg.box(cg.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))}static esds(e){const t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))}static audioStsd(e){const t=e.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,255&t,0,0])}static mp4a(e){return cg.box(cg.types.mp4a,cg.audioStsd(e),cg.box(cg.types.esds,cg.esds(e)))}static mp3(e){return cg.box(cg.types[".mp3"],cg.audioStsd(e))}static ac3(e){return cg.box(cg.types["ac-3"],cg.audioStsd(e),cg.box(cg.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?cg.box(cg.types.stsd,cg.STSD,cg.mp3(e)):"ac3"===e.segmentCodec?cg.box(cg.types.stsd,cg.STSD,cg.ac3(e)):cg.box(cg.types.stsd,cg.STSD,cg.mp4a(e)):cg.box(cg.types.stsd,cg.STSD,cg.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,s=e.width,r=e.height,o=Math.floor(i/(hg+1)),a=Math.floor(i%(hg+1));return cg.box(cg.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>8&255,255&s,0,0,r>>8&255,255&r,0,0]))}static traf(e,t){const i=cg.sdtp(e),s=e.id,r=Math.floor(t/(hg+1)),o=Math.floor(t%(hg+1));return cg.box(cg.types.traf,cg.box(cg.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),cg.box(cg.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o])),cg.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,cg.box(cg.types.trak,cg.tkhd(e),cg.mdia(e))}static trex(e){const t=e.id;return cg.box(cg.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],s=i.length,r=12+16*s,o=new Uint8Array(r);let a,n,l,d,h,c;for(t+=8+r,o.set(["video"===e.type?1:0,0,15,1,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,d>>>24&255,d>>>16&255,d>>>8&255,255&d,h.isLeading<<2|h.dependsOn,h.isDependedOn<<6|h.hasRedundancy<<4|h.paddingValue<<1|h.isNonSync,61440&h.degradPrio,15&h.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return cg.box(cg.types.trun,o)}static initSegment(e){cg.types||cg.init();const t=cg.moov(e);return Vu(cg.FTYP,t)}}cg.types=void 0,cg.HDLR_TYPES=void 0,cg.STTS=void 0,cg.STSC=void 0,cg.STCO=void 0,cg.STSZ=void 0,cg.VMHD=void 0,cg.SMHD=void 0,cg.STSD=void 0,cg.FTYP=void 0,cg.DINF=void 0;function ug(e,t,i=1,s=!1){const r=e*t*i;return s?Math.round(r):r}function pg(e,t=!1){return ug(e,1e3,1/9e4,t)}let fg,mg=null,gg=null;class yg{constructor(e,t,i,s=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.ISGenerated=!1,null===mg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);mg=e?parseInt(e[1]):0}if(null===gg){const e=navigator.userAgent.match(/Safari\/(\d+)/i);gg=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){Lc.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){Lc.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){Lc.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const s=i.pts-e;return s<-4294967296?(t=!0,Ag(e,i.pts)):s>0?e:i.pts}),e[0].pts);return t&&Lc.debug("PTS rollover detected"),i}remux(e,t,i,s,r,o,a,n){let l,d,h,c,u,p,f=r,m=r;const g=e.pid>-1,y=t.pid>-1,A=t.samples.length,b=e.samples.length>0,v=a&&A>0||A>1;if((!g||b)&&(!y||v)||this.ISGenerated||a){if(this.ISGenerated){var _,S,w,E;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(S=e.pixelRatio)?void 0:S[0])&&(null==(w=t.pixelRatio)?void 0:w[1])===(null==(E=e.pixelRatio)?void 0:E[1])||this.resetInitSegment()}else h=this.generateIS(e,t,r,o);const i=this.isVideoContiguous;let s,a=-1;if(v&&(a=function(e){for(let t=0;t0){Lc.warn(`[mp4-remuxer]: Dropped ${a} out of ${A} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,s=m}else-1===a&&(Lc.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),p=!1);if(this.ISGenerated){if(b&&v){const i=this.getVideoStartPts(t.samples),s=(Ag(e.samples[0].pts,i)-i)/t.inputTimeScale;f+=Math.max(0,s),m+=Math.max(0,-s)}if(b){if(e.samplerate||(Lc.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,r,o)),d=this.remuxAudio(e,f,this.isAudioContiguous,o,y||v||n===Pp?m:void 0),v){const s=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(Lc.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,r,o)),l=this.remuxVideo(t,m,i,s)}}else v&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=s)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=bg(i,r,this._initPTS,this._initDTS)),s.samples.length&&(c=vg(s,r,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}}generateIS(e,t,i,s){const r=e.samples,o=t.samples,a=this.typeSupported,n={},l=this._initPTS;let d,h,c,u=!l||s,p="audio/mp4";if(u&&(d=h=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(p="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}n.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):cg.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(c=e.inputTimeScale,l&&c===l.timescale?u=!1:d=h=r[0].pts-Math.round(c*i))}if(t.sps&&t.pps&&o.length){if(t.timescale=t.inputTimeScale,n.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:cg.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(c=t.inputTimeScale,l&&c===l.timescale)u=!1;else{const e=this.getVideoStartPts(o),t=Math.round(c*i);h=Math.min(h,Ag(o[0].dts,e)-t),d=Math.min(d,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(n).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:d,timescale:c},this._initDTS={baseTime:h,timescale:c}):d=c=void 0,{tracks:n,initPTS:d,timescale:c}}remuxVideo(e,t,i,s){const r=e.inputTimeScale,o=e.samples,a=[],n=o.length,l=this._initPTS;let d,h,c=this.nextAvcDts,u=8,p=this.videoSampleDuration,f=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===c){const e=t*r,s=o[0].pts-Ag(o[0].dts,o[0].pts);mg&&null!==c&&Math.abs(e-s-c)<15e3?i=!0:c=e-s}const y=l.baseTime*r/l.timescale;for(let e=0;e0?e-1:e].dts&&(g=!0)}g&&o.sort((function(e,t){const i=e.dts-t.dts,s=e.pts-t.pts;return i||s})),d=o[0].dts,h=o[o.length-1].dts;const A=h-d,b=A?Math.round(A/(n-1)):p||e.inputTimeScale/30;if(i){const e=d-c,i=e>b,s=e<-1;if((i||s)&&(i?Lc.warn(`AVC: ${pg(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):Lc.warn(`AVC: ${pg(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!s||c>=o[0].pts||mg)){d=c;const t=o[0].pts-e;if(i)o[0].dts=d,o[0].pts=t;else for(let i=0;it);i++)o[i].dts-=e,o[i].pts-=e;Lc.log(`Video: Initial PTS/DTS adjusted: ${pg(t,!0)}/${pg(d,!0)}, delta: ${pg(e,!0)} ms`)}}d=Math.max(0,d);let v=0,_=0,S=d;for(let e=0;e0?t.dts-o[e-1].dts:b;if(l=e>0?t.pts-o[e-1].pts:b,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*r),o=(s?f+s*r:this.nextAudioPts)-t.pts;o>e?(p=o-a,p<0?p=a:k=!0,Lc.log(`[mp4-remuxer]: It is approximately ${o/90} ms to the next segment; using duration ${p/90} ms for the last video frame.`)):p=a}else p=a}const h=Math.round(t.pts-t.dts);C=Math.min(C,p),x=Math.max(x,p),D=Math.min(D,l),R=Math.max(R,l),a.push(new _g(t.key,p,d,h))}if(a.length)if(mg){if(mg<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(gg&&R-D0&&(s&&Math.abs(g-m)<9e3||Math.abs(Ag(p[0].pts-y,g)-m)<20*l),p.forEach((function(e){e.pts=Ag(e.pts-y,g)})),!i||m<0){if(p=p.filter((e=>e.pts>=0)),!p.length)return;m=0===r?0:s&&!u?Math.max(0,g):p[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,s=m;i=t*l&&d<1e4&&u){let t=Math.round(n/l);s=a-t*l,s<0&&(t--,s+=l),0===i&&(this.nextAudioPts=m=s),Lc.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(s/o).toFixed(3)}s due to ${Math.round(1e3*n/o)} ms gap.`);for(let o=0;o0))return;_+=f;try{A=new Uint8Array(_)}catch(e){return void this.observer.emit(Ec.ERROR,Ec.ERROR,{type:Tc.MUX_ERROR,details:kc.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:_,reason:`fail allocating audio mdat ${_}`})}if(!h){new DataView(A.buffer).setUint32(0,_),A.set(cg.types.mdat,4)}}A.set(r,f);const l=r.byteLength;f+=l,c.push(new _g(!0,n,l,0)),v=o}const w=c.length;if(!w)return;const E=c[c.length-1];this.nextAudioPts=m=v+a*E.duration;const T=h?new Uint8Array(0):cg.moof(e.sequenceNumber++,b/a,vc({},e,{samples:c}));e.samples=[];const k=b/o,C=m/o,D={data1:T,data2:A,startPTS:k,endPTS:C,startDTS:k,endDTS:C,type:"audio",hasAudio:!0,hasVideo:!1,nb:w};return this.isAudioContiguous=!0,D}remuxEmptyAudio(e,t,i,s){const r=e.inputTimeScale,o=r/(e.samplerate?e.samplerate:r),a=this.nextAudioPts,n=this._initDTS,l=9e4*n.baseTime/n.timescale,d=(null!==a?a:s.startDTS*r)+l,h=s.endDTS*r+l,c=1024*o,u=Math.ceil((h-d)/c),p=dg.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(Lc.warn("[mp4-remuxer]: remux empty Audio"),!p)return void Lc.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const f=[];for(let e=0;e4294967296;)e+=i;return e}function bg(e,t,i,s){const r=e.samples.length;if(!r)return;const o=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const o=e.samples;return e.samples=[],{samples:o}}class _g{constructor(e,t,i,s){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=s,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function Sg(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===Oc){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return up(i,!1)}const e="mp4a.40.5";return Lc.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return Lc.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{fg=self.performance.now.bind(self.performance)}catch(e){Lc.debug("Unable to use Performance API on this environment"),fg=null==qc?void 0:qc.Date.now}const wg=[{demux:class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,i,s){const r=this.videoTrack=Dm("video",1),o=this.audioTrack=Dm("audio",1),a=this.txtTrack=Dm("text",1);if(this.id3Track=Dm("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const n=Uu(e);if(n.video){const{id:e,timescale:t,codec:i}=n.video;r.id=e,r.timescale=a.timescale=t,r.codec=i}if(n.audio){const{id:e,timescale:t,codec:i}=n.audio;o.id=e,o.timescale=t,o.codec=i}a.id=Cu.text,r.sampleDuration=0,r.duration=o.duration=s}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=s>1?i+s:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const s=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=Vu(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=Iu(e,["moof"]);if(i.length<2)return t.remainder=e,t;const s=i[i.length-1];return t.valid=au(e,0,s.byteOffset-8),t.remainder=au(e,s.byteOffset-8),t}(i);this.remainderData=t.remainder,s.samples=t.valid||new Uint8Array}else s.samples=i;const o=this.extractID3Track(s,t);return r.samples=Hu(t,s),{videoTrack:s,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const s=this.extractID3Track(t,this.timeOffset);return i.samples=Hu(e,t),{videoTrack:t,audioTrack:Dm(),id3Track:s,textTrack:Dm()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const s=Iu(e.samples,["emsg"]);s&&s.forEach((e=>{const s=function(e){const t=e[0];let i="",s="",r=0,o=0,a=0,n=0,l=0,d=0;if(0===t){for(;"\0"!==Du(e.subarray(d,d+1));)i+=Du(e.subarray(d,d+1)),d+=1;for(i+=Du(e.subarray(d,d+1)),d+=1;"\0"!==Du(e.subarray(d,d+1));)s+=Du(e.subarray(d,d+1)),d+=1;s+=Du(e.subarray(d,d+1)),d+=1,r=Ru(e,12),o=Ru(e,16),n=Ru(e,20),l=Ru(e,24),d=28}else if(1===t){d+=4,r=Ru(e,d),d+=4;const t=Ru(e,d);d+=4;const o=Ru(e,d);for(d+=4,a=2**32*t+o,Sc(a)||(a=Number.MAX_SAFE_INTEGER,Lc.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),n=Ru(e,d),d+=4,l=Ru(e,d),d+=4;"\0"!==Du(e.subarray(d,d+1));)i+=Du(e.subarray(d,d+1)),d+=1;for(i+=Du(e.subarray(d,d+1)),d+=1;"\0"!==Du(e.subarray(d,d+1));)s+=Du(e.subarray(d,d+1)),d+=1;s+=Du(e.subarray(d,d+1)),d+=1}return{schemeIdUri:i,value:s,timeScale:r,presentationTime:a,presentationTimeDelta:o,eventDuration:n,id:l,payload:e.subarray(d,e.byteLength)}}(e);if(Km.test(s.schemeIdUri)){const e=_c(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale;let r=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const o=s.payload;i.samples.push({data:o,len:o.byteLength,dts:e,pts:e,type:Hp,duration:r})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,i,s){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&Iu(e,["moov","trak"]).forEach((e=>{const t=Iu(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let s=Iu(t,["enca"]);const r=s.length>0;r||(s=Iu(t,["encv"])),s.forEach((e=>{Iu(r?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=zu(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(Lc.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Eu(e)} -> ${Eu(i)}`),t.set(i,8))}}))}))}));return e}(e,s)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const s=this.initData=Uu(e);s.audio&&(t=Sg(s.audio,Oc)),s.video&&(i=Sg(s.video,Nc));const r={};s.audio&&s.video?r.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:s.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:s.video?r.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:Lc.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,i,s,r,o){var a,n;let{initPTS:l,lastEndTime:d}=this;const h={audio:void 0,video:void 0,text:s,id3:i,initSegment:void 0};_c(d)||(d=this.lastEndTime=r||0);const c=t.samples;if(null==c||!c.length)return h;const u={initPTS:void 0,timescale:1};let p=this.initData;if(null!=(a=p)&&a.length||(this.generateInitSegment(c),p=this.initData),null==(n=p)||!n.length)return Lc.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const f=function(e,t){let i=0,s=0,r=0;const o=Iu(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+o.earliestPresentationTime/o.timescale),s=i-t}}if(s&&_c(s))return s}return s||r}(c,p),m=function(e,t){return Iu(t,["moof","traf"]).reduce(((t,i)=>{const s=Iu(i,["tfdt"])[0],r=s[0],o=Iu(i,["tfhd"]).reduce(((t,i)=>{const o=Ru(i,4),a=e[o];if(a){let e=Ru(s,4);if(1===r){if(e===Tu)return Lc.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=Tu+1,e+=Ru(s,8)}const i=e/(a.timescale||9e4);if(_c(i)&&(null===t||ir}(l,g,r,f)||u.timescale!==l.timescale&&o)&&(u.initPTS=g-r,l&&1===l.timescale&&Lc.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=e?g-l.baseTime/l.timescale:d,A=y+f;!function(e,t,i){Iu(t,["moof","traf"]).forEach((t=>{Iu(t,["tfhd"]).forEach((s=>{const r=Ru(s,4),o=e[r];if(!o)return;const a=o.timescale||9e4;Iu(t,["tfdt"]).forEach((e=>{const t=e[0],s=i*a;if(s){let i=Ru(e,4);if(0===t)i-=s,i=Math.max(i,0),Bu(e,4,i);else{i*=Math.pow(2,32),i+=Ru(e,8),i-=s,i=Math.max(i,0);const t=Math.floor(i/(Tu+1)),r=Math.floor(i%(Tu+1));Bu(e,4,t),Bu(e,8,r)}}}))}))}))}(p,c,l.baseTime/l.timescale),f>0?this.lastEndTime=A:(Lc.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const b=!!p.audio,v=!!p.video;let _="";b&&(_+="audio"),v&&(_+="video");const S={data1:c,startPTS:y,startDTS:y,endPTS:A,endDTS:A,type:_,hasAudio:b,hasVideo:v,nb:1,dropped:0};return h.audio="audio"===S.type?S:void 0,h.video="audio"!==S.type?S:void 0,h.initSegment=u,h.id3=bg(i,r,l,l),s.samples.length&&(h.text=vg(s,r,l)),h}}},{demux:sg,remux:yg},{demux:class extends xm{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,s){super.resetInitSegment(e,t,i,s),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:s,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=du(e,0);let i=(null==t?void 0:t.length)||0;if(qm(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(o,t);if(b&&"AES-128"===b.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(o,b.key.buffer,b.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(o,b.key.buffer,b.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return r.executeEnd=fg(),Tg(i);o=new Uint8Array(t)}}const v=this.needsProbing(d,h);if(v){const e=this.configureTransmuxer(o);if(e)return Lc.warn(`[transmuxer] ${e.message}`),this.observer.emit(Ec.ERROR,Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),r.executeEnd=fg(),Tg(i)}(d||h||p||v)&&this.resetInitSegment(A,f,m,y,t),(d||p||v)&&this.resetInitialTimestamp(g),l||this.resetContiguity();const _=this.transmux(o,b,u,c,i),S=this.currentTransmuxState;return S.contiguous=!0,S.discontinuity=!1,S.trackSwitch=!1,r.executeEnd=fg(),_}flush(e){const t=e.transmuxing;t.executeStart=fg();const{decrypter:i,currentTransmuxState:s,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(e)));const o=[],{timeOffset:a}=s;if(i){const t=i.flush();t&&o.push(this.push(t,null,e))}const{demuxer:n,remuxer:l}=this;if(!n||!l)return t.executeEnd=fg(),[Tg(e)];const d=n.flush(a);return kg(d)?d.then((t=>(this.flushRemux(o,t,e),o))):(this.flushRemux(o,d,e),o)}flushRemux(e,t,i){const{audioTrack:s,videoTrack:r,id3Track:o,textTrack:a}=t,{accurateTimeOffset:n,timeOffset:l}=this.currentTransmuxState;Lc.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const d=this.remuxer.remux(s,r,o,a,l,n,!0,this.id);e.push({remuxResult:d,chunkMeta:i}),i.transmuxing.executeEnd=fg()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,s,r){const{demuxer:o,remuxer:a}=this;o&&a&&(o.resetInitSegment(e,t,i,s),a.resetInitSegment(e,t,i,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,s,r){let o;return o=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,s,r):this.transmuxUnencrypted(e,i,s,r),o}transmuxUnencrypted(e,t,i,s){const{audioTrack:r,videoTrack:o,id3Track:a,textTrack:n}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,o,a,n,t,i,!1,this.id),chunkMeta:s}}transmuxSampleAes(e,t,i,s,r){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,s,!1,this.id),chunkMeta:r})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:s,vendor:r}=this;let o;for(let t=0,i=wg.length;t({remuxResult:{},chunkMeta:e});function kg(e){return"then"in e&&e.then instanceof Function}class Cg{constructor(e,t,i,s,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=i,this.duration=s,this.defaultInitPts=r||null}}class Dg{constructor(e,t,i,s,r,o){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=i,this.trackSwitch=s,this.timeOffset=r,this.initSegmentChange=o}}var xg={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,s,o,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var n=new r(s,o||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],n]:e._events[l].push(n):(e._events[l]=n,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function n(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),n.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},n.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,o=s.length,a=new Array(o);r{(t=t||{}).frag=this.frag,t.id=this.id,e===Ec.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new Rg,this.observer.on(Ec.FRAG_DECRYPTED,o),this.observer.on(Ec.ERROR,o);const a=sp(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},n={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')},l=navigator.vendor;if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(Lc.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(r.workerPath)):(Lc.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);r.enableWorker=!1,Lc.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(Ec.ERROR,{type:Tc.OTHER_ERROR,details:kc.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:n,vendor:l,id:t,config:JSON.stringify(r)})}catch(e){Lc.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new Eg(this.observer,n,r,l,t)}return}}this.transmuxer=new Eg(this.observer,n,r,l,t)}resetWorker(){if(this.workerContext){const{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,s,r,o,a,n,l,d){var h,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,p=o?o.start:r.start,f=r.decryptdata,m=this.frag,g=!(m&&r.cc===m.cc),y=!(m&&l.level===m.level),A=m?l.sn-m.sn:-1,b=this.part?l.part-this.part.index:-1,v=0===A&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),_=!y&&(1===A||0===A&&(1===b||v&&b<=0)),S=self.performance.now();(y||A||0===r.stats.parsing.start)&&(r.stats.parsing.start=S),!o||!b&&_||(o.stats.parsing.start=S);const w=!(m&&(null==(h=r.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),E=new Dg(g,_,n,y,p,w);if(!_||g||w){Lc.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${g}\n trackSwitch: ${y}\n contiguous: ${_}\n accurateTimeOffset: ${n}\n timeOffset: ${p}\n initSegmentChange: ${w}`);const e=new Cg(i,s,t,a,d);this.configureTransmuxer(e)}if(this.frag=r,this.part=o,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:f,chunkMeta:l,state:E},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,f,l,E);kg(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);kg(i)||t.async?(kg(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.FRAG_PARSING_ERROR,chunkMeta:t,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data,i=this.hls;switch(t.event){case"init":{var s;const e=null==(s=this.workerContext)?void 0:s.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":Lc[t.data.logType]&&Lc[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,i.trigger(t.event,t.data)}}configureTransmuxer(e){const{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}function Pg(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function Ig(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class Mg{constructor(e){this.buffered=void 0;const t=(t,i,s)=>{if((i>>>=0)>s-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${s})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class Ug{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const s=this.queues[t];s.push(e),1!==s.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),s={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(s,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){Lc.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const s=this.buffers[e];null!=s&&s.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const Fg=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function Og(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))}const Ng={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},jg=function(e){let t=e;return Ng.hasOwnProperty(e)&&(t=Ng[e]),String.fromCharCode(t)},zg=15,Gg=100,Vg={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Hg={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Wg={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},$g={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Jg=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class qg{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;Lc.log(`${this.time} [${e}] ${i}`)}}}const Kg=function(e){const t=[];for(let i=0;iGg&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Gg)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=jg(e);this.pos>=Gg?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",s=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class ey{constructor(e,t,i){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new Zg(i),this.nonDisplayedMemory=new Zg(i),this.lastOutputScreen=new Zg(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(()=>"MODE="+e)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class ty{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const s=this.logger=new qg;this.channels=[null,new ey(e,t,s),new ey(e+1,i,s)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){let i,s,r,o=!1;this.logger.time=e;for(let e=0;e ("+Kg([s,r])+")"),i=this.parseCmd(s,r),i||(i=this.parseMidrow(s,r)),i||(i=this.parsePAC(s,r)),i||(i=this.parseBackgroundAttributes(s,r)),!i&&(o=this.parseChars(s,r),o)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(o)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}i||o||this.logger.log(2,"Couldn't parse cleaned data "+Kg([s,r])+" orig: "+Kg([t[e],t[e+1]]))}}parseCmd(e,t){const{cmdHistory:i}=this;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;if(sy(e,t,i))return iy(null,null,i),this.logger.log(3,"Repeated command ("+Kg([e,t])+") is dropped"),!0;const s=20===e||21===e||23===e?1:2,r=this.channels[s];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),iy(e,t,i),this.currentChannel=s,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const s=this.channels[i];return!!s&&(s.ccMIDROW(t),this.logger.log(3,"MIDROW ("+Kg([e,t])+")"),!0)}return!1}parsePAC(e,t){let i;const s=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;if(sy(e,t,s))return iy(null,null,s),!0;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Vg[e]:Wg[e]:1===r?Hg[e]:$g[e];const o=this.channels[r];return!!o&&(o.setPAC(this.interpretPAC(i,t)),iy(e,t,s),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const s={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,s.underline=1==(1&i),i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=4*Math.floor((i-16)/2),s}parseChars(e,t){let i,s=null,r=null;if(e>=25?(i=2,r=e-8):(i=1,r=e),r>=17&&r<=19){let e;e=17===r?t+80:18===r?t+112:t+144,this.logger.log(2,"Special char '"+jg(e)+"' in channel "+i),s=[e]}else e>=32&&e<=127&&(s=0===t?[e]:[e,t]);if(s){const i=Kg(s);this.logger.log(3,"Char codes = "+i.join(",")),iy(e,t,this.cmdHistory)}return s}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const s={};16===e||24===e?(i=Math.floor((t-32)/2),s.background=Jg[i],t%2==1&&(s.background=s.background+"_semi")):45===t?s.background="transparent":(s.foreground="black",47===t&&(s.underline=!0));const r=e<=23?1:2;return this.channels[r].setBkgData(s),iy(e,t,this.cmdHistory),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var oy=function(){if(null!=qc&&qc.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function s(e){return i(t,e)}function r(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",r({},l,{get:function(){return v},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",r({},l,{get:function(){return _},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");_=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",r({},l,{get:function(){return S},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");S=t,this.hasBeenReset=!0}})),n.displayState=void 0}return o.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},o}();class ay{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function ny(e){function t(e,t,i,s){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(s||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class ly{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let s=0;s=0&&i<=100)return this.set(e,i),!0}return!1}}function dy(e,t,i,s){const r=s?e.split(s):[e];for(const e in r){if("string"!=typeof r[e])continue;const s=r[e].split(i);if(2!==s.length)continue;t(s[0],s[1])}}const hy=new oy(0,0,""),cy="middle"===hy.align?"middle":"center";function uy(e,t,i){const s=e;function r(){const t=ny(e);if(null===t)throw new Error("Malformed timestamp: "+s);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function o(){e=e.replace(/^\s+/,"")}if(o(),t.startTime=r(),o(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+s);e=e.slice(3),o(),t.endTime=r(),o(),function(e,t){const s=new ly;dy(e,(function(e,t){let r;switch(e){case"region":for(let r=i.length-1;r>=0;r--)if(i[r].id===t){s.set(e,i[r].region);break}break;case"vertical":s.alt(e,t,["rl","lr"]);break;case"line":r=t.split(","),s.integer(e,r[0]),s.percent(e,r[0])&&s.set("snapToLines",!1),s.alt(e,r[0],["auto"]),2===r.length&&s.alt("lineAlign",r[1],["start",cy,"end"]);break;case"position":r=t.split(","),s.percent(e,r[0]),2===r.length&&s.alt("positionAlign",r[1],["start",cy,"end","line-left","line-right","auto"]);break;case"size":s.percent(e,t);break;case"align":s.alt(e,t,["start",cy,"end","left","right"])}}),/:/,/\s/),t.region=s.get("region",null),t.vertical=s.get("vertical","");let r=s.get("line","auto");"auto"===r&&-1===hy.line&&(r=-1),t.line=r,t.lineAlign=s.get("lineAlign","start"),t.snapToLines=s.get("snapToLines",!0),t.size=s.get("size",100),t.align=s.get("align",cy);let o=s.get("position","auto");"auto"===o&&50===hy.position&&(o="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=o}(e,t)}function py(e){return e.replace(//gi,"\n")}class fy{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new ay,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=py(e);i>>0).toString()};function Ay(e,t,i){return yy(e.toString())+yy(t.toString())+yy(i)}function by(e,t,i,s,r,o,a){const n=new fy,l=_u(new Uint8Array(e)).trim().replace(my,"\n").split("\n"),d=[],h=t?function(e,t=1){return ug(e,9e4,1/t)}(t.baseTime,t.timescale):0;let c,u="00:00.000",p=0,f=0,m=!0;n.oncue=function(e){const o=i[s];let a=i.ccOffset;const n=(p-h)/9e4;if(null!=o&&o.new&&(void 0!==f?a=i.ccOffset=o.start:function(e,t,i){let s=e[t],r=e[s.prevCC];if(!r||!r.new&&s.new)return e.ccOffset=e.presentationOffset=s.start,void(s.new=!1);for(;null!=(o=r)&&o.new;){var o;e.ccOffset+=s.start-r.start,s.new=!1,s=r,r=e[s.prevCC]}e.presentationOffset=i}(i,s,n)),n){if(!t)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=n-i.presentationOffset}const l=e.endTime-e.startTime,u=Ag(9e4*(e.startTime+a-f),9e4*r)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=Ay(e.startTime,e.endTime,m)),e.endTime>0&&d.push(e)},n.onparsingerror=function(e){c=e},n.onflush=function(){c?a(c):o(d)},l.forEach((e=>{if(m){if(gy(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{gy(e,"LOCAL:")?u=e.slice(6):gy(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),s=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(_c(t)&&_c(i)&&_c(s)&&_c(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*s,t+=36e5*r,t}(u)/1e3}catch(e){c=e}return}""===e&&(m=!1)}n.parse(e+"\n")})),n.flush()}const vy="stpp.ttml.im1t",_y=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Sy=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,wy={left:"start",center:"center",right:"end",start:"start",end:"end"};function Ey(e,t,i,s){const r=Iu(new Uint8Array(e),["mdat"]);if(0===r.length)return void s(new Error("Could not parse IMSC1 mdat"));const o=r.map((e=>_u(e))),a=function(e,t,i=1,s=!1){return ug(e,t,1/i,s)}(t.baseTime,1,t.timescale);try{o.forEach((e=>i(function(e,t){const i=new DOMParser,s=i.parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},o=Object.keys(r).reduce(((e,t)=>(e[t]=s.getAttribute(`ttp:${t}`)||r[t],e)),{}),a="preserve"!==s.getAttribute("xml:space"),n=ky(Ty(s,"styling","style")),l=ky(Ty(s,"layout","region")),d=Ty(s,"body","[begin]");return[].map.call(d,(e=>{const i=Cy(e,a);if(!i||!e.hasAttribute("begin"))return null;const s=Ry(e.getAttribute("begin"),o),r=Ry(e.getAttribute("dur"),o);let d=Ry(e.getAttribute("end"),o);if(null===s)throw xy(e);if(null===d){if(null===r)throw xy(e);d=s+r}const h=new oy(s-t,d-t,i);h.id=Ay(h.startTime,h.endTime,h.text);const c=function(e,t,i){const s="http://www.w3.org/ns/ttml#styling";let r=null;const o=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(r=i[a]);return o.reduce(((i,o)=>{const a=Dy(t,s,o)||Dy(e,s,o)||Dy(r,s,o);return a&&(i[o]=a),i}),{})}(l[e.getAttribute("region")],n[e.getAttribute("style")],n),{textAlign:u}=c;if(u){const e=wy[u];e&&(h.lineAlign=e),h.align=u}return vc(h,c),h})).filter((e=>null!==e))}(e,a))))}catch(e){s(e)}}function Ty(e,t,i){const s=e.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(i)):[]}function ky(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function Cy(e,t){return[].slice.call(e.childNodes).reduce(((e,i,s)=>{var r;return"br"===i.nodeName&&s?e+"\n":null!=(r=i.childNodes)&&r.length?Cy(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function Dy(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function xy(e){return new Error(`Could not parse ttml timestamp ${e}`)}function Ry(e,t){if(!e)return null;let i=ny(e);return null===i&&(_y.test(e)?i=function(e,t){const i=_y.exec(e),s=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+s/t.frameRate}(e,t):Sy.test(e)&&(i=function(e,t){const i=Sy.exec(e),s=Number(i[1]);switch(i[2]){case"h":return 3600*s;case"m":return 60*s;case"ms":return 1e3*s;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}(e,t))),i}function Ly(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function Py(e,t){return!!e&&e.kind===Ly(t)&&Ig(t,e)}class By{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(Ec.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Ec.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Ec.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Ec.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(Ec.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Ec.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Ec.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Ec.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&_c(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&Lc.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,By.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.top||e.height||0)}return this.clientRect=t,t}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let s=e.length-1;const r=Math.max(t,i);for(let t=0;t=r||i.height>=r)&&(o=i,!(a=e[t+1])||o.width!==a.width||o.height!==a.height)){s=t;break}}var o,a;return s}}const Iy="[eme]";class My{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=My.CDMCleanupPromise?[My.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=Lc.debug.bind(Lc,Iy),this.log=Lc.log.bind(Lc,Iy),this.warn=Lc.warn.bind(Lc,Iy),this.error=Lc.error.bind(Lc,Iy),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Ec.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Ec.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Ec.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Ec.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,s=t[e];if(s)return s.licenseUrl;if(e===Kc.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,s=t.map((e=>e.audioCodec)).filter(i),r=t.map((e=>e.videoCodec)).filter(i);return s.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((t,i)=>{const o=e=>{const a=e.shift();this.getMediaKeysPromise(a,s,r).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?o(e):i(t instanceof Uy?t:new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};o(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===ru&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const s=function(e,t,i,s){let r;switch(e){case Kc.FAIRPLAY:r=["cenc","sinf"];break;case Kc.WIDEVINE:case Kc.PLAYREADY:r=["cenc"];break;case Kc.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,s){return[{initDataTypes:e,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null})))}]}(r,t,i,s)}(e,t,i,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e];let o=null==r?void 0:r.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(s)}`),o=this.requestMediaKeySystemAccess(e,s);const t=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),o.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const s=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),s.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return o.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${Eu(e.keyId||[])}`);const s=i.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:s,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),s=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[s]=this.generateRequestWithPreferredKeySession(i,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return Eu(e.keyId)}updateKeySession(e,t){var i;const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyID ${Eu((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),s.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const s=su(this.config),r=e.map(eu).filter((e=>!!e&&-1!==s.indexOf(e)));return this.getKeySystemSelectionPromise(r).then((({keySystem:e})=>{const s=iu(e);s?t(s):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),s=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${s}`);let r=this.keyIdToKeySessionPromise[i];return r||(r=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${s}`),this.attemptSetMediaKeys(i,r).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:r,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),r.catch((e=>this.handleError(e)))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Uy?this.hls.trigger(Ec.ERROR,e.data):this.hls.trigger(Ec.ERROR,{type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=eu(e.keyFormat),i=t?[t]:su(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=su(this.config)),0===e.length)throw new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let s,r;if("sinf"===t&&this.config.drmSystems[Kc.FAIRPLAY]){const e=Du(new Uint8Array(i));try{const t=Wc(JSON.parse(e).sinf),i=zu(new Uint8Array(t));if(!i)return;s=i.subarray(8,24),r=Kc.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),s=i.getUint32(0);if(e.byteLength!==s&&s>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=Eu(new Uint8Array(e,12,16));const r=i.getUint32(28);if(0===t.version){if(s-32this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-key-match")));break}}l||(l=a[o]=this.getKeySystemSelectionPromise([r]).then((({keySystem:e,mediaKeys:r})=>{var a;this.throwIfDestroyed();const n=new Yu("ISO-23001-7",o,null!=(a=iu(e))?a:"");return n.pssh=new Uint8Array(i),n.keyId=s,this.attemptSetMediaKeys(e,r).then((()=>{this.throwIfDestroyed();const s=this.createMediaKeySessionContext({decryptdata:n,keySystem:e,mediaKeys:r});return this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const s=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(s),s.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(s),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,s){var r,o;const a=null==(r=this.config.drmSystems)||null==(o=r[e.keySystem])?void 0:o.generateRequest;if(a)try{const s=a.call(this.hls,t,i,e);if(!s)throw new Error("Invalid response from configured generateRequest filter");t=s.initDataType,i=e.decryptdata.pssh=s.initData?new Uint8Array(s.initData):null}catch(e){var n;if(this.warn(e.message),null!=(n=this.hls)&&n.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${s}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${s}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const d=new Rg,h=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void d.emit("error",new Error("invalid state"));const{messageType:s,message:r}=t;this.log(`"${s}" message event for session "${i.sessionId}" message size: ${r.byteLength}`),"license-request"===s||"license-renewal"===s?this.renewLicense(e,r).catch((e=>{this.handleError(e),d.emit("error",e)})):"license-release"===s?e.keySystem===Kc.FAIRPLAY&&(this.updateKeySession(e,Jc("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${s}"`)},c=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void d.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;d.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",h),e.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((e,t)=>{d.on("error",t),d.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw d.removeAllListeners(),this.removeSession(e),t})).then((()=>(d.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${Eu("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${Eu(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),s=this.getServerCertificateUrl(e);return s?(this.log(`Fetching server certificate for "${e}"`),new Promise(((r,o)=>{const a={responseType:"arraybuffer",url:s},n=t.certLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{r(e.data)},onError:(t,i,r,n)=>{o(new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:yc({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${s}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,r)=>{o(new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${s})`))},onAbort:(e,t,i)=>{o(new Error("aborted"))}};i.load(a,l,d)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((s,r)=>{e.setServerCertificate(i).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),s(e)})).catch((e=>{r(new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const s=(new DOMParser).parseFromString(i,"application/xml"),r=s.querySelectorAll("HttpHeader");if(r.length>0){let t;for(let i=0,s=r.length;i in key message");return Jc(atob(l))}setupLicenseXHR(e,t,i,s){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,i,s)})).catch((o=>{if(!i.decryptdata)throw o;return e.open("POST",t,!0),r.call(this.hls,e,t,i,s)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||s}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:s}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((s,r)=>{const o=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${o}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,o,e)}catch(e){this.error(e)}s(t)}else{const n=i.errorRetry,l=n?n.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new Uy({type:Tc.KEY_SYSTEM_ERROR,details:kc.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:o,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${o}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(s,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,o,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Kc.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},Yu.clearKeyUriToKeyIdMap();const i=t.length;My.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}My.CDMCleanupPromise=void 0;class Uy extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}var Fy,Oy,Ny;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Fy||(Fy={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Oy||(Oy={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(Ny||(Ny={}));const jy={[Ny.OBJECT]:["br","d","ot","tb"],[Ny.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[Ny.SESSION]:["cid","pr","sf","sid","st","v"],[Ny.STATUS]:["bs","rtp"]};class zy{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof zy?e:new zy(e)))),this.value=e,this.params=t}}class Gy{constructor(e){this.description=void 0,this.description=e}}function Vy(e,t,i,s){return new Error(`failed to ${e} "${r=t,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${i}`,{cause:s});var r}const Hy="Bare Item";const Wy=/[\x00-\x1f\x7f]+/;function $y(e,t,i){return Vy("serialize",e,t,i)}function Jy(e){if(!1===ArrayBuffer.isView(e))throw $y(e,"Byte Sequence");return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function qy(e){if(function(e){return e<-999999999999999||99999999999999912)throw $y(e,"Decimal");const i=t.toString();return i.includes(".")?i:`${i}.0`}function Qy(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw $y(t,"Token");return t}function Xy(e){switch(typeof e){case"number":if(!_c(e))throw $y(e,Hy);return Number.isInteger(e)?qy(e):Yy(e);case"string":return function(e){if(Wy.test(e))throw $y(e,"String");return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Qy(e);case"boolean":return function(e){if("boolean"!=typeof e)throw $y(e,"Boolean");return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${qy(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Jy(e);if(e instanceof Gy)return Qy(e);default:throw $y(e,Hy)}}function Zy(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw $y(e,"Key");return e}function eA(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Zy(e)}`:`;${Zy(e)}=${Xy(t)}`)).join("")}function tA(e){return e instanceof zy?`${Xy(e.value)}${eA(e.params)}`:Xy(e)}function iA(e,t={whitespace:!0}){if("object"!=typeof e)throw $y(e,"Dict");const i=e instanceof Map?e.entries():Object.entries(e),s=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof zy==!1&&(t=new zy(t));let i=Zy(e);var s;return!0===t.value?i+=eA(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(s=t).value.map(tA).join(" ")})${eA(s.params)}`:i+=tA(t)),i})).join(`,${s}`)}const sA=e=>Math.round(e),rA=e=>100*sA(e/100),oA={br:sA,d:sA,bl:rA,dl:rA,mtp:rA,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),s=new URL(t);if(i.origin!==s.origin)return e;const r=i.pathname.split("/").slice(1),o=s.pathname.split("/").slice(1,-1);for(;r[0]===o[0];)r.shift(),o.shift();for(;o.length;)o.shift(),r.unshift("..");return r.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:rA,tb:sA};function aA(e,t){const i={};if(null==e||"object"!=typeof e)return i;const s=Object.keys(e).sort(),r=vc({},oA,null==t?void 0:t.formatters),o=null==t?void 0:t.filter;return s.forEach((s=>{if(null!=o&&o(s))return;let a=e[s];const n=r[s];n&&(a=n(a,t)),"v"===s&&1===a||"pr"==s&&1===a||(e=>"number"==typeof e?_c(e):null!=e&&""!==e&&!1!==e)(a)&&((e=>"ot"===e||"sf"===e||"st"===e)(s)&&"string"==typeof a&&(a=new Gy(a)),i[s]=a)})),i}function nA(e,t={}){return e?function(e,t){return iA(e,t)}(aA(e,t),vc({whitespace:!1},t)):""}function lA(e,t,i){return vc(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),s=Object.entries(jy).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),r=i.reduce(((e,t)=>{var i;const[r,o]=t,a=(null==(i=s.find((e=>e[1].includes(r))))?void 0:i[0])||Ny.REQUEST;return null!=e[a]||(e[a]={}),e[a][r]=o,e}),{});return Object.entries(r).reduce(((e,[i,s])=>(e[i]=nA(s,t),e)),{})}(t,i))}const dA=/CMCD=[^&#]+/;function hA(e,t,i){const s=function(e,t={}){if(!e)return"";const i=nA(e,t);return`CMCD=${encodeURIComponent(i)}`}(t,i);if(!s)return e;if(dA.test(e))return e.replace(dA,s);const r=e.includes("?")?"&":"?";return`${e}${r}${s}`}function cA(e,t,i,s){e&&Object.keys(t).forEach((r=>{const o=e.filter((e=>e.groupId===r)).map((e=>{const o=vc({},e);return o.details=void 0,o.attrs=new Ic(o.attrs),o.url=o.attrs.URI=uA(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),o.groupId=o.attrs["GROUP-ID"]=t[r],o.attrs["PATHWAY-ID"]=s,o}));e.push(...o)}))}function uA(e,t,i,s){const{HOST:r,PARAMS:o,[i]:a}=s;let n;t&&(n=null==a?void 0:a[t],n&&(e=n));const l=new self.URL(e);return r&&!n&&(l.host=r),o&&Object.keys(o).sort().forEach((e=>{e&&l.searchParams.set(e,o[e])})),l.href}const pA=/^age:\s*[\d.]+\s*$/im;class fA{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new Fc,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null,this.stats=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(!this.stats.aborted)return r(i,t.url)})).catch((e=>(i.open("GET",t.url,!0),r(i,t.url)))).then((()=>{this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,s)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const s=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:o}=i.loadPolicy;if(s)for(const t in s)e.setRequestHeader(t,s[t]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=r&&_c(r)?r:o,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const s=t.readyState,r=this.config;if(!i.aborted&&s>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===s)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const s=t.status,o="text"!==t.responseType;if(s>=200&&s<300&&(o&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const r=o?t.response:t.responseText,a="arraybuffer"===t.responseType?r.byteLength:r.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const n=this.callbacks.onProgress;if(n&&n(i,e,r,t),!this.callbacks)return;const l={url:t.responseURL,data:r,code:s};this.callbacks.onSuccess(l,i,e,t)}else{const o=r.loadPolicy.errorRetry;Af(o,i.retry,!1,{url:e.url,data:void 0,code:s})?this.retry(o):(Lc.error(`${s} while loading ${e.url}`),this.callbacks.onError({code:s,text:t.statusText},e,t,i))}}}loadtimeout(){var e;const t=null==(e=this.config)?void 0:e.loadPolicy.timeoutRetry;if(Af(t,this.stats.retry,!0))this.retry(t);else{var i;Lc.warn(`timeout while loading ${null==(i=this.context)?void 0:i.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=gf(e,i.retry),i.retry++,Lc.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&pA.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const mA=/(\d+)-(\d+)\/(\d+)/;class gA{constructor(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||yA,this.controller=new self.AbortController,this.stats=new Fc}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();const r=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(vc({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),o=i.onProgress,a="arraybuffer"===e.responseType,n=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:d}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=l&&_c(l)?l:d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),t.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const n=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),d-(n-s.loading.start)),!r.ok){const{status:e,statusText:t}=r;throw new AA(t||"fetch, bad network response",e,r)}return s.loading.first=n,s.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=mA.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(_c(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(r.headers)||s.total,o&&_c(t.highWaterMark)?this.loadProgressively(r,s,e,t.highWaterMark,o):a?r.arrayBuffer():"json"===e.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);const l=r[n];l&&(s.loaded=s.total=l);const d={url:a.url,data:r,code:a.status};o&&!_c(t.highWaterMark)&&o(s,e,r,a),i.onSuccess(d,s,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),s.aborted)return;const r=t&&t.code||0,o=t?t.message:null;i.onError({code:r,text:o},e,t?t.details:null,s)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,r){const o=new Cm,a=e.body.getReader(),n=()=>a.read().then((a=>{if(a.done)return o.dataLength&&r(t,i,o.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,d=l.length;return t.loaded+=d,d=s&&r(t,i,o.flush(),e)):r(t,i,l,e),n()})).catch((()=>Promise.reject()));return n()}}function yA(e,t){return new self.Request(e.url,t)}class AA extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const bA=/\s/,vA={newCue(e,t,i,s){const r=[];let o,a,n,l,d;const h=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const s=py(d.trim()),p=Ay(t,i,s);null!=e&&null!=(c=e.cues)&&c.getCueById(p)||(a=new h(t,i,s),a.id=p,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return e&&r.length&&(r.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),r.forEach((t=>Op(e,t)))),r}},_A=yc(yc({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:fA,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:s,media:r}=i;if(!e||!r)return;const o=performance.now(),a=t?t.stats:e.stats,n=t?t.duration:e.duration,l=o-a.loading.start,d=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=d)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!s||r.paused||!r.playbackRate||!r.readyState)return;const h=i.mainForwardBufferInfo;if(null===h)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,n/(2*u)*1e3))return;const p=h.len/u,f=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&f>-1,g=this.getBwEstimate(),y=i.levels,A=y[e.level],b=a.total||Math.max(a.loaded,Math.round(n*A.averageBitrate/8));let v=m?l-f:l;v<1&&m&&(v=Math.min(l,8*a.loaded/g));const _=m?1e3*a.loaded/v:0,S=_?(b-a.loaded)/_:8*b/g+c/1e3;if(S<=p)return;const w=_?8*_:g;let E,T=Number.POSITIVE_INFINITY;for(E=e.level-1;E>d;E--){const e=y[E].maxBitrate;if(T=this.getTimeToLoadFrag(c/1e3,w,n*e,!y[E].details),T=S)return;if(T>10*n)return;i.nextLoadLevel=i.nextAutoLevel=E,m?this.bwEstimator.sample(l-Math.min(c,f),a.loaded):this.bwEstimator.sampleTTFB(l);const k=y[E].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>k&&this.resetEstimator(k),this.clearTimer(),Lc.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${p.toFixed(3)} s\n Estimated load time for current fragment: ${S.toFixed(3)} s\n Estimated load time for down switch fragment: ${T.toFixed(3)} s\n TTFB estimate: ${0|f} ms\n Current BW estimate: ${_c(g)?0|g:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${E} @ ${0|k} bps`),i.trigger(Ec.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(Lc.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new Pf(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.FRAG_LOADING,this.onFragLoading,this),e.on(Ec.FRAG_LOADED,this.onFragLoaded,this),e.on(Ec.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Ec.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Ec.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Ec.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Ec.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(Ec.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.FRAG_LOADING,this.onFragLoading,this),e.off(Ec.FRAG_LOADED,this.onFragLoaded,this),e.off(Ec.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Ec.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Ec.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Ec.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Ec.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(Ec.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const i=t.frag;if(!this.ignoreFragment(i)){var s;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(s=t.part)?s:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case kc.BUFFER_ADD_CODEC_ERROR:case kc.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case kc.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:s}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=s?s.stats:e.stats,r=t-i.loading.start,o=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&o>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(e,o),i.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(e,t,i,s){return e+i/t+(s?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:s}=t.stats,r=s.end-s.start;_c(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const s=i?i.stats:t.stats;if(t.type===Lp&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,r=this.hls.levels[t.level],o=(r.loaded?r.loaded.bytes:0)+s.loaded,a=(r.loaded?r.loaded.duration:0)+e;r.loaded={bytes:o,duration:a},r.realBitrate=Math.round(8*o/a)}if(t.bitrateTest){const e={stats:s,frag:t,part:i,id:t.type};this.onFragBuffered(Ec.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:s}=t,r=null!=s&&s.stats.loaded?s.stats:i.stats;if(r.aborted)return;if(this.ignoreFragment(i))return;const o=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(o,r.loaded),r.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=o/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==Lp||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,r=this.findBestLevel(i,t,e,0,s,1,1);if(r>-1)return r;const o=this.hls.firstLevel,a=Math.min(Math.max(o,t),e);return Lc.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${o} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const s=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,s)&&t[e].loadError<=t[s].loadError)return e}return this._nextAutoLevel=s,this.nextAutoLevelKey=this.getAutoLevelKey(),s}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:s,config:r,minAutoLevel:o}=i,a=t?t.duration:e?e.duration:0,n=this.getBwEstimate(),l=this.getStarvationDelay();let d=r.abrBandWidthFactor,h=r.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(n,o,s,l,0,d,h);if(e>=0)return e}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-e,Lc.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),d=h=1}}const u=this.findBestLevel(n,o,s,l,c,d,h);if(Lc.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const p=i.levels[o],f=i.levels[i.loadLevel];return(null==p?void 0:p.bitrate)<(null==f?void 0:f.bitrate)?o:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,s=e.mainForwardBufferInfo;return(s?s.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,s,r,o,a){var n;const l=s+r,d=this.lastLoadedFragLevel,h=-1===d?this.hls.firstLevel:d,{fragCurrent:c,partCurrent:u}=this,{levels:p,allAudioTracks:f,loadLevel:m,config:g}=this.hls;if(1===p.length)return 0;const y=p[h],A=!(null==y||null==(n=y.details)||!n.live),b=-1===m||-1===d;let v,_="SDR",S=(null==y?void 0:y.frameRate)||0;const{audioPreference:w,videoPreference:E}=g,T=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const s=t.channels||"2";return i.channels[s]=(i.channels[s]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(f));if(b){if(-1!==this.firstSelection)return this.firstSelection;const s=this.codecTiers||(this.codecTiers=function(e,t,i,s){return e.slice(i,s+1).reduce(((e,i)=>{if(!i.codecSet)return e;const s=i.audioGroups;let r=e[i.codecSet];r||(e[i.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!s,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,i.bitrate);const o=Math.min(i.height,i.width);return r.minHeight=Math.min(r.minHeight,o),r.minFramerate=Math.min(r.minFramerate,i.frameRate),r.maxScore=Math.max(r.maxScore,i.score),r.fragmentError+=i.fragmentError,r.videoRanges[i.videoRange]=(r.videoRanges[i.videoRange]||0)+1,s&&s.forEach((e=>{if(!e)return;const i=t.groups[e];r.hasDefaultAudio=r.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{r.channels[e]=(r.channels[e]||0)+i.channels[e]}))})),e}),{})}(p,T,t,i)),r=function(e,t,i,s,r){const o=Object.keys(e),a=null==s?void 0:s.channels,n=null==s?void 0:s.audioCodec,l=a&&2===parseInt(a);let d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[];const{preferHDR:g,allowedVideoRanges:y}=Ff(t,r);for(let t=o.length;t--;){const i=e[o[t]];d=i.channels[2]>0,c=Math.min(c,i.minHeight),u=Math.min(u,i.minFramerate),p=Math.min(p,i.minBitrate);const s=y.filter((e=>i.videoRanges[e]>0));s.length>0&&(h=!0,m=s)}c=_c(c)?c:0,u=_c(u)?u:0;const A=Math.max(1080,c),b=Math.max(30,u);p=_c(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);const v=o.reduce(((t,s)=>{const r=e[s];if(s===t)return t;if(r.minBitrate>i)return Of(s,`min bitrate of ${r.minBitrate} > current estimate of ${i}`),t;if(!r.hasDefaultAudio)return Of(s,"no renditions with default or auto-select sound found"),t;if(n&&s.indexOf(n.substring(0,4))%5!=0)return Of(s,`audio codec preference "${n}" not found`),t;if(a&&!l){if(!r.channels[a])return Of(s,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),t}else if((!n||l)&&d&&0===r.channels[2])return Of(s,"no renditions with stereo sound found"),t;return r.minHeight>A?(Of(s,`min resolution of ${r.minHeight} > maximum of ${A}`),t):r.minFramerate>b?(Of(s,`min framerate of ${r.minFramerate} > maximum of ${b}`),t):m.some((e=>r.videoRanges[e]>0))?r.maxScore=dp(t)||r.fragmentError>e[t].fragmentError)?t:(f=r.maxScore,s):(Of(s,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0);return{codecSet:v,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}(s,_,e,w,E),{codecSet:o,videoRanges:a,minFramerate:n,minBitrate:l,preferHDR:d}=r;v=o,_=d?a[a.length-1]:a[0],S=n,e=Math.max(e,l),Lc.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else v=null==y?void 0:y.codecSet,_=null==y?void 0:y.videoRange;const k=u?u.duration:c?c.duration:0,C=this.bwEstimator.getEstimateTTFB()/1e3,D=[];for(let n=i;n>=t;n--){var x;const t=p[n],c=n>h;if(!t)continue;if(g.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&Mf(t,T,_,S,e,w)?(t.supportedPromise=Uf(t,T,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,s=i.indexOf(t);e.error?Lc.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${s} ${JSON.stringify(e)}`):e.supported||(Lc.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${s} ${JSON.stringify(e)}`),s>-1&&i.length>1&&(Lc.log(`[abr] Removing unsupported level ${s}`),this.hls.removeLevel(s)))}))):t.supportedResult=Bf}if(v&&t.codecSet!==v||_&&t.videoRange!==_||c&&S>t.frameRate||!c&&S>0&&S=2*k&&0===r?p[n].averageBitrate:p[n].maxBitrate,P=this.getTimeToLoadFrag(C,R,L*E,void 0===f);if(R>=L&&(n===d||0===t.loadError&&0===t.fragmentError)&&(P<=C||!_c(P)||A&&!this.bitrateTestDelay||P${n} adjustedbw(${Math.round(R)})-bitrate=${Math.round(R-L)} ttfb:${C.toFixed(1)} avgDuration:${E.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${P.toFixed(1)} firstSelection:${b} codecSet:${v} videoRange:${_} hls.loadLevel:${m}`)),b&&(this.firstSelection=n),n}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,s=Math.min(Math.max(e,i),t);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}},bufferController:class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(Ec.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&Lc.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";this.appendSource=e.config.preferManagedMediaSource&&"undefined"!=typeof self&&self.ManagedMediaSource,this.log=Lc.log.bind(Lc,t),this.warn=Lc.warn.bind(Lc,t),this.error=Lc.error.bind(Lc,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:e}=this;e.on(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Ec.BUFFER_RESET,this.onBufferReset,this),e.on(Ec.BUFFER_APPENDING,this.onBufferAppending,this),e.on(Ec.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Ec.BUFFER_EOS,this.onBufferEos,this),e.on(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Ec.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(Ec.FRAG_PARSED,this.onFragParsed,this),e.on(Ec.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Ec.BUFFER_RESET,this.onBufferReset,this),e.off(Ec.BUFFER_APPENDING,this.onBufferAppending,this),e.off(Ec.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Ec.BUFFER_EOS,this.onBufferEos,this),e.off(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Ec.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(Ec.FRAG_PARSED,this.onFragParsed,this),e.off(Ec.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Ug(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,s=sp(this.appendSource);if(i&&s){var r;const e=this.mediaSource=new s;this.log(`created media source: ${null==(r=e.constructor)?void 0:r.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const s=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||s&&e instanceof s,Og(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.message} while calling endOfStream`)}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Og(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(Ec.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var s;const{id:r,codec:o,levelCodec:a,container:n,metadata:l}=t[e],d=pp(i.codec,i.levelCodec),h=null==d?void 0:d.replace(Fg,"$1");let c=pp(o,a);const u=null==(s=c)?void 0:s.replace(Fg,"$1");if(c&&h!==u){"audio"===e.slice(0,5)&&(c=up(c,this.appendSource));const t=`${n};codecs=${c}`;this.appendChangeType(e,t),this.log(`switching codec ${d} to ${c}`),this.tracks[e]={buffer:i.buffer,codec:o,container:n,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[e]=t[e]})),i)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${s.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,s={execute:()=>{const s=this.sourceBuffer[e];s&&(this.log(`changing ${e} sourceBuffer type to ${t}`),s.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(s,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:s,tracks:r}=this,{data:o,type:a,frag:n,part:l,chunkMeta:d}=t,h=d.buffering[a],c=self.performance.now();h.start=c;const u=n.stats.buffering,p=l?l.stats.buffering:null;0===u.start&&(u.start=c),p&&0===p.start&&(p.start=c);const f=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==f?void 0:f.container)&&(m=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);const g=n.start,y={execute:()=>{if(h.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=g-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${g} (delta: ${t}) sn: ${n.sn})`),e.timestampOffset=g)}}this.appendExecutor(o,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();h.executeEnd=h.end=e,0===u.first&&(u.first=e),p&&0===p.first&&(p.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=Qf.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(Ec.BUFFER_APPENDED,{type:a,frag:n,part:l,chunkMeta:d,parent:n.type,timeRanges:i})},onError:e=>{const t={type:Tc.MEDIA_ERROR,parent:n.type,details:kc.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:n,part:l,chunkMeta:d,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=kc.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=kc.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(Ec.ERROR,t)}};s.append(y,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,s=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(Ec.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(s(e),e)}))}onFragParsed(e,t){const{frag:i,part:s}=t,r=[],o=s?s.elementaryStreams:i.elementaryStreams;o[jc]?r.push("audiovideo"):(o[Oc]&&r.push("audio"),o[Nc]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);const t=s?s.stats:i.stats;this.hls.trigger(Ec.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),r)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const s=this.sourceBuffer[i];return!s||t.type&&t.type!==i||(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const s=e.config,r=i.currentTime,o=t.levelTargetDuration,a=t.live&&null!==s.liveBackBufferLength?s.liveBackBufferLength:s.backBufferLength;if(_c(a)&&a>0){const e=Math.max(a,o),t=Math.floor(r/o)*o-e;this.flushBackBuffer(r,o,t)}if(_c(s.frontBufferFlushThreshold)&&s.frontBufferFlushThreshold>0){const e=Math.max(s.maxBufferLength,s.frontBufferFlushThreshold),t=Math.max(e,o),i=Math.floor(r/o)*o+t;this.flushFrontBuffer(r,o,i)}}flushBackBuffer(e,t,i){const{details:s,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((o=>{const a=r[o];if(a){const r=Qf.getBuffered(a);if(r.length>0&&i>r.start(0)){if(this.hls.trigger(Ec.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)this.hls.trigger(Ec.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&r.end(r.length-1)-e<2*t)return void this.log(`Cannot flush ${o} back buffer while SourceBuffer is in ended state`);this.hls.trigger(Ec.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:o})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((r=>{const o=s[r];if(o){const s=Qf.getBuffered(o),a=s.length;if(a<2)return;const n=s.start(a-1),l=s.end(a-1);if(i>n||e>=n&&e<=l)return;if(o.ended&&e-l<2*t)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(Ec.BUFFER_FLUSHING,{startOffset:n,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:s}=this,r=e.fragments[0].start+e.totalduration,o=i.duration,a=_c(s.duration)?s.duration:0;e.live&&t.config.liveDurationInfinity?(s.duration=1/0,this.updateSeekableRange(e)):(r>a&&r>o||!_c(o))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),s.duration=r)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const s=Math.max(0,i[0].start),r=Math.max(s,s+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${s}-${r}.`),t.setLiveSeekableRange(s,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,s=Object.keys(i).length;if(s&&(!e||2===s||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(Ec.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){const r=e[s];if(!r)throw Error(`source buffer exists for track ${s}, however track does not`);let o=r.levelCodec||r.codec;o&&"audio"===s.slice(0,5)&&(o=up(o,this.appendSource));const a=`${r.container};codecs=${o}`;this.log(`creating sourceBuffer(${a})`);try{const e=t[s]=i.addSourceBuffer(a),n=s;this.addBufferListener(n,"updatestart",this._onSBUpdateStart),this.addBufferListener(n,"updateend",this._onSBUpdateEnd),this.addBufferListener(n,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(n,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(Ec.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:o,container:r.container,levelCodec:r.levelCodec,metadata:r.metadata,id:r.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:a})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const s=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${s}`,t),this.hls.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:s,fatal:!1});const r=this.operationQueue.current(e);r&&r.onError(s)}removeExecutor(e,t,i){const{media:s,mediaSource:r,operationQueue:o,sourceBuffer:a}=this,n=a[e];if(!s||!r||!n)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void o.shiftAndExecuteNext(e);const l=_c(s.duration)?s.duration:1/0,d=_c(r.duration)?r.duration:1/0,h=Math.max(0,t),c=Math.min(i,l,d);c>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${c}] from the ${e} SourceBuffer`),n.remove(h,c)):o.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,s=t.map((e=>i.appendBlocker(e)));Promise.all(s).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const s=this.sourceBuffer[e];if(!s)return;const r=i.bind(this,e);this.listeners[e].push({event:t,listener:r}),s.addEventListener(t,r)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:By,errorController:class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=Lc.log.bind(Lc,"[info]:"),this.warn=Lc.warn.bind(Lc,"[warning]:"),this.error=Lc.error.bind(Lc,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Ec.ERROR,this.onError,this),e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Ec.ERROR,this.onError,this),e.off(Ec.ERROR,this.onErrorOut,this),e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===Lp?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,s;if(t.fatal)return;const r=this.hls,o=t.context;switch(t.details){case kc.FRAG_LOAD_ERROR:case kc.FRAG_LOAD_TIMEOUT:case kc.KEY_LOAD_ERROR:case kc.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case kc.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:wf,flags:Cf});case kc.FRAG_GAP:case kc.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=Ef);case kc.LEVEL_EMPTY_ERROR:case kc.LEVEL_PARSING_ERROR:{var a,n;const e=t.parent===Lp?t.level:r.loadLevel;t.details===kc.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(n=a.levelDetails)&&n.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case kc.LEVEL_LOAD_ERROR:case kc.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==o?void 0:o.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,o.level)));case kc.AUDIO_TRACK_LOAD_ERROR:case kc.AUDIO_TRACK_LOAD_TIMEOUT:case kc.SUBTITLE_LOAD_ERROR:case kc.SUBTITLE_TRACK_LOAD_TIMEOUT:if(o){const e=r.levels[r.loadLevel];if(e&&(o.type===xp&&e.hasAudioGroup(o.groupId)||o.type===Rp&&e.hasSubtitleGroup(o.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=Ef,void(t.errorAction.flags=Df)}return;case kc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=r.levels[r.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:Ef,flags:xf,hdcpLevel:i}:this.keySystemError(t)}return;case kc.BUFFER_ADD_CODEC_ERROR:case kc.REMUX_ALLOC_ERROR:case kc.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(s=t.level)?s:r.loadLevel));case kc.INTERNAL_EXCEPTION:case kc.BUFFER_APPENDING_ERROR:case kc.BUFFER_FULL_ERROR:case kc.LEVEL_SWITCH_ERROR:case kc.BUFFER_STALLED_ERROR:case kc.BUFFER_SEEK_OVER_HOLE:case kc.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:wf,flags:Cf})}t.type===Tc.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=mf(this.hls.config.playlistLoadPolicy,e),s=this.playlistError++;if(Af(i,s,ff(e),e.response))return{action:kf,flags:Cf,retryConfig:i,retryCount:s};const r=this.getLevelSwitchAction(e,t);return i&&(r.retryConfig=i,r.retryCount=s),r}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),s=t.levels[i],{fragLoadPolicy:r,keyLoadPolicy:o}=t.config,a=mf(e.details.startsWith("key")?o:r,e),n=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(s){e.details!==kc.FRAG_GAP&&s.fragmentError++;if(Af(a,n,ff(e),e.response))return{action:kf,flags:Cf,retryConfig:a,retryCount:n}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=n),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const s=this.hls.levels[t];if(s){var r,o;const t=e.details;s.loadError++,t===kc.BUFFER_APPEND_ERROR&&s.fragmentError++;let l=-1;const{levels:d,loadLevel:h,minAutoLevel:c,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const p=null==(r=e.frag)?void 0:r.type,f=(p===Pp&&t===kc.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===kc.BUFFER_ADD_CODEC_ERROR||t===kc.BUFFER_APPEND_ERROR))&&d.some((({audioCodec:e})=>s.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===kc.BUFFER_ADD_CODEC_ERROR||t===kc.BUFFER_APPEND_ERROR)&&d.some((({codecSet:e,audioCodec:t})=>s.codecSet!==e&&s.audioCodec===t)),{type:g,groupId:y}=null!=(o=e.context)?o:{};for(let i=d.length;i--;){const r=(i+h)%d.length;if(r!==h&&r>=c&&r<=u&&0===d[r].loadError){var a,n;const i=d[r];if(t===kc.FRAG_GAP&&e.frag){const t=d[r].details;if(t){const i=vf(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(g===xp&&i.hasAudioGroup(y)||g===Rp&&i.hasSubtitleGroup(y))continue;if(p===Pp&&null!=(a=s.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||p===Bp&&null!=(n=s.subtitleGroups)&&n.some((e=>i.hasSubtitleGroup(e)))||f&&s.audioCodec===i.audioCodec||!f&&s.audioCodec!==i.audioCodec||m&&s.codecSet===i.codecSet)continue}l=r;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:Ef,flags:Cf,nextAutoLevel:l}}return{action:Ef,flags:Df}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case wf:break;case Ef:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===kc.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:s,hdcpLevel:r,nextAutoLevel:o}=i;switch(s){case Cf:this.switchLevel(e,o);break;case xf:r&&(t.maxHdcpLevel=Qp[Qp.indexOf(r)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,o)}switchLevel(e,t){void 0!==t&&e.errorAction&&(this.warn(`switching to level ${t} after ${e.details}`),this.hls.nextAutoLevel=t,e.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},fpsController:class{constructor(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const s=performance.now();if(t){if(this.lastTime){const e=s-this.lastTime,r=i-this.lastDroppedFrames,o=t-this.lastDecodedFrames,a=1e3*r/e,n=this.hls;if(n.trigger(Ec.FPS_DROP,{currentDropped:r,currentDecoded:o,totalDroppedFrames:i}),a>0&&r>n.config.fpsDroppedMonitoringThreshold*o){let e=n.currentLevel;Lc.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===n.autoLevelCapping||n.autoLevelCapping>=e)&&(e-=1,n.trigger(Ec.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:n.currentLevel}),n.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:ru,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:vA,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends km{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",Bp),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Ec.ERROR,this.onError,this),e.on(Ec.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Ec.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(Ec.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Ec.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Ec.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Ec.ERROR,this.onError,this),e.off(Ec.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Ec.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(Ec.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Ec.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Ec.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=mm,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:i,success:s}=t;if(this.fragPrevious=i,this.state=mm,!s)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let o;const a=i.start;for(let e=0;e=r[e].start&&a<=r[e].end){o=r[e];break}const n=i.start+i.duration;o?o.end=n:(o={start:a,end:n},r.push(o)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:s}=t;if(0===i&&s!==Number.POSITIVE_INFINITY){const e=s-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew rf(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new rf(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Bp),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const s=this.levels[this.currentTrackId];null!=s&&s.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,s&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:s,levels:r}=this,{details:o,id:a}=t;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const n=r[s];if(a>=r.length||a!==s||!n)return;this.log(`Subtitle track ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""},duration:${o.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(o.live||null!=(i=n.details)&&i.live){const e=this.mainDetails;if(o.deltaUpdateFailed||!e)return;const t=e.fragments[0];var d;if(n.details)l=this.alignPlaylists(o,n.details,null==(d=this.levelLastLoaded)?void 0:d.details),0===l&&t&&(l=t.start,hf(o,l));else o.hasProgramDateTime&&e.hasProgramDateTime?(sm(o,e),l=o.fragments[0].start):t&&(l=t.start,hf(o,l))}if(n.details=o,this.levelLastLoaded=n,this.startFragRequested||!this.mainDetails&&o.live||this.setStartPosition(this.mainDetails||o,l),this.tick(),o.live&&!this.fragCurrent&&this.media&&this.state===mm){vf(null,o.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),n.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,s=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),s.key.buffer,s.iv.buffer).catch((e=>{throw r.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const s=performance.now();r.trigger(Ec.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:s}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=mm}))}}doTick(){if(this.media){if(this.state===mm){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:s}=this,r=this.getLoadPosition(),o=Qf.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,s.maxBufferHole),{end:a,len:n}=o,l=this.getFwdBufferInfo(this.media,Lp),d=i.details;if(n>this.getMaxBufferLength(null==l?void 0:l.len)+d.levelTargetDuration)return;const h=d.fragments,c=h.length,u=d.edge;let p=null;const f=this.fragPrevious;if(au-e?0:e;p=vf(f,h,Math.max(h[0].start,a),t),!p&&f&&f.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=zp(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Ec.LEVEL_LOADING,this.onLevelLoading,this),e.on(Ec.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Ec.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Ec.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Ec.LEVEL_LOADING,this.onLevelLoading,this),e.off(Ec.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Ec.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Ec.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);zp(this.media.textTracks).forEach((e=>{Np(e)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Subtitle track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!r&&t){this.selectDefaultTrack=!1;const i=Nf(t,e);if(i>-1)r=e[i];else{const e=Nf(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const o={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(Ec.SUBTITLE_TRACKS_UPDATED,o),-1!==s&&-1===this.trackId&&this.setSubtitleTrack(s)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s-1){const e=this.tracksInGroup[s];return this.setSubtitleTrack(s),e}if(i)return null;{const i=Nf(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,s=t.groupId;let r=t.url;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(Ec.SUBTITLE_TRACK_LOADING,{url:r,id:i,groupId:s,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=zp(e.textTracks),i=this.currentTrack;let s;if(i&&(s=t.filter((e=>Ig(i,e)))[0],s||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==s&&(e.mode="disabled")})),s){const e=this.subtitleDisplay?"showing":"hidden";s.mode!==e&&(s.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!_c(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e]||null;if(this.trackId=e,this.currentTrack=s,this.toggleTrackModes(),!s)return void this.hls.trigger(Ec.SUBTITLE_TRACK_SWITCH,{id:e});const r=!!s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;this.log(`Switching to subtitle-track ${e}`+(s?` "${s.name}" lang:${s.lang} group:${s.groupId}`:""));const{id:o,groupId:a="",name:n,type:l,url:d}=s;this.hls.trigger(Ec.SUBTITLE_TRACK_SWITCH,{id:o,groupId:a,name:n,type:l,url:d});const h=this.switchParams(s.url,null==i?void 0:i.details);this.loadPlaylist(h)}},timelineController:class{constructor(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Ec.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Ec.FRAG_LOADING,this.onFragLoading,this),e.on(Ec.FRAG_LOADED,this.onFragLoaded,this),e.on(Ec.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(Ec.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(Ec.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(Ec.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(Ec.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Ec.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Ec.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Ec.FRAG_LOADING,this.onFragLoading,this),e.off(Ec.FRAG_LOADED,this.onFragLoaded,this),e.off(Ec.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(Ec.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(Ec.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(Ec.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(Ec.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const e=new ry(this,"textTrack1"),t=new ry(this,"textTrack2"),i=new ry(this,"textTrack3"),s=new ry(this,"textTrack4");this.cea608Parser1=new ty(1,e,t),this.cea608Parser2=new ty(3,i,s)}}addCues(e,t,i,s,r){let o=!1;for(let e=r.length;e--;){const s=r[e],h=(a=s[0],n=s[1],l=t,d=i,Math.min(n,d)-Math.max(a,l));if(h>=0&&(s[0]=Math.min(s[0],t),s[1]=Math.max(s[1],i),o=!0,h/(i-t)>.5))return}var a,n,l,d;if(o||r.push([t,i]),this.config.renderTextTracksNatively){const r=this.captionsTracks[e];this.Cues.newCue(r,t,i,s)}else{const r=this.Cues.newCue(null,t,i,s);this.hls.trigger(Ec.CUES_PARSED,{type:"captions",cues:r,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:s,timescale:r}){const{unparsedVttFrags:o}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:s,timescale:r}),o.length&&(this.unparsedVttFrags=[],o.forEach((e=>{this.onFragLoaded(Ec.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let s=0;s{Np(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===vy));if(this.config.enableWebVTT||s&&this.config.enableIMSC1){if(Pg(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?zp(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let s;if(t){let i=null;for(let s=0;snull!==e)).map((e=>e.label));e.length&&Lc.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(Ec.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,s=this.captionsProperties[i];s&&(s.label=e.name,e.lang&&(s.languageCode=e.lang),s.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s,lastCc:r,lastSn:o,lastPartIndex:a}=this;if(this.enabled&&i&&s&&t.frag.type===Lp){var n,l;const{cc:e,sn:d}=t.frag,h=null!=(n=null==t||null==(l=t.part)?void 0:l.index)?n:-1;d===o+1||d===o&&h===a+1||e===r||(i.reset(),s.reset()),this.lastCc=e,this.lastSn=d,this.lastPartIndex=h}}onFragLoaded(e,t){const{frag:i,payload:s}=t;if(i.type===Bp)if(s.byteLength){const e=i.decryptdata,r="stats"in t;if(null==e||!e.encrypted||r){const e=this.tracks[i.level],r=this.vttCCs;r[i.cc]||(r[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===vy?this._parseIMSC1(i,s):this._parseVTTs(t)}}else this.hls.trigger(Ec.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;Ey(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(Ec.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{Lc.log(`Failed to parse IMSC1: ${t}`),i.trigger(Ec.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:s}=e,{initPTS:r,unparsedVttFrags:o}=this,a=r.length-1;if(!r[i.cc]&&-1===a)return void o.push(e);const n=this.hls;by(null!=(t=i.initSegment)&&t.data?Vu(i.initSegment.data,new Uint8Array(s)):s,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),n.trigger(Ec.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const r="Missing initPTS for VTT MPEGTS"===t.message;r?o.push(e):this._fallbackToIMSC1(i,s),Lc.log(`Failed to parse VTT cue: ${t}`),r&&a>i.cc||n.trigger(Ec.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||Ey(t,this.initPTS[e.cc],(()=>{i.textCodec=vy,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>Op(i,e)))}else{const s=this.tracks[t];if(!s)return;const r=s.default?"default":"subtitles"+t;i.trigger(Ec.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===Bp&&this.onFragLoaded(Ec.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s}=this;if(!this.enabled||!i||!s)return;const{frag:r,samples:o}=t;if(r.type!==Lp||"NONE"!==this.closedCaptionsForLevel(r))for(let e=0;ejp(e[s],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==s){const{textTracks:e}=this;Object.keys(e).forEach((i=>jp(e[i],t,s)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let s=2;for(let r=0;r0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=mm):(this.loadedmetadata=!1,this.state=bm),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case mm:this.doTickIdle();break;case bm:{var e;const{levels:t,trackId:i}=this,s=null==t||null==(e=t[i])?void 0:e.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=Em}break}case Am:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=mm}break}case Em:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:s,complete:r}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=ym;const e={frag:t,part:i,payload:s.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),r&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=Qf.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);_f(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=mm}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=mm)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:s}=this,r=e.config;if(!i&&(this.startFragRequested||!r.startFragPrefetch)||null==t||!t[s])return;const o=t[s],a=o.details;if(!a||a.live&&this.levelLastLoaded!==o||this.waitForCdnTuneIn(a))return void(this.state=bm);const n=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&n&&(this.bufferFlushed=!1,this.afterBufferFlushed(n,Oc,Pp));const l=this.getFwdBufferInfo(n,Pp);if(null===l)return;const{bufferedTrack:d,switchingTrack:h}=this;if(!h&&this._streamEnded(l,a))return e.trigger(Ec.BUFFER_EOS,{type:"audio"}),void(this.state=Sm);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,Lp),u=l.len,p=this.getMaxBufferLength(null==c?void 0:c.len),f=a.fragments,m=f[0].start;let g=this.flushing?this.getLoadPosition():l.end;if(h&&i){const e=this.getLoadPosition();d&&!Bg(h.attrs,d.attrs)&&(g=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=p&&!h&&gc.end+a.targetduration;if(b||(null==c||!c.len)&&l.len){const e=this.getAppendedFrag(y.start,Lp);if(null===e)return;if(A||(A=!!e.gap||!!b&&0===c.len),b&&!A||A&&l.nextStart&&l.nextStartnew rf(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:s}=this;s&&(s.abortRequests(),this.removeUnbufferedFrags(s.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=mm,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=fm),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(Ec.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:s}=this,{details:r,id:o}=t;if(!s)return void this.warn(`Audio tracks were reset while loading level ${o}`);this.log(`Audio track ${o} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=s[o];let n=0;if(r.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(r);const e=this.mainDetails;if(r.deltaUpdateFailed||!e)return;var l;if(!a.details&&r.hasProgramDateTime&&e.hasProgramDateTime)sm(r,e),n=r.fragments[0].start;else n=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,n),this.state!==bm||this.waitForCdnTuneIn(r)||(this.state=mm),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{config:o,trackId:a,levels:n}=this;if(!n)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=n[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const d=l.details;if(!d)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const h=o.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new Lg(this.hls,Pp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],p=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=s?s.index:-1,o=-1!==t,a=new Xf(i.level,i.sn,i.stats.chunkCount,r.byteLength,t,o);c.push(r,p,h,"",i,s,d.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${d.startSN} ,${d.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:s,cache:new Cm,complete:!1};e.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=Em}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i.type===Pp)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(Ec.AUDIO_TRACK_SWITCHED,yc({},e)))}this.fragBufferedComplete(i,s)}else if(!this.loadedmetadata&&i.type===Lp){const e=this.videoBuffer||this.media;if(e){Qf.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=wm;else switch(t.details){case kc.FRAG_GAP:case kc.FRAG_PARSING_ERROR:case kc.FRAG_DECRYPT_ERROR:case kc.FRAG_LOAD_ERROR:case kc.FRAG_LOAD_TIMEOUT:case kc.KEY_LOAD_ERROR:case kc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Pp,t);break;case kc.AUDIO_TRACK_LOAD_ERROR:case kc.AUDIO_TRACK_LOAD_TIMEOUT:case kc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==bm||(null==(i=t.context)?void 0:i.type)!==xp||(this.state=mm);break;case kc.BUFFER_APPEND_ERROR:case kc.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===kc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case kc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==Nc&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==Nc){this.flushing=!1,this.bufferFlushed=!0,this.state===Sm&&(this.state=mm);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,Pp),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{details:h}=d,{audio:c,text:u,id3:p,initSegment:f}=r;if(!this.fragContextChanged(n)&&h){if(this.state=vm,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=f&&f.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,f.tracks,e,o),s.trigger(Ec.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}if(c){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=c;l&&(l.elementaryStreams[Oc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(Oc,e,t,i,s),this.bufferFragmentData(c,n,l,o)}if(null!=p&&null!=(t=p.samples)&&t.length){const e=vc({id:i,frag:n,details:h},p);s.trigger(Ec.FRAG_PARSING_METADATA,e)}if(u){const e=vc({id:i,frag:n,details:h},u);s.trigger(Ec.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(n)}_bufferInitSegment(e,t,i,s){if(this.state!==vm)return;t.video&&delete t.video;const r=t.audio;if(!r)return;r.id="audio";const o=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${o}/${r.codec}]`),o&&1===o.split(",").length&&(r.levelCodec=o),this.hls.trigger(Ec.BUFFER_CODECS,t);const a=r.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:s,parent:i.type,data:a};this.hls.trigger(Ec.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);var r;if(this.fragCurrent=e,this.switchingTrack||s===Vf||s===Wf)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(r=t.details)&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=Em;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&sm(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,s=null==i?void 0:i.attrs,r=e.attrs;t&&s&&(s.CHANNELS!==r.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(Ec.AUDIO_TRACK_SWITCHED,yc({},e))}},audioTrackController:class extends Rf{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Ec.LEVEL_LOADING,this.onLevelLoading,this),e.on(Ec.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Ec.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(Ec.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Ec.LEVEL_LOADING,this.onLevelLoading,this),e.off(Ec.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Ec.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(Ec.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Audio track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Audio track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!r&&t){const i=Nf(t,e,zf);if(i>-1)r=e[i];else{const e=Nf(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(Ec.AUDIO_TRACKS_UPDATED,a);const n=this.trackId;if(-1!==s&&-1===n)this.setAudioTrack(s);else if(e.length&&-1===n){var o;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(o=this.groupIds)?void 0:o.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==xp||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const s=this.currentTrack;if(s&&jf(e,s,zf))return s;const r=Nf(e,this.tracksInGroup,zf);if(r>-1){const e=this.tracksInGroup[r];return this.setAudioTrack(r),e}if(s){let s=t.loadLevel;-1===s&&(s=t.firstAutoLevel);const r=function(e,t,i,s,r){const o=t[s],a=t.reduce(((e,t,i)=>{const s=t.uri;return(e[s]||(e[s]=[])).push(i),e}),{})[o.uri];a.length>1&&(s=Math.max.apply(Math,a));const n=o.videoRange,l=o.frameRate,d=o.codecSet.substring(0,4),h=Gf(t,s,(t=>{if(t.videoRange!==n||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return Nf(e,o,r)>-1}));return h>-1?h:Gf(t,s,(t=>{const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return Nf(e,o,r)>-1}))}(e,t.levels,i,s,zf);if(-1===r)return null;t.nextLoadLevel=r}if(e.channels||e.audioCodec){const t=Nf(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e],r=s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;if(this.log(`Switching to audio-track ${e} "${s.name}" lang:${s.lang} group:${s.groupId} channels:${s.channels}`),this.trackId=e,this.currentTrack=s,this.hls.trigger(Ec.AUDIO_TRACK_SWITCHING,yc({},s)),r)return;const o=this.switchParams(s.url,null==i?void 0:i.details);this.loadPlaylist(o)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Fy.MANIFEST,su:!this.initialized})}catch(e){Lc.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],s=this.getObjectType(t),r={d:1e3*t.duration,ot:s};s!==Fy.VIDEO&&s!==Fy.AUDIO&&s!=Fy.MUXED||(r.br=i.bitrate/1e3,r.tb=this.getTopBandwidth(s)/1e3,r.bl=this.getBufferLength(s)),this.apply(e,r)}catch(e){Lc.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}))}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Ec.MEDIA_DETACHED,this.onMediaDetached,this),e.on(Ec.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(Ec.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Ec.MEDIA_DETACHED,this.onMediaDetached,this),e.off(Ec.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var i,s;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(s=t.tracks.video)?void 0:s.buffer}createData(){var e;return{v:1,sf:Oy.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){vc(t,this.createData());const i=t.ot===Fy.INIT||t.ot===Fy.VIDEO||t.ot===Fy.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:s}=this;s&&(t=Object.keys(t).reduce(((e,i)=>(s.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),lA(e.headers,t)):e.url=hA(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Fy.TIMED_TEXT:"initSegment"===e.sn?Fy.INIT:"audio"===t?Fy.AUDIO:"main"===t?this.hls.audioTracks.length?Fy.VIDEO:Fy.MUXED:void 0}getTopBandwidth(e){let t,i=0;const s=this.hls;if(e===Fy.AUDIO)t=s.audioTracks;else{const e=s.maxAutoLevel,i=e>-1?e+1:s.levels.length;t=s.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Fy.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*Qf.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}},contentSteeringController:class{constructor(e){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.log=Lc.log.bind(Lc,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Ec.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Ec.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Ec.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===Ef&&i.flags===Df){const e=this.levels;let s=this.pathwayPriority,r=this.pathwayId;if(t.context){const{groupId:i,pathwayId:s,type:o}=t.context;i&&e?r=this.getPathwayForGroupId(i,o,r):s&&(r=s)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!s&&e&&(s=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==r),i.resolved||Lc.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${r} levels: ${e?e.length:e} priorities: ${JSON.stringify(s)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,s=performance.now();Object.keys(i).forEach((e=>{s-i[e]>3e5&&delete i[e]}));for(let s=0;s0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,pf(t),this.hls.trigger(Ec.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[o];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,i){const s=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:r,"BASE-ID":o,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===r)))return;const n=this.getLevelsForPathway(o).map((e=>{const t=new Ic(e.attrs);t["PATHWAY-ID"]=r;const o=t.AUDIO&&`${t.AUDIO}_clone_${r}`,n=t.SUBTITLES&&`${t.SUBTITLES}_clone_${r}`;o&&(i[t.AUDIO]=o,t.AUDIO=o),n&&(s[t.SUBTITLES]=n,t.SUBTITLES=n);const l=uA(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),d=new rf({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${s}"`);const o=e.data;if(1!==o.VERSION)return void this.log(`Steering VERSION ${o.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=o.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":n,"PATHWAY-PRIORITY":l}=o;if(a)try{this.uri=new self.URL(a,s).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),n&&this.clonePathways(n);const d={steeringManifest:o,url:s.toString()};this.hls.trigger(Ec.STEERING_MANIFEST_LOADED,d),l&&this.updatePathwayPriority(l)},onError:(e,t,i,s)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,r);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(r=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${s}`),this.loader.load(r,n,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function SA(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(SA):Object.keys(e).reduce(((t,i)=>(t[i]=SA(e[i]),t)),{}):e}function wA(e){const t=e.loader;if(t!==gA&&t!==fA)Lc.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=gA,e.progressive=!0,e.enableSoftwareAES=!0,Lc.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let EA;class TA extends Rf{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Ec.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Ec.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Ec.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Ec.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Ec.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(Ec.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Ec.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Ec.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Ec.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Ec.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Ec.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,s=[],r={},o={};let a=!1,n=!1,l=!1;t.levels.forEach((e=>{var t,d;const h=e.attrs;let{audioCodec:c,videoCodec:u}=e;-1!==(null==(t=c)?void 0:t.indexOf("mp4a.40.34"))&&(EA||(EA=/chrome|firefox/i.test(navigator.userAgent)),EA&&(e.audioCodec=c=void 0)),c&&(e.audioCodec=c=up(c,i)),0===(null==(d=u)?void 0:d.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:p,height:f,unknownCodecs:m}=e;if(a||(a=!(!p||!f)),n||(n=!!u),l||(l=!!c),null!=m&&m.length||c&&!op(c,"audio",i)||u&&!op(u,"video",i))return;const{CODECS:g,"FRAME-RATE":y,"HDCP-LEVEL":A,"PATHWAY-ID":b,RESOLUTION:v,"VIDEO-RANGE":_}=h,S=`${`${b||"."}-`}${e.bitrate}-${v}-${y}-${g}-${_}-${A}`;if(r[S])if(r[S].uri===e.url||e.attrs["PATHWAY-ID"])r[S].addGroupId("audio",h.AUDIO),r[S].addGroupId("text",h.SUBTITLES);else{const t=o[S]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new rf(e);r[S]=i,s.push(i)}else{const t=new rf(e);r[S]=t,o[S]=1,s.push(t)}})),this.filterAndSortMediaOptions(s,t,a,n,l)}filterAndSortMediaOptions(e,t,i,s,r){let o=[],a=[],n=e;if((i||s)&&r&&(n=n.filter((({videoCodec:e,videoRange:t,width:i,height:s})=>{return(!!e||!(!i||!s))&&(!!(r=t)&&Xp.indexOf(r)>-1);var r}))),0===n.length)return void Promise.resolve().then((()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;o=t.audioTracks.filter((t=>!t.audioCodec||op(t.audioCodec,"audio",e))),kA(o)}t.subtitles&&(a=t.subtitles,kA(a));const l=n.slice(0);n.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return Xp.indexOf(e.videoRange)-Xp.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=lp(e.videoCodec),s=lp(t.videoCodec);if(i!==s)return s-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=dp(e.codecSet),s=dp(t.codecSet);if(i!==s)return s-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let d=l[0];if(this.steering&&(n=this.steering.filterParsedLevels(n),n.length!==l.length))for(let e=0;ei&&i===_A.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const c=r&&!s,u={levels:n,audioTracks:o,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:s,altAudio:!c&&o.some((e=>!!e.url))};this.hls.trigger(Ec.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),s=e<0;if(this.hls.trigger(Ec.ERROR,{type:Tc.OTHER_ERROR,details:kc.LEVEL_SWITCH_ERROR,level:e,fatal:s,error:i,reason:i.message}),s)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,s=this.currentLevel,r=s?s.attrs["PATHWAY-ID"]:void 0,o=t[e],a=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,i===e&&o.details&&s&&r===a)return;this.log(`Switching to level ${e} (${o.height?o.height+"p ":""}${o.videoRange?o.videoRange+" ":""}${o.codecSet?o.codecSet+" ":""}@${o.bitrate})${a?" with Pathway "+a:""} from level ${i}${r?" with Pathway "+r:""}`);const n={level:e,attrs:o.attrs,details:o.details,bitrate:o.bitrate,averageBitrate:o.averageBitrate,maxBitrate:o.maxBitrate,realBitrate:o.realBitrate,width:o.width,height:o.height,codecSet:o.codecSet,audioCodec:o.audioCodec,videoCodec:o.videoCodec,audioGroups:o.audioGroups,subtitleGroups:o.subtitleGroups,loaded:o.loaded,loadError:o.loadError,fragmentError:o.fragmentError,name:o.name,id:o.id,uri:o.uri,url:o.url,urlId:0,audioGroupIds:o.audioGroupIds,textGroupIds:o.textGroupIds};this.hls.trigger(Ec.LEVEL_SWITCHING,n);const l=o.details;if(!l||l.live){const e=this.switchParams(o.uri,null==s?void 0:s.details);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===Dp&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===Lp){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:s,details:r}=t,o=this._levels[s];var a;if(!o)return this.warn(`Invalid level index ${s}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));s===this.currentLevelIndex?(0===o.fragmentError&&(o.loadError=0),this.playlistLoaded(s,t,o.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let s=i.uri;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const r=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${s}`),this.clearTimer(),this.hls.trigger(Ec.LEVEL_LOADING,{url:s,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));pf(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(Ec.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(Ec.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function kA(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class CA{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const s=this.keyUriToKeyInfo[i].loader;if(s){var t;if(e&&e!==(null==(t=s.context)?void 0:t.frag.type))return;s.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=kc.KEY_LOAD_ERROR,i,s,r){return new lm({type:Tc.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:i,networkDetails:s})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:s}=e;for(let e=0;e{r.setKeyFormat(e)}));break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((t=>this.loadInternal(e,t))):this.loadInternal(e)}loadInternal(e,t){var i,s;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const i=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,kc.KEY_LOAD_ERROR,i))}const o=r.uri;if(!o)return Promise.reject(this.createKeyLoadError(e,kc.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${o}"`)));let a=this.keyUriToKeyInfo[o];if(null!=(i=a)&&i.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var n;if(null!=(s=a)&&s.keyLoadPromise)switch(null==(n=a.mediaKeySessionContext)?void 0:n.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(r.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,kc.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,s=new(0,i.loader)(i);return t.keyLoader=e.loader=s,e.keyLoadPromise=new Promise(((r,o)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},n=i.keyLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{const{frag:a,keyInfo:n,url:l}=i;if(!a.decryptdata||n!==this.keyUriToKeyInfo[l])return o(this.createKeyLoadError(a,kc.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),s));n.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,n.loader=null,r({frag:a,keyInfo:n})},onError:(e,i,s,r)=>{this.resetLoader(i),o(this.createKeyLoadError(t,kc.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),s,yc({url:a.url,data:void 0},e)))},onTimeout:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,kc.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),s))},onAbort:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,kc.INTERNAL_ABORTED,new Error("key loading aborted"),s))}};s.load(a,l,d)}))}resetLoader(e){const{frag:t,keyInfo:i,url:s}=e,r=i.loader;t.keyLoader===r&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[s],r&&r.destroy()}}function DA(){return self.SourceBuffer||self.WebKitSourceBuffer}function xA(){if(!sp())return!1;const e=DA();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class RA{constructor(e,t,i,s){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=i,this.hls=s}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:s,stalled:r}=this;if(null===s)return;const{currentTime:o,seeking:a}=s,n=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,o!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const e=self.performance.now()-r;Lc.warn(`playback not stuck anymore @${o}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||n)return void(this.stalled=null);if(s.paused&&!a||s.ended||0===s.playbackRate||!Qf.getBuffered(s).length)return void(this.nudgeRetry=0);const d=Qf.bufferInfo(s,o,0),h=d.nextStart||0;if(a){const e=d.len>2,i=!h||t&&t.start<=o||h-o>2&&!this.fragmentTracker.getPartialFragment(o);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(d.len>0)&&!h)return;const e=Math.max(h,d.start||0)-o,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(c=t.details)?void 0:c.live)?2*t.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(o);if(e>0&&(e<=i||r))return void(s.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const p=u-r;if(!a&&p>=250&&(this._reportStall(d),!this.media))return;const f=Qf.bufferInfo(s,o,i.maxBufferHole);this._tryFixBufferStall(f,p)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:s,media:r}=this;if(null===r)return;const o=r.currentTime,a=s.getPartialFragment(o);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-o1e3*i.highBufferWatchdogPeriod&&(Lc.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:s}=this;if(!s&&i){this.stallReported=!0;const s=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);Lc.warn(s.message),t.trigger(Ec.ERROR,{type:Tc.MEDIA_ERROR,details:kc.BUFFER_STALLED_ERROR,fatal:!1,error:s,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:s}=this;if(null===s)return 0;const r=s.currentTime,o=Qf.bufferInfo(s,r,0),a=r0&&o.len<1&&s.readyState<3,d=a-r;if(d>0&&(n||l)){if(d>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===r){const e=t.getAppendedFrag(0,Lp);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=mm,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=fm}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Tm:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],s=null==i?void 0:i.details;if(s&&(!s.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(s))break;this.state=mm;break}if(this.hls.nextLoadLevel!==this.level){this.state=mm;break}break}case Am:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=mm}}}this.state===mm&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(null===t||!s&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=e.nextLoadLevel;if(null==i||!i[r])return;const o=i[r],a=this.getMainFwdBufferInfo();if(null===a)return;const n=this.getLevelDetails();if(n&&this._streamEnded(a,n)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(Ec.BUFFER_EOS,e),void(this.state=Sm)}e.loadLevel!==r&&-1===e.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=o.details;if(!l||this.state===Tm||l.live&&this.levelLastLoaded!==o)return this.level=r,void(this.state=Tm);const d=a.len,h=this.getMaxBufferLength(o.maxBitrate);if(d>=h)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==$f){var p;const e=(null!=(p=this.backtrackFragment)?p:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?Oc:Nc,t=(e===Nc?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,Lp)}u=this.getNextFragmentLoopLoading(u,l,a,Lp,h)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,o,c))}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);this.fragCurrent=e,s===Vf||s===Wf?"initSegment"===e.sn?this._loadInitSegment(e,t):this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):(this.startFragRequested=!0,super.loadFragment(e,t,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,Lp)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const s=this.getAppendedFrag(t.currentTime);s&&s.start>1&&this.flushMainBuffer(0,s.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*r.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],s=this.fragLastKbps;i=s&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*s)+1:0}else i=0;const o=this.getBufferedFrag(t.currentTime+i);if(o){const e=this.followingBufferedFrag(o);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,s=Math.max(o.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(s,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case gm:case ym:case Am:case vm:case _m:this.state=mm}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new RA(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const e=this.media,t=e?e.currentTime:null;_c(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(Ec.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(e,t){let i=!1,s=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),s=s||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&s&&!function(){var e;const t=DA();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1}onLevelLoading(e,t){const{levels:i}=this;if(!i||this.state!==mm)return;const s=i[t.level];(!s.details||s.details.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(s.details))&&(this.state=Tm)}onLevelLoaded(e,t){var i;const{levels:s}=this,r=t.level,o=t.details,a=o.totalduration;if(!s)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""}, cc [${o.startCC}, ${o.endCC}] duration:${a}`);const n=s[r],l=this.fragCurrent;!l||this.state!==ym&&this.state!==Am||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let d=0;if(o.live||null!=(i=n.details)&&i.live){var h;if(this.checkLiveUpdate(o),o.deltaUpdateFailed)return;d=this.alignPlaylists(o,n.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(n.details=o,this.levelLastLoaded=n,this.hls.trigger(Ec.LEVEL_UPDATED,{details:o,level:r}),this.state===Tm){if(this.waitForCdnTuneIn(o))return;this.state=mm}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,d),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{levels:o}=this;if(!o)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=o[i.level],n=a.details;if(!n)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,d=n.PTSKnown||!n.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new Lg(this.hls,Lp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=s?s.index:-1,f=-1!==p,m=new Xf(i.level,i.sn,i.stats.chunkCount,r.byteLength,p,f),g=this.initPTS[i.cc];u.push(r,h,c,l,i,s,n.totalduration,d,m,g)}onAudioTrackSwitching(e,t){const i=this.altAudio;if(!!!t.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(Ec.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(Ec.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,s=!!this.hls.audioTracks[i].url;if(s){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=s,this.tick()}onBufferCreated(e,t){const i=t.tracks;let s,r,o=!1;for(const e in i){const t=i[e];if("main"===t.id){if(r=e,s=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else o=!0}o&&s?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i&&i.type!==Lp)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===_m&&(this.state=mm));const r=s?s.stats:i.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,s)}onError(e,t){var i;if(t.fatal)this.state=wm;else switch(t.details){case kc.FRAG_GAP:case kc.FRAG_PARSING_ERROR:case kc.FRAG_DECRYPT_ERROR:case kc.FRAG_LOAD_ERROR:case kc.FRAG_LOAD_TIMEOUT:case kc.KEY_LOAD_ERROR:case kc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Lp,t);break;case kc.LEVEL_LOAD_ERROR:case kc.LEVEL_LOAD_TIMEOUT:case kc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Tm||(null==(i=t.context)?void 0:i.type)!==Dp||(this.state=mm);break;case kc.BUFFER_APPEND_ERROR:case kc.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===kc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case kc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!Qf.getBuffered(e).length){const e=this.state!==mm?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=mm,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==Oc||this.audioOnly&&!this.altAudio){const e=(t===Nc?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,Lp),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(r{const{hls:s}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=mm,this.startFragRequested=!1,this.bitrateTest=!1;const r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),s.trigger(Ec.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{video:h,text:c,id3:u,initSegment:p}=r,{details:f}=d,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(n))this.fragmentTracker.removeFragment(n);else{if(this.state=vm,p){if(null!=p&&p.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,p.tracks,e,o),s.trigger(Ec.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:p.tracks})}const e=p.initPTS,t=p.timescale;_c(e)&&(this.initPTS[n.cc]={baseTime:e,timescale:t},s.trigger(Ec.INIT_PTS_FOUND,{frag:n,id:i,initPTS:e,timescale:t}))}if(h&&f&&"initSegment"!==n.sn){const e=f.fragments[n.sn-1-f.startSN],t=n.sn===f.startSN,i=!e||n.cc>e.cc;if(!1!==r.independent){const{startPTS:e,endPTS:s,startDTS:r,endDTS:a}=h;if(l)l.elementaryStreams[h.type]={startPTS:e,endPTS:s,startDTS:r,endDTS:a};else if(h.firstKeyFrame&&h.independent&&1===o.id&&!i&&(this.couldBacktrack=!0),h.dropped&&h.independent){const r=this.getMainFwdBufferInfo(),o=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=h.firstKeyFramePTS?h.firstKeyFramePTS:e;if(!t&&o2&&(n.gap=!0);n.setElementaryStreamInfo(h.type,e,s,r,a),this.backtrackFragment&&(this.backtrackFragment=n),this.bufferFragmentData(h,n,l,o,t||i)}else{if(!t&&!i)return void this.backtrack(n);n.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=m;l&&(l.elementaryStreams[Oc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(Oc,e,t,i,s),this.bufferFragmentData(m,n,l,o)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:n,details:f,samples:u.samples};s.trigger(Ec.FRAG_PARSING_METADATA,e)}if(f&&c){const e={id:i,frag:n,details:f,samples:c.samples};s.trigger(Ec.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,s){if(this.state!==vm)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:r,video:o,audiovideo:a}=t;if(r){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==r.metadata.channelCount&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")),t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==r.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),r.levelCodec=t,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${r.codec}]`)}o&&(o.levelCodec=e.videoCodec,o.id="main",this.log(`Init video buffer, container:${o.container}, codecs[level/parsed]=[${e.videoCodec||""}/${o.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(Ec.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const r=t[e].initSegment;null!=r&&r.byteLength&&this.hls.trigger(Ec.BUFFER_APPENDING,{type:e,data:r,frag:i,part:null,chunkMeta:s,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,Lp)}backtrack(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=mm}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(Qf.isBuffered(e,i)?t=this.getAppendedFrag(i):Qf.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(Ec.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(Ec.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&_c(t)&&_c(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class PA{static get version(){return"1.5.7"}static isMSESupported(){return xA()}static isSupported(){return function(){if(!xA())return!1;const e=sp();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(np(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(np(t,"audio")))))}()}static getMediaSource(){return sp()}static get Events(){return Ec}static get ErrorTypes(){return Tc}static get ErrorDetails(){return kc}static get DefaultConfig(){return PA.defaultConfig?PA.defaultConfig:_A}static set DefaultConfig(e){PA.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Rg,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){Rc(e,"debug","log","info","warn","error");try{xc.log(`Debug logs enabled for "${t}" in hls.js version 1.5.7`)}catch(e){xc=Dc}}else xc=Dc}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=SA(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const r=`${"level"===e?"playlist":e}LoadPolicy`,o=void 0===t[r],a=[];s.forEach((s=>{const n=`${e}Loading${s}`,l=t[n];if(void 0!==l&&o){a.push(n);const e=i[r].default;switch(t[r]={default:e},s){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&Lc.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(t[r])}`)})),yc(yc({},i),t)}(PA.DefaultConfig,e);this.userConfig=e,t.progressive&&wA(t);const{abrController:i,bufferController:s,capLevelController:r,errorController:o,fpsController:a}=t,n=new o(this),l=this.abrController=new i(this),d=this.bufferController=new s(this),h=this.capLevelController=new r(this),c=new a(this),u=new Up(this),p=new Kp(this),f=t.contentSteeringController,m=f?new f(this):null,g=this.levelController=new TA(this,m),y=new Jf(this),A=new CA(this.config),b=this.streamController=new LA(this,y,A);h.setStreamController(b),c.setStreamController(b);const v=[u,g,b];m&&v.splice(1,0,m),this.networkControllers=v;const _=[l,d,h,c,p,y];this.audioTrackController=this.createController(t.audioTrackController,v);const S=t.audioStreamController;S&&v.push(new S(this,y,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,v);const w=t.subtitleStreamController;w&&v.push(new w(this,y,A)),this.createController(t.timelineController,_),A.emeController=this.emeController=this.createController(t.emeController,_),this.cmcdController=this.createController(t.cmcdController,_),this.latencyController=this.createController(Yp,_),this.coreComponents=_,v.push(n);const E=n.onErrorOut;"function"==typeof E&&this.on(Ec.ERROR,E,n)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(Lc.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===Ec.ERROR;this.trigger(Ec.ERROR,{type:Tc.OTHER_ERROR,details:kc.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){Lc.log("destroy"),this.trigger(Ec.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){Lc.log("attachMedia"),this._media=e,this.trigger(Ec.MEDIA_ATTACHING,{media:e})}detachMedia(){Lc.log("detachMedia"),this.trigger(Ec.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,s=this.url=mc.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,Lc.log(`loadSource:${s}`),t&&i&&(i!==s||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(Ec.MANIFEST_LOADING,{url:e})}startLoad(e=-1){Lc.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){Lc.log("stopLoad"),this.started=!1,this.networkControllers.forEach((e=>{e.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.stopLoad()}))}swapAudioCodec(){Lc.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){Lc.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){Lc.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){Lc.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){Lc.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){Lc.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){Lc.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(Lc.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Qp.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let s=0;s=t)return s;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let s;if(s=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=s;t--;){const s=e[t].attrs["HDCP-LEVEL"];if(s&&s<=i)return t}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}PA.defaultConfig=void 0;class BA extends wa{constructor(e){super(),this.player=e,this.TAG_NAME="HlsDecoder",e._opt,this.canVideoPlay=!1,this.$videoElement=null,this.canvasRenderInterval=null,this.bandwidthEstimateInterval=null,this.fpsInterval=null,this.hlsFps=0,this.hlsPrevFrams=0,this.isInitInfo=!1,this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.player.isHlsCanVideoPlay()?(this.$videoElement=this.player.video.$videoElement,this.canVideoPlay=!0):PA.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new PA({}),this._initHls(),this._bindEvents()):this.player.debug.error(this.TAG_NAME,"init hls error ,not support "),this.player.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{if(this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.hls&&(this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isInitInfo=!1,this._stopCanvasRender(),this._stopBandwidthEstimateInterval(),this._stopFpsInterval(),this.player._opt.useCanvasRender&&this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}this.$videoElement=null,this.hlsFps=0,this.player.debug.log(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,s=i.length?i.end(i.length-1):0;return t=s-e.currentTime,t<0&&(this.player.debug.warn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${s} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${s}`),e.currentTime=s,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){Aa()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"));const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.video.render({$video:this.$videoElement,ts:i}),this.player.handleRender(),this.player.updateStats({dts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{let e=0;this.hls.bandwidthEstimate&&(e=this.hls.bandwidthEstimate),this.player.emit(rt.kBps,(e/1024/8/10).toFixed(2))}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startFpsInterval(){this._stopCanvasRender(),this.fpsInterval=setInterval((()=>{if(this.$videoElement)if(qo(this.$videoElement.getVideoPlaybackQuality)){const e=this.$videoElement.getVideoPlaybackQuality();this.hlsFps=e.totalVideoFrames-this.hlsPrevFrams,this.hlsPrevFrams=e.totalVideoFrames}else{const e=this.$videoElement.webkitDecodedFrameCount||0;this.hlsFps=e-this.hlsPrevFrams,this.hlsPrevFrams=e}}),1e3)}_stopFpsInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_initHls(){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.$videoElement.muted=!0,fo()&&(this.$videoElement.style.position="absolute"),this.initVideoEvents()),this.hls.attachMedia(this.$videoElement)}_bindEvents(){const e=this.player,{proxy:t}=this.player.events;this.hls;const i=this.$videoElement,s=Aa(),r=t(i,Xi,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&ua(s)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(r),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(PA.Events.ERROR,((e,t)=>{if(t.fatal)switch(t.type){case PA.ErrorTypes.NETWORK_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case PA.ErrorTypes.MEDIA_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}})),this.hls.on(PA.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(PA.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(PA.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(PA.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(PA.Events.BUFFER_RESET,(()=>{})),this.hls.on(PA.Events.BUFFER_CODECS,(()=>{})),this.hls.on(PA.Events.BUFFER_CREATED,(()=>{})),this.hls.on(PA.Events.BUFFER_APPENDING,((e,t)=>{this.player.debug.log(this.TAG_NAME,"BUFFER_APPENDING",t.type)})),this.hls.on(PA.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(PA.Events.BUFFER_EOS,(()=>{})),this.hls.on(PA.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(PA.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(PA.Events.MANIFEST_LOADING,(()=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_LOADING 开始加载playlist m3u8资源")})),this.hls.on(PA.Events.MANIFEST_LOADED,((e,t)=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_LOADED playlist m3u8文件加载完成",t.url)})),this.hls.on(PA.Events.MANIFEST_PARSED,(()=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_PARSED playlist m3u8解析完成"),e._times.demuxStart||(e._times.demuxStart=Xr())})),this.hls.on(PA.Events.LEVEL_LOADING,(()=>{})),this.hls.on(PA.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(PA.Events.FRAG_LOADING,(()=>{})),this.hls.on(PA.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=Xr())})),this.hls.on(PA.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=Xr(),e.handlePlayToRenderTimes())})),this.hls.on(PA.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(PA.Events.KEY_LOADING,(()=>{})),this.hls.on(PA.Events.KEY_LOADING,(()=>{})),this.hls.on(PA.Events.FPS_DROP,(e=>{})),this.hls.on(PA.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(PA.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{this.player.debug.log(this.TAG_NAME,"FRAG_PARSING_INIT_SEGMENT",t);const i=!!(t&&t.tracks&&t.tracks.audio),s=!!(t&&t.tracks&&t.tracks.video);if(i&&t.tracks.audio){let e=t.tracks.audio;const i=e.metadata&&e.metadata.channelCount?e.metadata.channelCount:0,s=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:s,channels:i,sampleRate:44100})}if(s&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?gt:yt};e.metadata&&(i.width=e.metadata.width,i.height=e.metadata.height),this.player.video&&this.player.video.updateVideoInfo(i)}}))}initVideoPlay(e){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.initVideoEvents()),this.$videoElement.autoplay=!0,this.$videoElement.muted=!0,this.$videoElement.src=e}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,Yi,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Qi,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,Xi,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,Zi,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(PA.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const IA=2097152,MA="fetch",UA="xhr",FA="arraybuffer",OA="text",NA="json",jA="real_time_speed",zA=Object.prototype.toString;function GA(e){if("[object Object]"!==zA.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function VA(e){if(!e||null===e[0]||void 0===e[0]||0===e[0]&&(null===e[1]||void 0===e[1]))return;let t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}function HA(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function WA(e,t){if(!e)return;if(!t)return e;let i;const s=Object.keys(t).map((e=>{if(i=t[e],null!=i)return Array.isArray(i)?e+="[]":i=[i],i.map((t=>{var i;return i=t,"[object Date]"===zA.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${HA(e)}=${HA(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function $A(e,t,i,s,r,o,a,n,l,d,h){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,option:{range:l,vid:d,index:n,contentLength:s,age:r,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:h},response:i}}function JA(e,t){return Math.round(8*e*1e3/t/1024)}class qA extends Error{constructor(e,t,i,s){super(s),ah(this,"retryCount",0),ah(this,"isTimeout",!1),ah(this,"loaderType",MA),ah(this,"startTime",0),ah(this,"endTime",0),ah(this,"options",{}),this.url=e,this.request=t,this.response=i}}class KA extends wa{constructor(e){super(),ah(this,"_abortController",null),ah(this,"_timeoutTimer",null),ah(this,"_reader",null),ah(this,"_response",null),ah(this,"_aborted",!1),ah(this,"_index",-1),ah(this,"_range",null),ah(this,"_receivedLength",0),ah(this,"_running",!1),ah(this,"_logger",null),ah(this,"_vid",""),ah(this,"_onProcessMinLen",0),ah(this,"_onCancel",null),ah(this,"_priOptions",null),ah(this,"TAG_NAME","FetchLoader"),this.player=e}load(e){var t;let{url:i,vid:s,timeout:r,responseType:o,onProgress:a,index:n,onTimeout:l,onCancel:d,range:h,transformResponse:c,request:u,params:p,logger:f,method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:w,onProcessMinLen:E,priOptions:T}=e;this._aborted=!1,this._onProcessMinLen=E,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=h||[0,0],this._vid=s||i,this._priOptions=T||{};const k={method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:w,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal};let C=!1;clearTimeout(this._timeoutTimer),i=WA(i,p);const D=VA(h);D&&(g=u?u.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&g instanceof Headers?g.append("Range",D):g.Range=D),r&&(this._timeoutTimer=setTimeout((()=>{if(C=!0,this.cancel(),l){const e=new qA(i,k,null,"timeout");e.isTimeout=!0,l(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),r));const x=Date.now();return(xo(n)||xo(h))&&this.player.debug.log(this.TAG_NAME,"[fetch load start], index,",n,",range,",h),new Promise(((e,t)=>{fetch(u||i,u?void 0:k).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(c&&(s=c(s,i)||s),!s.ok)throw new qA(i,k,s,"bad network response");const r=Date.now();let l;if(o===OA)l=await s.text(),this._running=!1;else if(o===NA)l=await s.json(),this._running=!1;else{if(a)return this.resolve=e,this.reject=t,void this._loadChunk(s,a,x,r);{l=await s.arrayBuffer(),l=new Uint8Array(l),this._running=!1;const e=Date.now()-x,t=JA(l.byteLength,e);this.emit(jA,{speed:t,len:l.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(xo(n)||xo(h))&&this.player.debug.log(this.TAG_NAME,"[fetch load end], index,",n,",range,",h),e($A(l,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),x,r,n,h,this._vid,this._priOptions))})).catch((e=>{var s;clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!C||((e=e instanceof qA?e:new qA(i,k,null,null===(s=e)||void 0===s?void 0:s.message)).startTime=x,e.endTime=Date.now(),e.isTimeout=C,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},t(e))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(e){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(e,t,i,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new qA(e.url,"",e,"onProgress of bad response.body.getReader");return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(t)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(IA),this._writeIdx=0);const r=this._reader=e.body.getReader();let o,a,n;const l=async()=>{var d;a=Date.now();try{o=await r.read(),n=Date.now()}catch(e){return n=Date.now(),void(this._aborted||(this._running=!1,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(e)))}const h=(null===(d=this._range)||void 0===d?void 0:d.length)>0?this._range[0]:0,c=h+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=o.value?o.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",h+this._receivedLength,", done,",o.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||o.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(o.value,this._writeIdx),this._writeIdx=0,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",o.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const e=new Uint8Array(this._writeIdx+u+2048);this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(o.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=o.value;if((p&&p.byteLength>0||o.done)&&t(p,o.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e),o.done){const t=Date.now()-i,r=JA(this._receivedLength,t);this.emit(jA,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debug.log(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",o.done),this.resolve($A(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,this._index,this._range,this._vid,this._priOptions))}else l()};l()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}static isSupported(){return!("undefined"==typeof fetch)}}class YA{constructor(e,t,i){ah(this,"TAG_NAME","Task"),this.promise=function(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=function(){return i.used=!0,e(...arguments)},i.reject=function(){return i.used=!0,t(...arguments)},i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===MA&&window.fetch?new KA(i):new QA(i),this._config=t,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=t.retryCheckFunc}exec(){const{retry:e,retryDelay:t,onRetryError:i,transformError:s,...r}=this._config,o=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this.player.debug.log(this.TAG_NAME,"[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let n=a;s&&(n=s(n)||n),i&&this._retryCount>0&&i(n,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debug.log(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(o,t));this.promise.reject(n)}};return o(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}class QA extends wa{constructor(e){super(),ah(this,"_xhr",null),ah(this,"_aborted",!1),ah(this,"_timeoutTimer",null),ah(this,"_range",null),ah(this,"_receivedLength",0),ah(this,"_url",null),ah(this,"_onProgress",null),ah(this,"_index",-1),ah(this,"_headers",null),ah(this,"_currentChunkSizeKB",384),ah(this,"_timeout",null),ah(this,"_xhr",null),ah(this,"_withCredentials",null),ah(this,"_startTime",-1),ah(this,"_loadCompleteResolve",null),ah(this,"_loadCompleteReject",null),ah(this,"_runing",!1),ah(this,"_logger",!1),ah(this,"_vid",""),ah(this,"_responseType",void 0),ah(this,"_credentials",void 0),ah(this,"_method",void 0),ah(this,"_transformResponse",void 0),ah(this,"_firstRtt",void 0),ah(this,"_onCancel",null),ah(this,"_priOptions",null),ah(this,"TAG_NAME","XhrLoader"),this.player=e}load(e){clearTimeout(this._timeoutTimer),this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this.player.debug.log(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=WA(e.url,e.params);const t=Date.now();return new Promise(((e,t)=>{this._loadCompleteResolve=e,this._loadCompleteReject=t,this._startLoad()})).catch((e=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(e=e instanceof qA?e:new qA(this._url,this._request)).startTime=t,e.endTime=Date.now(),e.options={index:this._index,vid:this._vid,priOptions:this._priOptions},e}))}_startLoad(){let e=null;if(this._responseType===FA&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debug.log(this.TAG_NAME,"[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}_internalOpen(e){try{this._startTime=Date.now();const t=this._xhr=new XMLHttpRequest;t.open(this._method||"GET",this._url,!0),t.responseType=this._responseType,this._timeout&&(t.timeout=this._timeout),t.withCredentials=this._withCredentials,t.onload=this._onLoad.bind(this),t.onreadystatechange=this._onReadyStatechange.bind(this),t.onerror=e=>{var t,i,s;this._running=!1;const r=new qA(this._url,this._request,null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(s=e.currentTarget)||void 0===s?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new qA(this._url,this._request,{status:408},"timeout");this._onTimeout&&(t.isTimeout=!0,this._onTimeout(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)};const i=this._headers||{},s=VA(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debug.log(this.TAG_NAME,"[xhr.send->] tast,",this._range,",load sub range, ",e),t.send(this._body)}catch(t){t.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}}_onReadyStatechange(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(e){var t;const i=e.target.status;if(i<200||i>299){const t=new qA(this._url,null,{...e.target.response,status:i},"bad response,status:"+i);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let s,r=null,o=!1;const a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===FA){var n;const t=new Uint8Array(e.target.response);if(s=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=JA(this._receivedLength,e);this.emit(jA,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[s,a+this._receivedLength],priOptions:this._priOptions})}r=t,o=!((null===(n=this._range)||void 0===n?void 0:n.length)>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",s,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",o)}else o=!0,r=e.target.response;let l={ok:i>=200&&i<300,status:i,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(r,o,{index:this._index,vid:this._vid,range:[s,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),o?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve($A(this._onProgress?null:r,o,l,l.headers["content-length"],l.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}_getHeaders(e){const t=e.getAllResponseHeaders().trim().split("\r\n"),i={};for(const e of t){const t=e.split(": ");i[t[0].toLowerCase()]=t.slice(1).join(": ")}return i}}class XA extends wa{constructor(e,t){super(),ah(this,"type",MA),ah(this,"_queue",[]),ah(this,"_alive",[]),ah(this,"_currentTask",null),ah(this,"_config",void 0),this.player=t,this._config=function(e){return{loaderType:MA,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:OA,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...e}}(e),this._config.loaderType!==UA&&KA.isSupported()||(this.type=UA)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===MA}static isFetchSupport(){return KA.isSupported()}load(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,t=Object.assign({},this._config,t),t.params&&(t.params=Object.assign({},t.params)),t.headers&&GA(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&GA(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new YA(this.type,t,this.player);return i.loader.on(jA,(e=>{this.emit(jA,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const e=this._queue.map((e=>e.cancel())).concat(this._alive.map((e=>e.cancel())));this._currentTask&&e.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(e),await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((t=>setTimeout(t,e)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const e=this._currentTask.exec().catch((e=>{}));e&&"function"==typeof e.finally&&e.finally((()=>{var e,t;null!==(e=this._currentTask)&&void 0!==e&&e.alive&&(null===(t=this._alive)||void 0===t?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const ZA="network",eb="network_timeout",tb="other",ib="manifest",sb="hls",rb="demux";class ob extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===eb?ZA:e,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(e,t,i,s,r){return e instanceof ob?e:(e instanceof Error&&(i=e,e=""),e||(e=tb),new ob(e,t,i,s,r))}static network(e){var t;return new ob(null!=e&&e.isTimeout?eb:ZA,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}const ab=/^#(EXT[^:]*)(?::(.*))?$/,nb=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,lb=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,db=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function hb(e){const t=e.match(ab);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function cb(e){const t={};let i=nb.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=nb.exec(e);return t}function ub(e,t){if(!t||!e||lb.test(e))return e;const i=db.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const pb={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function fb(e,t){const i=pb[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class Tb{static parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;if(!e.includes("#EXTM3U"))throw new Error("Invalid m3u8 file");const i=function(e){return e.split(/[\r\n]/).map((e=>e.trim())).filter(Boolean)}(e);return Tb.isMediaPlaylist(e)?function(e,t){const i=new Sb;i.url=t;let s,r=new wb,o=null,a=null,n=0,l=0,d=0,h=0,c=!1;for(;(s=e[h++])&&!c;){if("#"!==s[0]){r.sn=l,r.cc=d,r.url=ub(s,t),a&&(r.key=a.clone(l)),o&&(r.initSegment=o),i.segments.push(r),r=new wb,l++;continue}const e=hb(s);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=null==u?void 0:u.toUpperCase();break;case"TARGETDURATION":i.targetDuration=parseFloat(u);break;case"ENDLIST":{const e=i.segments[i.segments.length-1];e&&(e.isLast=!0),i.live=!1,c=!0}break;case"MEDIA-SEQUENCE":l=i.startSN=parseInt(u);break;case"DISCONTINUITY-SEQUENCE":d=i.startCC=parseInt(u);break;case"DISCONTINUITY":d++;break;case"BYTERANGE":r.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");r.start=n,r.duration=parseFloat(e),n+=r.duration,r.title=t}break;case"KEY":{const e=cb(u);if("NONE"===e.METHOD){a=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(a=new Eb,a.method=e.METHOD,a.url=/^blob:/.test(e.URI)?e.URI:ub(e.URI,t),a.keyFormat=e.KEYFORMAT||"identity",a.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,a.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),o.length&&(o.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=o.filter((t=>t.group===e.audioGroup)))}))),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=a.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class kb{constructor(e){ah(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Ls,{error:ob.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new XA({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new XA({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new XA({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}async destroy(){await this.stopPoll(),this._audioLoader&&(this._audioLoader.destroy(),this._audioLoader=null),this._subtitleLoader&&(this._subtitleLoader.destroy(),this._subtitleLoader=null),this._loader&&(this._loader.destroy(),this._loader=null)}async load(e,t,i){this.player.debug.log(this.TAG_NAME,"load()",e,t,i);const s=[this._loader.load(e)];let r,o,a,n,l,d;t&&s.push(this._audioLoader.load(t)),i&&s.push(this._subtitleLoader.load(i));try{const[e,i,n]=await Promise.all(s);if(!e)return[];r=e.data,t?(o=null==i?void 0:i.data,a=null==n?void 0:n.data):a=null==i?void 0:i.data}catch(e){throw ob.network(e)}try{var h;if(n=Tb.parse(r,e),!1===(null===(h=n)||void 0===h?void 0:h.live)&&n.segments&&!n.segments.length)throw new Error("empty segments list");o&&(l=Tb.parse(o,t)),a&&(d=Tb.parse(a,i))}catch(e){throw new ob(ib,sb,e)}return n&&(n.isMaster?this.hls.emit(Ts,{playlist:n}):this.hls.emit(ks,{playlist:n})),[n,l,d]}poll(e,t,i,s,r,o){clearTimeout(this._timer),o=o||3e3;let a=this.hls.config.pollRetryCount;const n=async()=>{clearTimeout(this._timer);try{const r=await this.load(e,t,i);if(!r[0])return;a=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(e){a--,a<=0&&r(e)}this._timer=setTimeout(n,o)};this._timer=setTimeout(n,o)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}}class Cb{constructor(){ah(this,"_chunkSpeeds",[]),ah(this,"_speeds",[])}addRecord(e,t){e&&t&&(this._speeds.push(8e3*e/t),this._speeds=this._speeds.slice(-3))}addChunkRecord(e,t){e&&t&&(this._chunkSpeeds.push(8e3*e/t),this._chunkSpeeds=this._chunkSpeeds.slice(-100))}getAvgSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds.reduce(((e,t)=>e+t))/this._speeds.length:this._chunkSpeeds.reduce(((e,t)=>e+t))/this._chunkSpeeds.length:0}getLatestSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds[this._speeds.length-1]:this._chunkSpeeds[this._chunkSpeeds.length-1]:0}reset(){this._chunkSpeeds=[],this._speeds=[]}}class Db{constructor(e){ah(this,"_emitOnLoaded",((e,t)=>{const{data:i,response:s,option:r}=e,{firstByteTime:o,startTime:a,endTime:n,contentLength:l}=r||{},d=n-a;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(Bs,{time:d,byteLength:l,url:t}),this.hls.emit(Is,{url:t,elapsed:d||0}),this.hls.emit(Rs,{url:t,responseUrl:s.url,elapsed:o-a}),this.hls.emit(Ms,{headers:s.headers})})),ah(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Ls,{error:ob.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this._bandwidthService=new Cb;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new XA({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new XA({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new XA({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}destroy(){this.reset(),this._keyLoader&&(this._keyLoader.destroy(),this._keyLoader=null),this._audioSegmentLoader&&(this._audioSegmentLoader.destroy(),this._audioSegmentLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null)}speedInfo(){return{speed:this._bandwidthService.getLatestSpeed(),avgSpeed:this._bandwidthService.getAvgSpeed()}}resetBandwidth(){this._bandwidthService.reset()}load(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return e&&(r[0]=this.loadVideoSegment(e,i)),t&&(r[1]=this.loadAudioSegment(t,s)),Promise.all(r)}loadVideoSegment(e,t){return this._loadSegment(this._segmentLoader,e,t)}loadAudioSegment(e,t){return this._loadSegment(this._audioSegmentLoader,e,t)}async _loadSegment(e,t,i){var s;let r,o,a,n,l;const d=[];if(this.hls.emit(Ps,{url:t.url}),d[0]=e.load(t.url),i&&t.initSegment){var h;const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(Ps,{url:i}),d[1]=e.load(i).then((e=>{if(e){Object.keys(this._mapCache)>30&&(this._mapCache={}),r=this._mapCache[i]=e.data,this._emitOnLoaded(e,i)}})));const s=null===(h=t.initSegment.key)||void 0===h?void 0:h.url;s&&(l=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(Ps,{url:s}),d[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const c=null===(s=t.key)||void 0===s?void 0:s.url;c&&(a=t.key.iv,o=this._keyCache[c],o||(this.hls.emit(Ps,{url:c}),d[3]=this._keyLoader.load(c).then((e=>{e&&(o=this._keyCache[c]=e.data,this._emitOnLoaded(e,c))}))));const[u]=await Promise.all(d);if(!u)return;const p=u.data;return this._emitOnLoaded(u,t.url),{data:p,map:r,key:o,mapKey:n,keyIv:a,mapKeyIv:l}}reset(){this.error=null,this._mapCache={},this._keyCache={},this._bandwidthService.reset()}async cancel(){await Promise.all([this._keyLoader.cancel(),this._segmentLoader.cancel(),this._audioSegmentLoader.cancel()])}}class xb{constructor(e,t,i){this.live=void 0,this.id=0,this.bitrate=0,this.width=0,this.height=0,this.name="",this.url="",this.audioCodec="",this.videoCodec="",this.textCodec="",this.startCC=0,this.endCC=0,this.startSN=0,this.endSN=-1,this.totalDuration=0,this.targetDuration=0,this.snDiff=null,this.segments=[],this.audioStreams=[],this.subtitleStreams=[],this.closedCaptions=[],this.currentAudioStream=null,this.currentSubtitleStream=null,this.TAG_NAME="HlsStream",this.update(e,t,i)}get lastSegment(){return this.segments.length?this.segments[this.segments.length-1]:null}get segmentDuration(){var e;return this.targetDuration||(null===(e=this.segments[0])||void 0===e?void 0:e.duration)||0}get liveEdge(){return this.endTime}get endTime(){var e;return(null===(e=this.lastSegment)||void 0===e?void 0:e.end)||0}get currentSubtitleEndSn(){var e;return(null===(e=this.currentSubtitleStream)||void 0===e?void 0:e.endSN)||0}clearOldSegment(e,t){return this._clearSegments(e,t)}getAudioSegment(e){if(!e||!this.currentAudioStream)return;const t=e.sn-this.snDiff;return this.currentAudioStream.segments.find((e=>e.sn===t))}update(e,t){this.url=e.url,Array.isArray(e.segments)?(null!==this.live&&void 0!==this.live||(this.live=e.live),this._updateSegments(e,this),this.startCC=e.startCC,this.endCC=e.endCC,this.startSN=e.startSN,this.endSN=e.endSN||-1,this.totalDuration=e.totalDuration,this.targetDuration=e.targetDuration,this.live=e.live,t&&this.currentAudioStream&&Array.isArray(t.segments)&&(this._updateSegments(t,this.currentAudioStream),(null===this.snDiff||void 0===this.snDiff)&&e.segments.length&&t.segments.length&&(this.snDiff=e.segments[0].sn-t.segments[0].sn))):(this.id=e.id,this.bitrate=e.bitrate,this.width=e.width,this.height=e.height,this.name=e.name,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.textCodec=e.textCodec,this.audioStreams=e.audioStreams,this.subtitleStreams=e.subtitleStreams,!this.currentAudioStream&&this.audioStreams.length&&(this.currentAudioStream=this.audioStreams.find((e=>e.default))||this.audioStreams[0]),!this.currentSubtitleStream&&this.subtitleStreams.length&&(this.currentSubtitleStream=this.subtitleStreams.find((e=>e.default))||this.subtitleStreams[0]))}updateSubtitle(e){if(!(e&&this.currentSubtitleStream&&Array.isArray(e.segments)))return;const t=this._updateSegments(e,this.currentSubtitleStream),i=this.currentSubtitleStream.segments;return i.length>100&&(this.currentSubtitleStream.segments=i.slice(100)),t?t.map((e=>({sn:e.sn,url:e.url,duration:e.duration,start:e.start,end:e.end,lang:this.currentSubtitleStream.lang}))):void 0}switchSubtitle(e){const t=this.subtitleStreams.find((t=>t.lang===e)),i=this.currentSubtitleStream;t&&(this.currentSubtitleStream=t,i.segments=[])}_clearSegments(e,t){let i=0;const s=this.segments;for(let t=0,r=s.length;t=e){i=t;break}return i>t&&(i=t),i&&(this.segments=this.segments.slice(i),this.currentAudioStream&&(this.currentAudioStream.segments=this.currentAudioStream.segments.slice(i))),t-i}_updateSegments(e,t){const i=t.segments;if(this.live){const s=i[i.length-1],r=(null==s?void 0:s.sn)||-1;if(re.sn===r)),a=o<0?e.segments:e.segments.slice(o+1);if(i.length&&a.length){let e=s.end;a.forEach((t=>{t.start=e,e=t.end}));const t=(null==s?void 0:s.cc)||-1;t>a[0].cc&&a.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(a),a}}else t.segments=e.segments}}class Rb{constructor(e){this.hls=e,this.player=e.player,this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1,this.TAG_NAME="HlsPlaylist"}destroy(){this.reset()}get lastSegment(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.lastSegment}get currentSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer]}get nextSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer+1]}get currentSegments(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.segments}get currentSubtitleEndSn(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.currentSubtitleEndSn}get liveEdge(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.liveEdge}get totalDuration(){var e;return(null===(e=this.currentStream)||void 0===e?void 0:e.totalDuration)||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){var e;return!(null!==(e=this.currentSegments)&&void 0!==e&&e.length)}get isLive(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.live}get hasSubtitle(){var e;return!(null===(e=this.currentStream)||void 0===e||!e.currentSubtitleStream)}getAudioSegment(e){var t;return null===(t=this.currentStream)||void 0===t?void 0:t.getAudioSegment(e)}moveSegmentPointer(e){var t;null==e&&(e=this._segmentPointer+1),this._segmentPointer=Zr(e,-1,null===(t=this.currentSegments)||void 0===t?void 0:t.length),this.player.debug.log(this.TAG_NAME,`moveSegmentPointer() and param pos is ${e} and clamp result is ${this._segmentPointer}`)}reset(){this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1}getSegmentByIndex(e){var t;return null===(t=this.currentSegments)||void 0===t?void 0:t[e]}setNextSegmentByIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=e-1,this.player.debug.log(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,s=0,r=t.length;s=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new xb(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const s=this.currentStream;if(s){s.update(e,t,i);const r=s.updateSubtitle(i);r&&this.hls.emit(Es,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new xb(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){var t;null===(t=this.currentStream)||void 0===t||t.switchSubtitle(e)}clearOldSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=t.segments;if(s.length<=e)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${e}`);const r=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,r),this.player.debug.log(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debug.log(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==t&&s.hasAudio&&s.hasVideo)return s;if(s.end-e>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}class Lb{constructor(e,t){this.hls=e,this.player=t;const i=window.crypto||window.msCrypto;this.subtle=i&&(i.subtle||i.webkitSubtle),this.externalDecryptor=null}decrypt(e,t){if(!e&&!t)return;const i=[];return e&&(i[0]=this._decryptSegment(e)),t&&(i[1]=this._decryptSegment(t)),Promise.all(i)}async _decryptSegment(e){let t=e.data;return e.key&&(t=await this._decryptData(e.data,e.key,e.keyIv)),e.map?gh(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);if(this.subtle){const s=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]),r=await this.subtle.decrypt({name:"AES-CBC",iv:i},s,e);return new Uint8Array(r)}e=bd(e),t=bd(t),i=bd(i);return function(e){const{words:t}=e,{sigBytes:i}=e,s=new Uint8Array(i);for(let e=0;e>>2]>>>24-e%4*8&255;return s}(yd.AES.decrypt({ciphertext:e},t,{iv:i,mode:yd.mode.CBC}))}}class Pb extends Kd{constructor(e){super(e),this.player=e,this._pmtId=-1,this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[],this._gopId=0,this._videoPid=-1,this._audioPid=-1,this._codecType=gt,this._audioCodecType=vt,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this.videoTrack=Pb.initVideoTrack(),this.audioTrack=Pb.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._tempSampleTsList=[],this._hasAudio=!1,this._hasVideo=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this.tempSampleListInfo={},this._isUseWorker()&&this._initLoopWorker(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._hasCalcFps=!1,this._tempSampleTsList=[],this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}static initVideoTrack(){return{samples:[]}}static initAudioTrack(){return{samples:[]}}static probe(e){return!!e.length&&(71===e[0]&&71===e[188]&&71===e[376])}_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,o;const a=e[7];return 192&a&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&a?(o=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-o>54e5&&(r=o)):o=r),{data:e.subarray(9+t),pts:r,dts:o,originalPts:r,originalDts:o}}_demux(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t&&(this._pmtId=-1,this.videoTrack=Pb.initVideoTrack(),this.audioTrack=Pb.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=gh(this._remainingPacketData,e),this._remainingPacketData=null));let s=e.length;const r=s%188;r&&(this._remainingPacketData=e.subarray(s-r),s-=r);for(let t=0;t>4>1){if(r=t+5+e[t+4],r===t+188)continue}else r=t+4;switch(s){case 0:i&&(r+=e[r]+1),this._pmtId=(31&e[r+10])<<8|e[r+11];break;case this._pmtId:{i&&(r+=e[r]+1);const t=r+3+((15&e[r+1])<<8|e[r+2])-4;for(r+=12+((15&e[r+10])<<8|e[r+11]);r=t)return[];const r=[];for(;s{const t=s?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!s&&5!==t||s&&5===t)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==t||s&&6===t)break;return void function(e,t){const i=e.length;let s=t?2:1,r=0,o=0,a="";for(;255===e[s];)r+=255,s++;for(r+=e[s++];255===e[s];)o+=255,s++;if(o+=e[s++],5===r&&i>s+16)for(let t=0;t<16;t++)a+=e[s].toString(16),s++;e.subarray(s)}(function(e){const t=e.byteLength,i=[];let s=1;for(;s=i)return;const r=s,o=[],a=(60&e[s+2])>>>2,n=Dr[a];if(!n)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),d=(1&e[s+2])<<2|(192&e[s+3])>>>6;let h,c,u=0;const p=Mr(n);for(;s+7>5,i-s=i?void 0:e.subarray(s),frames:o,samplingFrequencyIndex:a,sampleRate:n,objectType:l,channelCount:d,originCodec:`mp4a.40.${l}`}}(e.data,e.originalPts);if(t){if(this.audioTrack.codec=t.codec,this.audioTrack.sampleRate=t.sampleRate,this.audioTrack.channelCount=t.channelCount,!this._isSendAACSeqHeader){const e=Lr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debug.log(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,Ue,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,s=new Uint8Array(t.data.length+2);s.set([175,1],0),s.set(t.data,2);const r={type:Ue,pts:i,dts:i,payload:s};e.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debug.warn(this.TAG_NAME,"aac seq header not send")}else this.player.debug.warn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}else e&&"startPrefixError"===e.code&&(this._audioPesData=[])}_fix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=Math.round(9e4*e);const s=this.videoTrack,r=this.audioTrack,o=s.samples,a=r.samples;if(!o.length&&!a.length)return;const n=o[0],l=a[0];let d=0;if(o.length&&a.length&&(d=n.dts-l.pts),this._baseDtsInited||this._calculateBaseDts(),t&&(this._calculateBaseDts(),this._baseDts-=e),!i){this._videoNextDts=d>0?e+d:e,this._audioNextPts=d>0?e:e-d;const t=n?n.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>ur&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let h=s.samples.concat(r.samples);h=h.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),h.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this._isUseWorker()?this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer]):e.type===Fe?this._doDecodeVideo({...e,payload:t}):e.type===Ue&&this._doDecodeAudio({...e,payload:t})})),ua(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(h))}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,s=t.samples;if(!i.length&&!s.length)return!1;let r=1/0,o=1/0;i.length&&(e.baseDts=r=i[0].pts),s.length&&(t.baseDts=o=s[0].dts),this._baseDts=Math.min(r,o);const a=o-r;return Number.isFinite(a)&&Math.abs(a)>45e3&&this.player.debug.warn(this.TAG_NAME,`large av first frame gap,\n video pts: ${o},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${a}`),this._baseDtsInited=!0,!0}_resetBaseDtsWhenStreamBreaked(){if(this._baseDtsInited&&this._videoTimestampBreak&&this._audioTimestampBreak){if(!this._calculateBaseDts(this.audioTrack,this.videoTrack))return;this._baseDts-=Math.min(this._audioNextPts,this._videoNextDts),this._audioLastSample=null,this._videoLastSample=null,this._videoTimestampBreak=!1,this._audioTimestampBreak=!1}}_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=this._baseDts,e.dts=e.pts})),this._doFixAudioInternal(e,t,9e4))}_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=this._baseDts,e.pts-=this._baseDts})),void 0===this._videoNextDts){const e=t[0];this._videoNextDts=e.dts}const i=t.length;let s=0;const r=t[0],o=t[1],a=this._videoNextDts-r.dts;let n;Math.abs(a)>45e3&&(r.dts+=a,r.pts+=a,this.player.debug.warn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${o.dts},\n duration is ${a}`),o&&Math.abs(o.dts-r.dts)>ur&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const l=e.samples[0],d=e.samples[i-1];n=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let r=0;rur||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?n:Math.max(s,2700);const i=this._audioNextPts||0;a&&a.dts>i&&(s=n),this.player.debug.warn(this.TAG_NAME,`large video gap between frames,\n time is ${o/e.timescale},\n dts is ${o},\n origin dts is ${t[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${n}`)}t[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=Mr(e.timescale,i));const s=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*s&&a<=hr&&!fo()){Ir(e.codec,e.channelCount)||t[0].data.subarray();const n=Math.floor(a/s);Math.abs(o.pts-this._lastAudioExceptionGapDot)>cr&&(this._lastAudioExceptionGapDot=o.pts),this.player.debug.warn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${n},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let e=0;e=-9e4?(Math.abs(o.pts-this._lastAudioExceptionOverlapDot)>cr&&(this._lastAudioExceptionOverlapDot=o.pts,this.player.debug.warn(this.TAG_NAME,`audio overlap detected,\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),t.splice(i,1),i--):(Math.abs(a)>=hr&&(this._audioTimestampBreak=!0,Math.abs(o.pts-this._lastAudioExceptionLargeGapDot)>cr&&(this._lastAudioExceptionLargeGapDot=o.pts,this.player.debug.warn(this.TAG_NAME,`large audio gap detected,\n time is ${o.pts/1e3}\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n sample duration is ${a}\n ref sample duration is ${s}`))),o.dts=o.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=sa(this._tempSampleTsList,Fe);if(i)this._tempSampleTsList=[],this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debug.log(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=ya(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`JbPro:[TsLoader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=Math.round(s.duration/90))):s.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te),s.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByHls(i,Ue,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Wn(t,e.isIFrame):Ln(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Fe,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}function Bb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function Ib(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Mb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return Ib(e,t)*i+Ib(e,t+4)}const Ub="aac",Fb="g7110a",Ob="g7110m",Nb="avc",jb="hevc";class zb{static getFrameDuration(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}static getRateIndexByRate(e){return zb.FREQ.indexOf(e)}}function Gb(e,t,i,s,r,o){const a=[],n=null==r?void 0:r.entries,l=t.entries,d=s.entries,h=i.entrySizes,c=null==o?void 0:o.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),n&&(p=[],n.forEach((e=>{let{count:t,offset:i}=e;for(let e=0;e{let{count:t,delta:s}=e;for(let e=0;e=S&&(b++,S=l[b+1]?l[b+1].firstChunk-1:1/0),_+=l[b].samplesPerChunk)})),a}function Vb(e,t){return e.dataReferenceIndex=Bb(t,6),e.width=Bb(t,24),e.height=Bb(t,26),e.horizresolution=Ib(t,28),e.vertresolution=Ib(t,32),e.frameCount=Bb(t,40),e.depth=Bb(t,74),78}function Hb(e,t){return e.dataReferenceIndex=Bb(t,6),e.channelCount=Bb(t,16),e.sampleSize=Bb(t,18),e.sampleRate=Ib(t,24)/65536,28}function Wb(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}ah(zb,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);const $b=function(e,t,i){const s=String(i),r=t>>0;let o=Math.ceil(r/s.length);const a=[],n=String(e);for(;o--;)a.push(s);return a.join("").substring(0,r-n.length)+n},Jb=function(){const e=[];for(var t=arguments.length,i=new Array(t),s=0;s{e.push($b(Number(t).toString(16),2,0))})),e[0]};class qb{static probe(e){return!!qb.findBox(e,["ftyp"])}static findBox(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!e)return s;let r=0,o="",a=0;for(;e.length>7;){if(r=Ib(e),o=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=Mb(e,8),a+=8):r||(r=e.length),!t[0]||o===t[0]){const n=e.subarray(0,r);if(!(t.length<2))return qb.findBox(n.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:o,data:n})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return Wb(e,!0,((e,t)=>{e.trackId=Ib(t);let i=4;const s=1&e.flags,r=2&e.flags,o=8&e.flags,a=16&e.flags,n=32&e.flags;s&&(i+=4,e.baseDataOffset=Ib(t,i),i+=4),r&&(e.sampleDescriptionIndex=Ib(t,i),i+=4),o&&(e.defaultSampleDuration=Ib(t,i),i+=4),a&&(e.defaultSampleSize=Ib(t,i),i+=4),n&&(e.defaultSampleFlags=Ib(t,i))}))}static sidx(e){return Wb(e,!0,((e,t)=>{let i=0;e.reference_ID=Ib(t,i),i+=4,e.timescale=Ib(t,i),i+=4,0===e.version?(e.earliest_presentation_time=Ib(t,i),i+=4,e.first_offset=Ib(t,i),i+=4):(e.earliest_presentation_time=Mb(t,i),i+=8,e.first_offset=Mb(t,i),i+=8),i+=2,e.references=[];const s=Bb(t,i);i+=2;for(let r=0;r>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=Ib(t,i),i+=4,r=Ib(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return Wb(e,!1,((e,t,i)=>{e.mvhd=qb.mvhd(qb.findBox(t,["mvhd"],i)[0]),e.trak=qb.findBox(t,["trak"],i).map((e=>qb.trak(e))),e.pssh=qb.pssh(qb.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return Wb(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Ib(t,16),e.duration=Mb(t,20),i+=28):(e.timescale=Ib(t,8),e.duration=Ib(t,12),i+=16),e.nextTrackId=Ib(t,i+76)}))}static trak(e){return Wb(e,!1,((e,t,i)=>{e.tkhd=qb.tkhd(qb.findBox(t,["tkhd"],i)[0]),e.mdia=qb.mdia(qb.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return Wb(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=Ib(t,16),e.duration=Mb(t,24),i+=32):(e.trackId=Ib(t,8),e.duration=Ib(t,16),i+=20),e.width=Ib(t,i+52),e.height=Ib(t,i+56)}))}static mdia(e){return Wb(e,!1,((e,t,i)=>{e.mdhd=qb.mdhd(qb.findBox(t,["mdhd"],i)[0]),e.hdlr=qb.hdlr(qb.findBox(t,["hdlr"],i)[0]),e.minf=qb.minf(qb.findBox(t,["minf"],i)[0])}))}static mdhd(e){return Wb(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Ib(t,16),e.duration=Mb(t,20),i+=28):(e.timescale=Ib(t,8),e.duration=Ib(t,12),i+=16);const s=Bb(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return Wb(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return Wb(e,!1,((e,t,i)=>{e.vmhd=qb.vmhd(qb.findBox(t,["vmhd"],i)[0]),e.smhd=qb.smhd(qb.findBox(t,["smhd"],i)[0]),e.stbl=qb.stbl(qb.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return Wb(e,!0,((e,t)=>{e.graphicsmode=Bb(t),e.opcolor=[Bb(t,2),Bb(t,4),Bb(t,6)]}))}static smhd(e){return Wb(e,!0,((e,t)=>{e.balance=Bb(t)}))}static stbl(e){return Wb(e,!1,((e,t,i)=>{var s,r,o;e.stsd=qb.stsd(qb.findBox(t,["stsd"],i)[0]),e.stts=qb.stts(qb.findBox(t,["stts"],i)[0]),e.ctts=qb.ctts(qb.findBox(t,["ctts"],i)[0]),e.stsc=qb.stsc(qb.findBox(t,["stsc"],i)[0]),e.stsz=qb.stsz(qb.findBox(t,["stsz"],i)[0]),e.stco=qb.stco(qb.findBox(t,["stco"],i)[0]),e.stco||(e.co64=qb.co64(qb.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null===(s=e.stsd.entries[0])||void 0===s||null===(r=s.sinf)||void 0===r||null===(o=r.schi)||void 0===o?void 0:o.tenc.default_IV_size;e.stss=qb.stss(qb.findBox(t,["stss"],i)[0]),e.senc=qb.senc(qb.findBox(t,["senc"],i)[0],a)}))}static senc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return Wb(e,!0,((e,i)=>{let s=0;const r=Ib(i,s);s+=4,e.samples=[];for(let o=0;o{const i=[],s=[];let r=0;for(let e=0;e<16;e++)s.push(Jb(t[r+e]));if(r+=16,e.version>0){const e=Ib(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(Jb(e))}}const o=Ib(t,r);e.data_size=o,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return Wb(e,!0,((e,t,i)=>{e.entryCount=Ib(t),e.entries=qb.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return qb.avc1(e);case"hvc1":case"hev1":return qb.hvc1(e);case"mp4a":return qb.mp4a(e);case"alaw":case"ulaw":return qb.alaw(e);case"enca":return Wb(e,!1,((e,t,i)=>{e.channelCount=Bb(t,16),e.samplesize=Bb(t,18),e.sampleRate=Ib(t,24)/65536,t=t.subarray(28),e.sinf=qb.sinf(qb.findBox(t,["sinf"],i)[0]),e.esds=qb.esds(qb.findBox(t,["esds"],i)[0])}));case"encv":return Wb(e,!1,((e,t,i)=>{e.width=Bb(t,24),e.height=Bb(t,26),e.horizresolution=Ib(t,28),e.vertresolution=Ib(t,32),t=t.subarray(78),e.sinf=qb.sinf(qb.findBox(t,["sinf"],i)[0]),e.avcC=qb.avcC(qb.findBox(t,["avcC"],i)[0]),e.hvcC=qb.hvcC(qb.findBox(t,["hvcC"],i)[0]),e.pasp=qb.pasp(qb.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return Wb(e,!1,((e,t)=>{let i=6;e.default_IsEncrypted=t[i],i+=1,e.default_IV_size=t[i],i+=1,e.default_KID=[];for(let s=0;s<16;s++)e.default_KID.push(Jb(t[i])),i+=1}))}static schi(e){return Wb(e,!1,((e,t,i)=>{e.tenc=qb.tenc(qb.findBox(t,["tenc"],i)[0])}))}static sinf(e){return Wb(e,!1,((e,t,i)=>{e.schi=qb.schi(qb.findBox(t,["schi"],i)[0]),e.frma=qb.frma(qb.findBox(t,["frma"],i)[0])}))}static frma(e){return Wb(e,!1,((e,t)=>{e.data_format="";for(let i=0;i<4;i++)e.data_format+=String.fromCharCode(t[i])}))}static avc1(e){return Wb(e,!1,((e,t,i)=>{const s=Vb(e,t),r=t.subarray(s);i+=s,e.avcC=qb.avcC(qb.findBox(r,["avcC"],i)[0]),e.pasp=qb.pasp(qb.findBox(r,["pasp"],i)[0])}))}static avcC(e){return Wb(e,!1,((e,t)=>{e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){let t,i="avc1.";for(let s=0;s<3;s++)t=e[s].toString(16),t.length<2&&(t=`0${t}`),i+=t;return i}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];let i=6;for(let s=0;s{const s=Vb(e,t),r=t.subarray(s);i+=s,e.hvcC=qb.hvcC(qb.findBox(r,["hvcC"],i)[0]),e.pasp=qb.pasp(qb.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return Wb(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=Ib(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=Bb(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,o=0,a=0,n=0;for(let e=0;e{e.hSpacing=Ib(t),e.vSpacing=Ib(t,4)}))}static mp4a(e){return Wb(e,!1,((e,t,i)=>{const s=Hb(e,t);e.esds=qb.esds(qb.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return Wb(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,o=0;for(;t.length;){for(i=0,o=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===o)t=t.subarray(i+3);else{if(4!==o){if(5===o){const s=e.config=t.subarray(i,i+r);let o=(248&s[0])>>3;return 31===o&&s.length>=2&&(o=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=o,e.codec+=o.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[i].toString(16)+".").padStart(3,"0"),t=t.subarray(i+13)}}}))}static alaw(e){return Wb(e,!1,((e,t)=>{Hb(e,t)}))}static stts(e){return Wb(e,!0,((e,t)=>{const i=Ib(t),s=[];let r=4;for(let e=0;e{const i=Ib(t),s=[];let r=4;if(1===e.version)for(let e=0;e{const i=Ib(t),s=[];let r=4;for(let e=0;e{const i=Ib(t),s=Ib(t,4),r=[];if(!i){let e=8;for(let i=0;i{const i=Ib(t),s=[];let r=4;for(let e=0;e{const i=Ib(t),s=[];let r=4;for(let e=0;e{const i=Ib(t),s=[];let r=4;for(let e=0;e{e.mfhd=qb.mfhd(qb.findBox(t,["mfhd"],i)[0]),e.traf=qb.findBox(t,["traf"],i).map((e=>qb.traf(e)))}))}static mfhd(e){return Wb(e,!0,((e,t)=>{e.sequenceNumber=Ib(t)}))}static traf(e){return Wb(e,!1,((e,t,i)=>{e.tfhd=qb.tfhd(qb.findBox(t,["tfhd"],i)[0]),e.tfdt=qb.tfdt(qb.findBox(t,["tfdt"],i)[0]),e.trun=qb.trun(qb.findBox(t,["trun"],i)[0])}))}static trun(e){return Wb(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,o=e.sampleCount=Ib(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~Ib(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=Ib(t,a),a+=4),e.samples=[],r>a){let r;for(let n=0;n{1===e.version?e.baseMediaDecodeTime=Mb(t):e.baseMediaDecodeTime=Ib(t)}))}static probe(e){return!!qb.findBox(e,["ftyp"])}static parseSampleFlags(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}static moovToTrack(e,t,i){var s,r;const o=e.trak;if(!o||!o.length)return;const a=o.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),n=o.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(a&&t){var l,d,h,c,u,p,f;const i=t,s=null===(l=a.tkhd)||void 0===l?void 0:l.trackId;null!=s&&(i.id=a.tkhd.trackId),i.tkhdDuration=a.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=a.mdia.mdhd.timescale,i.duration=a.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const r=a.mdia.minf.stbl.stsd.entries[0];if(i.width=r.width,i.height=r.height,r.pasp&&(i.sarRatio=[r.pasp.hSpacing,r.pasp.vSpacing]),r.hvcC)i.codecType=jb,i.codec=r.hvcC.codec,i.vps=r.hvcC.vps,i.sps=r.hvcC.sps,i.pps=r.hvcC.pps,i.hvcC=r.hvcC.data;else{if(!r.avcC)throw new Error("unknown video stsd entry");i.codecType=Nb,i.codec=r.avcC.codec,i.sps=r.avcC.sps,i.pps=r.avcC.pps}var m,g,y,A,b,v,_,S;if(i.present=!0,i.ext={},i.ext.stss=null===(d=a.mdia)||void 0===d||null===(h=d.minf)||void 0===h||null===(c=h.stbl)||void 0===c?void 0:c.stss,i.ext.ctts=null===(u=a.mdia)||void 0===u||null===(p=u.minf)||void 0===p||null===(f=p.stbl)||void 0===f?void 0:f.ctts,r&&"encv"===r.type)i.isVideoEncryption=!0,r.default_KID=null===(m=r.sinf)||void 0===m||null===(g=m.schi)||void 0===g?void 0:g.tenc.default_KID,r.default_IsEncrypted=null===(y=r.sinf)||void 0===y||null===(A=y.schi)||void 0===A?void 0:A.tenc.default_IsEncrypted,r.default_IV_size=null===(b=r.sinf)||void 0===b||null===(v=b.schi)||void 0===v?void 0:v.tenc.default_IV_size,i.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,r.data_format=null===(_=r.sinf)||void 0===_||null===(S=_.frma)||void 0===S?void 0:S.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=r}if(n&&i){var w,E,T,k,C,D,x,R,L;const t=i,o=null===(w=n.tkhd)||void 0===w?void 0:w.trackId;null!=o&&(t.id=n.tkhd.trackId),t.tkhdDuration=n.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=n.mdia.mdhd.timescale,t.duration=n.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const a=n.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=a.sampleSize,t.sampleRate=a.sampleRate,t.channelCount=a.channelCount,t.present=!0,a.type){case"alaw":t.codecType=t.codec=Fb,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=Ob,t.sampleRate=8e3;break;default:t.codecType=Ub,t.sampleDuration=zb.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=zb.getRateIndexByRate(t.sampleRate),t.objectType=(null===(s=a.esds)||void 0===s?void 0:s.objectType)||2,a.esds&&(t.config=Array.from(a.esds.config)),t.codec=(null===(r=a.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}var P,B,I,M,U,F,O,N;if(t.sampleDuration=zb.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null===(E=a.esds)||void 0===E?void 0:E.objectType)||2,a.esds&&(a.esds.config?t.config=Array.from(a.esds.config):console.warn("esds config is null")),t.codec=(null===(T=a.esds)||void 0===T?void 0:T.codec)||"mp4a.40.2",t.sampleRateIndex=zb.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null===(k=n.mdia)||void 0===k||null===(C=k.minf)||void 0===C||null===(D=C.stbl)||void 0===D?void 0:D.stss,t.ext.ctts=null===(x=n.mdia)||void 0===x||null===(R=x.minf)||void 0===R||null===(L=R.stbl)||void 0===L?void 0:L.ctts,t.present=!0,a&&"enca"===a.type)t.isAudioEncryption=!0,a.data_format=null===(P=a.sinf)||void 0===P||null===(B=P.frma)||void 0===B?void 0:B.data_format,a.default_KID=null===(I=a.sinf)||void 0===I||null===(M=I.schi)||void 0===M?void 0:M.tenc.default_KID,a.default_IsEncrypted=null===(U=a.sinf)||void 0===U||null===(F=U.schi)||void 0===F?void 0:F.tenc.default_IsEncrypted,a.default_IV_size=null===(O=a.sinf)||void 0===O||null===(N=O.schi)||void 0===N?void 0:N.tenc.default_IV_size,t.audioSenc=n.mdia.minf.stbl.senc&&n.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=a}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),null!=t&&t.encv||null!=i&&i.enca){var j,z;const e=null==t||null===(j=t.encv)||void 0===j?void 0:j.default_KID,s=null==i||null===(z=i.enca)||void 0===z?void 0:z.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==t||null===(s=t.samples)||void 0===s?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((e=>{let{tfhd:r,tfdt:o,trun:a}=e;if(!r||!a)return;o&&(t&&t.id===r.trackId&&(t.baseMediaDecodeTime=o.baseMediaDecodeTime),i&&i.id===r.trackId&&(i.baseMediaDecodeTime=o.baseMediaDecodeTime));const n=r.defaultSampleSize||0,l=r.defaultSampleDuration||qb.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let d=a.dataOffset||0,h=0,c=-1;if(!a.samples.length&&a.sampleCount){s[r.trackId]=[];for(let e=0;e((e={offset:d,dts:h,pts:h+(e.cts||0),duration:e.duration||l,size:e.size||n,gopId:c,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(c++,e.gopId=c),h+=e.duration,d+=e.size,e)))})),s}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),s=t.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(!i&&!s)return;let r,o;if(i){var a,n;const e=null===(a=i.mdia)||void 0===a||null===(n=a.minf)||void 0===n?void 0:n.stbl;if(!e)return;const{stts:t,stsc:s,stsz:o,stco:l,stss:d,ctts:h}=e;if(!(t&&s&&o&&l&&d))return;r=Gb(t,s,o,l,h,d)}if(s){var l,d,h;const e=null===(l=s.mdia)||void 0===l||null===(d=l.minf)||void 0===d?void 0:d.stbl;if(!e)return;const t=null===(h=s.mdia.mdhd)||void 0===h?void 0:h.timescale,{stts:i,stsc:r,stsz:a,stco:n}=e;if(!(t&&i&&r&&a&&n))return;o=Gb(i,r,a,n)}return{videoSamples:r,audioSamples:o}}}class Kb extends Kd{constructor(e){super(e),this.player=e,this.TAG_NAME="HlsFmp4Loader",this.tempSampleListInfo={},this.isInitVideo=!1,this.isInitAudio=!1,this.videoTrack={id:1,samples:[],sps:[],pps:[],vps:[],codec:""},this.audioTrack={id:2,samples:[],sampleRate:0,channelCount:0,codec:"",codecType:""},this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this._hasCalcFps=!1,this._tempSampleTsList=[],this._basefps=25,this._isUseWorker()&&this._initLoopWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._hasCalcFps=!1,this._tempSampleTsList=[],this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this._basefps=25,this.player.debug.log(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,s=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],s.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),ua(this.isInitAudio)){const e=qb.findBox(t,["moov"])[0];if(!e)return void this.player.debug.error(this.TAG_NAME,"cannot found moov box");qb.moovToTrack(qb.moov(e),null,i),this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=qb.findBox(t,["moof"])[0];if(e){const s=qb.moofToSamples(qb.moof(e),null,i)[i.id],r=i.baseMediaDecodeTime;if(s){const o=e.start;s.map((e=>{e.offset+=o;const s=t.subarray(e.offset,e.offset+e.size),a=e.dts+r,n=new Uint8Array(s.length+2);n.set([175,1],0),n.set(s,2),i.samples.push({type:Ue,pts:a,dts:a,payload:n,duration:e.duration,size:n.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),ua(this.isInitVideo)&&ua(this.isInitAudio)){const t=qb.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(qb.moovToTrack(qb.moov(t),s,i),ua(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debug.log(this.TAG_NAME,"video init success");let e=null;s.codecType===ts?s.sps.length&&s.vps.length&&s.pps.length&&(e=Hn({sps:s.sps[0],pps:s.pps[0],vps:s.vps[0]})):s.sps.length&&s.pps.length&&(e=Rn({sps:s.sps[0],pps:s.pps[0]})),e&&(this.player.debug.log(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,Fe,0,!0,0))}}const t=qb.findBox(e,["moof"])[0];if(t){const r=qb.moofToSamples(qb.moof(t),s,i),o=s.baseMediaDecodeTime,a=i.baseMediaDecodeTime,n=t.start;Object.keys(r).forEach((t=>{s.id==t?r[t].map((t=>{t.offset+=n;const i={type:Fe,pts:(t.pts||t.dts)+o,dts:t.dts+o,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const r=e.subarray(t.offset,t.offset+t.size);i.payload=r,s.samples.push(i)})):i.id==t&&r[t].map((t=>{t.offset+=n;const s=e.subarray(t.offset,t.offset+t.size),r=t.dts+a,o=new Uint8Array(s.length+2);o.set([175,1],0),o.set(s,2),i.samples.push({type:Ue,pts:r,dts:r,payload:o,duration:t.duration,size:o.byteLength})}))}))}}const r=s.samples.concat(i.samples);r.sort(((e,t)=>e.dts-t.dts)),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this._isUseWorker()?this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer]):e.type===Fe?this._doDecodeVideo({...e,payload:t}):e.type===Ue&&this._doDecodeAudio({...e,payload:t})})),ua(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(r))}checkInitAudio(){return this.isInitAudio=!!(this.audioTrack.sampleRate&&this.audioTrack.channelCount&&this.audioTrack.codec&&"aac"===this.audioTrack.codecType),this.isInitAudio}checkInitVideo(){return this.isInitVideo=!!(this.videoTrack.pps.length&&this.videoTrack.sps.length&&this.videoTrack.codec),this.isInitVideo}_sendAccADTSHeader(e){const t=Lr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Ue,0,!0,0)}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=sa(this._tempSampleTsList,Fe);if(i)this._tempSampleTsList=[],this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debug.log(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=ya(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`JbPro:[HlsFmp4Loader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration)):s.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te),s.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength}),this.cryptoPayloadAudio(t),this._doDecodeByHls(t,Ue,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Wn(t,e.isIFrame):Ln(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Fe,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}}class Yb{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new Kb(this.hls.player):new Pb(this.hls.player),this.player.debug.log(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,s,r,o){this.player.debug.log(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${o}`);const a=this._demuxer;try{this.isMP4?a.demux(e,t):a.demuxAndFix(gh(e,t),i,s,r)}catch(e){throw new ob(rb,sb,e)}}}class Qb{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new Lb(this.hls,this.player),this._transmuxer=null,this._mse=null,this._softVideo=null,this._sourceCreated=!1,this._needInitSegment=!0,this._directAppend=!1,this.TAG_NAME="HlsBufferService"}async destroy(){this._softVideo=null,this._transmuxer&&(this._transmuxer.destroy(),this._transmuxer=null)}get baseDts(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debug.log(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getBuferredDuration()}getBufferedSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleListLength()}getBufferedAudioSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleAudioListLength()}getBufferedVideoSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleVideoListLength()}createSource(e,t,i,s){if(this._sourceCreated)return;const r=e||t;r&&(Pb.probe(r)?this._transmuxer||(this._transmuxer=new Yb(this.hls,!1)):qb.probe(r)?this._transmuxer||(this._transmuxer=new Yb(this.hls,!0)):this.player.debug.error(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,s,r,o,a){if(null!=i&&i.length||null!=s&&s.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,o,a,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debug.log(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(){this._transmuxer=null,this._needInitSegment=!0,this._directAppend=!1}async endOfStream(){this._softVideo&&this._softVideo.endOfStream()}async setLiveSeekableRange(e,t){}seamlessSwitch(){this._needInitSegment=!0}}class Xb{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(Us,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,s=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&s.push(e)})),s.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(Fs,e)}))}reset(){this._seiSet.clear()}}class Zb{constructor(e){this._timescale=e,this.encodeType="",this.audioCodec="",this.videoCodec="",this.domain="",this.fps=0,this.bitrate=0,this.width=0,this.height=0,this.samplerate=0,this.channelCount=0,this.gop=0,this._bitsAccumulateSize=0,this._bitsAccumulateDuration=0}getStats(){return{encodeType:this.encodeType,audioCodec:this.audioCodec,videoCodec:this.videoCodec,domain:this.domain,fps:this.fps,bitrate:this.bitrate,width:this.width,height:this.height,samplerate:this.samplerate,channelCount:this.channelCount,gop:this.gop}}setEncodeType(e){this.encodeType=e}setFpsFromScriptData(e){var t;let{data:i}=e;const s=null==i||null===(t=i.onMetaData)||void 0===t?void 0:t.framerate;s&&s>0&&s<100&&(this.fps=s)}setVideoMeta(e){if(this.width=e.width,this.height=e.height,this.videoCodec=e.codec,this.encodeType=e.codecType,e.fpsNum&&e.fpsDen){const t=e.fpsNum/e.fpsDen;t>0&&t<100&&(this.fps=t)}}setAudioMeta(e){this.audioCodec=e.codec,this.samplerate=e.sampleRate,this.channelCount=e.channelCount}setDomain(e){this.domain=e.split("/").slice(2,3)[0]}updateBitrate(e){if((!this.fps||this.fps>=100)&&e.length){const t=e.reduce(((e,t)=>e+t.duration),0)/e.length;this.fps=Math.round(this._timescale/t)}e.forEach((e=>{1===e.gopId&&this.gop++,this._bitsAccumulateDuration+=e.duration/(this._timescale/1e3),this._bitsAccumulateSize+=e.units.reduce(((e,t)=>e+t.length),0),this._bitsAccumulateDuration>=1e3&&(this.bitrate=8*this._bitsAccumulateSize,this._bitsAccumulateDuration=0,this._bitsAccumulateSize=0)}))}}class ev{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;ah(this,"_core",null),ah(this,"_samples",[]),this._core=e,this._timescale=t,this._stats=new Zb(t),this._bindEvents()}getStats(){var e,t,i,s,r,o,a;const{currentTime:n=0,decodeFps:l=0}=(null===(e=this._core)||void 0===e?void 0:e.media)||{};return{...this._stats.getStats(),downloadSpeed:(null===(t=this._core)||void 0===t||null===(i=t.speedInfo)||void 0===i?void 0:i.call(t).speed)||0,avgSpeed:(null===(s=this._core)||void 0===s||null===(r=s.speedInfo)||void 0===r?void 0:r.call(s).avgSpeed)||0,currentTime:n,bufferEnd:(null===(o=this._core)||void 0===o||null===(a=o.bufferInfo())||void 0===a?void 0:a.remaining)||0,decodeFps:l}}_bindEvents(){this._core.on(Cs,(e=>this._stats.updateBitrate(e.samples))),this._core.on(Ds,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(xs,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(Rs,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new Zb(this._timescale)}}class tv extends wa{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),ah(this,"_loadSegment",(async()=>{if(this._segmentProcessing)return void this.player.debug.warn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debug.warn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debug.log(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debug.log(this.TAG_NAME,"nextSeg is null and return")})),this.player=e,this.config=null,this._manifestLoader=null,this._segmentLoader=null,this._playlist=null,this._bufferService=null,this._seiService=null,this._stats=null,this._prevSegSn=null,this._prevSegCc=null,this._tickTimer=null,this._tickInterval=500,this._segmentProcessing=!1,this._reloadOnPlay=!1,this._switchUrlOpts=null,this._disconnectTimer=null,this.TAG_NAME="Hls256",this.canVideoPlay=!1,this.$videoElement=null,this.config=t=function(e){return{isLive:!0,maxPlaylistSize:50,retryCount:3,retryDelay:1e3,pollRetryCount:2,loadTimeout:1e4,preloadTime:30,softDecode:!1,bufferBehind:10,maxJumpDistance:3,startTime:0,targetLatency:10,maxLatency:20,allowedStreamTrackChange:!0,...e}}(t),this._manifestLoader=new kb(this),this._segmentLoader=new Db(this),this._playlist=new Rb(this),this._bufferService=new Qb(this),this._seiService=new Xb(this),this._stats=new ev(this,9e4),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){this.player.debug.log(this.TAG_NAME,"destroy()"),this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),await Promise.all([this._clear(),this._bufferService.destroy()]),this._manifestLoader&&(await this._manifestLoader.destroy(),this._manifestLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null),this._playlist&&(this._playlist.destroy(),this._playlist=null),this.player.debug.log(this.TAG_NAME,"destroy end")}_startTick(){this._stopTick(),this._tickTimer=setTimeout((()=>{this._tick()}),this._tickInterval)}_stopTick(){this._tickTimer&&clearTimeout(this._tickTimer),this._tickTimer=null}_tick(){this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.log(this.TAG_NAME,"_tick() player is destroyed"):(this._startTick(),this._loadSegment())}get isLive(){return this._playlist.isLive}get streams(){return this._playlist.streams}get currentStream(){return this._playlist.currentStream}get hasSubtitle(){return this._playlist.hasSubtitle}get baseDts(){var e;return null===(e=this._bufferService)||void 0===e?void 0:e.baseDts}speedInfo(){return this._segmentLoader.speedInfo()}resetBandwidth(){this._segmentLoader.resetBandwidth()}getStats(){return this._stats.getStats()}async loadSource(e){return await this._reset(),await this._loadData(e),this._startTick(),!0}async _loadData(e){try{e&&(e=e.trim())}catch(e){}if(!e)throw this._emitError(new ob(tb,tb,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){var s,r;if(0===i.bitrate&&null!==(s=this._switchUrlOpts)&&void 0!==s&&s.bitrate)i.bitrate=null===(r=this._switchUrlOpts)||void 0===r?void 0:r.bitrate;const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),o=this._playlist.getSegmentByIndex(t+1);if(o){const e=o.start;this.player.debug.warn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debug.log(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[t,i,a]=e;t?(this._playlist.upsertPlaylist(t,i,a),this.isLive&&this._pollM3U8(s,r,o)):this.player.debug.warn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(ob.create(e))}))}_pollM3U8(e,t,i){var s;let r=this._playlist.isEmpty;this._manifestLoader.poll(e,t,i,((e,t,i)=>{this._playlist.upsertPlaylist(e,t,i),this._playlist.clearOldSegment(),e&&r&&!this._playlist.isEmpty&&this._loadSegment(),r&&(r=this._playlist.isEmpty)}),(e=>{this._emitError(ob.create(e))}),1e3*((null===(s=this._playlist.lastSegment)||void 0===s?void 0:s.duration)||0))}async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() !seg");let t=!1,i=null;try{this._segmentProcessing=!0,t=await this._reqAndBufferSegment(e,this._playlist.getAudioSegment(e))}catch(e){i=e}finally{this._segmentProcessing=!1}return i?this._emitError(ob.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(Ns,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debug.log(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(e,t,s)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!r[0])return;const o=await this._bufferService.decryptBuffer(...r);if(!o)return void this.player.debug.log(this.TAG_NAME,"decryptBuffer return null");const a=e?e.sn:t.sn,n=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(o[0],o[1],null==l?void 0:l.videoCodec,null==l?void 0:l.audioCodec),await this._bufferService.appendBuffer(e,t,o[0],o[1],s,this._prevSegSn===a-1,n),this._prevSegCc=i,this._prevSegSn=a,!0}async _clear(){this.player.debug.log(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debug.log(this.TAG_NAME,"_reset()"),this._reloadOnPlay=!1,this._prevSegSn=null,this._prevSegCc=null,this._switchUrlOpts=null,this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),this._stats.reset(),await this._clear(),this._bufferService.reset(e)}_end(){this.player.debug.log(this.TAG_NAME,"_end()"),this._clear()}_emitError(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var s;!1===(null===(t=e.originError)||void 0===t?void 0:t.fatal)?console.warn(e):(console.table(e),console.error(e),console.error(null===(s=this.media)||void 0===s?void 0:s.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(Os,e)),i&&this._end(),this._seiService.reset(),this.emit(Gs,e));return e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){var i;const s=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(s),o=null===(i=this._stats)||void 0===i?void 0:i.getStats().downloadSpeed;if(o&&r){t+=r.duration*this._playlist.currentStream.bitrate/o+1}else t+=5}return t}getDemuxBuferredDuration(){return this._bufferService.getBuferredDuration()||0}getDemuxBufferedListLength(){return this._bufferService.getBufferedSegments()||0}getDemuxAudioBufferedListLength(){return this._bufferService.getBufferedAudioSegments()||0}getDemuxVideoBufferedListLength(){return this._bufferService.getBufferedVideoSegments()||0}}class iv extends wa{constructor(e){super(),ah(this,"TAG_NAME","Hls256Decoder"),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new tv(e),this._bindEvents()}async destroy(){return this._stopBandwidthEstimateInterval(),this.hls&&(await this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.$videoElement=null,this.player.debug.log(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(Gs,(e=>{this.player.emitError(nt.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(rt.kBps,(e.avgSpeed/1024/8).toFixed(2)),this.hls.resetBandwidth()}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}async loadSource(e){return this.url=e,await this.hls.loadSource(e),!0}checkHlsBufferedDelay(){let e=0;return this.hls&&(e=this.hls.getDemuxBuferredDuration()),e}getDemuxBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxBufferedListLength()),e}getDemuxAudioBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxAudioBufferedListLength()),e}getDemuxVideoBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxVideoBufferedListLength()),e}}class sv extends wa{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("jb-pro-container-playback"),this._showPrecision=null,this._startTime=null,this._playStartTime=null,this._playingTimestamp=null,this._fps=parseInt(t.fps,10)||e._opt.playbackFps,this._isUseFpsRender=!!ca(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||Q.normal,t.controlType&&-1===[Q.normal,Q.simple].indexOf(t.controlType)&&(this.player.debug.warn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=Q.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!ca(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!ua(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!ca(t.isCacheBeforeDecodeForFpsRender),this._startfpsTime=null,this._startFpsTimestamp=null,this._checkStatsInterval=null,this._playbackTs=0,this._renderFps=0,this._isUseLocalCalculateTime?this._startLocalCalculateTime():this._listen(),this.playbackList=[],this._playbackListStartTimestamp=null,this._totalDuration=0,t.controlType===Q.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===Q.simple){t.duration&&(this._totalDuration=1e3*t.duration);let e=t.startTime||0;e>this.totalDuration&&(e=this.totalDuration),this.setStartTime(e)}this.player.on(rt.playbackPause,(e=>{e?this.pause():this.resume()}));const i={fps:this._fps,isUseFpsRender:this._isUseFpsRender,localOneFrameTimestamp:this._localOneFrameTimestamp,isUseLocalCalculateTime:this._isUseLocalCalculateTime,uiUsePlaybackPause:t.uiUsePlaybackPause,showControl:t.showControl};try{e.debug.log("Playback","init",JSON.stringify(i))}catch(t){e.debug.log("Playback","init",i)}}destroy(){this._startTime=null,this._showPrecision=null,this._playStartTime=null,this._playingTimestamp=null,this._totalDuration=0,this._audioTimestamp=0,this._videoTimestamp=0,this._fps=null,this._isUseFpsRender=!1,this._rate=1,this.playbackList=[],this._playbackListStartTimestamp=null,this._localCalculateTimeInterval=null,this._currentLocalTimestamp=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._renderFps=0,this._playbackTs=0,this._stopLocalCalculateTime(),this.clearStatsInterval(),this.player.$container&&this.player.$container.classList.remove("jb-pro-container-playback"),this.off(),this.player.debug.log("Playback","destroy")}_listen(){this.player.on(rt.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;this.setPlayingTimestamp(i)}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._startFpsTimestamp||(this._startFpsTimestamp=Xr()),xo(e.ts)&&(this.player.updateStats({fps:!0,ts:e.ts}),this._playbackTs=e.ts,this._startfpsTime||(this._startfpsTime=e.ts),this._renderFps+=1);const t=Xr(),i=t-this._startFpsTimestamp;if(i<1e3)return;let s=null;this._startfpsTime&&(s=this._playbackTs-this._startfpsTime),this.player.emit(rt.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:s,audioBufferSize:this.player.audio?this.player.audio.bufferSize:0,videoBufferSize:this.player.video?this.player.video.bufferSize:0,ts:this._playbackTs}),this._renderFps=0,this._startfpsTime=this._playbackTs,this._startFpsTimestamp=t}updateLocalOneFrameTimestamp(e){this._localOneFrameTimestamp=e}_startLocalCalculateTime(){this._stopLocalCalculateTime(),this._localCalculateTimeInterval=setInterval((()=>{const e=this._currentLocalTimestamp;this._playStartTime||(this._playStartTime=e-1e3);let t=e-this._playStartTime;this.setPlayingTimestamp(t)}),1e3)}startCheckStatsInterval(){this.clearStatsInterval(),this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}_stopLocalCalculateTime(){this._localCalculateTimeInterval&&(clearInterval(this._localCalculateTimeInterval),this._localCalculateTimeInterval=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}increaseLocalTimestamp(){this._isUseLocalCalculateTime&&(this._currentLocalTimestamp+=this._localOneFrameTimestamp)}initPlaybackList(e,t,i){this.playbackList=e||[];let s=0;if(this.playbackList.forEach(((e,t)=>{10===jo(e.start)?(e.startTimestamp=1e3*e.start,e.startTime=mo(e.startTimestamp)):(e.startTimestamp=e.start,e.startTime=mo(e.startTimestamp)),10===jo(e.end)?(e.endTimestamp=1e3*e.end,e.endTime=mo(e.endTimestamp)):(e.endTimestamp=e.end,e.endTime=mo(e.endTimestamp)),e.duration=e.end-e.start,s+=e.duration})),this._totalDuration=s,this.player.debug.log("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===jo(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const r=t||Si;this.setShowPrecision(r)}get totalDuration(){return(this._totalDuration||0)/1e3}get startTime(){return this._startTime||0}setStartTime(e){this._startTime=e,this._playingTimestamp=e,this._playStartTime=null}setRate(e){this._rate=e,this.player.emit(rt.playbackRateChange,e)}get fps(){return this._fps}get rate(){return this._rate}get isUseFpsRender(){return this._isUseFpsRender}get isUseLocalCalculateTime(){return this._isUseLocalCalculateTime}get showPrecision(){return this._showPrecision}get is60Min(){return this.showPrecision===Si}get is30Min(){return this.showPrecision===wi}get is10Min(){return this.showPrecision===Ei}get is5Min(){return this.showPrecision===Ti}get is1Min(){return this.showPrecision===Ti}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){Ci.includes(e)||(this.player.debug.warn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=Si),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(rt.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(rt.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===Q.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(rt.playbackTime,t);const i=new Date(t);this.player.emit(rt.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===Q.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debug.log("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),this._playingTimestamp=t,this.player.emit(rt.playbackTime,t),this.player.emit(rt.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=Ci.indexOf(this.showPrecision)-1;if(e>=0){const t=Ci[e];this.setShowPrecision(t)}}expandPrecision(){const e=Ci.indexOf(this.showPrecision)+1;if(e<=Ci.length-1){const t=Ci[e];this.setShowPrecision(t)}}seek(e){if(this.player.debug.log("Playback","seek()",e),this.controlType===Q.normal){if("true"===e.hasRecord){let t=e.time;"min"===e.type&&(t=60*e.time);let i=function(e){let t={};e>-1&&(t={hour:Math.floor(e/60/60)%60,min:Math.floor(e/60)%60,second:e%60});return t}(t);if(this._playbackListStartTimestamp){const e=new Date(this._playbackListStartTimestamp).setHours(i.hour,i.min,i.second,0);i.timestamp=e;const t=this._findMoreInfoByTimestamp(e);i&&t.more&&(i.more=t.more)}this.player.emit(rt.playbackSeek,i)}}else if(this.controlType===Q.simple){let t=e.time;this.player.emit(rt.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(rt.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===Q.normal}isControlTypeSimple(){return this.controlType===Q.simple}}class rv extends wa{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this._isZooming=!1,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0};const{events:{proxy:t},debug:i}=this.player;this.player.on(rt.zooming,this._handleZooming.bind(this));const s=t(window,ao()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(s),e.debug.log("zoom","init")}destroy(){this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.off(),this.player.debug.log("zoom","destroy")}_handleZooming(e){if(e){this.player.$container.classList.add("jb-pro-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.offsetLeft,i=this.player.video.$videoElement.offsetTop;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let s=e.match(/scale\([0-9., ]*\)/g);if(s&&s[0]){let e=s[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}this._isZooming=!0}else{this.player.$container.classList.remove("jb-pro-zoom-control"),this._unbindEvents(),this._resetVideoPosition(),this.player.$container.style.cursor="auto";let e=this.prevVideoElementStyleTransform;this.player.video.$videoElement.style.transform=e,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,ao()&&this.player._opt.useWebFullScreen&&this.player.resize(),this._isZooming=!1}}_bindEvents(){const{events:{proxy:e},debug:t}=this.player,i=_a(),s=e(this.player.$container,i.move,(e=>{this.handleMouseMove(e)}));this.bindEvents.push(s);const r=e(this.player.$container,i.down,(e=>{this.handleMouseDown(e)}));this.bindEvents.push(r);const o=e(window,i.up,(e=>{this.handleMouseUp(e)}));this.bindEvents.push(o)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()}))}handleMouseMove(e){if(e.stopPropagation(),this.isDragging&&this.player.zooming){e.preventDefault();const{posX:t,posY:i}=Ko(e),s=this.tempPosition.x-t,r=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-s,this.videoPosition.top=this.videoPosition.top-r,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=$o(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=Ko(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debug.log("zoom","handleMouseDown is dragging true")}}handleMouseUp(e){e.stopPropagation(),this.isDragging&&this.player.zooming&&(e.preventDefault(),this.tempPosition={x:0,y:0},this.isDragging=!1,this.player.$container.style.cursor="grab",this.player.debug.log("zoom","handleMouseUp is dragging false"))}updateVideoPosition(){const e=this.player.video.$videoElement;e.style.left=this.videoPosition.left+"px",e.style.top=this.videoPosition.top+"px"}_resetVideoPosition(){this.player.resize(),this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.currentZoom=1,this.isDragging=!1}narrowPrecision(){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale())}expandPrecision(){this.currentZoom>=this.player._opt.zoomMaxScale||(this.currentZoom+=1,this.updateVideoElementScale())}updateCurrentZoom(e){e<1||e>this.player._opt.zoomMaxScale||(this.currentZoom=e,this.updateVideoElementScale())}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){const e=this.player.video.$videoElement;let t=e.style.transform,i=1,s=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(i=e,s=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(s=t)}s=yo(s),i=yo(i);const r=.5*i*(this.currentZoom-1)+i,o=.5*s*(this.currentZoom-1)+s;let a;a=-1===t.indexOf("scale(")?t+` scale(${r},${o})`:t.replace(/scale\([0-9., ]*\)/,`scale(${r},${o})`),this.player.debug.log("zoom",`updateVideoElementScale end is ${r}, ${o} style is ${a}`),e.style.transform=a}isZooming(){return this._isZooming}}class ov extends wa{constructor(e){super(),this.player=e,this.faceDetector=null,this.objectDetector=null,this.imageDetector=null,this.occlusionDetector=null,this.initFaceDetector(),this.initObjectDetector(),this.initImageDetector(),this.initOcclusionDetector();let t="init";this.faceDetector&&(t+=" and use faceDetector"),this.objectDetector&&(t+=" and use objectDetector"),this.imageDetector&&(t+=" and use imageDetector"),this.occlusionDetector&&(t+=" and use occlusionDetector"),this.player.debug.log("AiLoader",t)}destroy(){this.off(),this.faceDetector&&(this.faceDetector.destroy(),this.faceDetector=null),this.objectDetector&&(this.objectDetector.destroy(),this.objectDetector=null),this.imageDetector&&(this.imageDetector.destroy(),this.imageDetector=null),this.occlusionDetector&&(this.occlusionDetector.destroy(),this.occlusionDetector=null),this.player.debug.log("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.JessibucaProFaceDetector){const e=new JessibucaProFaceDetector({detectWidth:this.player._opt.aiFaceDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("jessibuca-pro-face-detector-info",(e=>{if(this.player.emit(rt.aiFaceDetectorInfo,e),this.player._opt.aiFaceDetectShowRect){const t=this.player._opt.aiFaceDetectRectConfig||{},i=(e.list||[]).map((e=>(e.type="rect",e.color=t.borderColor||"#0000FF",e.lineWidth=t.borderWidth||2,e)));this.player.video&&this.player.video.addAiContentToCanvas(i)}}))}))}}initObjectDetector(){if(this.player._opt.useObjectDetector&&window.JessibucaProObjectDetector){const e=new JessibucaProObjectDetector({detectWidth:this.player._opt.aiObjectDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("jessibuca-pro-object-detector-info",(e=>{if(this.player.emit(rt.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const s={type:"rect",color:i.borderColor||"#0000FF",lineWidth:i.borderWidth||2,x:e.rect.x,y:e.rect.y,width:e.rect.width,height:e.rect.height},r={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(s,r)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.JessibucaProImageDetector){const e=new JessibucaProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector){const e=new JessibucaProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class av extends wa{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,ao()?this.player.debug.warn(this.LOG_NAME,"not support mobile"):this.init(),e.debug.log(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debug.log(this.LOG_NAME,"destroy")}get isShow(){return e=this.player.$container,t="jb-pro-contextmenus-show",e.classList.contains(t);var e,t}show(){ec(this.player.$container,"jb-pro-contextmenus-show")}hide(){var e,t;e=this.player.$container,t="jb-pro-contextmenus-show",e.classList.remove(t)}init(){const{events:{proxy:e},debug:t}=this.player;this.player._opt.contextmenuBtns.length>0&&this.player._opt.contextmenuBtns.forEach((e=>{this.addMenuItem(e)})),e(this.player.$container,"contextmenu",(e=>{e.preventDefault(),this.show();const t=e.clientX,i=e.clientY,{height:s,width:r,left:o,top:a}=this.player.$container.getBoundingClientRect(),{height:n,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-o,h=i-a;t+l>o+r&&(d=r-l),i+n>a+s&&(h=s-n),eo(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{sc(e,this.$contextmenus)||this.hide()})),this.player.on(rt.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debug.warn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=na(Ss);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:s}=this.player,r=Ao(),o=`\n
          \n ${e.content}\n
          \n `,a=Array.from(this.$contextmenus.children)[e.index];a?a.insertAdjacentHTML("beforebegin",o):tc(this.$contextmenus,o);const n=this.$contextmenus.querySelector(`.jb-pro-contextmenu-${r}`);e.click&&i(n,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:r,$menuItem:n})}}class nv extends wa{constructor(e){super(),this.player=e,this.TAG_NAME="CommonWebrtc",this.rtcPeerConnection=null,this.videoStream=null,this.isDisconnected=!1,this.isH264=this.player.isWebrtcH264(),this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.isInitInfo=!1,this.$videoElement=this.player.video.$videoElement,this.bandwidthEstimateInterval=null,this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this.prevWebrtcVideoStats={},this.prevWebrtcAudioStats={},this.currentWebrtcStats={},this.player._opt.webrtcUseCanvasRender&&this.isH264&&(this.$videoElement=document.createElement("video"),fo()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){if(this.isDisconnected=!1,this.isInitInfo=!1,this.prevWebrtcVideoStats={},this.currentWebrtcStats={},this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this._stopBandwidthEstimateInterval(),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isH264&&(this.videoStream&&(this.videoStream.getTracks().forEach((e=>e.stop())),this.videoStream=null),this.$videoElement))if(this.player._opt.webrtcUseCanvasRender){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}else this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject"));this.$videoElement=null,this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=qr,this.rtcPeerConnection.ontrack=qr,this.rtcPeerConnection.onconnectionstatechange=qr,this.rtcPeerConnection.ondatachannel=qr,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,Yi,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Qi,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,Xi,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,Zi,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debug.log(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debug.log(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(rt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(rt.webrtcFailed);break;case"disconnected":t.emit(rt.webrtcDisconnect);break;case"closed":t.emit(rt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debug.log(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let i=t.streams[0];this.$videoElement.autoplay=!0,this.$videoElement.srcObject=i,this.videoStream=i}else"audio"===t.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(nt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debug.log(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(rt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(rt.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_startBandwidthEstimateInterval"),this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{this.rtcPeerTrackVideoReceiver&&this.rtcPeerTrackVideoReceiver.getStats().then((e=>{let t={},i=0;e.forEach((e=>{if(e)switch(e.type){case or:("succeeded"===e.state||e.bytesReceived)&&(this.currentWebrtcStats.timestamp=e.timestamp,this.currentWebrtcStats.rtt=e.currentRoundTripTime||-1,this.currentWebrtcStats.bytesReceived=e.bytesReceived||0,this.currentWebrtcStats.bytesSent=e.bytesSent||0);break;case lr:this.currentWebrtcStats.remoteCandidate=e||{};break;case nr:this.currentWebrtcStats.localCandidate=e||{};break;case ar:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.vbps=o,this.prevWebrtcVideoStats=e;break;case dr:e.frameWidth&&e.frameHeight&&(this.currentWebrtcStats.frameWidth=e.frameWidth||0,this.currentWebrtcStats.frameHeight=e.frameHeight||0)}})),this.rtcPeerTrackAudioReceiver?this.rtcPeerTrackAudioReceiver.getStats().then((e=>{e.forEach((e=>{if(e&&e.type===ar){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.abps=o,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(rt.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(rt.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){Aa()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.player.video.render({$video:this.$videoElement,ts:t.mediaTime||0}),this.player.updateStats({dts:t.mediaTime||0}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}isVideoPlaying(){return this.$videoElement&&ua(this.$videoElement.paused)&&ua(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class lv extends nv{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debug.error(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r})).then((()=>{t()})).catch((e=>{this.player.debug&&this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"response sdp is null"),i("response sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class dv extends nv{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debug.log(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debug.error(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debug.log(this.TAG_NAME,"this is raw sdp response")}e?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class hv extends nv{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=so((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=qr,this.rtcPeerConnectionDataChannel.onclose=qr,this.rtcPeerConnectionDataChannel.onmessage=qr,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null),this.player.debug.log(this.TAG_NAME,"destroy")}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debug.log(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debug.log(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(rt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(rt.webrtcFailed);break;case"disconnected":t.emit(rt.webrtcDisconnect);break;case"closed":t.emit(rt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debug.log(this.TAG_NAME,"ontrack",i);const s=t.video.$videoElement;if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let t=i.streams[0];s.autoplay=!0,s.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(nt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debug.log(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(rt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(rt.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debug.log(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debug.log(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debug.warn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(rt.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.warn(this.TAG_NAME,"ondatachannel and player is destroyed"):(this.streamRate&&this.streamRate(t.byteLength),this.player.demux&&this.player.demux.dispatch(t))},t.onclose=()=>{this.player.debug.warn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debug.log(this.TAG_NAME,"signalChannel,onmessage",e);JSON.parse(e.data).type},this.rtcPeerConnection=e}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}loadSource(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{const r=this.rtcPeerConnection;r.createOffer().then((o=>{r.setLocalDescription(o),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t,i){let s={"Content-Type":"application/sdp"};return i.username&&i.password&&(s.Authorization="Basic "+btoa(i.username+":"+i.password)),fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:s,body:t})}(e,o.sdp,t).then((e=>{e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),i()})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),s(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource sdp is null"),s("sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),s(e)}))}))}}class cv extends nv{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return kl({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debug.error(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r&&r.sdp?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r.sdp})).then((()=>{t()})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"response sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class uv extends wa{constructor(e){if(super(),this.TAG_NAME="AliyunRtc",this.player=e,!window.AliRTS)throw new Error("AliyunRtc is not defined");this.aliyunRtc=window.AliRTS.createClient(),this.aliyunRtcRemoteStream=null,this.$videoElement=this.player.video.$videoElement,this.listenEvents(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.$videoElement=null,this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debug.log(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debug.error(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(nt.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debug.log(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",s="media";this.aliyunRtc.on("onPlayEvent",(r=>{if(r.event===e)this.player.debug.log(this.TAG_NAME,"onPlayEvent and canplay");else if(r.event===t)this.player.debug.log(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(r.event===i)this.player.debug.log(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(r.event===s){const e=r.data;let t={},i=0;if(e.audio){const s=Math.floor(e.audio.bytesReceivedPerSecond);i+=s,t.abps=s}if(e.video){const s=Math.floor(e.video.bytesReceivedPerSecond);i+=s,t.vbps=s}this.player.updateStats(t),this.player.emit(rt.kBps,(i/1024).toFixed(2))}}))}loadSource(e){return new Promise(((t,i)=>{this.aliyunRtc.isSupport({isReceiveVideo:!0}).then((()=>{this.aliyunRtc.subscribe(e,{}).then((e=>{this.aliyunRtcRemoteStream=e,e.play(this.$videoElement),t()})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and is not support: ",e.message),i(e.message)}))}))}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}isVideoPlaying(){return this.$videoElement&&ua(this.$videoElement.paused)&&ua(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class pv{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debug.log(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){ua(ba())?this.player.debug.log(this.TAG_NAME,"not support PressureObserver"):(this.observer=new PressureObserver((e=>{const t=(e||[]).find((e=>"cpu"===e.source));if(t){switch(this.latestCpuInfo=t,t.state){case"nominal":this.currentLevel=0;break;case"fair":this.currentLevel=1;break;case"serious":this.currentLevel=2;break;case"critical":this.currentLevel=3;break;default:this.currentLevel=-1}this.player.emit(rt.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu"))}}class fv extends Ua{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e),this.TAG_NAME="DynamicWatermark",this.isPauseAnimation=!1,this.isStopAnimation=!1,this.rafID=null,this.speed=t.speed||.2,this.isDynamic=!0,this.shadowRootDynamicDom=null,this.isGhost=!0===t.isGhost,this.ghostConfig={on:t.on||5,off:t.off||5},this.waterMarkWillRemove=!1,this.waterMarkWillAdd=!1,this.player.once(rt.start,(()=>{const e=ua(oo)?decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"):t.content;let i=this.player.getVideoInfo();i||(i={width:200,height:200}),this.update({text:{content:e,fontSize:t.fontSize||18,color:t.color||"white"},left:i.width*Math.random(),top:i.height*Math.random(),opacity:t.opacity||.15}),this.startAnimation()})),this.player.debug.log(this.TAG_NAME,"int")}destroy(){super.destroy(),this.shadowRootDynamicDom=null,this.stopAnimation(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),s={width:0,height:0};const r=()=>{try{if(ua(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const o=this.shadowRootInnerDom,a=this.shadowRootDynamicDom,n=o.getBoundingClientRect(),l=a.getBoundingClientRect();if(l.width&&l.height&&(s.width=l.width,s.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?ua(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(n,s),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(n,s),void(0!==this.speed&&requestAnimationFrame(r));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-n.left,c=l.top-n.top;h+=d*t*i,c+=d*e*(1-i),h+s.width>n.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+s.height>n.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(n.width-s.width,h),c=Math.min(n.height-s.height,c);const u=h/n.width*100,p=c/n.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,ua(this.waterMarkWillRemove)&&this.isGhost&&(this.waterMarkWillRemove=!0,setTimeout((()=>{this._removeDom(),this.waterMarkWillRemove=!1}),1e3*this.ghostConfig.on))}}catch(e){}if(this.isStopAnimation)return this.isStopAnimation=!1,cancelAnimationFrame(this.rafID),void(this.rafID=null);0!==this.speed&&requestAnimationFrame(r)};this.rafID=requestAnimationFrame(r)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),s=e.height*Math.random();i=Math.min(e.width-2*t.width,i),s=Math.min(e.height-2*t.height,s),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${s}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class mv extends wa{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=da();if(this._opt=Object.assign({},i,t),this.debug=new wr(this),this.debug.log(this.TAG_NAME,"init and version is",ro),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(fo()||po())&&(this._canPlayAppleMpegurl=Yo(),this.debug.log(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),(ao()||no())&&(this.debug.log(this.TAG_NAME,"isMobileOrPad and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),ca(kr.isEnabled)&&ca(this._opt.useWebFullScreen)&&(this.debug.log(this.TAG_NAME,"screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),ua(kr.isEnabled)&&ua(this._opt.useWebFullScreen)&&(this.debug.log(this.TAG_NAME,"screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),fa()&&(this.debug.log(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,Ho()&&ca(this._opt.isHls)&&ua(this._opt.supportHls265)&&(this.debug.log(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),ua(this._opt.playFailedAndReplay)&&(this.debug.log(this.TAG_NAME,"_opt.playFailedAndReplay is false and set others replay params false"),this._opt.webglAlignmentErrorReplay=!1,this._opt.webglContextLostErrorReplay=!1,this._opt.autoWasm=!1,this._opt.mseDecodeErrorReplay=!1,this._opt.mediaSourceTsIsMaxDiffReplay=!1,this._opt.wcsDecodeErrorReplay=!1,this._opt.wasmDecodeErrorReplay=!1,this._opt.simdDecodeErrorReplay=!1,this._opt.videoElementPlayingFailedReplay=!1,this._opt.networkDelayTimeoutReplay=!1,this._opt.widthOrHeightChangeReplay=!1,this._opt.simdH264DecodeVideoWidthIsTooLargeReplay=!1,this._opt.mediaSourceUseCanvasRenderPlayFailedReplay=!1,this._opt.heartTimeoutReplay=!1,this._opt.loadingTimeoutReplay=!1,this._opt.websocket1006ErrorReplay=!1,this._opt.streamErrorReplay=!1,this._opt.streamEndReplay=!1,this._opt.mseWaitVideoCanplayAutoWasm=!1),this._opt.hiddenControl&&(this.debug.log(this.TAG_NAME,"_opt.hiddenControl is true and set others show btn to false"),Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(this._opt.operateBtns[e]=!1)})),this._opt.showBandwidth=!1,this._opt.extendOperateBtns=[],this._opt.controlHtml="",this.isPlayback()&&(this._opt.playbackConfig.showControl=!1)),this._opt.watermarkConfig={image:{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS4AAABgCAYAAACjZZ/rAAAK4mlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU1kagO976SEhkIQISAm9SW8BpIQeivQqKiEJJJQQE4KCDZXBERwVRESwDOCoiIKjIyBjQSxYUWzYB2RQUNbBgg2VfcASZmbP7p7937nvfufPf/9yz705/wOAHMKVSDJhFQCyxDnSyABvZnxCIhP3DOAAA9CBA7Dm8mQSdnh4CEBkev6rvL8LoIn5luWEr3///b8KlS+Q8QCAkhBO4ct4WQi3I2OEJ5HmAIA6jOgNluRIJvg2wnQpkiDCgxOcNsVfJjhlktEqkzbRkT4IGwKAJ3G50jQASDaInpnLS0P8kMIRthHzRWKECxD24Am5fISRuGBOVlb2BA8jbIrYSwAg0xFmpfzJZ9pf/Kco/HO5aQqeqmtS8L4imSSTm/d/bs3/lqxM+XQMY2SQhNLASGRWR/bvXkZ2sILFKfPCplnEn7SfZKE8MGaaeTKfxGnmc32DFWsz54VMc6rIn6Pwk8OJnmaBzC9qmqXZkYpYqVIf9jRzpTNx5RkxCr1QwFH4zxdGx01zrih23jTLMqKCZ2x8FHqpPFKRv0Ac4D0T119Re5bsT/WKOIq1OcLoQEXt3Jn8BWL2jE9ZvCI3vsDXb8YmRmEvyfFWxJJkhivsBZkBCr0sN0qxNgc5nDNrwxV7mM4NCp9m4Av8QAjyMEEMsAPOwBawQAQIzREszZkoxidbkicVpQlzmGzkxgmYHDHPag7TzsbODoCJ+zt1JN5GTt5LiHFqRpe9BznK75E7UzqjSykHoKUICf1gRme4CwBKIQDNHTy5NHdKh554YQARUJB/Bg2gAwyAKbBE8nMCbsALyTgIhIFokAAWAh4QgiwgBUvAcrAaFIESsBlsBVVgN6gD+8EhcAS0gBPgDLgAroAb4A54CHrBAHgJRsB7MAZBEA4iQzRIA9KFjCALyA5iQR6QHxQCRUIJUDKUBokhObQcWguVQGVQFVQD1UM/Q8ehM9AlqBu6D/VBQ9Ab6DOMgkkwHdaGjWFrmAWz4WA4Gl4Ap8GL4Xy4EN4IV8K18EG4GT4DX4HvwL3wS3gUBVBKKAZKD2WJYqF8UGGoRFQqSopaiSpGVaBqUY2oNlQn6haqFzWM+oTGomloJtoS7YYORMegeejF6JXoDegq9H50M/oc+ha6Dz2C/oYhY7QwFhhXDAcTj0nDLMEUYSowezHHMOcxdzADmPdYLJaBNcE6YwOxCdh07DLsBuxObBO2HduN7ceO4nA4DZwFzh0XhuPicnBFuO24g7jTuJu4AdxHvBJeF2+H98cn4sX4NfgK/AH8KfxN/HP8GEGFYERwJYQR+IQ8wibCHkIb4TphgDBGVCWaEN2J0cR04mpiJbGReJ74iPhWSUlJX8lFKUJJpFSgVKl0WOmiUp/SJxKVZE7yISWR5KSNpH2kdtJ90lsymWxM9iInknPIG8n15LPkJ+SPyjRlK2WOMl95lXK1crPyTeVXFALFiMKmLKTkUyooRynXKcMqBBVjFR8VrspKlWqV4yo9KqOqNFVb1TDVLNUNqgdUL6kOUnFUY6oflU8tpNZRz1L7aSiaAc2HxqOtpe2hnacN0LF0EzqHnk4voR+id9FH1KhqDmqxakvVqtVOqvUyUAxjBoeRydjEOMK4y/g8S3sWe5Zg1vpZjbNuzvqgPlvdS12gXqzepH5H/bMGU8NPI0OjVKNF47EmWtNcM0JzieYuzfOaw7Pps91m82YXzz4y+4EWrGWuFam1TKtO66rWqLaOdoC2RHu79lntYR2GjpdOuk65zimdIV2aroeuSLdc97TuC6Yak83MZFYyzzFH9LT0AvXkejV6XXpj+ib6Mfpr9Jv0HxsQDVgGqQblBh0GI4a6hqGGyw0bDB8YEYxYRkKjbUadRh+MTYzjjNcZtxgPmqibcEzyTRpMHpmSTT1NF5vWmt42w5qxzDLMdprdMIfNHc2F5tXm1y1gCycLkcVOi+45mDkuc8Rzauf0WJIs2Za5lg2WfVYMqxCrNVYtVq+sDa0TrUutO62/2TjaZNrssXloS7UNsl1j22b7xs7cjmdXbXfbnmzvb7/KvtX+tYOFg8Bhl8M9R5pjqOM6xw7Hr07OTlKnRqchZ0PnZOcdzj0sOiuctYF10QXj4u2yyuWEyydXJ9cc1yOuf7hZumW4HXAbnGsyVzB3z9x+d313rnuNe68H0yPZ40ePXk89T65nredTLwMvvtder+dsM3Y6+yD7lbeNt9T7mPcHH1efFT7tvijfAN9i3y4/ql+MX5XfE399/zT/Bv+RAMeAZQHtgZjA4MDSwB6ONofHqeeMBDkHrQg6F0wKjgquCn4aYh4iDWkLhUODQreEPppnNE88ryUMhHHCtoQ9DjcJXxz+awQ2IjyiOuJZpG3k8sjOKFrUoqgDUe+jvaM3RT+MMY2Rx3TEUmKTYutjP8T5xpXF9cZbx6+Iv5KgmSBKaE3EJcYm7k0cne83f+v8gSTHpKKkuwtMFixdcGmh5sLMhScXURZxFx1NxiTHJR9I/sIN49ZyR1M4KTtSRng+vG28l3wvfjl/SOAuKBM8T3VPLUsdTHNP25I2JPQUVgiHRT6iKtHr9MD03ekfMsIy9mWMZ8ZlNmXhs5Kzjoup4gzxuWyd7KXZ3RILSZGkd7Hr4q2LR6TB0r0ySLZA1ppDRxqlq3JT+XfyvlyP3Orcj0tilxxdqrpUvPRqnnne+rzn+f75Py1DL+Mt61iut3z18r4V7BU1K6GVKSs7VhmsKlw1UBBQsH81cXXG6mtrbNaUrXm3Nm5tW6F2YUFh/3cB3zUUKRdJi3rWua3b/T36e9H3Xevt129f/62YX3y5xKakouTLBt6Gyz/Y/lD5w/jG1I1dm5w27dqM3SzefLfUs3R/mWpZfln/ltAtzeXM8uLyd1sXbb1U4VCxextxm3xbb2VIZet2w+2bt3+pElbdqfaubtqhtWP9jg87+Ttv7vLa1bhbe3fJ7s8/in68VxNQ01xrXFtRh63LrXu2J3ZP50+sn+r3au4t2ft1n3hf7/7I/efqnevrD2gd2NQAN8gbhg4mHbxxyPdQa6NlY00To6nkMDgsP/zi5+Sf7x4JPtJxlHW08RejX3Ycox0rboaa85pHWoQtva0Jrd3Hg453tLm1HfvV6td9J/ROVJ9UO7npFPFU4anx0/mnR9sl7cNn0s70dyzqeHg2/uztcxHnus4Hn794wf/C2U525+mL7hdPXHK9dPwy63LLFacrzVcdrx675njtWJdTV/N15+utN1xutHXP7T510/PmmVu+ty7c5ty+cmfene67MXfv9ST19N7j3xu8n3n/9YPcB2MPCx5hHhU/Vnlc8UTrSe1vZr819Tr1nuzz7bv6NOrpw35e/8vfZb9/GSh8Rn5W8Vz3ef2g3eCJIf+hGy/mvxh4KXk5Nlz0D9V/7Hhl+uqXP7z+uDoSPzLwWvp6/M2Gtxpv971zeNcxGj765H3W+7EPxR81Pu7/xPrU+Tnu8/OxJV9wXyq/mn1t+xb87dF41vi4hCvlTrYCKGTAqakAvNmH9McJANBuAECcP9VfTwo09U0wSeA/8VQPPilOANT1ABC9DICQawBsr0JaWsQ/BfkuCKcgejcA29srxr9ElmpvN+WL5Im0Jo/Hx9+aAoArBeBr6fj4WN34+Nc6JNmHALTnTfX1E6JyEIAacxtH+5D7VPMC8DeZ6vn/VOPfZzCRgQP4+/xPeFgcU9phDh8AAABsZVhJZk1NACoAAAAIAAQBGgAFAAAAAQAAAD4BGwAFAAAAAQAAAEYBKAADAAAAAQACAACHaQAEAAAAAQAAAE4AAAAAAAAAkAAAAAEAAACQAAAAAQACoAIABAAAAAEAAAEuoAMABAAAAAEAAABgAAAAADApncsAAAAJcEhZcwAAFiUAABYlAUlSJPAAAB1BSURBVHgB7V0HeBTVFj6b3fRCAgSQ3qSKIuoDRESx8OzloaIIiqhYUIEHiIJIU6QpVkRRwMaTp4INBBsoRZQiIFhACL1DQtpusuWdf8IsM7Ozu0nYDQzvnO/bzMyd2+a/N/+ce+65d2w+FhIRBAQBQcBCCMRYqK5SVUFAEBAEFASEuKQjCAKCgOUQEOKyXJNJhQUBQUCIS/qAICAIWA4BIS7LNZlUWBAQBIS4pA8IAoKA5RAQ4rJck0mFBQFBQIhL+oAgIAhYDgEhLss1mVRYEBAEhLikDwgCgoDlEBDislyTSYUFAUFAiEv6gCAgCFgOASEuyzWZVFgQEASEuKQPCAKCgOUQEOKyXJNJhQUBQUCIS/qAICAIWA4BIS7LNZlUWBAQBIS4pA8IAoKA5RAQ4rJck0mFBQFBQIhL+oAgIAhYDgEhLss1mVRYEBAEhLikDwgCgoDlEBDislyTSYUFAUFAiEv6gCAgCFgOASEuyzWZVFgQEASEuKQPCAKCgOUQEOKyXJNJhQUBQcBxqkDgK8gmT+5+Ik8RuTYvJtefC6l430YiO9fQxj+mWHvluhTX4GJKaNKFYhLSKSaRf8nV+L7w76nSjlIPQaAiELD5WCqioGBlFGetJOfGb8nNJFW07RciX3EJUamEpR7BTfgdIzGcO6o1pbja7Siu1gUU37BLsCIkXBAQBE4zBE4qcR2adDV5cnYxVxWUkJKWnFTCUo/ae+r5saMtLoHsabUordMzFFvjvNOsieRxBAFBwIhAhROXz5VPBd+/SfmLppHP42LC8lGMzcOjPS/5mIhsdi+H8bmdL2LwYyUsxkY+W2yJtqXRuBQNjO9rNbHElt0piX+O9DONzyrX/0cIbNuxm5yuImrcoA7Z7Xj7iZxOCFQocRVvX0f5C14h18bvFdtVrLeQSctNNlsx2RwgK4bWwSNXPvrY+uaz8zkfvUxiIC6fL5a8nqQSolIJSz1qCM2eXo/SLhxJcTU7nE5tJc9SCgQKCp3Ub9hztHzlWiV2g7q16OWxQ6le7TN0qQ8dyaZNW7bpwtIrpVGzxg10YXJxaiJQYcTlWruQjr4/mLxF+WRnO1a8O5e1K59CVipBBSMukBgnUjQyctjI40xnEovTE5iGuFRNLLXdcEpqdicnxk1ryr4Dh2jjn3/rKp+YGE/tzjtHFyYXJQhMmjKTZvxnrg6O885pSTNeGqMLm//tEho8apIu7KK2bWjK+Kd0YXJxaiIASoi6OFfNY9J6nMhdSHFuF8V62KYFzapc4iN78mHyulOYBJM5h+CklLvqObaf5VByy/uZ5JjoLCi/rPmNnnhmsq7mdWrWoHmzpujC5KIEgdXreCbaIGs3/MEvOh9r9sH7iiGJXJ7iCGCgFVVxrf2ajr43hMhVQPGF+RTHx0iILSGPbMk5nFUIAmTXivyNb5Nrz5JIFCl5WACB2mdUD6hlzerVhLQCULF2QFSJy5t7iPK/eZt8RYUU73KSw10UHi28FRPSKCa1JtmrNKH4s3tRUscxFN+sO9krNWK/rZqsrSUq+djinGRLyg2Zp68ol7IX9yFPwb6Q8eTm6YHAQ/fcThlsq1IlNtZBg/r2Ui/leJogENWhYt6ciVS8eSVrWYUUW+xSDO6hcLMlVaa49veQo3FnctRtx1FNVHufh1xbPqaiXQvIuX022RLz2XDP1nwnho3B5ch3d1LGJdPInlIveCS5Y3kEYISfM/NFgg3LxbOKl3S4gBrVr2P555IH0CMQNeJy78uiwmUfM2k5FW1L8YDXl627sjfqRAk3jCM7O5WGFCap+Ea3Uly9aym+8W2Us+QORevyFUELC65AevK2k2vvckpqLMQVEt/T4GaVjHS6s+u1p8GTyCMEQyD4f3qwFKUI97F2dWRsV7J5veQoYk/4MGKvfS4l3zc3PGlp8rE5ktjd4UpKa/8G2eIqkS0t21RB8yfxeSl39Qj2HSv0B8mJICAIWBOBqGhczhWfk4+N8Ha3mxzF7pBDxNhzb6aEnm+WG734OjdTWoydcpb3YNsX29A8IWYPeZiZt34SpbYeVu7yrJgwNy+fdu7ZR3v2HqD8wkKqnlmFzqieSbVqVGMf3/K/u5xOF/35dxYdPpJD2UdzKSU5iapkVKKGPDRLT0stF1TRyLNcFTmWyOv10a69+2jrtl38fIlUu2Z1yqxS+ZQ29hcVF9PuPftp74GDtO/AYUpMiKeqVTKobq0zqGrl9HLDgZnZv7N2cL6H6Eh2DhtybFSZ27ta1crKcLwiZ20jTlw+1mzcO34nn7uY7EXukCDFZDaiuC7sJmFmywqZUn8zvtYNlNZ2KuUsGsTEpb9nvCrY9M7/BXGhky395Vea9cmXtGTFasI/oFHQ4bped6Xyy+SOXVpZ+vMaev/jL+nn1evIZaJRx/BKh3NaNqV/XXMFXdflUiZHE1ulobBI5Tn70wU04bXputxv/GdnGtqfXWLKIAcPZ9Pz7BO2cPEyxVamTVqtahXqeet1Cm7JSSUTRdr76vnAERNp8fKV6qVyHDnoIbr68ot1YcaLT7/6nsa8MFUXfPnF7Wjs0H66MOPF739toY++WEhffv0D5RcEjixALGiXa6/sRF2vvaLUKwqwCmHa+5/QDz+tVF5SxnJxDUK8pMM/6L4eXakmvxSjLREnLu/BXeRa841S74RCNsiHWG1hb345xVSPzNIcR/q55Khcm9x7DoXBzEcuNuzH1zp9F2VDw8I/zTImrlCy/+Bhem36f2j6rLk0dthjdFlHTIgEF/wzPDFmMn2/9OfgkfgOSHLN+j+U3wdz5tGLY4ZQjWpVTdNEOk+3x03Q2rQCDaQsMu+bH2j081MpL9/cdWf/wUM08bUZCnm/OWkE1avDM90mgnKNdXF7wrxZOR83j1SM6YpMXhBqkR7OE/V576Mv1CDTI15mv/72h/L7+POv6ZknH6UzGwa3+SL+5Knv0szZnxHKCCUg+o8+X0hffL2YBjxwF91+01Whop/wvfKPE4IU7XPmk+fwbnavCnzDG5PEXTvUGFTua0dqM3LUaFmq9M6d80oVz4qRdu87QN0ffDwsaWmfrdDppP5PjVcITBuuPcc/0oODR4UlLW0anMPrv9djwwgd2yjRyNNYRlmvUd+nnnslKGlp89vDWPfo+wRt3rpdG1yh52i7ewc8HZa0jJX6fdMWuvvRYbRl207jLf/10GdfordnzQlLWv4EfII2fXbyGzRn3rfa4IifR5y4irPWK5W0u0MztK1SDbIlpET0gRJq3liq/HxerhsPaU83gaYzZPTztHX7roBHgy0Lw4TrrrzEVJVX3q5vvENmnufIDENDaFFGObdVM+rT8xYa9XhfuvWGLooNyBhn5+59/OZ+xxgclTwDCilDAJZXDXh6Amk1NIfDTkmJCUFzOZJ9lIaPe0XxzA8aKYo3oGmt/HWDaQkYsrVt04qan9nQ9BmO5ubRg4NGBWh3yOyr75bQ5wsXmeabkZ5Gl/KwsGO786iWicMvEo1hjRW2z2hJxIeKzqVzlLrGeEITQ8Jdr0f8meKqdipVnl7nAfK6DvFmhNEfi5eqQhGK9P7HX5iSC1T3rtddQakpx33dtu3cw8O+F2j975v8pYP4ho19mT6ZPpkS2KCrlZkffqq9VM773d+Dene/2R9+09WXKeewVz02dKzO/oV/gn59euqMw9HI01+ZcpxoF11f0am9Yq9p2qi+MoFx4NAR+viLr9nW83GAzQsYQsO4+ZrLy1Fq+ZMAZ9j0jAIj/MjBD9P5rY+PQGCLfO+/n9Or02dRMU+YqQINfdac+dTrdv1Lf8qMD9Uo/iPyGzHwId3QGC+8+Uxyw8a+pMsX5D/7swX0wF23+tNH8iTiGlfR5jVK/Xj1dsh62ng300iLLfa4x3SovD1528hbwMPZ00jcrOFOfWd2wBPdc/tNSqfUkhYiwVHzpWefVGYXtYl27N5L3/64QhtEsIUdyTmqC8Nb9+5uN+jC1IsO/ziXut10tXqpHEGK6zb86Q+LRp7+zE/wpHPHtvT8qMGKpqLOumLyAv+ETw14wDR3aKQVLW+xwdwo8XGxSt21pIU4CMdL5ul/P2hMEjDMhA3POITETPSkEYN0pIWMYPC/+rKOdH+PWwLyXbP+94CwSAVEXOMiNo7C2dQTbg8kdmE4WQJty+M6gh1zThv5iWf4co7m6Z4HuyL069NDF6a9wEzQ+OEDqMfDT2iDlWHCNVccn/mCsd8oCfHxIWelHul9R4ATaFrqcdNANPI01rE81yD0Z554NGjSG/55KWu1vyvalzbSX+wWsnf/waCTENq4kTiHzXDVug0BWQ3u25uaNq4fEK4G3HBVZ8KEiXbHERDVLnaXUYd9aSkpitatpsERbg/4BRO8rF59e5bu9q69+3XXkbyI2v+u1xFGmeMF0CKRQ2DBd0sDMmt//jlh/Y3ObsHrQfltrHVrWPrLGmU4FB9f4hPXoG5tZZipJRsYpqfOnE19ggwFkDbYTCIqGo08AwAoR0D/B3oq/mihkg55pDfNnf9dgNH6x59W0S3XV8xs9XesFUOL1QrWaMLOGE7688sMu45oRTt8hJkg1GyjNp16Dtcao+Tlmc/KGuOV5zpqxOUL49joO/A3UbVG5amzpDFBQGufUW9XYY0KQ7JwUomdRbXx0In38VsYthII/LBghP9h+SpdVq/wG/YLdh3AUAFvXBiBsai5NBKNPEtTbrg4zZuE75P4x67PLhBwxtQK7IYVJVk7Aidg4PhbGsFebpHaz83Lq2NymaCgsVWklK6XlaFGtvgEdj51Kim8TF687Z9p6sKZD1PK+OOGYdNIUQq0J9XkLwRVj1LuJydbGI+NMnLCa8agUl8f5PxU4kKi3nfczG/pDYTpd61k8QwmfMHwi4uNpeZNGlLrs5oRtL3zW5+laHPa+NrzaOSpzb+s5/D8L63zZOMGdQOICzOMFSUHDwe2d+NSEldZ64jZ1kXLfqE/N2cpBIVrkFVePm/DzjvOngyJOHHFt76MnCtLDJXO5ARKLAi0jygPmn+IvHk8s5dSpcKf255Sl0Bep4tgyICtiCMpRr+rNme3oNcnPMW+XKODdlbMJK1lAzx+mDGEVzlm2u7t/i9T+0g08jwRDJqEcMY05ouh1ILv9cPzwxFuA2OZ2muzF1Wkd8GAFj/+len006q12qJPifMwhqiy1zGxY1d/IuwVD60rmLhm3hfsVlTDbXEZvCFqcENjVAuPSua8rXWE/dLMPLxBNLOmTqDu/7pGt+dVsEeCV/y7PAUP4z+m3c0kGnmalVOaMFuIvmpMb7YuT29xMqaI7HWMybdEuRdErBD4cXXtPeCUJC08ZMQ1rpi0qn7wPA4HudlIG1tsrk569/5F3m0rKabe+f40FXFi1ukqotxolYEp+8rplQK808fxjKF2U72ylB/MONuwXm0a8ui9NPChXgRjNNbiQcPasm1HgLFYLW/7rj10V98n6d1Xx5oa7KORp1p2WY5mdsJg6Tdv3RZwC21QUWK2WNpocytvXTb8uVnZLhz2K63AGfcCHv5Ds8N6zdTUZEpj30C42hTw4v1+w8Zpo0f1POLEZUvJ4E0AW/BC641KxV1syAxGXL4c/oTU7AGUNHARO4QE18zCIVC46UNKPPO2cNFO+n34WsFhTyvhjNlGmxLSqrN92nyqVs4IIC6QFmxN0RB04ksv+ofyQ/5Y17du419swF9J8775McDvC64CXy9eTj1uuS5odaKRZ9DCTG7AkxyuAfinDCebtmwPiBLKXUCNXGhYR6mGa4+wL4YT7PZglL+zdhqDynX9xrsf8XpJvW0as88TRwwM8PtTC4DdqyKl/GwRpJb2jOq8zXJ7/13MLuamp8NTzR+mPfHs/o2ODqrC2zuXferUx9vU5K8ZzYurW2mzLMW5eV1KkfCEolx9x4PU5vJbdD/1M1rBMsZyGaOY7eRQnz/DZRSsR6sogWH7wgtaK9rYlx+8xt8zDHQwXrW25GVW2jpFI89wZf+xKStcFMV1xGxWTzuZgUxiecRhFLiRhJOsneGdo/HZNaNsMcxyGu+r1/DhwioA7U9br+W/BNq04O+HrZCCSUWv14w4ceHB4pq3I1usZn0Xk1ZBcjJvsRy8uIIpXaj41w+D4RIQ7snfRQVrx1LeL7wdcxmX7sSwjetkSKvmZwYUiy1nQskqk6/WmPnMYImKUcw6oDEOrjGVjc6MIcJvf2xWlgFp/XqghYBAtT/tej5jnhg6GJeQIM4fm7f6o0YjT3/mJ3DyAq+pNNNytVlOfHV6gEaC+x3btdFGU/Ym0wXwBfANJfCVW/JT6D6B9J0vaqssRdLmhdUNHzEhhRI822P83ckRPOOs/akjAcyMGp8fLxDVOTVY3kZXmWDxIhUe+EqIQM5xZ3WimPRM8hw67uficcRSoT2VkgpzTEvw7PmNCub2I8eqt3nf+YcotsX1HC9QM/J53VS4bhK5smZT0W72UcL3Fcso3uLcMqaITHQscl64aJkus8947yWs8TPTUDC0gv3IKDBoG+ViXvCamJCg63SYDXp52vv0yL3djdH91/A9uvXeAbqZQnTSeR9M8ceZ8OoMxZveH8AnqDMWVgcTh4m2gWUjqkQjTzXvEzlCcxgx/jWCfdBM5n37I/1n7vyAW/BWN2okZkPOFavWKS8Gs5cYMkV7YVPGcIJh6QW8dnDF6vW6qM+9NI1acz8z60+I+PqM2YqHvzYRXEBq8qaSELMF5TADYCiobT9tetgG5zMuFSnBVaATqQVrWFXGLOQPWRxf4oHsvLwMKD8lnWca7ea5sxHfvX0FFXx0F2U/m0HZL9Sm/C96UQFvEJg793o6PK0m/ypTwc/jqWgH2wE85eRd/iDtyZDzeQmOUdBJ7+3/NH224HtF84FrA4zZr7NXuvGDpUgLL/crL7nQmI2yKNpsn3XYK/CBVLO9pRYvW0n38ZYoRl+cbjf+U3E6VQvBDgNGwaJi7FtlJujkM3iPL6PATqJKNPJU8z7RI8gJ37KEsVvVRNBO2OIFpGYmd9x8TUBw+wvM7YsPsUsJXmCq1oo2x44ejzzxrLLgOSCjIAH3sG+dUfCBkP7Dx+sWzyMO9tPC0PCd/35mTEK333x8XSnsp2YE9eQzL5rODGPPt5488WJcyxpQSIQDovol6/yveDO2TyeWfMMCFIkflCibj2J9Lr4sIrutmDcbZIM1c1C4L1l7KY47Ujx/DDaR8+KMjuWZefcy/mxZyfh73zQejqllqeWBJ1HusfCEuldTpbYvckDFC9RzdKBgYmdyD7VpG1wRMKtnJhjedesziLBuziiYeWzBzqFnt2hKBw4dpr/4LYmdLY2CGb73p4zTLXvBP8P1PfqadlzEx0zTua2a01Ee5sDOgs3kjEQJb/P5s1737w4RjTzxLB/wjq9jX5ymeyz4kmG3BK2YfckadsI8fgatDxv+kRP4Z1wHqs0L2hMwM5utvur2B5Qhtja+eo42qVkjkw4dztFpylgvafTCx8tq0shBalL/ceTEKcoGfv4AzQnapk6tGtwWhUyMO023mYGW+Pl7r+ochaH14YVnJphRbNvmbEUDw6aEqv8gNDXjCxAfLVk0d7pZNiccVk6VpXTlJl12FxX9vZKKNi7SJ2CNrNjONjBbPE8m8pepyUUOG4zz+hk3JPL52Pe+OJGN9/yDjQxGfhCQRpxbF1DSWXcqITZHPG+15dLcPbVOBz3ci31j1gVdIhGKtJo0qk/9eYuaYIIZShhR+wwcqXQsbTxMbcO+EsrGgjft1IlP60gLeeCfd9SQR+jhIWMCtnTBLgL4ffjpV9ridOf4B8WWxdop/GjkqSu0HBf4mOw9d9ykaMCqKwAIFr9ggplbDJnNSAtphva7X3HaNUuPMoyTLxfx0qnL2F5Z2lUP6E94Waw22YlBbRuzshEGW+Rr44bpSAvhPW69XlnepbVJIhwCLdTodoF8Xhj9OOM2vCRSBfw1UEBkS4SBPr33CxRbu3mQjG1MVTHkjkkkZ0wV/lUlJ2WS05tJLk8mq9LVeI+fTNawUpjAVLUpMKvcJaPBcMqNytfPCYxgCPHk7yRvYeBsnSFaVC7hTY6tjEOt4DcrGPaxV58bGtDJjHHxRvzwzYnUhjWgsgjWrr31wihTPyvkg6Hd1AnDlQ8jlCVf2GKeHzXIdJ/1aORZlrqZxYX2CI02nJsK0oLoZ77ybFB7EuJc1LYN9eWdMoIRG+KoglnJ0bwzBQYHpRVoOm9NHl2qxdXaPNFP0N5mtjB86GTGy89Q2/PO1iYxPUf5aF+s3axIsY9giWaBNkccxbfqTO79W8hzMKtkyIaWCfcDpSKOegwZn7W2lBoUm9mS1yBWJnf2ZvLk8OyNmsaQh6/oIMVV73DSPg4LzQMfqUjntzXUbdXWwU8bIDCcwpaBoY52W5iAiJoAdKbru1xC0NDgm7SLv/hiJvCbAiGOYW3qwV63cX1SzaL5w2DA7XbjVcpSHgynDmebT7QgAYYp3XjfcWiAzRo38OdhPIl0ntjUzzhTi/WT2LFTKzDCY/JDK3V5iHbtFZ0IQ7+reOH4Tt6bDPuTGVzveLYwnfef6kpjmGTM7EHaPHEO22bLpo2V/Mz8nbDGEx+ZGDf834pDJz56gbWBWgHRdLm0gzbIfw6NtlP78xV3FGhxWWwCCKa544V592030Ghu8+rVjk+W+DM7doI6XdW5IzlZ29zOEzhOl34Ug76DPjyZX8JNGtZXPs7xDu9NrxX0w7u73agNith5VG1c2lrCT+vIy3dS8Q6eBQGRqGSinmuPIBxVwVKP6n3cU881x7ha7Sjj2rf5XizPNi6hnMX9yFvM/1javNT4HJbSaiAlN+2jreJJOcce3TDMlqj1O9gB8oiyrg++Wi2aNqJzecFyad7WoSoPOwSGJHACzWYjM8gQH3jA58lgUyuvYEcJzChl5+QqBJnMn++C9zhIS52lKmve0cizrHXQxsd2P7APwR4It4DaNWsouOEftzyCfLbyzg77+bNhldJSFKzQFiCKSAlsTdvYFwztDTwT4uKUz5PVq13TdGvtcOWCBGETRZ29vLSsfp1aVIdxKC8G4corzf0KIy61MtnT+1LRX0vJV5x3XKNSCUU9asmmlMQFgko6525KbT9UKSp/w9uU9+vzPJXJb4ogeWRes5xi4o8vUVLrKEdBQBA4tRGocOLyuYuoOGsN5cz6N3mPsp1JJSvtsZzEFZOUQZk9f/Yj7tr5PeWtnUzunI16kkT+XF5c9Qspo8NMf3w5EQQEAWsgUOHEpYXFufozyp03lrzObDauu4+TWFmIi4c6MUmVKK5+Z6rUaTQTVOBEac6ygeTau5iLYMc+G6/BOkZccKlIOrMXpbYYzGHlU/21zyPngoAgUDEInFTiUh6RPxVWsGIWf4sxi4p3r6finatLiEUd3qlHVSM7Rjr2Kg0pvkEnsqeeQYln3c58pVliZIKdj73lC7d+wiS5l5z8QVhP4Q6FKG3xaZTS7BFKanC3SSoJEgQEgVMRgZNPXCoqbPTz5rPxL++gEuIpOMhLhrbwcHKXsqNqTEZtcmQ24ZnAkp1LbfGpZE/DFCyYrGwCdwifO4/c/LWfgi1v8Ycz9lHm5YvLlonEFgQEgZOGwKlDXCcNAilYEBAErIYABmAigoAgIAhYCgEhLks1l1RWEBAEgIAQl/QDQUAQsBwCQlyWazKpsCAgCAhxSR8QBAQByyEgxGW5JpMKCwKCgBCX9AFBQBCwHAJCXJZrMqmwICAICHFJHxAEBAHLISDEZbkmkwoLAoKAEJf0AUFAELAcAkJclmsyqbAgIAgIcUkfEAQEAcshIMRluSaTCgsCgoAQl/QBQUAQsBwCQlyWazKpsCAgCAhxSR8QBAQByyEgxGW5JpMKCwKCgBCX9AFBQBCwHAJCXJZrMqmwICAICHFJHxAEBAHLISDEZbkmkwoLAoKAEJf0AUFAELAcAkJclmsyqbAgIAgIcUkfEAQEAcshIMRluSaTCgsCgsD/AFt/MVAlcetCAAAAAElFTkSuQmCC",width:75,height:24},opacity:.1,right:10,top:10},this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debug.log(this.TAG_NAME,"isMpeg4 is true, so set _opt.useWasm true and others params false"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!0),this.isPlayback()&&(ca(this._opt.useMSE)&&ca(this._opt.mseDecoderUseWorker)&&this.debug.log(this.TAG_NAME,"isPlayback and mseDecoderUseWorker is true, so set mseDecoderUseWorker false"),this._opt.mseDecoderUseWorker=!1,ca(this._opt.useWCS)&&ca(this._opt.wcsDecodeAudio)&&this.debug.log(this.TAG_NAME,"isPlayback and wcsDecodeAudio is true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1),this._opt.poster&&(this._opt.background=this._opt.poster),ua(this._opt.muted)&&(this._opt.isNotMute=!0),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker),ua(this._opt.mseDecoderUseWorker)&&this.debug.log(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debug.log(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and set _opt.recordType = webm"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!1,this._opt.recordType=w),this._opt.isNakedFlow&&(this.debug.log(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),co()&&(this.debug.log(this.TAG_NAME,"isFirefox is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e="VideoDecoder"in window,t=wo();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debug.warn(this.TAG_NAME,`\n useWCS is true,\n and supportWCS is ${e}, supportHevcWCS is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useWCS false`),this._opt.useWCS&&(this._opt.wcsDecodeAudio&&(this._opt.wcsDecodeAudio="AudioDecoder"in window,this._opt.wcsDecodeAudio||this.debug.warn(this.TAG_NAME,"wcsDecodeAudio is true, but not support so set wcsDecodeAudio false")),this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Eo()&&To(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"wcsUseVideoRender is true, but not support so set wcsUseVideoRender false")))}if(this._opt.useMSE){const e=function(){let e=!1;return"MediaSource"in self&&(e=!0),e}()||function(){let e=!1;return!("MediaSource"in self)&&"ManagedMediaSource"in self&&(e=!0),e}(),t=So()||function(){let e=!1;return!("MediaSource"in self)&&"ManagedMediaSource"in self&&(self.ManagedMediaSource.isTypeSupported(ci)||self.ManagedMediaSource.isTypeSupported(ui)||self.ManagedMediaSource.isTypeSupported(pi)||self.ManagedMediaSource.isTypeSupported(fi)||self.ManagedMediaSource.isTypeSupported(mi))&&(e=!0),e}();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debug.warn(this.TAG_NAME,`\n useMSE is true,\n and supportMSE is ${e}, supportHevcMSE is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useMSE false`)}}if(ua(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),ua(this._opt.useWCS)&&(this._opt.wcsDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debug.warn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.warn(this.TAG_NAME,"useMSE is true and forceNoOffscreen is false then forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.isWebrtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isWebrtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isHls&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isHls is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isAliyunRtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isAliyunRtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this.isStreamWebTransport()&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.wcsDecodeAudio&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"is wcsDecodeAudio true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),ua(this._opt.demuxUseWorker)&&(this._opt.mseDecoderUseWorker=!1),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.useMThreading&&(this._opt.useMThreading="undefined"!=typeof SharedArrayBuffer,this._opt.useMThreading||this.debug.warn(this.TAG_NAME,"useMThreading is true, but not support so set useMThreading false")),this._opt.useSIMD||-1!==this._opt.decoder.indexOf("-simd")){const e=WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),t=fa();this._opt.useSIMD=e&&ua(t),this._opt.useSIMD||this.debug.warn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var s;if(this._opt.useSIMD?-1===this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-simd-mt.js")):-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-mt.js")),-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard-not-wasm.js")):this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard-not-wasm.js")),ua(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),ua(this._opt.hasVideo)&&(this._opt.operateBtns.fullscreen=!1,this._opt.operateBtns.screenshot=!1,this._opt.operateBtns.record=!1,this._opt.operateBtns.ptz=!1,this._opt.operateBtns.quality=!1,this._opt.operateBtns.zoom=!1),this._opt.qualityConfig&&0===this._opt.qualityConfig.length&&this._opt.operateBtns.quality&&(this._opt.operateBtns.quality=!1,this.debug.warn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),ca(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),ua(this._opt.useWebGPU)&&this.debug.warn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._destroyed=!1,this._destroyLock=!1,this._closed=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._checkVisibleHiddenTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._tempTsList=[],this._allStatsData={},this._faceDetectActive=!1,this._objectDetectActive=!1,this._occlusionDetectActive=!1,this._imageDetectActive=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,this._latestAudioTimestamp=0,this._videoIframeIntervalTs=0,this._streamQuality=this._opt.defaultStreamQuality||"",!this._streamQuality&&this._opt.qualityConfig.length>0&&(this._streamQuality=this._opt.qualityConfig[0]||""),this._visibility=!0,this._lastestVisibilityChangeTimestamp=null,this._tempWorkerStats=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._tempStreamList=[],this._tempInnerPlayBgobj=null,this._flvMetaData=null,this._flvMetaDataFps=null,this._mseWorkerData={},ua(this._opt.useMSE)&&ua(this._opt.useWCS)&&!this.isWebrtcH264()&&!this.isOldHls()&&(this._opt.useWasm=!0),(this.isOldHls()||this.isWebrtcH264())&&(this._opt.hasVideo=!0,this._opt.hasAudio=!0),this._opt.hasVideo||(this._opt.useMSE=!1,this._opt.useWCS=!1),this._opt.useWasm&&(this._opt.useOffscreen?this._opt.wasmUseVideoRender=!1:this._opt.wasmUseVideoRender&&(this._opt.wasmUseVideoRender=go()&&Eo()&&To(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false"),this._opt.wasmUseVideoRender&&this._opt.wasmPlayAudioUseVideoRender&&(this._opt.wasmPlayAudioUseVideoRender="AudioData"in window,this._opt.wasmPlayAudioUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render play audio, but not support so set wasmPlayAudioUseVideoRender false"))),this._opt.useSIMD?this.debug.log(this.TAG_NAME,"use simd wasm"):this.debug.log(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.JessibucaProFaceDetector||this._opt.useObjectDetector&&window.JessibucaProObjectDetector||this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||this._opt.useImageDetector&&window.JessibucaProImageDetector)?(this.ai=new ov(this),this._opt.useFaceDetector&&window.JessibucaProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.JessibucaProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.JessibucaProImageDetector&&(this.imageDetectActive=!0)):(this._opt.operateBtns.aiObject=!1,this._opt.operateBtns.aiFace=!1,this._opt.operateBtns.aiOcclusion=!1),this._opt.useFaceDetector&&(this._opt.useWasm&&window.JessibucaProFaceDetector||this.debug.warn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.JbProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.JessibucaProObjectDetector||this.debug.warn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.JbProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.JessibucaProOcclusionDetector||this.debug.warn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.JessibucaProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.JessibucaProImageDetector||this.debug.warn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.JessibucaProImageDetector is null`)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=go()&&Eo()&&To(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Eo()&&To(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&ua(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!fo()&&(this._opt.hlsUseCanvasRender=!0),this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender=!0)),this._opt.useVideoRender=!1,this._opt.useCanvasRender=!1,this._opt.useWasm?this._opt.wasmUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useWCS?this._opt.wcsUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useMSE?this._opt.mseUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isOldHls()?this._opt.hlsUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0),this._opt.useCanvasRender&&this.useVideoPlayAudio()&&(this.debug.log(this.TAG_NAME,"useCanvasRender is true and useVideoPlayAudio() return true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1,this._opt.wasmPlayAudioUseVideoRender=!1),s=this,Object.defineProperty(s,"rect",{get:()=>{let e={};return s.$container&&(e=s.$container.getBoundingClientRect(),e.width=Math.max(e.width,s.$container.clientWidth),e.height=Math.max(e.height,s.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(s,e,{get:()=>s.rect[e]||0})})),this.events=new Sa(this),this._opt.hasVideo&&(this.video=new Ya(this),this.recorder=new nl(this)),this.isOldHls()?(this.hlsDecoder=new BA(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new cv(this):this._opt.isWebrtcForSRS?this.webrtc=new lv(this):this._opt.isWebrtcForOthers?this.webrtc=new dv(this):this.webrtc=new hv(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new uv(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new iv(this)),this.isWebrtcH265()&&(this.webrtc=new hv(this)),ua(Qo(this._opt))?this.decoderWorker=new pl(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new gn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isMute=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.isMSEAudioDecoderError=!1,this.isMSEPlaybackRateChangePause=!1,this.isMSECurrentMoreThanBufferedPause=!1,this.isPlayFailedAndPaused=!1,this._opt.useWCS&&(this.webcodecsDecoder=new Vh(this),!this._opt.hasAudio&&ua(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&ua(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new hc(this),!this._opt.hasAudio&&ua(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new nc(this),this._opt.contextmenuBtns.length>0&&ua(this._opt.disableContextmenu)&&lo()?this.contextmenu=new av(this):ca(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&lo()&&this.debug.warn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new sv(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new rv(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&ua(this._opt.supportLockScreenPlayAudio&&po())&&(this.keepScreenOn=new uc(this)),(e=>{try{const t=t=>{$o(t)===e.$container&&(e.emit(ot.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};kr.on("change",t),e.events.destroys.push((()=>{kr.off("change",t)}))}catch(e){}if(e.on(rt.decoderWorkerInit,(()=>{e.debug.log("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(rt.play,(()=>{e.loading=!1})),e.on(rt.fullscreen,(t=>{if(t)try{kr.request(e.$container).then((()=>{})).catch((t=>{e.debug.error("player","fullscreen request error",t),ao()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){ao()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{kr.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debug.error("player","fullscreen exit error",t),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),ao()&&e.on(rt.webFullscreen,(t=>{t?e.$container.classList.add("jb-pro-fullscreen-web"):e.$container.classList.remove("jb-pro-fullscreen-web"),e.emit(ot.fullscreen,e.fullscreen)})),e.on(rt.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[rt.timeUpdate,rt.currentPts,rt.videoSEI],i=[rt.stats,rt.playbackStats,rt.playbackTimestamp,rt.flvMetaData,rt.playToRenderTimes,rt.audioInfo,rt.videoInfo];Object.keys(rt).forEach((s=>{e.on(rt[s],(function(r){if(!t.includes(s)){i.includes(s)&&(r=JSON.stringify(r));for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n{e.on(nt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("jb-pro-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&ua(this._opt.hasAudio)&&ua(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&ua(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debug.log(this.TAG_NAME,"player is closed, so can not play"):(e&&ca(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(rt.playing,e),this.emit(rt.volumechange,this.volume),e?this.emit(rt.play):this.emit(rt.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this._isMute=0===this.volume):this.debug.warn(this.TAG_NAME,"set volume error, audio is null"))}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(rt.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.isDestroyedOrClosed()||this.zooming!==e&&(this.zoom||(this.zoom=new rv(this)),this._zooming=e,this.emit(rt.zooming,this.zooming))}get zooming(){return this._zooming}set recording(e){e?this.playing&&!this.recording&&(this.recorder&&this.recorder.startRecord(),this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!0})):this.recording&&(this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder&&this.recorder.stopRecordAndSave().then((()=>{})).catch((e=>{})))}get recording(){return!!this.recorder&&this.recorder.isRecording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set latestAudioTimestamp(e){null!==e&&(this._latestAudioTimestamp=e)}get latestAudioTimestamp(){return this._latestAudioTimestamp}get videoTimestamp(){return this._stats.currentPts||this._stats.ts}set streamQuality(e){this.streamQuality!==e&&(this._streamQuality=e,this.emit(rt.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return ca(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let s=Qt;return ua(i)&&ua(t)?s=Qt:ua(i)&&ca(t)?s=Xt:ca(i)&&ca(t)&&(s=Zt),s}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(rt.visibilityChange,e),this._lastestVisibilityChangeTimestamp=Xr(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(rt.playbackPause,e),this.emit(rt.playbackPauseOrResume,e))}get playbackPause(){return this.isPlayback()&&this._playbackPause}set videoIframeIntervalTs(e){this._videoIframeIntervalTs=e}get videoIframeIntervalTs(){return this._videoIframeIntervalTs}set faceDetectActive(e){this._faceDetectActive!==e&&(this._faceDetectActive=e,this.emit(rt.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(rt.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(rt.occlusionDetectActive,e))}get occlusionDetectActive(){return this._occlusionDetectActive}set imageDetectActive(e){this._imageDetectActive!==e&&(this._imageDetectActive=e)}get imageDetectActive(){return this._imageDetectActive}get isUseWorkerDemuxAndDecode(){return this.stream&&this.stream.getStreamType()===y}isDestroyed(){return this._destroyed}isDestroying(){return this._destroyed&&this._destroyLock}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isLoading(){return this.loading}isPlaying(){let e=!1;return this._opt.playType===b?e=this.playing:this._opt.playType===_&&(e=ua(this.playbackPause)&&this.playing),e}updateOption(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._opt=Object.assign({},this._opt,e),ca(t)&&this.decoderWorker&&Object.keys(e).forEach((t=>{this.decoderWorker.updateWorkConfig({key:t,value:e[t]})}))}init(){return new Promise(((e,t)=>{this.video||this._opt.hasVideo&&(this.video=new Ya(this)),this.audio||this._opt.hasAudio&&(this.audio=new gn(this)),this.stream||(this.stream=new Tn(this)),this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new BA(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new cv(this):this._opt.isWebrtcForSRS?this.webrtc=new lv(this):this._opt.isWebrtcForOthers?this.webrtc=new dv(this):this.webrtc=new hv(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new uv(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new Mh(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new Vh(this))),this._opt.useMSE&&ua(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new hc(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new iv(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new hv(this))),this.decoderWorker?this.loaded?e():this.once(rt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug&&this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):ua(Qo(this._opt))?(this.decoderWorker=new pl(this),this.once(rt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug&&this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))):e())}))}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!e&&!this._opt.url)return s("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=Xr(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debug.log(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=Xr(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(nt.fetchError,(e=>{this.emitError(nt.fetchError,e)})),this.stream.once(nt.websocketError,(e=>{this.emitError(nt.websocketError,e)})),this.stream.once(rt.streamEnd,(e=>{this.emit(rt.streamEnd,e)})),this.stream.once(nt.hlsError,(e=>{this.emitError(nt.hlsError,e)})),this.stream.once(nt.webrtcError,(e=>{this.emitError(nt.webrtcError,e)})),this.stream.once(rt.streamSuccess,(()=>{i(),this._times.streamResponse=Xr(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval();{const e=Number("1")||1;setTimeout((()=>{this.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码)"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload()}),60*e*60*1e3)}})),this.stream.fetchStream(e,t)):(this.debug&&this.debug.warn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),s("this.stream is null"))})).catch((e=>{s(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debug.log(this.TAG_NAME,`playForControl() and pauseAndNextPlayUseLastFrameShow is ${this._opt.pauseAndNextPlayUseLastFrameShow}`),this._opt.pauseAndNextPlayUseLastFrameShow&&this._tempInnerPlayBgobj&&this._tempInnerPlayBgobj.loadingBackground&&this.updateOption({loadingBackground:this._tempInnerPlayBgobj.loadingBackground,loadingBackgroundWidth:this._tempInnerPlayBgobj.loadingBackgroundWidth,loadingBackgroundHeight:this._tempInnerPlayBgobj.loadingBackgroundHeight}),this.play().then((t=>{e(t)})).catch((e=>{t(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()})).catch((e=>{t(e)}))}))}resumeAudioAfterPause(){this.lastVolume&&ua(this._isMute)&&(this.volume=this.lastVolume)}async _close(){this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!1,this.playing=!1,this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.isPlayback()&&this.playback&&this.playback.clearStatsInterval(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(await this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(await this.audio.destroy(),this.audio=null)}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{e?this.close().then((()=>{t()})).catch((e=>{i(e)})):this._close().then((()=>{t()})).catch((e=>{i(e)}))}))}pauseForControl(){return new Promise(((e,t)=>{if(this.debug.log(this.TAG_NAME,"_pauseInner()"),this._opt.pauseAndNextPlayUseLastFrameShow&&this.video){const e=this.video.screenshot("","png",.92,"base64");if(e){const t=this.getVideoInfo();t?(this.debug.log(this.TAG_NAME,`pauseForControl() and loadingBackground width is ${t.width} and height is ${t.height}`),this._tempInnerPlayBgobj={loadingBackground:e,loadingBackgroundWidth:t.width,loadingBackgroundHeight:t.height}):this.debug.warn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debug.warn(this.TAG_NAME,"pauseForControl() and loadingBackground is null")}this.pause().then((t=>{e(t)})).catch((e=>{t(e)}))}))}isAudioMute(){let e=!0;return this.audio&&(e=this.audio.isMute),e}isAudioNotMute(){return!this.isAudioMute()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video&&this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}cancelRecord(){return new Promise(((e,t)=>{this.recorder||t("recorder is null"),this.recording&&(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})))}))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.recorder||s("recorder is null"),this.recording?(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)}))):s("recorder is not recording")}))}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(t=!0)})),(this._opt.showBandwidth||t)&&(e=!0),this._opt.extendOperateBtns&&this._opt.extendOperateBtns.length>0&&(e=!0),this.isPlayback()&&this._opt.playbackConfig.showControl&&(e=!0),this._opt.controlHtml&&(e=!0),e}useWasmDecode(){return ua(this._opt.useMSE)&&ua(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&ua(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&ua(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(ua(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed"));if(ua(this.isHistoryFpsListAllZero()))return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero"));if(0!==this._stats.fps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`));const e=this._historyFpsList.join(",");this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 and\n pause and emit delayTimeout event and\n current vbps is ${this._stats.vbps} and\n current fps is ${this._stats.fps} and\n history FpsList is ${e} and\n current visibility is ${this.visibility} and`),this.emit(rt.timeout,rt.delayTimeout),this.emit(rt.delayTimeout)}else this.debug.log(this.TAG_NAME,`checkHeartTimeout$2 playbackPause is ${this.playbackPause}, playing is ${this.playing}`)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing?this.debug.warn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debug.warn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(rt.timeout,rt.loadingTimeout),this.emit(rt.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debug.log(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(rt.start)),this.playing||(this.playing=!0))}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.log(this.TAG_NAME,"updateStats but player is closed or destroyed"));if(this._startBpsTime||(this._startBpsTime=Xr()),xo(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,this._tempTsList.push(t),null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}xo(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),xo(e.mseTs)&&(this._stats.mseTs=e.mseTs),xo(e.buf)&&(this._stats.buf=e.buf),xo(e.netBuf)&&(this._stats.netBuf=e.netBuf),xo(e.currentPts)&&(this._stats.currentPts=e.currentPts),e.fps&&(this._stats.fps+=1),e.dfps&&(this._stats.dfps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps),e.workerStats&&(this._tempWorkerStats=e.workerStats),e.isDropping&&(this._stats.isDropping=e.isDropping),e.mseVideoBufferDelayTime&&(this._stats.mseVideoBufferDelayTime=parseInt(1e3*e.mseVideoBufferDelayTime,10));const t=Xr();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,s=0,r=0,o=0,a=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.mseDecoder.checkSourceBufferStore(),s=s.toFixed(2),o=this.mseDecoder.getDecodePlaybackRate(),a=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.video.checkSourceBufferStore(),s=s.toFixed(2),o=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(r=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10));let n=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),n=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0,m=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.streamBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay,m=this._tempWorkerStats.wasmDecodeDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let g=0,y=0;this.audio&&this.audio.bufferList&&(g=this.audio.bufferList.length,y=parseInt(g*this.audio.oneBufferDuration,10));let A=0,b=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(A=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;b=parseInt(t*A+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const _=v+this._stats.netBuf;this.isOldHls()&&(this._stats.fps=this.hlsDecoder.getFps()),this._stats.fps>this._stats.maxFps&&(this._stats.maxFps=this._stats.fps);let S=this.getVideoCurrentTime();const w=this._stats.videoCurrentTime;let E=-1;w&&S&&(E=(S-w).toFixed(2),S=S.toFixed(2));let k=0;this.audioTimestamp>0&&(k=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:g,audioBufferDelayTs:y,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:A,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:b,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,streamBuffer:h,mseDelay:i,mseStore:s,mseDecodeDiffTimes:r,mseDecodePlaybackRate:o,msePendingBuffer:a,wcsDecodeDiffTimes:r,wasmDecodeDelay:m,hlsDelay:i,hlsDemuxLength:n,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:_,isStreamTsMoreThanLocal:p,videoCurrentTime:S,videoCurrentTimeDiff:E,audioSyncVideo:k});let C=null,D=null,x="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){C=function(e,t){let i=3;const s=t||25;return e<.33*s?i=0:e<.5*s?i=1:e<.83*s&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=C;const e=this.checkVideoSmooth(this._allStatsData);x=e.reason,D=e.result,this._allStatsData.videoSmooth=D}this.emit(rt.stats,this._allStatsData),this._allStatsData.streamBuffer>this._opt.flvDemuxBufferSizeMaxLarge&&this.getDemuxType()===T&&this.emit(nt.flvDemuxBufferSizeTooLarge,this._allStatsData.streamBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._stats.videoCurrentTimeDiff),xo(C)&&this.emit(rt.performance,C),xo(D)&&this.emit(rt.videoSmooth,D,x)):this._opt.hasAudio&&this.updateHistoryFpsList(this._stats.abps,0),this._stats.fps=0,this._stats.dfps=0,this._stats.abps=0,this._stats.vbps=0,this._tempTsList=[],this._stats.isDropping=!1,this._startBpsTime=t}resetStats(){this._startBpsTime=null,this._playingStartTimestamp=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={},this._tempTsList=[]}checkVideoSmooth(e){let t=!0,i="";if(this._opt.videoBuffer,this._opt.videoBufferDelay,this.isWebrtcH264()||this.isOldHls())return{result:t,reason:i};if(0===e.vbps&&ua(this._opt.isHls)&&(i="vbpsIsZero",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const s=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),r=s.reduce(((e,t)=>e+t),0)/s.length,o=.83*r;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff){if(i="videoCurrentTimeDiffIsNotNormal",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),0===Number(e.videoCurrentTimeDiff)){const e=this.isVideoPlaying(),t=this.getVideoCurrentTime(),i=this.getVideoBufferTimeRange();let s=-1,r=-1;i&&(s=i.start,r=i.end),this.debug.log(this.TAG_NAME,`checkVideoSmooth and videoCurrentTimeDiff is 0 so check\n videoCurrentTime is ${t} and isPlaying is ${e}\n bufferStartTime is ${s} and bufferEndTime is ${r}`)}t=!1}return{result:t,reason:i}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}clearBufferDelay(){this._opt.useWasm?this.decoderWorker&&this.decoderWorker.clearWorkBuffer(!0):this.demux&&this.demux.clearBuffer(!0)}doDestroy(){this.emit(rt.beforeDestroy)}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.log(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed"));const e=this.getPlayToRenderTimes();this.emit(rt.playToRenderTimes,e)}getPlayToRenderTimes(){const e=this._times;return e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart>0?e.streamResponse-e.streamStart:0,e.demuxTimestamp=e.demuxStart-e.streamResponse>0?e.demuxStart-e.streamResponse:0,e.decodeTimestamp=e.decodeStart-e.demuxStart>0?e.decodeStart-e.demuxStart:0,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,e}getOption(){return this._opt}getPlayType(){return this._opt.playType}isPlayer(){return this._opt.playType===b}isPlayback(){return this._opt.playType===_}isDemuxSetCodecInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.hasInit:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.hasInit),e}isDemuxDecodeFirstIIframeInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.isDecodeFirstIIframe:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.isDecodeFirstIIframe),e}isAudioPlaybackRateSpeed(){let e=!1;return this.audio&&(e=this.audio.isPlaybackRateSpeed()),e}getPlayingTimestamp(){return this._stats.pTs}getRecordingType(){let e=null;return this.recorder&&(e=this.recorder.getType()),e}getRecordingByteLength(){let e=0;return this.recording&&(e=this.recorder.getToTalByteLength()),e}getRecordingDuration(){let e=0;return this.recording&&(e=this.recorder.getTotalDuration()),e}getDecodeType(){let e="";const t=this.getOption();return this.isWebrtcH264()?G:this.isAliyunRtc()?H:this.isOldHls()?V:(t.useMSE&&(e+=U+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=F+" "),t.useWasm&&(e+=N+" ",t.useSIMD&&(e+=j+" "),t.useMThreading&&(e+=z+" ")),t.useOffscreen&&(e+=O+" "),e)}getDemuxType(){return this._opt.demuxType}getRenderType(){let e="";return this.video&&(e=this.video.getType()),e}getCanvasRenderType(){let e="";return this.video&&(e=this.video.getCanvasType()),e}getAudioEngineType(){let e="";return this.audio&&(e=this.audio.getEngineType()),e}getStreamType(){let e="";return this.stream&&(e=this.stream.getStreamType()),e}getAllStatsData(){return this._allStatsData}isFlvDemux(){return this._opt.demuxType===T}isM7SDemux(){return this._opt.demuxType===k}isNakedFlowDemux(){return this._opt.demuxType===R}isMpeg4Demux(){return this._opt.demuxType===P}isTsDemux(){return this._opt.demuxType===I}isFmp4Demux(){return this._opt.demuxType===L}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(rt.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case Qt:t.isFullResize=!1,t.isResize=!1;break;case Xt:t.isFullResize=!1,t.isResize=!0;break;case Zt:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(rt.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(rt.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e,ua(e)&&this.video&&this.video.addAiContentToCanvas([])}objectDetect(e){this.objectDetectActive=e,ua(e)&&this.video&&this.video.addAiContentToCanvas([])}occlusionDetect(e){this.occlusionDetectActive=e}downloadNakedFlowFile(){this.demux&&this.demux.downloadNakedFlowFile&&this.demux.downloadNakedFlowFile()}downloadFmp4File(){this.demux&&this.demux.downloadFmp4File&&this.demux.downloadFmp4File()}downloadMpeg4File(){const e=new Blob([this._tempStreamList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".mpeg4",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadMpeg4File",e)}}hasCacheOnGopBuffer(){const e=this.videoIframeIntervalTs,t=this._allStatsData.demuxBuffer,i=this._allStatsData.maxFps;let s=!1;if(e&&t&&i){s=1e3/i*t>e}return s}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.video&&this.video.addContentToCanvas(e)}addContentToContainer(){}sendWebsocketMessage(e){const t=this.getStreamType();t===f||t===y+" "+f?this.stream.sendMessage(e):this.debug.warn(this.TAG_NAME,`sendWebsocketMessage: stream type is not websocket, current stream type is ${this.getStreamType()}`)}checkIsInRender(){const e=this._stats;return e.vbps>0&&e.fps>0}setControlHtml(e){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML=e)}clearControlHtml(){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML="")}updateWatermark(e){this.singleWatermark||(this.singleWatermark=new Ua(this)),this.singleWatermark&&this.singleWatermark.update(e)}removeWatermark(){this.singleWatermark&&this.singleWatermark.remove()}getVideoInfo(){let e=null;return this.video&&(e=this.video.getVideoInfo()),e}getAudioInfo(){let e=null;return this.audio&&(e=this.audio.getAudioInfo()),e}getVideoPlaybackQuality(){let e=null;return this.video&&(e=this.video.getPlaybackQuality()),e}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(rt.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||ua(this.visibility)||(this._historyFpsList.length>this._opt.heartTimeout&&(this._historyFpsList.shift(),this._historyVideoDiffList.shift()),this._historyFpsList.push(e),this._historyVideoDiffList.push(t),this.isHistoryFpsListAllZero()&&this.checkHeartTimeout$2())}isHistoryFpsListAllZero(){let e=!0;if(this._historyFpsList.length0){e=!1;break}if(e)for(let t=0;t0){e=!1;break}return e}isUseHls265(){return ca(this._opt.isHls)&&ca(this._opt.supportHls265)}isHls(){return ca(this._opt.isHls)}isOldHls(){return ca(this._opt.isHls)&&ua(this._opt.supportHls265)}isWebrtcNotH265(){return ca(this._opt.isWebrtc)&&ua(this._opt.isWebrtcH265)}isWebrtcH264(){return ca(this._opt.isWebrtc)&&ua(this._opt.isWebrtcH265)}isWebrtcH265(){return ca(this._opt.isWebrtc)&&ca(this._opt.isWebrtcH265)}isAliyunRtc(){return ca(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===g}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&ca(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&ca(this._opt.useWCS)}isPlaybackUseWCS(){return this.isPlayback()&&ca(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&ca(this._opt.useMSE)}isPlaybackUseWASM(){return this.isPlayback()&&ca(this._opt.useWasm)}isPlayUseMSE(){return this.isPlayer()&&ca(this._opt.useMSE)}isMSEDecodeAudio(){return this._opt.useMSE&&this._opt.mseDecodeAudio}isWCSDecodeAudio(){this._opt.useWCS&&this._opt.wcsDecodeAudio}isInWebFullscreen(){return this._opt.useWebFullScreen&&ao()&&this.fullscreen}getPlaybackRate(){let e=1;return ca(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return ca(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame&&!this.isMSEDecodeAudio()}pushTempStream(e){const t=new Uint8Array(e);this._tempStreamList.push(t)}updateLoadingText(e){this.loading&&this.control&&this.control.updateLoadingText(e)}getVideoCurrentTime(){let e=0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoCurrentTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoCurrentTime()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoCurrentTime():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoCurrentTime())),e}getVideoBufferTimeRange(){let e=null;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoBufferTimeRange():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferTimeRange()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoBufferTimeRange():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoBufferTimeRange())),e}isVideoPlaying(){let e=!0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.isVideoPlaying():this.isMseDecoderUseWorker()&&(e=this.video.isVideoPlaying()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.isVideoPlaying():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.isVideoPlaying())),e}addMemoryLog(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s0){const e=t/1e3;this._flvMetaDataFps=e}}Do(e.hasAudio)&&ua(e.hasAudio)&&(this.debug.log("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),Do(e.hasVideo)&&ua(e.hasVideo)&&(this.debug.log("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo)}this.emit(rt.flvMetaData,e)}getMetaData(){return this._flvMetaData}getExtendBtnList(){return this.control.getExtendBtnList().map((e=>({name:e.name,$container:e.$iconContainer,$btn:e.$iconWrap,$activeBtn:e.$activeIconWrap})))}getCpuLevel(){let e=null;return this.pressureObserverCpu&&(e=this.pressureObserverCpu.getCurrentCpuState()),e}isRecordTypeFlv(){return this.recorder&&this._opt.recordType===E}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===S}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===w}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return ca(this._opt.useMSE)}isUseWCS(){return ca(this._opt.useWCS)}isUseWASM(){return ca(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&ca(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getCurrentVideoAndAudio(){return{video:this.getRenderCurrentPts(),audio:this.audioTimestamp}}getMseVideoBufferDelayTime(){let e=0;return this._opt.useMSE&&this.mseDecoder&&(this.mseDecoder?e=this.mseDecoder.getVideoBufferDelayTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferDelayTime()),e=parseInt(1e3*e,10)),e}updateCurrentPts(e){this.updateStats({currentPts:e}),this.emit(rt.currentPts,e)}getRenderCurrentPts(){let e=0;return e=this._stats.currentPts?this._stats.currentPts:this.videoTimestamp-this.getMseVideoBufferDelayTime(),e}openSyncAudioAndVideo(){return this._opt.syncAudioAndVideo&&this._opt.hasVideo}showTipsMessageByCode(e){if(this.control){const t=this._opt.showMessageConfig[e]||"未知异常";this.control.showTipsMessage(t,e)}}showTipsMessageByContent(e){this.control&&e&&this.control.showTipsMessage(e)}hideTipsMessage(){this.control&&this.control.hideTipsMessage()}decoderCheckFirstIFrame(){ca(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}setPtzPosition(e){this.control&&this.control.updatePtzPosition(e)}setRotate(e){this.updateOption({rotate:e}),this.resize()}setPlayFailedAndPaused(){this.isPlayFailedAndPaused=!0}getMseMineType(){let e={};return this.mseDecoder&&(e=this.mseDecoder.getMimeType()),e}getMaxDelayTs(){return this._opt.videoBuffer+this._opt.videoBufferDelay}isMseVideoStateInited(){return!this.video||this.video.getReadyStateInited()}showPlayBtn(){this.control&&this.control.showPlayBtn()}toggleControlExtendBtn(e,t){this.control&&this.control.toggleExtendBtn(e,t)}getControlExtendBtnActive(e){let t=!1;return this.control&&(t=this.control.getExtendBtnActive(e)),t}useVideoPlayAudio(){return this._opt.hasAudio&&(this._opt.useWCS&&this._opt.wcsDecodeAudio||this._opt.useWasm&&this._opt.wasmPlayAudioUseVideoRender)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class gv{constructor(e){this.player=e,this.globalSetting=null;const t=Ao();this.defaultSettings={watermark_id:`JbPro_${t}`,watermark_prefix:`JbPro_mask_${t}`,watermark_txt:"JbPro 测试水印",watermark_x:0,watermark_y:0,watermark_rows:0,watermark_cols:0,watermark_x_space:0,watermark_y_space:0,watermark_font:"微软雅黑",watermark_color:"black",watermark_fontsize:"18px",watermark_alpha:.15,watermark_width:150,watermark_height:100,watermark_angle:15,watermark_parent_width:0,watermark_parent_height:0,watermark_parent_node:null},this.load({text:decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),color:"white"}),this.player.debug.log("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings=null,this.player.debug.log("Watermark","destroy")}remove(){}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debug.log("Watermark","resize()"),this.globalSetting&&this._loadMark(this.globalSetting)}_loadMark(){let e=this.defaultSettings;if(1===arguments.length&&"object"==typeof arguments[0]){var t=arguments[0]||{};for(let i in t)t[i]&&e[i]&&t[i]===e[i]||(t[i]||0===t[i])&&(e[i]=t[i])}var i=document.getElementById(e.watermark_id);i&&i.parentNode&&i.parentNode.removeChild(i);var s="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,r=s||document.body;const o=r.getBoundingClientRect();var a=Math.max(r.scrollWidth,r.clientWidth,o.width),n=Math.max(r.scrollHeight,r.clientHeight,o.height),l=arguments[0]||{},d=r;(l.watermark_parent_width||l.watermark_parent_height)&&d&&(e.watermark_x=e.watermark_x+0,e.watermark_y=e.watermark_y+0);var h=document.getElementById(e.watermark_id),c=null;if(h)h.shadowRoot&&(c=h.shadowRoot);else{(h=document.createElement("div")).id=e.watermark_id,h.setAttribute("style","pointer-events: none !important; display: block !important"),c="function"==typeof h.attachShadow?h.attachShadow({mode:"open"}):h;var u=r.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?r.insertBefore(h,u[p]):r.appendChild(h)}e.watermark_cols=parseInt((a-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((a-e.watermark_x-e.watermark_width*e.watermark_cols)/e.watermark_cols);e.watermark_x_space=m?e.watermark_x_space:m,e.watermark_rows=parseInt((n-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var g,y,A,b=parseInt((n-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=b?e.watermark_y_space:b,s?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1)):(f=0+e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var v=0;v\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(v)));var S=document.createElement("div");S.style.position="absolute",S.style.left="0px",S.style.top="0px",S.style.overflow="hidden",S.style.zIndex="9999999",S.style.width=a+"px",S.style.height=n+"px",S.style.display="block",S.style["-ms-user-select"]="none",S.style.backgroundImage=`url(data:image/svg+xml;base64,${_})`,c.appendChild(S)}_removeMark(){const e=this.defaultSettings;var t=document.getElementById(e.watermark_id);if(t){var i=t.parentNode;i&&i.removeChild(t)}}_calcTextSize(){const{watermark_txt:e,watermark_font:t,watermark_fontsize:i}=this.globalSetting,s=document.createElement("span");s.innerHTML=e,s.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(s);const r={width:s.offsetWidth,height:s.offsetHeight};return s.remove(),r}}const Av="right",bv="left",vv="up",_v="down",Sv="leftUp",wv="leftDown",Ev="rightUp",Tv="rightDown",kv="zoomExpand",Cv="zoomNarrow",Dv="apertureFar",xv="apertureNear",Rv="focusFar",Lv="focusNear",Pv="setPos",Bv="calPos",Iv="delPos",Mv="wiperOpen",Uv="wiperClose",Fv="cruiseStart",Ov={stop:0,fiStop:0,right:1,left:2,up:8,down:4,leftUp:10,leftDown:6,rightUp:9,rightDown:5,zoomExpand:16,zoomNarrow:32,apertureFar:72,apertureNear:68,focusFar:66,focusNear:65,setPos:129,calPos:130,delPos:131,wiperOpen:140,wiperClose:141,setCruise:132,decCruise:133,cruiseStart:136,cruiseStop:0},Nv=[25,50,75,100,125,150,175,200,225,250],jv=[1,2,3,4,5,6,7,8,9,16],zv=[16,48,80,112,144,160,176,192,208,224];function Gv(e){const{type:t,speed:i=5,index:s=0}=e,r=function(e){return Nv[(e=e||5)-1]||Nv[4]}(i);let o,a,n,l;if(o=Ov[t],!o)return"";switch(t){case vv:case _v:case Dv:case xv:n=r;break;case Av:case bv:case Rv:case Lv:a=r;break;case Sv:case wv:case Ev:case Tv:a=r,n=r;break;case kv:case Cv:l=function(e){return zv[(e=e||5)-1]||zv[4]}(i);break;case Bv:case Iv:case Pv:n=Vv(s);break;case Uv:case Mv:a=1;break;case Fv:a=Vv(s)}return function(e,t,i,s){let r=[];r[0]=165,r[1]=15,r[2]=1,r[3]=0,r[4]=0,r[5]=0,r[6]=0,e&&(r[3]=e);t&&(r[4]=t);i&&(r[5]=i);s&&(r[6]=s);return r[7]=(r[0]+r[1]+r[2]+r[3]+r[4]+r[5]+r[6])%256,function(e){let t="";for(let i=0;it)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=Wv(e[r]):"object"==typeof e[r]?s[r]=$v(e[r],t,i+1):s[r]=e[r]);return s}}function Jv(){return(new Date).toLocaleString()}class qv{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player=e,this.TAG_NAME="MemoryLogger",this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[],this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.clear(),this.player.debug.log(this.TAG_NAME,"destroy")}clear(){this.logSize=0,this.logTextArray=[]}logCache(){let e="";try{for(var t=arguments.length,i=new Array(t),s=0;s$v(e)));e="[JbPro] "+Jv()+JSON.stringify(r)}catch(e){return}if(this.logSize+=e.length,this.logTextArray.push(e),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLog(){return this.logTextArray.join("\n")}getLogBlob(){const e=this.getLog();return new Blob([e],{type:"text/plain"})}download(){const e=this.getLog();this.clear();const t=new Blob([e],{type:"text/plain"});Va(t,"JbPro-"+Jv()+".log")}}class Kv extends wa{constructor(e){super(),this.player=e,this.TAG_NAME="Network",this.online=this.isOnline(),this.prevOnline=this.online,this.interval=null,this._initListener(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this._stopCheck(),window.removeEventListener("online",this._updateOnlineStatus),window.removeEventListener("offline",this._updateOfflineStatus),this.player.debug.log(this.TAG_NAME,"destroy")}_initListener(){window.addEventListener("online",this._updateOnlineStatus.bind(this)),window.addEventListener("offline",this._updateOfflineStatus.bind(this))}_stopCheck(){this.interval&&(clearInterval(this.interval),this.interval=null)}_startCheck(){this.interval=setInterval((()=>{this.isOnline()!==this.prevOnline&&(this.isOnline()?this._updateOnlineStatus():this._updateOfflineStatus())}),1e3)}_updateOnlineStatus(){this.prevOnline=this.online,this.online=!0,this.logStatus(),this.emit("online")}_updateOfflineStatus(){this.prevOnline=this.online,this.online=!1,this.logStatus(),this.emit("offline")}logStatus(){const e=this.prevOnline?"online":"offline",t=this.online?"online":"offline";this.player.debug.log(this.TAG_NAME,`prevOnline: ${this.prevOnline}, online: ${this.online}, status: ${e} -> ${t}`)}isOnline(){return void 0===navigator.onLine||navigator.onLine}isOffline(){return!this.isOnline()}}class Yv extends wa{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},this.TAG_NAME="JbPro",this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`JbPro option "${t}" can not be undefined`)})),this.originalOptions=e;const t=la();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid=aa()),this.debug=new wr(this);let s=e.container;if("string"==typeof e.container&&(s=document.querySelector(e.container)),!s)throw this.debug.error("JbPro","JbPro need container option and now container is",e.container),new Error("JbPro need container option");if(ua(i.isLive)){const e=document.createElement("video");return e.muted=!0,e.setAttribute("controlsList","nodownload"),e.disablePictureInPicture="disablePictureInPicture",e.style.position="absolute",e.style.top=0,e.style.left=0,e.style.height="100%",e.style.width="100%",s.appendChild(e),this.$videoElement=e,this.$container=s,void(this._opt=i)}if(i.decoder&&ua(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debug.error("JbPro",`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===s.nodeName||"VIDEO"===s.nodeName)throw this.debug.error("JbPro",`JbPro container type can not be ${s.nodeName} type`),new Error(`JbPro container type can not be ${s.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debug.error("JbPro",`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(this._checkHasCreated(s))throw this.debug.error("JbPro","JbPro container has been created and can not be created again",s),new Error("JbPro container has been created and can not be created again",s);if(!s.classList)throw this.debug.error(this.TAG_NAME,"JbPro container is invalid, must be a DOM Element",s),new Error("JbPro container is invalid, must be a DOM Element",s);var r,o,a;if(s.classList.add("jb-pro-container"),r=s,o=ee,a=Ao(),r&&(r.dataset?r.dataset[o]=a:r.setAttribute("data-"+o,a)),delete i.container,xo(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),xo(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),xo(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),xo(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),xo(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),xo(i.timeout)&&(Co(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),Co(i.heartTimeout)&&(i.heartTimeout=i.timeout)),xo(i.autoWasm)&&(Co(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),Co(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm),Co(i.mseWaitVideoCanplayAutoWasm)&&(i.mseWaitVideoCanplayAutoWasm=i.autoWasm)),xo(i.aiFaceDetectLevel)&&Co(i.aiFaceDetectWidth)){const e=Vs[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(xo(i.aiObjectDetectLevel)&&Co(i.aiObjectDetectWidth)){const e=Hs[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}ca(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this.debug.log("JbPro","init"),i.videoBuffer>1e4&&this.debug.warn(this.TAG_NAME,`videoBuffer ${i.videoBuffer/1e3}s is too long, will black screen for ${i.videoBuffer/1e3}s , it is recommended to set it to less than 10s`),this._destroyed=!1,this._destroyLock=!1,this.$container=s,this._tempPlayBgObj={},this._tempVideoLastIframeInfo={},this._tempPlayerIsMute=!0,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this.events=new Sa(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new yv(this):this.watermark=new gv(this),this.memoryLogger=new qv(this),this.network=new Kv(this),this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[],this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.widthOrHeightChangeReplayDelayTimeout=null,this.streamErrorReplayDelayTimeout=null,this.streamEndReplayDelayTimeout=null,this.playbackPauseTimeout=null,this.playbackResumeTimeout=null,this.initDecoderWorkerTimeout=null,this.$loadingBgImage=null,this.$loadingBg=null,this._initOnLock(),this._initPlayer(s,i),this._initWatermark(),this._initNetwork(),this.debug.log("JbPro",'init success and version is "6-18-2024"'),console.log('JbPro Version is "6-18-2024" '+(ua(oo)?"and is Trial Version[试用版本]":""))}destroy(){return new Promise(((e,t)=>{if(this.debug&&this.debug.log("JbPro","destroy()"),this._destroyLock)return t("JbPro is destroying");this._destroyLock=!0,this._destroyed=!0,this.off(),this._removeTimeout(),this._initOnLock(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$container&&this.$container.removeChild(this.$videoElement),this.$videoElement=null),this._removeLoadingBackgroundForIOS(),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),this._destroyLock=!1,e()})).catch((e=>{this._destroyLock=!1,t(e)})):(this._destroy(),this._destroyLock=!1,e())}))}_removeTimeout(){this.widthOrHeightChangeReplayDelayTimeout&&(clearTimeout(this.widthOrHeightChangeReplayDelayTimeout),this.widthOrHeightChangeReplayDelayTimeout=null),this.streamErrorReplayDelayTimeout&&(clearTimeout(this.streamErrorReplayDelayTimeout),this.streamErrorReplayDelayTimeout=null),this.streamEndReplayDelayTimeout&&(clearTimeout(this.streamEndReplayDelayTimeout),this.streamEndReplayDelayTimeout=null),this.playbackPauseTimeout&&(clearTimeout(this.playbackPauseTimeout),this.playbackPauseTimeout=null),this.playbackResumeTimeout&&(clearTimeout(this.playbackResumeTimeout),this.playbackResumeTimeout=null)}_destroy(){var e,t;this.events&&(this.events.destroy(),this.events=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.network&&(this.network.destroy(),this.network=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("jb-pro-container"),this.$container.classList.remove("jb-pro-fullscreen-web"),e=this.$container,t=ee,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._tempPlayBgObj=null,this._tempVideoLastIframeInfo=null,this._isNetworkOfflinePaused=!1,this._playerOnLock=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this._tempPlayerIsMute=!0,this._resetReplayTimes(),this.debug&&this.debug.log("JbPro","destroy end"),this._opt=null,this.debug=null}_resetReplayTimes(){this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[]}_getOriginalOpt(){const e=la();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new mv(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(((t,i)=>{try{this.debug.log(this.TAG_NAME,"_resetPlayer()",JSON.stringify(e))}catch(t){this.debug.log(this.TAG_NAME,"_resetPlayer()",e)}const s=()=>{this._opt.url="",this._opt.playOptions={},this._opt=Object.assign(this._opt,e),this._initPlayer(this.$container,this._opt)};this.player?this.player.destroy().then((()=>{this.player=null,s(),this.debug.log(this.TAG_NAME,"_resetPlayer() end"),t()})).catch((e=>{this.debug.error(this.TAG_NAME,"_resetPlayer() error",e),i(e)})):(s(),this.debug.log(this.TAG_NAME,"_resetPlayer() end"),t())}))}_bindEvents(){var e=this;Object.keys(ot).forEach((t=>{this.player.on(ot[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(rt.beforeDestroy,(()=>{this.emit(rt.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(rt.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(rt.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(rt.videoInfo,(()=>{this.player&&(this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize())})),this.player.on(rt.memoryLog,(function(){e.memoryLogger.logCache(...arguments)})),this.player.on(rt.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_initWatermark(){if(this._opt.fullscreenWatermarkConfig.text=decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),this._opt.fullscreenWatermarkConfig.color="white",Go(this._opt.fullscreenWatermarkConfig)){const e=Lo(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debug.warn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_initNetwork(){this.network.on(rt.online,(()=>{if(this.emit(rt.networkState,rt.online),this.isDestroyed())this.debug.log(this.TAG_NAME,"network online and JbPro is destroyed");else if(this._isNetworkOfflinePaused&&this._isNetworkOfflinePausedAndNextPlayConfig&&this._isNetworkOfflinePausedAndNextPlayConfig.url){const e=this._isNetworkOfflinePausedAndNextPlayConfig.url,t=this._isNetworkOfflinePausedAndNextPlayConfig.playOptions;this._streamErrorReplayTimes++;const i=this._isNetworkOfflinePausedAndNextPlayConfig.type||"unknown";this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.debug.log(this.TAG_NAME,`${i} and network online and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and reset player and play`),this.play(e,t).then((()=>{this.debug.log(this.TAG_NAME,`${i} and network online and play success`)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.fetchError,{},e),this.debug.error(this.TAG_NAME,`${i} and network online and play error`,e.toString(),e)}))}})),this.network.on(rt.offline,(()=>{this.emit(rt.networkState,rt.offline)}))}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,ee);return!!t}_initOnLock(){this.webglAlignmentErrorOnLock=!1,this.webglContextLostErrorOnLock=!1,this.mediaSourceH265NotSupportOnLock=!1,this.mediaSourceFullOnLock=!1,this.mediaSourceAppendBufferErrorOnLock=!1,this.mseSourceBufferErrorOnLock=!1,this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.mseAddSourceBufferErrorOnLock=!1,this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.mediaSourceTsIsMaxDiffOnLock=!1,this.mseWidthOrHeightChangeOnLock=!1,this.mediaSourceAudioG711NotSupportOnLock=!1,this.mediaSourceAudioInitTimeoutOnLock=!1,this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.mseWorkerAddSourceBufferErrorOnLock=!1,this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.webcodecsH265NotSupportOnLock=!1,this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.webcodecsDecodeConfigureErrorOnLock=!1,this.webcodecsDecodeErrorOnLock=!1,this.wcsWidthOrHeightChangeOnLock=!1,this.webcodecsAudioNoDataTimeoutOnLock=!1,this.webcodecsAudioInitTimeoutOnLock=!1,this.simdDecodeErrorOnLock=!1,this.wasmWidthOrHeightChangeOnLock=!1,this.wasmUseVideoRenderErrorOnLock=!1,this.videoElementPlayingFailedOnLock=!1,this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.networkDelayTimeoutOnLock=!1,this.flvDemuxBufferSizeTooLargeOnLock=!1,this.fetchErrorOnLock=!1,this.streamEndOnLock=!1,this.websocketErrorOnLock=!1,this.webrtcErrorOnLock=!1,this.hlsErrorOnLock=!1,this.aliyunRtcErrorOnLock=!1,this.decoderWorkerInitErrorOnLock=!1,this.decoderWorkerWasmErrorOnLock=!1,this.videoElementPlayingFailedForWebrtcOnLock=!1,this.videoInfoErrorOnLock=!1,this.webrtcStreamH265OnLock=!1,this.mseWaitVideoCanplayTimeoutOnLock=!1}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debug.log("JbPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debug.warn("JbPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debug.log("JbPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debug.log("JbPro","cancelMute()"),this.player&&this.player.mute(!1)}setVolume(e){this.debug.log("JbPro",`setVolume() ${e}`),this.player&&(this.player.volume=e)}getVolume(){let e=null;return this.player&&(e=this.player.volume,e=parseFloat(e).toFixed(2)),e}audioResume(){this.debug.log("JbPro","audioResume()"),this.player&&this.player.audio?this.player.audio.audioEnabled(!0):this.debug.warn("JbPro","audioResume error")}setTimeout(e){this.debug.log("JbPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debug.warn("JbPro",`setTimeout error: ${e} is not a number`):(this._opt.timeout=e,this._opt.loadingTimeout=e,this._opt.heartTimeout=e,this.player&&this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e}))}setScaleMode(e){this.debug.log("JbPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debug.warn("JbPro","setScaleMode() player is null")}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{this.debug.log("JbPro",`pause() ${e}`),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._tempPlayerIsMute=this.isMute(),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{if(this.debug.log("JbPro",`_pause() ${e}`),this.isDestroyed())return i("JbPro is destroyed");this._resetReplayTimes(),this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("JbPro is destroyed");this.debug.log("JbPro","close()"),this._opt.url="",this._resetReplayTimes(),this.player?this.player.close().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}clearView(){this.debug.log("JbPro","clearView()"),this.player&&this.player.video?this.getRenderType()===W?this.player.video.clearView():this.debug.warn("JbPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debug.warn("JbPro","clearView","player is null")}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debug.log("JbPro",`play() ${e}`,JSON.stringify(t))}catch(i){this.debug.log("JbPro",`play() ${e}`,t)}if(!e&&!this._opt.url)return this.emit(rt.error,nt.playError),void s("url is null and this._opt.url is null");if(e&&(e=(""+e).trim(),-1===e.indexOf("http:")&&-1===e.indexOf("https:")&&-1===e.indexOf("webrtc:")&&-1===e.indexOf("ws:")&&-1===e.indexOf("wss:")&&-1===e.indexOf("wt:")&&-1===e.indexOf("artc:")))return s(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(ua(this._opt.isLive))return this.$videoElement.controls="controls",this.$videoElement.muted=!1,this.$videoElement.src=e,this.$videoElement.play(),void i(this.$videoElement);if(this._opt.isM7sCrypto){let r=t.cryptoKey||this._opt.playOptions.cryptoKey,o=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!r||!o)){const e=this._opt.m7sCryptoKey.split(".");r=ra(e[0]),o=ra(e[1])}if(!r||!o){const r=e||this._opt.url;return void this._cryptoPlay(r).then((r=>{let{cryptoIV:o,cryptoKey:a}=r;this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}this._opt.playOptions.cryptoKey=r,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=r}else if(this._opt.isXorCrypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.xorCryptoKey&&(!e||!i)){const t=this._opt.xorCryptoKey.split(".");e=ra(t[0]),i=ra(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}else if(this._opt.isSm4Crypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.sm4CryptoKey&&(!e||!i)){const t=this._opt.sm4CryptoKey.split(".");2===t.length&&(e=il(t[0]),i=il(t[1]))}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))}))}_playBefore(e,t){return new Promise(((i,s)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debug.log("JbPro","_playBefore","playing and resolve()"),i();else{this.debug.log("JbPro","_playBefore","this._opt.url === url and pause -> play and destroy play");let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),ua(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore this.player.play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 1",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e),s(e)}))}else{this.debug.log("JbPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const r=this._getOriginalOpt();this._resetPlayer(r).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 2",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 3",e)),s(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),ua(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 4",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 5",e)),s(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 6",e)),s(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const s=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let s=t[1].substring(i);return-1!=s.indexOf("?")&&(s=s.split("?")[0]),s}(e);let r=this._opt.cryptoKeyUrl,o="";const a=oa(e);if(r){if(o=r,this._opt.isM7sCrypto&&-1===o.indexOf("/crypto/?stream=")){const e=oa(r);o=e.origin+Z+`?stream=${s}`}}else r=a.origin+Z,o=r+`?stream=${s}`;var n;this.player.debug.log("JbPro",`_cryptoPlay() cryptoKeyUrl: ${o} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(n=o,new Promise(((e,t)=>{kl.get(n).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const s=e.split("."),r=ra(s[0]),o=ra(s[1]);o&&r?t({cryptoIV:o,cryptoKey:r}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${o} res is null`)})).catch((e=>{i(e)}))}))}playback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debug.log("JbPro",`playback() ${e}, options: `,JSON.stringify(t))}catch(i){this.debug.log("JbPro",`playback() ${e}, options: `,t)}if(ua(this._opt.isLive))return s("this._opt.isLive is false, can not playback");const r=da(),o=Object.assign({},r.playbackConfig,this._opt.playbackConfig,t);o.isUseFpsRender||o.isCacheBeforeDecodeForFpsRender&&(o.isCacheBeforeDecodeForFpsRender=!1,this.debug.warn("JbPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===o.rateConfig.length&&o.showRateBtn&&(o.showRateBtn=!1,this.debug.warn("JbPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),o.controlType,Q.simple,this._resetPlayer({videoBuffer:0,playbackConfig:o,playType:_,openWebglAlignment:!0,useMSE:o.useMSE,useWCS:o.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}playbackPause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debug.log("JbPro",`playbackPause() ${e}`),this._opt.playType===b?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");ca(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,this.player.recording=!1,this.player.zooming=!1,this.playbackPauseTimeout=setTimeout((()=>{this.playbackPauseTimeout=null,t()}),100))})))}playbackResume(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debug.log("JbPro","playbackResume()"),this._opt.playType===b?Promise.reject("playType is player, can not call playbackResume method"):new Promise(((e,t)=>{if(!this.player)return t("player is null");this.player.playbackPause=!1,this.playbackResumeTimeout=setTimeout((()=>{this.playbackResumeTimeout=null,e()}),100)})))}forward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debug.log("JbPro",`forward() ${e}`),ua(this._opt.isLive)||this._opt.playType===b?Promise.reject("forward() method only just for playback type"):_o(Number(e))?new Promise(((t,i)=>{this.player?(e=Zr(Number(e),.1,32),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"playbackRate",value:e}),this.player.playback.setRate(e),this.player.video&&this.player.video.setRate(e),this.player.audio&&this.player.audio.setRate(e),(this.player.isPlaybackUseWCS()||this.player.isPlaybackUseMSE())&&(this.player.demux&&this.player.demux.dropBuffer$2(),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.player.demux.initPlaybackCacheLoop()),t()):i("player is not playing")})):Promise.reject(`forward() params "rate": ${e} must be number type`))}playbackForward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((t,i)=>{this.forward(e).then((()=>{t()})).catch((e=>{i(e)}))}))}normal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.forward(1).then((()=>{e()})).catch((e=>{t(e)}))}))}playbackNormal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.normal().then((()=>{e()})).catch((e=>{t(e)}))}))}updatePlaybackForwardMaxRateDecodeIFrame(e){this.isDestroyed()||(this.debug.log("JbPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=Zr(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debug.warn("JbPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null"))}setPlaybackStartTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setPlaybackStartTime() ${e}`);const t=jo(e);this.player?this.player.isPlayback()?t<10&&0!==e&&this.player.playback.isControlTypeNormal()?this.debug.warn("JbPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`):this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration?this.debug.warn("JbPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`):this.player.playing&&(this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),this.player.playback.setStartTime(e),this.playbackClearCacheBuffer()):this.debug.warn("JbPro","setPlaybackStartTime() playType is not playback"):this.debug.warn("JbPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.isDestroyed()||(this.debug.log("JbPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debug.warn("JbPro","control type is not normal , not support!"):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}playbackCurrentTimeScroll(){this.isDestroyed()||(this.debug.log("JbPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debug.warn("JbPro","control type is not normal , not support!"):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}playbackClearCacheBuffer(){this.isDestroyed()||(this.debug.log("JbPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}getPlaybackCurrentRate(){return this.player?this.player.isPlayback()?this.player.getPlaybackRate():(this.debug.warn("JbPro","playType is not playback"),1):(this.debug.warn("JbPro","player is null"),1)}updatePlaybackLocalOneFrameTimestamp(e){this.isDestroyed()||(this.debug.log("JbPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}setStreamQuality(e){if(this.isDestroyed())return;if(this.debug.log("JbPro",`setStreamQuality() ${e}`),!this.player)return void this.debug.warn("JbPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debug.warn("JbPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debug.warn("JbPro",`quality: ${e} is not in qualityList`)}_play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!this.player)return s("player is null");let r=!1;this._opt.url&&this._opt.url!==e&&(r=!0),this._opt.url=e,this._opt.playOptions=t;const u=e.split("?")[0],p=u.startsWith("http://")||u.startsWith("https://"),f=u.startsWith("webrtc://"),m=u.startsWith("artc://"),g=u.startsWith("wt://"),y=u.startsWith("ws://")||u.startsWith("wss://"),A=p||y,b=p&&u.endsWith(".m3u8"),v=A&&u.endsWith(".flv"),_=A&&(u.endsWith(".fmp4")||u.endsWith(".mp4")),S=A&&u.endsWith(".mpeg4"),w=A&&(u.endsWith(".h264")||u.endsWith(".h265")),E=A&&u.endsWith(".ts");let M=this._opt.isWebrtcForZLM||!1,U=this._opt.isWebrtcForSRS||!1,F=this._opt.isWebrtcForOthers||!1;f&&(-1!==e.indexOf("/index/api/webrtc")?(M=!0,U=!1,F=!1):-1!==e.indexOf("/rtc/v1/play/")&&(U=!0,M=!1,F=!1));let O=null,N=null;if(v&&ua(this._opt.isFlv)&&this._resetDemuxType("isFlv"),_&&ua(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),S&&ua(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),w&&ua(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),E&&ua(this._opt.isTs)&&this._resetDemuxType("isTs"),p?O=b?n:a:g?O=d:f?O=l:m?O=h:y&&(O=o),this._opt.isNakedFlow?N=R:this._opt.isFmp4?N=L:this._opt.isMpeg4?N=P:this._opt.isFlv?N=T:this._opt.isTs?N=I:b?N=C:f?N=D:m?N=B:g?N=x:y&&(N=k),!O||!N)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),s(`play url ${e} is invalid, protocol is ${c[O]}, demuxType is ${N}`);this.debug.log("JbPro",`play url ${e} protocol is ${c[O]}, demuxType is ${N}`);const j=()=>{this.player.on(nt.webglAlignmentError,this._handleWebglAlignmentError.bind(this)),this.player.on(nt.webglContextLostError,this._handleWebglContextLostError.bind(this)),this.player.on(nt.mediaSourceH265NotSupport,this._handleMediaSourceH265NotSupport.bind(this)),this.player.on(nt.mseWaitVideoCanplayTimeout,this._handleMseWaitVideoCanplayTimeout.bind(this)),this.player.on(nt.mediaSourceFull,this._handleMediaSourceFull.bind(this)),this.player.on(nt.mediaSourceAppendBufferError,this._handleMediaSourceAppendBufferError.bind(this)),this.player.on(nt.mseSourceBufferError,this._handleMseSourceBufferError.bind(this)),this.player.on(nt.mediaSourceBufferedIsZeroError,this._handleMediaSourceBufferedIsZeroError.bind(this)),this.player.on(nt.mseAddSourceBufferError,this._handleMseAddSourceBufferError.bind(this)),this.player.on(nt.mediaSourceDecoderConfigurationError,this._handleMediaSourceDecoderConfigurationError.bind(this)),this.player.on(nt.mediaSourceTsIsMaxDiff,this._handleMediaSourceTsIsMaxDiff.bind(this)),this.player.on(nt.mseWidthOrHeightChange,this._handleMseWidthOrHeightChange.bind(this)),this.player.on(nt.mediaSourceAudioG711NotSupport,this._handleMediaSourceAudioG711NotSupport.bind(this)),this.player.on(nt.mediaSourceAudioInitTimeout,this._handleMediaSourceAudioInitTimeout.bind(this)),this.player.once(nt.mediaSourceAudioNoDataTimeout,this._handleMediaSourceAudioNoDataTimeout.bind(this)),this.player.on(nt.mseWorkerAddSourceBufferError,this._handleMseWorkerAddSourceBufferError.bind(this)),this.player.on(nt.mediaSourceUseCanvasRenderPlayFailed,this._handleMediaSourceUseCanvasRenderPlayFailed.bind(this)),this.player.on(nt.webcodecsH265NotSupport,this._handleWebcodecsH265NotSupport.bind(this)),this.player.on(nt.webcodecsUnsupportedConfigurationError,this._handleWebcodecsUnsupportedConfigurationError.bind(this)),this.player.on(nt.webcodecsDecodeConfigureError,this._handleWebcodecsDecodeConfigureError.bind(this)),this.player.on(nt.webcodecsDecodeError,this._handleWebcodecsDecodeError.bind(this)),this.player.on(nt.wcsWidthOrHeightChange,this._handleWcsWidthOrHeightChange.bind(this)),this.player.on(nt.webcodecsAudioNoDataTimeout,this._handleWebcodecsAudioNoDataTimeout.bind(this)),this.player.on(nt.webcodecsAudioInitTimeout,this._handleWebcodecsAudioInitTimeout.bind(this)),this.player.on(nt.simdDecodeError,this._handleSimdDecodeError.bind(this)),this.player.on(nt.wasmWidthOrHeightChange,this._handleWasmWidthOrHeightChange.bind(this)),this.player.on(nt.wasmUseVideoRenderError,this._handleWasmUseVideoRenderError.bind(this)),this.player.on(nt.videoElementPlayingFailed,this._handleVideoElementPlayingFailed.bind(this)),this.player.on(nt.simdH264DecodeVideoWidthIsTooLarge,this._handleSimdH264DecodeVideoWidthIsTooLarge.bind(this)),this.player.on(rt.networkDelayTimeout,this._handleNetworkDelayTimeout.bind(this)),this.player.on(rt.flvDemuxBufferSizeTooLarge,this._handleFlvDemuxBufferSizeTooLarge.bind(this)),this.player.on(nt.fetchError,this._handleFetchError.bind(this)),this.player.on(rt.streamEnd,this._handleStreamEnd.bind(this)),this.player.on(nt.websocketError,this._handleWebsocketError.bind(this)),this.player.on(nt.webrtcError,this._handleWebrtcError.bind(this)),this.player.on(nt.hlsError,this._handleHlsError.bind(this)),this.player.on(nt.aliyunRtcError,this._handleAliyunRtcError.bind(this)),this.player.on(nt.decoderWorkerInitError,this._handleDecoderWorkerInitError.bind(this)),this.player.on(nt.decoderWorkerWasmError,this._handleDecoderWorkerWasmError.bind(this)),this.player.on(nt.videoElementPlayingFailedForWebrtc,this._handleVideoElementPlayingFailedForWebrtc.bind(this)),this.player.on(nt.videoInfoError,this._handleVideoInfoError.bind(this)),this.player.on(rt.webrtcStreamH265,this._handleWebrtcStreamH265.bind(this)),this.player.on(rt.delayTimeout,this._handleDelayTimeout.bind(this)),this.player.on(rt.loadingTimeout,this._handleLoadingTimeout.bind(this)),this._hasLoaded()?(this.debug.log(this.TAG_NAME,"_playNext and _hasLoaded() is true"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_hasLoaded() and play error",e),this.emit(rt.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debug.error("JbPro","_hasLoaded() and play error and next pause error",e)}))}))):(this.debug.log(this.TAG_NAME,"_playNext and waiting decoderWorkerInit callback"),this._checkInitDecoderWorkerTimeout(),this.player.once(rt.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()?this.debug&&this.debug.log("JbPro","decoderWorkerInit but player is destroyed"):(this.debug.log(this.TAG_NAME,"_playNext and decoderWorkerInit callback and next play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","decoderWorkerInit and play error",e),this.emit(rt.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debug.error("JbPro","decoderWorkerInit and play error and next pause error",e)}))})))})))},z=this.player.getOption(),G=b&&ua(this._opt.supportHls265),V=f&&ua(this._opt.isWebrtcH265),H=b&&!!Yo(),W=b&&z.demuxUseWorker;if(G||V||m||r||S||H||W)this.debug.log("JbPro",`need reset player and\n isOldHls is ${G} and isOldWebrtc is ${V} and\n isAliyunRtc is ${m} and\n needResetPlayer(url change) is ${r} and\n isMpeg4 is ${S} and\n isHlsCanVideoPlay is ${H} and\n isHlsButDemuxUseWorker is ${W}`),this._resetPlayer({protocol:O,demuxType:N,isHls:b,isWebrtc:f,isWebrtcForZLM:M,isWebrtcForSRS:U,isWebrtcForOthers:F,isAliyunRtc:m,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||"",url:e,playOptions:t}).then((()=>{j()})).catch((e=>{s("reset player error")}));else{const e={protocol:O,demuxType:N,isHls:b,isWebrtc:f,isAliyunRtc:m,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1,e.wcsDecodeAudio=!1),this.player.updateOption(e),j()}}))}_resetDemuxType(e){this._opt.isFlv=!1,this._opt.isFmp4=!1,this._opt.isMpeg4=!1,this._opt.isNakedFlow=!1,this._opt.isHls=!1,this._opt.isWebrtc=!1,this._opt.isWebrtcForZLM=!1,this._opt.isWebrtcForSRS=!1,this._opt.isWebrtcForOthers=!1,this._opt.isAliyunRtc=!1,this._opt.isTs=!1,e&&(this._opt[e]=!0),"isFmp4"!==e&&(this._opt.isFmp4Private=!1)}resize(){this.isDestroyed()||(this.debug.log("JbPro","resize()"),this.player&&this.player.resize())}setBufferTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debug.warn("JbPro",`setBufferTime() buffer time is ${e} second, is too large, video will show blank screen until cache ${e} second buffer data`);const t=1e3*e;this._opt.videoBuffer=t,this.player?this.player.updateOption({videoBuffer:t},!0):this.debug.warn("JbPro","setBufferTime() player is null")}setBufferDelayTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debug.warn("JbPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=Zr(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debug.warn("JbPro","setBufferDelayTime() player is null")}setRotate(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setRotate() ${e}`),e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)?(this._opt.rotate=e,this.player?this.player.setRotate(e):this.debug.warn("JbPro","setRotate() player is null")):this.debug.warn("JbPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setMirrorRotate() ${e}`);e||(e="none"),this._opt.mirrorRotate!==e&&-1!==["none","level","vertical"].indexOf(e)?(this._opt.mirrorRotate=e,this.player?(this.player.updateOption({mirrorRotate:e}),this.resize()):this.debug.warn("JbPro","setMirrorRotate() player is null")):this.debug.warn("JbPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setAspectRatio() ${e}`);e||(e="default"),this._opt.aspectRatio!==e&&-1!==["default","4:3","16:9"].indexOf(e)?(this._opt.aspectRatio=e,this.player?(this.player.updateOption({aspectRatio:e}),this.resize()):this.debug.warn("JbPro","setAspectRatio() player is null")):this.debug.warn("JbPro",`setAspectRatio() aspectRatio is ${e} and this._opt.aspectRatio is ${this._opt.mirrorRotate}`)}hasLoaded(){return!0}_hasLoaded(){return this.player&&this.player.loaded||!1}setKeepScreenOn(){this.isDestroyed()||(this.debug.log("JbPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debug.warn("JbPro","setKeepScreenOn() player is not ready"))}setFullscreen(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debug.warn("JbPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debug.warn("JbPro","setFullscreen() player is not ready")}setWebFullscreen(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debug.warn("JbPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,s){if(!this.isDestroyed())return this.debug.log("JbPro",`screenshot() ${e} ${t} ${i} ${s}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,s):(this.debug.warn("JbPro","screenshot() player is not ready"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debug.log("JbPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debug.warn("JbPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debug.log("JbPro","screenshotCopyrightWatermark()",e),this.player&&this.player.video?this.player.video.screenshotCopyrightWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debug.warn("JbPro","screenshotCopyrightWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,s)=>this.isDestroyed()?s("player is destroyed"):(this.debug.log("JbPro",`startRecord() ${e} ${t}`),this.player?void(this.player.playing?(this.player.startRecord(e,t),i()):(this.debug.warn("JbPro","startRecord() player is not playing"),s("not playing"))):(this.debug.warn("JbPro","startRecord() player is not ready"),s("player is not ready")))))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{if(this.isDestroyed())return s("player is destroyed");this.debug.log("JbPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)})):s("not recording")}))}cancelRecord(){return new Promise(((e,t)=>this.isDestroyed()?t("player is destroyed"):(this.debug.log("JbPro","cancelRecord()"),this.player?void this.player.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})):(this.debug.warn("JbPro","cancelRecord() player is not ready"),t("player is not ready")))))}isPlaying(){let e=!1;return this.player&&(e=this.player.isPlaying()),e}isLoading(){return!!this.player&&this.player.loading}isPause(){let e=!1;return this._opt.playType===b?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===_&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===_&&this.player&&(e=this.player.playbackPause),e}isMute(){let e=!0;return this.player&&(e=this.player.isAudioMute()),e}isRecording(){return this.player&&this.player.recorder&&this.player.recorder.recording||!1}isFullscreen(){let e=!1;return this.player&&(e=this.player.fullscreen),e}isWebFullscreen(){let e=!1;return this.player&&(e=this.player.webFullscreen),e}clearBufferDelay(){this.isDestroyed()||(this.debug.log("JbPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debug.warn("JbPro","clearBufferDelay() player is not init"))}setNetworkDelayTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debug.warn("JbPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=Zr(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debug.warn("JbPro","setNetworkDelayTime() player is null")}getDecodeType(){let e="";return this.player&&(e=this.player.getDecodeType()),e}getRenderType(){let e="";return this.player&&(e=this.player.getRenderType()),e}getAudioEngineType(){let e="";return this.player&&(e=this.player.getAudioEngineType()),e}getPlayingTimestamp(){let e=0;return this.player&&(e=this.player.getPlayingTimestamp()),e}getStatus(){let e=ms;return this.player&&(e=this.player.loading?us:this.player.playing?ps:fs),e}getPlayType(){return this.player?this.player._opt.playType:b}togglePerformancePanel(e){if(this.isDestroyed())return;this.debug.log("JbPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;Do(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debug.warn("JbPro","togglePerformancePanel() failed, this.player is not init"):this.debug.warn("JbPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){if(!this.isDestroyed())if(this.debug.log("JbPro","openZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debug.warn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!0}else this.debug.warn("JbPro","openZoom() failed, this.player is not init")}closeZoom(){if(!this.isDestroyed())if(this.debug.log("JbPro","closeZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debug.warn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!1}else this.debug.warn("JbPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.isDestroyed()||(this.debug.log("JbPro",`toggleZoom() ${e}`),Do(e)||(e=!this.isZoomOpen()),ca(e)?this.openZoom():ua(!1)&&this.closeZoom())}expandZoom(){this.isDestroyed()||(this.debug.log("JbPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debug.warn("JbPro","expandZoom() failed, zoom is not open or not init"))}narrowZoom(){this.isDestroyed()||(this.debug.log("JbPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debug.warn("JbPro","narrowZoom failed, zoom is not open or not init"))}updateCurrentZoom(e){this.isDestroyed()||(this.debug.log("JbPro","updateCurrentZoom()",e),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.updateCurrentZoom(e):this.debug.warn("JbPro","narrowZoom failed, zoom is not open or not init"))}getCurrentZoomIndex(){if(this.isDestroyed())return;let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");if(this.debug.log("JbPro","setNakedFlowFps()",e),Co(e))return i("setNakedFlowFps() fps is empty");let s=Number(e);s=Zr(s,1,100),this._opt.nakedFlowFps=s,this.player?this.player.updateOption({nakedFlowFps:s}):this.debug.warn("JbPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!this.player)return;const i=this.player.getAllStatsData(),s=this.player;let r={url:this._opt.url,playType:s.isPlayback()?"playback":"live",demuxType:s.getDemuxType(),decoderType:s.getDecodeType(),renderType:s.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:s.getAudioEngineType(),allTimes:i.pTs,timestamp:Xr(),type:e,error:ia(t)||e};if(s.video){const e=s.video.videoInfo||{};r.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(s.audio){const e=s.audio.audioInfo||{};r.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return r}updateDebugLevel(e){this.isDestroyed()||(this.debug.log("JbPro","updateDebugLevel()",e),e===J||e===q?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debug.warn("JbPro","updateDebugLevel() player is null")):this.debug.warn("JbPro",`updateDebugLevel() level is same, level: ${e}`):this.debug.warn("JbPro",`updateDebugLevel() level is not valid, level: ${e}`))}updateWatermark(e){this.isDestroyed()||(this.debug.log("JbPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debug.warn("JbPro","updateWatermark() player is not init"))}removeWatermark(){this.isDestroyed()||(this.debug.log("JbPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debug.warn("JbPro","removeWatermark() player is not init"))}updateFullscreenWatermark(e){if(!this.isDestroyed())if(this.debug.log("JbPro","updateFullscreenWatermark()",e),Go(e)){this._opt.fullscreenWatermarkConfig=e;const t=Lo(this.$container,e);if(!t.watermark_txt)return void this.debug.warn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debug.warn("JbPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.isDestroyed()||(this.debug.log("JbPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debug.warn("JbPro","removeFullscreenWatermark() watermark is not init"))}faceDetectOpen(){this.isDestroyed()||(this.debug.log("JbPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debug.warn("JbPro","faceDetectOpen() player is not init"))}faceDetectClose(){this.isDestroyed()||(this.debug.log("JbPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debug.warn("JbPro","faceDetectClose() player is not init"))}objectDetectOpen(){this.isDestroyed()||(this.debug.log("JbPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debug.warn("JbPro","objectDetectOpen() player is not init"))}objectDetectClose(){this.isDestroyed()||(this.debug.log("JbPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debug.warn("JbPro","objectDetectClose() player is not init"))}sendWebsocketMessage(e){this.isDestroyed()||(this.debug.log("JbPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debug.warn("JbPro","sendWebsocketMessage() player is not init"))}addContentToCanvas(e){this.isDestroyed()||(this.debug.log("JbPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debug.warn("JbPro","addContentToCanvas() player is not init"))}clearContentToCanvas(){this.isDestroyed()||(this.debug.log("JbPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debug.warn("JbPro","clearContentToCanvas() player is not init"))}addContentToContainer(e){this.isDestroyed()||(this.debug.log("JbPro","addContentToContainer()"),this.player?this.player.addContentToContainer(e):this.debug.warn("JbPro","addContentToContainer() player is not init"))}clearContentToContainer(){this.isDestroyed()||(this.debug.log("JbPro","clearContentToContainer()"),this.player?this.player.addContentToContainer([]):this.debug.warn("JbPro","clearContentToContainer() player is not init"))}setControlHtml(e){this.isDestroyed()||(this.debug.log("JbPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debug.warn("JbPro","setControlHtml() player is not init"))}clearControlHtml(){this.isDestroyed()||(this.debug.log("JbPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debug.warn("JbPro","clearControlHtml() player is not init"))}getVideoInfo(){let e=null;return this.player&&(e=this.player.getVideoInfo()),e}getAudioInfo(){let e=null;return this.player&&(e=this.player.getAudioInfo()),e}setSm4CryptoKey(e){if(this.isDestroyed())return;this.debug.log("JbPro","setSm4CryptoKey()",e);const t=(e=""+e).split(".");if(32!==e.length&&2!==t.length)return void this.debug.warn("JbPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`);if(2===t.length&&(32!==t[0].length||32!==t[1].length))return void this.debug.warn("JbPro",`setSm4CryptoKey() key is invalid and key length is ${t[0].length} !== 32 or iv length ${t[1].length} !== 32`);this._opt.sm4CryptoKey=e;let i=2===t.length;if(i&&(this._opt.playOptions.cryptoKey=il(t[0]),this._opt.playOptions.cryptoIV=il(t[1])),this.player){const t={sm4CryptoKey:e};i&&(t.cryptoKey=this._opt.playOptions.cryptoKey,t.cryptoIV=this._opt.playOptions.cryptoIV),this.player.updateOption(t,!0)}else this.debug.warn("JbPro","setSm4CryptoKey() player is null")}setM7sCryptoKey(e){this.isDestroyed()||(this.debug.log("JbPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debug.warn("JbPro","setM7sCryptoKey() player is null"))}setXorCryptoKey(e){this.isDestroyed()||(this.debug.log("JbPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debug.warn("JbPro","setXorCryptoKey() player is null"))}updateLoadingText(e){this.isDestroyed()||(this.debug.log("JbPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debug.warn("JbPro","updateLoadingText() player is null"))}updateIsEmitSEI(e){this.isDestroyed()||(this.debug.log("JbPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debug.warn("JbPro","updateIsEmitSEI() player is null"))}getPTZCmd(e,t){return this.debug.log("JbPro","getPTZCmd()",e),e?this.player?Gv({type:e,index:0,speed:t}):(this.debug.warn("JbPro","getPTZCmd() player is null"),null):(this.debug.warn("JbPro","getPTZCmd() ptz is null"),null)}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadMemoryLog(){this.isDestroyed()||this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{},t={loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0};return t.loadingBackground&&t.loadingBackgroundWidth&&t.loadingBackgroundHeight&&(this._tempVideoLastIframeInfo=t),this._tempVideoLastIframeInfo||{}}getExtendBtnList(){this.debug.log("JbPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debug.warn("JbPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debug.log("JbPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debug.warn("JbPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){if(this.isDestroyed())return;this.debug.log("JbPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debug.warn("JbPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.isDestroyed())return;if(this.debug.log("JbPro","updateAiFaceDetectLevel()",e),!Vs[e])return void this.debug.warn("JbPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=Vs[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debug.warn("JbPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){if(this.isDestroyed())return;this.debug.log("JbPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debug.warn("JbPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.isDestroyed())return;if(this.debug.log("JbPro","updateAiObjectDetectLevel()",e),!Hs[e])return void this.debug.warn("JbPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=Hs[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debug.warn("JbPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.isDestroyed()||(this.debug.log("JbPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e))}showErrorMessageTips(e){this.isDestroyed()||(this.debug.log("JbPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debug.warn("JbPro","showErrorMessageTips() player is null")))}setPtzPosition(e){this.debug.log("JbPro","setPtzPosition()",e),e&&!zo(e)&&(this.player?this.player.setPtzPosition(e):this.debug.warn("JbPro","setPtzPosition() player is null"))}hideErrorMessageTips(){this.isDestroyed()||(this.debug.log("JbPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debug.warn("JbPro","hideErrorMessageTips() player is null"))}getContainerRect(){return this._getContainerRect()}proxy(e,t,i,s){return this.events.proxy(e,t,i,s)}getUrl(){return this._opt.url}toggleControlExtendBtn(e,t){this.isDestroyed()||(this.debug.log(this.TAG_NAME,`toggleControlExtendBtn() ${e} ${t}`),this.player?this.player.toggleControlExtendBtn(e,t):this.debug.warn(this.TAG_NAME,"toggleControlExtendBtn() player is null"))}getControlExtendBtnActive(e){if(this.isDestroyed())return;this.debug.log(this.TAG_NAME,`getControlExtendBtnActive() ${e}`);let t=!1;return this.player?t=this.player.getControlExtendBtnActive(e):this.debug.warn(this.TAG_NAME,"getControlExtendBtnActive() player is null"),t}toggleControlBar(e){this.isDestroyed()||(this.debug.log(this.TAG_NAME,`toggleControlBar() ${e}`),this.player?this.player.toggleControlBar(e):this.debug.warn(this.TAG_NAME,"toggleControlBar() player is null"))}getControlBarShow(){if(this.isDestroyed())return!1;this.debug.log(this.TAG_NAME,"getControlBarShow()");let e=!1;return this.player?e=this.player.getControlBarShow():this.debug.warn(this.TAG_NAME,"getControlBarShow() player is null"),e}static getCopyrightWatermarkHash(e){return Bo(e)}static extractScreenshotCopyrightWatermark(e){return function(e){for(var t=e,i=0,s=0,r=0;r<32;r++)s|=(1&t[i])<=5){const s=i[0],r=i[i.length-1],o=r-s;o<=1e4&&(this.debug.warn(this.TAG_NAME,`retry type is ${e}, and retry length is ${i.length}, and start is ${s} and end is ${r} and diff is ${o}`),t=!1)}return t}_initLoadingBackgroundForIOS(e){(po()||fo())&&e.loadingBackground&&e.loadingBackgroundWidth&&e.loadingBackgroundHeight&&(this.debug.log(this.TAG_NAME,"_initLoadingBackgroundForIOS"),this._initLoadingBg(),"default"===this.player._opt.aspectRatio||ao()?this._doInitLoadingBackground(e):this._doInitLoadingBackgroundForRatio(e))}_doInitLoadingBackground(e){const t=this._getContainerRect();let i=t.height;const s=this.player._opt;if(this.player.isControlBarShow()){i-=s.playType===_?Yt:Kt}let r=t.width,o=i;const a=s.rotate;270!==a&&90!==a||(r=i,o=t.width),this.$loadingBgImage.width=r,this.$loadingBgImage.height=o,this.$loadingBgImage.src=e.loadingBackground;let n=(t.width-r)/2,l=(i-o)/2,d="contain";s.isResize||(d="fill"),s.isFullResize&&(d="none");let h="";"none"===s.mirrorRotate&&a&&(h+=" rotate("+a+"deg)"),"level"===s.mirrorRotate?h+=" rotateY(180deg)":"vertical"===s.mirrorRotate&&(h+=" rotateX(180deg)"),this._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=d),this.$loadingBgImage.style.transform=h,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=n+"px",this.$loadingBgImage.style.top=l+"px",this.$loadingBgImage.complete?ec(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{ec(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForRatio(e){const t=this.player._opt.aspectRatio.split(":").map(Number),i=this._getContainerRect();let s=i.width,r=i.height;const o=this.player._opt;let a=0;this.player.isControlBarShow()&&(a=o.playType===_?Yt:Kt,r-=a);const n=e.loadingBackgroundWidth,l=e.loadingBackgroundHeight,d=n/l,h=t[0]/t[1];if(this.$loadingBgImage.src=e.loadingBackground,d>h){const e=h*l/n;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${a}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=n/h/l;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${a}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}this.$loadingBgImage.complete?ec(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{ec(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_initLoadingBg(){if(!this.$loadingBg){const e=document.createElement("div"),t=document.createElement("img");e.className="jb-pro-loading-bg-for-ios",this.$loadingBg=e,this.$loadingBgImage=t,e.appendChild(t),this.$container.appendChild(e)}}_removeLoadingBackgroundForIOS(){if(this.$loadingBg){this.debug.log(this.TAG_NAME,"_removeLoadingBackgroundForIOS()");if(!rc(this.$loadingBg)){const e=this.$container.querySelector(".jb-pro-loading-bg-for-ios");e&&this.$container&&this.$container.removeChild(e)}this.$loadingBg=null,this.$loadingBgImage=null}}_getContainerRect(){let e={};return this.$container&&(e=this.$container.getBoundingClientRect(),e.width=Math.max(e.width,this.$container.clientWidth),e.height=Math.max(e.height,this.$container.clientHeight)),e}_isNeedNetworkDisconnectReplay(){return this._opt.networkDisconnectReplay&&this.network.isOffline()}_handleWebglAlignmentError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webglAlignmentError but player is destroyed");else if(this.webglAlignmentErrorOnLock)this.debug.log("JbPro","webglAlignmentErrorOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webglAlignmentError,e)),this.webglAlignmentErrorOnLock=!0,this.player&&this.player._opt.webglAlignmentErrorReplay){this.debug.log("JbPro","webglAlignmentError");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({openWebglAlignment:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webglAlignmentError and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webglAlignmentError,{},e),this.debug.error("JbPro","webglAlignmentError and play error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))})).catch((e=>{this.webglAlignmentErrorOnLock=!1,this.debug.error("JbPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webglAlignmentError,{},e),this.debug.log("JbPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webglAlignmentError,{},e),this.debug.error("JbPro","webglAlignmentError and pause error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))}}_handleWebglContextLostError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webglContextLostError but player is destroyed"));if(this.webglContextLostErrorOnLock)return void this.debug.log("JbPro","webglContextLostErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.webglContextLostErrorOnLock=!0,this.player&&this.player._opt.webglContextLostErrorReplay){this.debug.log("JbPro","webglContextLostError");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","webglContextLostError and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.error("JbPro","webglContextLostError and play error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))})).catch((i=>{this.webglContextLostErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.error("JbPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.log("JbPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.error("JbPro","webglAlignmentError and pause error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))}}_handleMediaSourceH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mediaSourceH265NotSupport but player is destroyed");else if(this.mediaSourceH265NotSupportOnLock)this.debug.log("JbPro","mediaSourceH265NotSupportOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceH265NotSupport,e)),this.mediaSourceH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,e),this.debug.error("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))})).catch((t=>{this.mediaSourceH265NotSupportOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,{},e),this.debug.log("JbPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))}}_handleMseWaitVideoCanplayTimeout(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mseWaitVideoCanplayTimeout but player is destroyed");else if(this.mseWaitVideoCanplayTimeoutOnLock)this.debug.log("JbPro","mseWaitVideoCanplayTimeoutOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.mseWaitVideoCanplayTimeout,e)),this.mseWaitVideoCanplayTimeoutOnLock=!0,this.player&&this.player._opt.mseWaitVideoCanplayAutoWasm){this.debug.log("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mseWaitVideoCanplayTimeout,e),this.debug.error("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))})).catch((t=>{this.mseWaitVideoCanplayTimeoutOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mseWaitVideoCanplayTimeout,{},e),this.debug.error("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseWaitVideoCanplayTimeout,{},e),this.debug.log("JbPro","mseWaitVideoCanplayTimeout and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))}}_handleMediaSourceFull(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceFull but player is destroyed"));if(this.mediaSourceFullOnLock)return void this.debug.log("JbPro","mediaSourceFullOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceFullOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(fr)?this._mseDecodeErrorRetryLog.push(Xr()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mediaSourceFull and auto wasm ${ua(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and reset player and play error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))})).catch((i=>{this.mediaSourceFullOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.log("JbPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and pause error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))}}_handleMediaSourceAppendBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAppendBufferError but player is destroyed"));if(this.mediaSourceAppendBufferErrorOnLock)return void this.debug.log("JbPro","mediaSourceAppendBufferErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceAppendBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(fr)?this._mseDecodeErrorRetryLog.push(Xr()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEAudioDecoderError&&(this.player.debug.log("JbPro","mediaSourceAppendBufferError and isMSEAudioDecoderError is true so set mseDecodeAudio = false"),r.mseDecodeAudio=!1),this.debug.log("JbPro",`mediaSourceAppendBufferError and auto wasm ${ua(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and reset player and play error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))})).catch((i=>{this.mediaSourceAppendBufferErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.log("JbPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and pause error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))}}_handleMseSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseSourceBufferError but player is destroyed"));if(this.mseSourceBufferErrorOnLock)return void this.debug.log("JbPro","mseSourceBufferErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseSourceBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={};if(this.player._opt.mseDecoderUseWorker)r={mseDecoderUseWorker:!1},this.debug.log("JbPro","mseSourceBufferError auto wasm [mse worker -> mse] reset player and play");else{let e=this.player._opt.decoderErrorAutoWasm,t=!0;e?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(fr)?this._mseDecodeErrorRetryLog.push(Xr()):(e=!0,t=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debug.log("JbPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mseSourceBufferError auto wasm ${ua(t)?" and is not meaningful Retry":""} [mse-> ${e?"wasm":"mse"}] reset player and play`)}this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError reset player and play error",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseSourceBufferErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.log("JbPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError and pause error:",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))}}_handleMediaSourceBufferedIsZeroError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceBufferedIsZeroError but player is destroyed"));if(this.mediaSourceBufferedIsZeroErrorOnLock)return void this.debug.log("JbPro","mediaSourceBufferedIsZeroErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceBufferedIsZeroErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(fr)?this._mseDecodeErrorRetryLog.push(Xr()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mediaSourceBufferedIsZeroError auto wasm ${ua(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError reset player and play error",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))})).catch((i=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.log("JbPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError and pause error:",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))}}_handleMseAddSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseAddSourceBufferError but player is destroyed"));if(this.mseAddSourceBufferErrorOnLock)return void this.debug.log("JbPro","mseAddSourceBufferErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseAddSourceBufferErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.log("JbPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError and pause error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceDecoderConfigurationError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.mediaSourceDecoderConfigurationErrorOnLock)this.debug.log("JbPro","mediaSourceDecoderConfigurationErrorOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceDecoderConfigurationError,e)),this.mediaSourceDecoderConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;let s={useMSE:!1,useWCS:!1};this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))})).catch((t=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.log("JbPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError and pause error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))}}_handleMediaSourceTsIsMaxDiff(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceTsIsMaxDiff but player is destroyed"));if(this.mediaSourceTsIsMaxDiffOnLock)return void this.debug.log("JbPro","mediaSourceTsIsMaxDiffOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceTsIsMaxDiffOnLock=!0,this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debug.log("JbPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff replay error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))})).catch((i=>{this.mediaSourceTsIsMaxDiffOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.log("JbPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff and pause error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))}}_handleMseWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseWidthOrHeightChange but player is destroyed"));if(this.mseWidthOrHeightChangeOnLock)return void this.debug.log("JbPro","mseWidthOrHeightChangeOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.mseWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debug.log("JbPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.mseWidthOrHeightChangeOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange error and pause error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}}_handleMediaSourceAudioG711NotSupport(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAudioG711NotSupport but player is destroyed"));if(this.mediaSourceAudioG711NotSupportOnLock)return void this.debug.log("JbPro","mediaSourceAudioG711NotSupportOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioG711NotSupportOnLock=!0,this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debug.log("JbPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))})).catch((e=>{this.mediaSourceAudioG711NotSupportOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport error and pause error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))}}_handleMediaSourceAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAudioInitTimeout but player is destroyed"));if(this.mediaSourceAudioInitTimeoutOnLock)return void this.debug.log("JbPro","mediaSourceAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debug.log("JbPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioInitTimeoutOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i),this.debug.error("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i),this.debug.error("JbPro","mediaSourceAudioInitTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))}}_handleMediaSourceAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAudioNoDataTimeout but player is destroyed"));if(this.mediaSourceAudioNoDataTimeoutOnLock)return void this.debug.log("JbPro","mediaSourceAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioNoDataTimeoutReplay){this.debug.log("JbPro","mediaSourceAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioNoDataTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioNoDataTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioNoDataTimeout,i),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioNoDataTimeout,i),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))}}_handleMseWorkerAddSourceBufferError(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseWorkerAddSourceBufferError but player is destroyed"));if(this.mseWorkerAddSourceBufferErrorOnLock)return void this.debug.log("JbPro","mseWorkerAddSourceBufferErrorOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mseWorkerAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mseWorkerAddSourceBufferError and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecoderUseWorker:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mseWorkerAddSourceBufferError and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWorkerAddSourceBufferError,i,t),this.debug.error("JbPro","mseWorkerAddSourceBufferError and reset player and play error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))})).catch((e=>{this.mseWorkerAddSourceBufferErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mseWorkerAddSourceBufferError,i,t),this.debug.error("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseWorkerAddSourceBufferError,i),this.debug.error("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWorkerAddSourceBufferError,i),this.debug.error("JbPro","mseWorkerAddSourceBufferError error and pause error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceUseCanvasRenderPlayFailed(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.mediaSourceUseCanvasRenderPlayFailedOnLock)this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailedOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceUseCanvasRenderPlayFailed,e)),this.mediaSourceUseCanvasRenderPlayFailedOnLock=!0,this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debug.log("JbPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;let s={};const r=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;r===W?s={useMSE:!1,useWCS:!1}:r===$&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))})).catch((t=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.emit(rt.playFailedAndPaused,nt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))}}_handleWebcodecsH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webcodecsH265NotSupport but player is destroyed");else if(this.webcodecsH265NotSupportOnLock)this.debug.log("JbPro","webcodecsH265NotSupportOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsH265NotSupport,e)),this.webcodecsH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsH265NotSupport,e),this.debug.error("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))})).catch((e=>{this.webcodecsH265NotSupportOnLock=!1,this.debug.error("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsH265NotSupport,e),this.debug.log("JbPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsH265NotSupport,e),this.debug.error("JbPro","webcodecsH265NotSupport and pause error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))}}_handleWebcodecsUnsupportedConfigurationError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.webcodecsUnsupportedConfigurationErrorOnLock)this.debug.log("JbPro","webcodecsUnsupportedConfigurationErrorOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsUnsupportedConfigurationError,e)),this.webcodecsUnsupportedConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))})).catch((t=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.log("JbPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError and pause error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))}}_handleWebcodecsDecodeConfigureError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.webcodecsDecodeConfigureErrorOnLock)this.debug.log("JbPro","webcodecsDecodeConfigureErrorOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))})).catch((t=>{this.webcodecsDecodeConfigureErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.log("JbPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError and pause error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))}}_handleWebcodecsDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webcodecsDecodeError but player is destroyed"));if(this.webcodecsDecodeErrorOnLock)return void this.debug.log("JbPro","webcodecsDecodeErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.webcodecsDecodeErrorOnLock=!0,this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(mr)?this._wcsDecodeErrorRetryLog.push(Xr()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`webcodecs decode error autoWasm ${ua(a)?" and is not meaningful Retry":""} [wcs-> ${o?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error reset player and play error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))})).catch((()=>{this.webcodecsDecodeErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.log("JbPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error and pause error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))}}_handleWcsWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","wcsWidthOrHeightChange but player is destroyed"));if(this.wcsWidthOrHeightChangeOnLock)return void this.debug.log("JbPro","wcsWidthOrHeightChangeOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wcsWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debug.log("JbPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wcsWidthOrHeightChangeOnLock=!1,this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}}_handleWebcodecsAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webcodecsAudioNoDataTimeout but player is destroyed"));if(this.webcodecsAudioNoDataTimeoutOnLock)return void this.debug.log("JbPro","webcodecsAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioNoDataTimeoutReplay){this.debug.log("JbPro","webcodecsAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","webcodecsAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.webcodecsAudioNoDataTimeout,i,t),this.debug.error("JbPro","webcodecsAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioNoDataTimeoutOnLock=!1,this.emit(rt.playFailedAndPaused,nt.webcodecsAudioNoDataTimeout,i,t),this.debug.error("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsAudioNoDataTimeout,i),this.debug.error("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.webcodecsAudioNoDataTimeout,i),this.debug.error("JbPro","webcodecsAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))}}_handleWebcodecsAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webcodecsAudioInitTimeout but player is destroyed"));if(this.webcodecsAudioInitTimeoutOnLock)return void this.debug.log("JbPro","webcodecsAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioInitTimeoutReplay){this.debug.log("JbPro","webcodecsAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","webcodecsAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.webcodecsAudioInitTimeout,i,t),this.debug.error("JbPro","webcodecsAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioInitTimeoutOnLock=!1,this.emit(rt.playFailedAndPaused,nt.webcodecsAudioInitTimeout,i,t),this.debug.error("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsAudioInitTimeout,i),this.debug.error("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.webcodecsAudioInitTimeout,i),this.debug.error("JbPro","webcodecsAudioInitTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))}}_handleSimdDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","simdDecodeError but player is destroyed"));if(this.simdDecodeErrorOnLock)return void this.debug.log("JbPro","simdDecodeErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.simdDecodeErrorOnLock=!0,this.player&&this.player._opt.simdDecodeErrorReplay){this.debug.log("JbPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.simdDecodeErrorReplayType===N&&(r={useSIMD:!1}),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and reset player and play error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))})).catch((i=>{this.simdDecodeErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError error and pause error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))}}_handleWasmWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","wasmWidthOrHeightChange but player is destroyed"));if(this.wasmWidthOrHeightChangeOnLock)return void this.debug.log("JbPro","wasmWidthOrHeightChangeOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wasmWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debug.log("JbPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wasmWidthOrHeightChangeOnLock=!1,this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i),this.debug.error("JbPro","wasmWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}}_handleWasmUseVideoRenderError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","wasmUseVideoRenderError but player is destroyed"));if(this.wasmUseVideoRenderErrorOnLock)return void this.debug.log("JbPro","wasmUseVideoRenderErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.wasmUseVideoRenderError,e)),this.debug.log("JbPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.wasmUseVideoRenderErrorOnLock=!0,this._resetPlayer({useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.wasmUseVideoRenderError,{},e),this.debug.error("JbPro","wasmUseVideoRenderError and reset player and play error",t)})).finally((()=>{this.wasmUseVideoRenderErrorOnLock=!1}))})).catch((t=>{this.wasmUseVideoRenderErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.wasmUseVideoRenderError,{},e),this.debug.error("JbPro","wasmUseVideoRenderError and _resetPlayer error",t)}))}_handleVideoElementPlayingFailed(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","videoElementPlayingFailed but player is destroyed"));if(this.videoElementPlayingFailedOnLock)return void this.debug.log("JbPro","videoElementPlayingFailedOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.videoElementPlayingFailed,e));const t=this._getVideoLastIframeInfo();if(this.videoElementPlayingFailedOnLock=!0,this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debug.log("JbPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useVideoRender:!1,useCanvasRender:!0};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and reset player and play error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))})).catch((t=>{this.videoElementPlayingFailedOnLock=!1,this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and _pause error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))}}_handleSimdH264DecodeVideoWidthIsTooLarge(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.simdH264DecodeVideoWidthIsTooLargeOnLock)this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLargeOnLock is true");else if(this.emit(rt.crashLog,this.getCrashLog(nt.simdH264DecodeVideoWidthIsTooLarge,e)),this.simdH264DecodeVideoWidthIsTooLargeOnLock=!0,this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useSIMD:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))})).catch((t=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))}}_handleNetworkDelayTimeout(e){if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","networkDelayTimeout but player is destroyed"));if(this.networkDelayTimeoutOnLock)return void this.debug.log("JbPro","networkDelayTimeoutOnLock is true");this.emit(rt.crashLog,this.getCrashLog(rt.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","network delay time out and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this.networkDelayTimeoutOnLock=!0,this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.networkDelayTimeout,t,e),this.debug.error("JbPro","wasm decode error and reset player and play error",i)})).finally((()=>{this.networkDelayTimeoutOnLock=!1}))})).catch((()=>{this.networkDelayTimeoutOnLock=!1,this.emit(rt.playFailedAndPaused,rt.networkDelayTimeout,t,e),this.debug.error("JbPro","wasm decode error and _resetPlayer error")}))}}_handleFlvDemuxBufferSizeTooLarge(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","flvDemuxBufferSizeTooLarge but player is destroyed"));if(this.flvDemuxBufferSizeTooLargeOnLock)return void this.debug.log("JbPro","flvDemuxBufferSizeTooLargeOnLock is true");const t=this._getVideoLastIframeInfo();if(this.flvDemuxBufferSizeTooLargeOnLock=!0,this.player._opt.flvDemuxBufferSizeTooLargeReplay){this.emit(rt.crashLog,this.getCrashLog(rt.flvDemuxBufferSizeTooLarge,e)),this.debug.log("JbPro","flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeReplay = true and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play error",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))})).catch((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1,this.emit(rt.playFailedAndPaused,rt.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large and _resetPlayer error")}))}else if(this._opt.flvDemuxBufferSizeTooLargeEmitFailed){this.debug.log(this.TAG_NAME,"flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeEmitFailed = true and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.flvDemuxBufferSizeTooLarge,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))}}_handleFetchError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","fetchError but player is destroyed"));if(this.fetchErrorOnLock)return void this.debug.log("JbPro","fetchErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.fetchError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.fetchErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debug.log("JbPro","fetch error and network is disconnect and reset player and play"):this.debug.log("JbPro",`fetch error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes}, streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())this.debug&&this.debug.log("JbPro","fetch error and _resetPlayer but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","fetch error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:nt.fetchError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debug.log("JbPro","fetch error and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.fetchError,{},e),this.debug.error("JbPro","fetch error and reset player and play error",t)})).finally((()=>{this.fetchErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.fetchErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.fetchError,{},e),this.debug.error("JbPro","fetch error and _resetPlayer error",t)}))}else{this.debug.log("JbPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.fetchError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.fetchError,t,e),this.debug.error("JbPro","fetch error and pause",i)})).finally((()=>{this.fetchErrorOnLock=!1}))}}_handleStreamEnd(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","streamEnd but player is destroyed and return"));if(this.streamEndOnLock)return void this.debug.log("JbPro","streamEndOnLock is true");this.emit(rt.crashLog,this.getCrashLog(rt.streamEnd,e));const t=this._getVideoLastIframeInfo(),i=""+e=="1006"&&this.player._opt.websocket1006ErrorReplay,s=!!i&&this._checkIsMeaningfulRetry(pr),r=i&&s,o=this.player._opt.streamEndReplay,a=this._isNeedNetworkDisconnectReplay();if(this.streamEndOnLock=!0,r||o||a){a?this.debug.log("JbPro","streamEnd and network is disconnect and reset player and play"):r?this.debug.log("JbPro",`streamEnd and websocket1006ErrorReplay is true and error is 1006 and _websocket1006ErrorReplayTimes is ${this._websocket1006ErrorReplayTimes} , delay ${this._opt.websocket1006ErrorReplayDelayTime}s reset player and play`):this.debug.log("JbPro",`streamEnd and isStreamEndReplay is true and and _streamEndReplayTimes is ${this._streamEndReplayTimes} , delay ${this._opt.streamEndReplayDelayTime}s reset player and play`);const s=this._opt.playOptions,o=this._opt.url;i&&this._websocket1006ErrorRetryLog.push(Xr());let n={};this.player._opt.replayUseLastFrameShow&&(n=Object.assign({},n,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(n.isNotMute=!0);let l=r?this._opt.websocket1006ErrorReplayDelayTime:this._opt.streamEndReplayDelayTime;a&&(l=1),this._initLoadingBackgroundForIOS(t),this._resetPlayer(n).then((()=>{this.streamEndReplayDelayTimeout=setTimeout((()=>{if(this.streamEndReplayDelayTimeout=null,this._removeLoadingBackgroundForIOS(),this.isDestroyed())a?this.debug&&this.debug.log("JbPro","streamEnd and network is disconnect and _resetPlayer() but player is destroyed and return"):r?this.debug&&this.debug.log("JbPro","streamEnd and 1006 error and _resetPlayer() but player is destroyed and return"):this.debug&&this.debug.log("JbPro","streamEnd and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return r?this.debug.log("JbPro","streamEnd and 1006 error network is offline and wait network online to play , so return"):this.debug.log("JbPro","streamEnd and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:s,type:r?nt.websocket1006Error:nt.streamEnd});r?this._websocket1006ErrorReplayTimes++:this._streamEndReplayTimes++,this.play(o,s).then((()=>{r?this.debug.log("JbPro","streamEnd and 1006 error and reset player and play success"):this.debug.log("JbPro","streamEnd and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.streamEnd,{},e),r?this.debug.error("JbPro","streamEnd and 1006 error and reset player and play error",t):this.debug.error("JbPro","streamEnd and reset player and play error",t)})).finally((()=>{this.streamEndOnLock=!1}))}}),1e3*l)})).catch((t=>{this.streamEndOnLock=!1,this.emit(rt.playFailedAndPaused,nt.streamEnd,{},e),r?this.debug.error("JbPro","streamEnd and 1006 and _resetPlayer error",t):this.debug.error("JbPro","streamEnd and _resetPlayer error",t)}))}else{i?this.debug.log("JbPro","streamEnd pause player "+(ua(s)?"and is not meaningful retry":"")):this.debug.log("JbPro","streamEnd pause player");const r=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(r).then((()=>{this.emit(rt.playFailedAndPaused,rt.streamEnd,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.streamEnd,t,e),this.debug.error("JbPro","streamEnd pause",i)})).finally((()=>{this.streamEndOnLock=!1}))}}_handleWebsocketError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","websocketError but player is destroyed"));if(this.websocketErrorOnLock)return void this.debug.log("JbPro","websocketErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.websocketError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.websocketErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debug.log("JbPro","websocketError error and network is disconnect and reset player and play"):this.debug.log("JbPro",`websocketError error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())i?this.debug&&this.debug.log("JbPro","websocketError error and network is disconnect and _resetPlayer() but player is destroyed and return"):this.debug&&this.debug.log("JbPro","websocketError error and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","websocketError error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:nt.websocketError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debug.log("JbPro","websocketError error and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.fetchError,{},e),this.debug.error("JbPro","websocketError error and reset player and play error",t)})).finally((()=>{this.websocketErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.websocketErrorOnLock=!1,this.emit(rt.playFailedAndPaused,nt.fetchError,{},e),this.debug.error("JbPro","websocketError error and _resetPlayer error",t)}))}else{this.debug.log("JbPro","websocketError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.websocketError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.websocketError,t,e),this.debug.error("JbPro","websocketError and pause",i)})).finally((()=>{this.websocketErrorOnLock=!1}))}}_handleWebrtcError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webrtcError but player is destroyed"));if(this.webrtcErrorOnLock)return void this.debug.log("JbPro","webrtcErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.webrtcError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debug.log("JbPro","webrtcError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:nt.webrtcError}})).catch((()=>{this.emit(rt.playFailedAndPaused,nt.webrtcError,t,e),this.debug.error("JbPro","webrtcError and _resetPlayer error")})).finally((()=>{this.webrtcErrorOnLock=!1}))}else{this.debug.log("JbPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.webrtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.webrtcError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webrtcError,t,e),this.debug.error("JbPro","webrtcError and pause",i)})).finally((()=>{this.webrtcErrorOnLock=!1}))}}_handleHlsError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","hlsError but player is destroyed"));if(this.hlsErrorOnLock)return void this.debug.log("JbPro","hlsErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.hlsError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debug.log("JbPro","hlsError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ua(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:nt.hlsError}})).catch((()=>{this.emit(rt.playFailedAndPaused,nt.hlsError,t,e),this.debug.error("JbPro","hlsError and _resetPlayer error")})).finally((()=>{this.hlsErrorOnLock=!1}))}else{this.debug.log("JbPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.hlsErrorOnLock=!0,this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.hlsError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.hlsError,t,e),this.debug.error("JbPro","hlsError and pause",i)})).finally((()=>{this.hlsErrorOnLock=!1}))}}_handleAliyunRtcError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","aliyunRtcError but player is destroyed"));if(this.aliyunRtcErrorOnLock)return void this.debug.log("JbPro","aliyunRtcErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.aliyunRtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.aliyunRtcError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.aliyunRtcError,t,e),this.debug.error("JbPro","aliyunRtcError and pause",i)})).finally((()=>{this.aliyunRtcErrorOnLock=!1}))}_handleDecoderWorkerInitError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","decoderWorkerInitError but player is destroyed"));if(this.decoderWorkerInitErrorOnLock)return void this.debug.log("JbPro","decoderWorkerInitErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.decoderWorkerInitError,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","decoderWorkerInitError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerInitErrorOnLock=!0,this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.decoderWorkerInitError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.decoderWorkerInitError,t,e),this.debug.error("JbPro","decoderWorkerInitError and pause",i)})).finally((()=>{this.decoderWorkerInitErrorOnLock=!1}))}_handleDecoderWorkerWasmError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","decoderWorkerWasmError but player is destroyed"));if(this.decoderWorkerWasmErrorOnLock)return void this.debug.log("JbPro","decoderWorkerWasmErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.decoderWorkerWasmError,e)),this.debug.log("JbPro","decoderWorkerWasmError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerWasmErrorOnLock=!0,this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.decoderWorkerWasmError,{},e)})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.decoderWorkerWasmError,{},e),this.debug.error("JbPro","decoderWorkerWasmError and pause",t)})).finally((()=>{this.decoderWorkerWasmErrorOnLock=!1}))}_handleVideoElementPlayingFailedForWebrtc(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","videoElementPlayingFailedForWebrtc but player is destroyed"));if(this.videoElementPlayingFailedForWebrtcOnLock)return void this.debug.log("JbPro","videoElementPlayingFailedForWebrtcOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.videoElementPlayingFailedForWebrtc,e)),this.debug.log("JbPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoElementPlayingFailedForWebrtcOnLock=!0,this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailedForWebrtc,{},e),this.debug.error("JbPro","videoElementPlayingFailedForWebrtc and pause",t)})).finally((()=>{this.videoElementPlayingFailedForWebrtcOnLock=!1}))}_handleVideoInfoError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","videoInfoError but player is destroyed"));if(this.videoInfoErrorOnLock)return void this.debug.log("JbPro","videoInfoErrorOnLock is true");this.emit(rt.crashLog,this.getCrashLog(nt.videoInfoError,e)),this.debug.log("JbPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoInfoErrorOnLock=!0,this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.videoInfoError,{},e)})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoInfoError,{},e),this.debug.error("JbPro","videoInfoError and pause",t)})).finally((()=>{this.videoInfoErrorOnLock=!1}))}_handleWebrtcStreamH265(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webrtcStreamH265 but player is destroyed"));if(this.webrtcStreamH265OnLock)return void this.debug.log("JbPro","webrtcStreamH265OnLock is true");this.debug.log("JbPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.webrtcStreamH265OnLock=!0,this._resetPlayer({isWebrtcH265:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,rt.webrtcStreamH265,{},e),this.debug.error("JbPro","webrtcStreamH265 and reset player and play error",t)})).finally((()=>{this.webrtcStreamH265OnLock=!1}))})).catch((()=>{this.webrtcStreamH265OnLock=!1,this.emit(rt.playFailedAndPaused,rt.webrtcStreamH265,{},e),this.debug.error("JbPro","webrtcStreamH265 and _resetPlayer error")}))}_handleDelayTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debug.warn("JbPro","delay timeout replay but player is destroyed"));this.emit(rt.crashLog,this.getCrashLog(rt.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","delayTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:rt.delayTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.debug.error("JbPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.debug.error("JbPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.player&&(this.emit(rt.delayTimeoutRetryEnd),this.emit(rt.playFailedAndPaused,rt.delayTimeoutRetryEnd)),this.debug.warn("JbPro",`delayTimeoutRetryEnd and\n opt.heartTimeout is ${this.player&&this.player._opt.heartTimeout} and\n opt.heartTimeoutReplay is ${this.player&&this.player._opt.heartTimeoutReplay} and\n opt.heartTimeoutReplayTimes is ${this.player&&this.player._opt.heartTimeoutReplayTimes},and\n local._heartTimeoutReplayTimes is ${this._heartTimeoutReplayTimes}`)})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.debug.error("JbPro","delay timeout and pause error",i)}))}}_handleLoadingTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","loading timeout but player is destroyed"));this.emit(rt.crashLog,this.getCrashLog(rt.loadingTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","loadingTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:rt.loadingTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,t,e),this.debug.error("JbPro","loading timeout replay error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,t,e),this.debug.error("JbPro","loading timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,t,e),this.player&&(this.emit(rt.loadingTimeoutRetryEnd),this.emit(rt.playFailedAndPaused,rt.loadingTimeoutRetryEnd,t,e),this._opt.loadingTimeoutRetryEndShowPlayBtn&&this.player.showPlayBtn()),this.debug.log("JbPro",`loadingTimeoutRetryEnd and\n opt.loadingTimeout is ${this.player&&this.player._opt.loadingTimeout} and\n opt.loadingTimeoutReplay is ${this.player&&this.player._opt.loadingTimeoutReplay} and\n local._loadingTimeoutReplayTimes time is ${this._loadingTimeoutReplayTimes} and\n opt.loadingTimeoutReplayTimes is ${this.player&&this.player._opt.loadingTimeoutReplayTimes}`)})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,t,e),this.debug.error("JbPro","loading timeout and pause error",i)}))}}_handleInitDecoderWorkerTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","InitDecoderWorkerTimeout but player is destroyed"));this.emit(rt.crashLog,this.getCrashLog(nt.initDecoderWorkerTimeout,e)),this.debug.log("JbPro","InitDecoderWorkerTimeout and pause player");const t=this._getVideoLastIframeInfo(),i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.initDecoderWorkerTimeout,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.initDecoderWorkerTimeout,t,e),this.debug.error("JbPro","videoInfoError and pause",i)}))}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout(nt.initDecoderWorkerTimeout)}),1e3*this._opt.initDecoderWorkerTimeout)}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}}return Yv.ERROR=nt,Yv.EVENTS=ot,window.JessibucaPro=Yv,window.JbPro=Yv,window.WebPlayerPro=Yv,Yv})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-face-detector-decoder.wasm b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-face-detector-decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ea7db60321079ef403bfa3ea7b2f4333569288a4 Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-face-detector-decoder.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-face-detector-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-face-detector-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..6580ccb25858dbebdd7ea133657c173ee20d50bd --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-face-detector-demo.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),i=n(t),a=n(r);function s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function u(e,t){return e(t={exports:{}},t.exports),t.exports}var c=s(u((function(e){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports}))),f=u((function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})),l=s(f),d=u((function(e){var t=f.default;e.exports=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,r||"default");if("object"!==t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports}));s(d);var p=u((function(e){var t=f.default;e.exports=function(e){var r=d(e,"string");return"symbol"===t(r)?r:String(r)},e.exports.__esModule=!0,e.exports.default=e.exports}));s(p);var h=s(u((function(e){function t(e,t){for(var r=0;r1&&(v=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof re))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(y||g)&&(g?_=self.location.href:"undefined"!=typeof document&&document.currentScript&&(_=document.currentScript.src),r&&(_=r),_=0!==_.indexOf("blob:")?_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},g&&(f=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),c=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)});var E,b,k=t.print||console.log.bind(console),P=t.printErr||console.warn.bind(console);Object.assign(t,m),m=null,t.arguments&&t.arguments,t.thisProgram&&(v=t.thisProgram),t.quit&&t.quit,t.wasmBinary&&(E=t.wasmBinary),t.noExitRuntime,"object"!=("undefined"==typeof WebAssembly?"undefined":l(WebAssembly))&&Z("no native wasm support detected");var T=!1;function F(e,t){e||Z(t)}var D,S,C,A,x,M,j,$,O,R,W="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function B(e,t,r){for(var n=t+r,o=t;e[o]&&!(o>=n);)++o;if(o-t>16&&e.buffer&&W)return W.decode(e.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function N(e,t){return e?B(C,e,t):""}function z(e,t,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-o}function I(e){for(var t=0,r=0;r=55296&&n<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var U,H,L,V=[],Y=[],q=[],X=0,G=null;function J(e){X++,t.monitorRunDependencies&&t.monitorRunDependencies(X)}function K(e){if(X--,t.monitorRunDependencies&&t.monitorRunDependencies(X),0==X&&G){var r=G;G=null,r()}}function Z(e){t.onAbort&&t.onAbort(e),P(e="Aborted("+e+")"),T=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw s(r),r}function Q(e){return e.startsWith("data:application/octet-stream;base64,")}function ee(e){return e.startsWith("file://")}function te(e){try{if(e==U&&E)return new Uint8Array(E);if(f)return f(e);throw"both async and sync fetching of the wasm failed"}catch(e){Z(e)}}function re(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function ne(e){for(;e.length>0;)e.shift()(t)}function oe(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){j[this.ptr+4>>2]=e},this.get_type=function(){return j[this.ptr+4>>2]},this.set_destructor=function(e){j[this.ptr+8>>2]=e},this.get_destructor=function(){return j[this.ptr+8>>2]},this.set_refcount=function(e){M[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=M[this.ptr>>2];M[this.ptr>>2]=e+1},this.release_ref=function(){var e=M[this.ptr>>2];return M[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){j[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return j[this.ptr+16>>2]},this.get_exception_ptr=function(){if(or(this.get_type()))return j[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}Q(U="jessibuca-pro-face-detector-decoder.wasm")||(U=function(e){return t.locateFile?t.locateFile(e,_):_+e}(U));var ie={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=ie.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:function(e,t){return ie.normalize(e+"/"+t)}},ae={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:le.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t=ie.isAbs(n)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ae.resolve(e).substr(1),t=ae.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?r:I(e)+1,o=new Array(n),i=z(e,o,0,o.length);return t&&(o.length=i),o}var ue={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ue.ttys[e]={input:[],output:[],ops:t},le.registerDevice(e,ue.stream_ops)},stream_ops:{open:function(e){var t=ue.ttys[e.node.rdev];if(!t)throw new le.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,n,o){if(!e.tty||!e.tty.ops.get_char)throw new le.ErrnoError(60);for(var i=0,a=0;a0?r.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=se(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(k(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(k(B(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(P(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(P(B(e.output,0)),e.output=[])}}};function ce(e){Z()}var fe={ops_table:null,mount:function(e){return fe.createNode(null,"/",16895,0)},createNode:function(e,t,r,n){if(le.isBlkdev(r)||le.isFIFO(r))throw new le.ErrnoError(63);fe.ops_table||(fe.ops_table={dir:{node:{getattr:fe.node_ops.getattr,setattr:fe.node_ops.setattr,lookup:fe.node_ops.lookup,mknod:fe.node_ops.mknod,rename:fe.node_ops.rename,unlink:fe.node_ops.unlink,rmdir:fe.node_ops.rmdir,readdir:fe.node_ops.readdir,symlink:fe.node_ops.symlink},stream:{llseek:fe.stream_ops.llseek}},file:{node:{getattr:fe.node_ops.getattr,setattr:fe.node_ops.setattr},stream:{llseek:fe.stream_ops.llseek,read:fe.stream_ops.read,write:fe.stream_ops.write,allocate:fe.stream_ops.allocate,mmap:fe.stream_ops.mmap,msync:fe.stream_ops.msync}},link:{node:{getattr:fe.node_ops.getattr,setattr:fe.node_ops.setattr,readlink:fe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:fe.node_ops.getattr,setattr:fe.node_ops.setattr},stream:le.chrdev_stream_ops}});var o=le.createNode(e,t,r,n);return le.isDir(o.mode)?(o.node_ops=fe.ops_table.dir.node,o.stream_ops=fe.ops_table.dir.stream,o.contents={}):le.isFile(o.mode)?(o.node_ops=fe.ops_table.file.node,o.stream_ops=fe.ops_table.file.stream,o.usedBytes=0,o.contents=null):le.isLink(o.mode)?(o.node_ops=fe.ops_table.link.node,o.stream_ops=fe.ops_table.link.stream):le.isChrdev(o.mode)&&(o.node_ops=fe.ops_table.chrdev.node,o.stream_ops=fe.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[t]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=le.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,le.isDir(e.mode)?t.size=4096:le.isFile(e.mode)?t.size=e.usedBytes:le.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&fe.resizeFileStorage(e,t.size)},lookup:function(e,t){throw le.genericErrors[44]},mknod:function(e,t,r,n){return fe.createNode(e,t,r,n)},rename:function(e,t,r){if(le.isDir(e.mode)){var n;try{n=le.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new le.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=le.lookupNode(e,t);for(var n in r.contents)throw new le.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var n=fe.createNode(e,t,41471,0);return n.link=r,n},readlink:function(e){if(!le.isLink(e.mode))throw new le.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),r);else for(var s=0;s0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ae.resolve(le.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if((t=Object.assign(r,t)).recurse_count>8)throw new le.ErrnoError(32);for(var n=ie.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),o=le.root,i="/",a=0;a40)throw new le.ErrnoError(32)}}return{path:i,node:o}},getPath:function(e){for(var t;;){if(le.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,n=0;n>>0)%le.nameTable.length},hashAddNode:function(e){var t=le.hashName(e.parent.id,e.name);e.name_next=le.nameTable[t],le.nameTable[t]=e},hashRemoveNode:function(e){var t=le.hashName(e.parent.id,e.name);if(le.nameTable[t]===e)le.nameTable[t]=e.name_next;else for(var r=le.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=le.mayLookup(e);if(r)throw new le.ErrnoError(r,e);for(var n=le.hashName(e.id,t),o=le.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===t)return o}return le.lookup(e,t)},createNode:function(e,t,r,n){var o=new le.FSNode(e,t,r,n);return le.hashAddNode(o),o},destroyNode:function(e){le.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=le.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return le.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2},mayLookup:function(e){var t=le.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{return le.lookupNode(e,t),20}catch(e){}return le.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var n;try{n=le.lookupNode(e,t)}catch(e){return e.errno}var o=le.nodePermissions(e,"wx");if(o)return o;if(r){if(!le.isDir(n.mode))return 54;if(le.isRoot(n)||le.getPath(n)===le.cwd())return 10}else if(le.isDir(n.mode))return 31;return 0},mayOpen:function(e,t){return e?le.isLink(e.mode)?32:le.isDir(e.mode)&&("r"!==le.flagsToPermissionString(t)||512&t)?31:le.nodePermissions(e,le.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:le.MAX_OPEN_FDS,r=e;r<=t;r++)if(!le.streams[r])return r;throw new le.ErrnoError(33)},getStream:function(e){return le.streams[e]},createStream:function(e,t,r){le.FSStream||(le.FSStream=function(){this.shared={}},le.FSStream.prototype={},Object.defineProperties(le.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new le.FSStream,e);var n=le.nextfd(t,r);return e.fd=n,le.streams[n]=e,e},closeStream:function(e){le.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=le.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new le.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){le.devices[e]={stream_ops:t}},getDevice:function(e){return le.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),le.syncFSRequests++,le.syncFSRequests>1&&P("warning: "+le.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=le.getMounts(le.root.mount),n=0;function o(e){return le.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:function(e,t,r){var n,o="/"===r,i=!r;if(o&&le.root)throw new le.ErrnoError(10);if(!o&&!i){var a=le.lookupPath(r,{follow_mount:!1});if(r=a.path,n=a.node,le.isMountpoint(n))throw new le.ErrnoError(10);if(!le.isDir(n.mode))throw new le.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?le.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var t=le.lookupPath(e,{follow_mount:!1});if(!le.isMountpoint(t.node))throw new le.ErrnoError(28);var r=t.node,n=r.mounted,o=le.getMounts(n);Object.keys(le.nameTable).forEach((function(e){for(var t=le.nameTable[e];t;){var r=t.name_next;o.includes(t.mount)&&le.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(n);r.mount.mounts.splice(i,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var n=le.lookupPath(e,{parent:!0}).node,o=ie.basename(e);if(!o||"."===o||".."===o)throw new le.ErrnoError(28);var i=le.mayCreate(n,o);if(i)throw new le.ErrnoError(i);if(!n.node_ops.mknod)throw new le.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,le.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,le.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),n="",o=0;o1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var n=le.open(e,r.flags),o=le.stat(e),i=o.size,a=new Uint8Array(i);return le.read(n,a,0,i,0),"utf8"===r.encoding?t=B(a,0):"binary"===r.encoding&&(t=a),le.close(n),t},writeFile:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var n=le.open(e,r.flags,r.mode);if("string"==typeof t){var o=new Uint8Array(I(t)+1),i=z(t,o,0,o.length);le.write(n,o,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");le.write(n,t,0,t.byteLength,void 0,r.canOwn)}le.close(n)},cwd:function(){return le.currentPath},chdir:function(e){var t=le.lookupPath(e,{follow:!0});if(null===t.node)throw new le.ErrnoError(44);if(!le.isDir(t.node.mode))throw new le.ErrnoError(54);var r=le.nodePermissions(t.node,"x");if(r)throw new le.ErrnoError(r);le.currentPath=t.path},createDefaultDirectories:function(){le.mkdir("/tmp"),le.mkdir("/home"),le.mkdir("/home/web_user")},createDefaultDevices:function(){le.mkdir("/dev"),le.registerDevice(le.makedev(1,3),{read:function(){return 0},write:function(e,t,r,n,o){return n}}),le.mkdev("/dev/null",le.makedev(1,3)),ue.register(le.makedev(5,0),ue.default_tty_ops),ue.register(le.makedev(6,0),ue.default_tty1_ops),le.mkdev("/dev/tty",le.makedev(5,0)),le.mkdev("/dev/tty1",le.makedev(6,0));var e=function(){if("object"==("undefined"==typeof crypto?"undefined":l(crypto))&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(w)try{var t=a.default;return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){return Z("randomDevice")}}();le.createDevice("/dev","random",e),le.createDevice("/dev","urandom",e),le.mkdir("/dev/shm"),le.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){le.mkdir("/proc");var e=le.mkdir("/proc/self");le.mkdir("/proc/self/fd"),le.mount({mount:function(){var t=le.createNode(e,"fd",16895,73);return t.node_ops={lookup:function(e,t){var r=+t,n=le.getStream(r);if(!n)throw new le.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){t.stdin?le.createDevice("/dev","stdin",t.stdin):le.symlink("/dev/tty","/dev/stdin"),t.stdout?le.createDevice("/dev","stdout",null,t.stdout):le.symlink("/dev/tty","/dev/stdout"),t.stderr?le.createDevice("/dev","stderr",null,t.stderr):le.symlink("/dev/tty1","/dev/stderr"),le.open("/dev/stdin",0),le.open("/dev/stdout",1),le.open("/dev/stderr",1)},ensureErrnoError:function(){le.ErrnoError||(le.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},le.ErrnoError.prototype=new Error,le.ErrnoError.prototype.constructor=le.ErrnoError,[44].forEach((function(e){le.genericErrors[e]=new le.ErrnoError(e),le.genericErrors[e].stack=""})))},staticInit:function(){le.ensureErrnoError(),le.nameTable=new Array(4096),le.mount(fe,{},"/"),le.createDefaultDirectories(),le.createDefaultDevices(),le.createSpecialDirectories(),le.filesystems={MEMFS:fe}},init:function(e,r,n){le.init.initialized=!0,le.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=n||t.stderr,le.createStandardStreams()},quit:function(){le.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var t=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+t),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):se(o.responseText||"",!0)}(t,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,k("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!g)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:r};var u=le.createFile(e,t,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function f(e,t,r,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s>2]=n.dev,M[r+4>>2]=0,M[r+8>>2]=n.ino,M[r+12>>2]=n.mode,M[r+16>>2]=n.nlink,M[r+20>>2]=n.uid,M[r+24>>2]=n.gid,M[r+28>>2]=n.rdev,M[r+32>>2]=0,L=[n.size>>>0,(H=n.size,+Math.abs(H)>=1?H>0?(0|Math.min(+Math.floor(H/4294967296),4294967295))>>>0:~~+Math.ceil((H-+(~~H>>>0))/4294967296)>>>0:0)],M[r+40>>2]=L[0],M[r+44>>2]=L[1],M[r+48>>2]=4096,M[r+52>>2]=n.blocks,L=[Math.floor(n.atime.getTime()/1e3)>>>0,(H=Math.floor(n.atime.getTime()/1e3),+Math.abs(H)>=1?H>0?(0|Math.min(+Math.floor(H/4294967296),4294967295))>>>0:~~+Math.ceil((H-+(~~H>>>0))/4294967296)>>>0:0)],M[r+56>>2]=L[0],M[r+60>>2]=L[1],M[r+64>>2]=0,L=[Math.floor(n.mtime.getTime()/1e3)>>>0,(H=Math.floor(n.mtime.getTime()/1e3),+Math.abs(H)>=1?H>0?(0|Math.min(+Math.floor(H/4294967296),4294967295))>>>0:~~+Math.ceil((H-+(~~H>>>0))/4294967296)>>>0:0)],M[r+72>>2]=L[0],M[r+76>>2]=L[1],M[r+80>>2]=0,L=[Math.floor(n.ctime.getTime()/1e3)>>>0,(H=Math.floor(n.ctime.getTime()/1e3),+Math.abs(H)>=1?H>0?(0|Math.min(+Math.floor(H/4294967296),4294967295))>>>0:~~+Math.ceil((H-+(~~H>>>0))/4294967296)>>>0:0)],M[r+88>>2]=L[0],M[r+92>>2]=L[1],M[r+96>>2]=0,L=[n.ino>>>0,(H=n.ino,+Math.abs(H)>=1?H>0?(0|Math.min(+Math.floor(H/4294967296),4294967295))>>>0:~~+Math.ceil((H-+(~~H>>>0))/4294967296)>>>0:0)],M[r+104>>2]=L[0],M[r+108>>2]=L[1],0},doMsync:function(e,t,r,n,o){var i=C.slice(e,e+r);le.msync(t,i,o,r,n)},varargs:void 0,get:function(){return de.varargs+=4,M[de.varargs-4>>2]},getStr:function(e){return N(e)},getStreamFromFD:function(e){var t=le.getStream(e);if(!t)throw new le.ErrnoError(8);return t}},pe={};function he(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function me(e){return this.fromWireType(M[e>>2])}var ve={},ye={},ge={};function we(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function _e(e,t){return e=we(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function Ee(e,t){var r=_e(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var be=void 0;function ke(e){throw new be(e)}function Pe(e,t,r){function n(t){var n=r(t);n.length!==e.length&&ke("Mismatched type converter count");for(var o=0;o2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=t.name;if(e||Ce('type "'+n+'" must have a positive integer typeid pointer'),ye.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ce("Cannot register type '"+n+"' twice")}if(ye[e]=t,delete ge[e],ve.hasOwnProperty(e)){var o=ve[e];delete ve[e],o.forEach((function(e){return e()}))}}function xe(e){if(!(this instanceof Qe))return!1;if(!(e instanceof Qe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return t===n&&r===o}function Me(e){Ce(e.$$.ptrType.registeredClass.name+" instance already deleted")}var je=!1;function $e(e){}function Oe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Re(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var n=Re(e,t,r.baseClass);return null===n?null:r.downcast(n)}var We={};function Be(){return Object.keys(Le).length}function Ne(){var e=[];for(var t in Le)Le.hasOwnProperty(t)&&e.push(Le[t]);return e}var ze=[];function Ie(){for(;ze.length;){var e=ze.pop();e.$$.deleteScheduled=!1,e.delete()}}var Ue=void 0;function He(e){Ue=e,ze.length&&Ue&&Ue(Ie)}var Le={};function Ve(e,t){return t=function(e,t){for(void 0===t&&Ce("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Le[t]}function Ye(e,t){return t.ptrType&&t.ptr||ke("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&ke("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Xe(Object.create(e,{$$:{value:t}}))}function qe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Ve(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var n=r.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?Ye(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ye(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(t),s=We[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var u=Re(t,this.registeredClass,i.registeredClass);return null===u?o.call(this):this.isSmartPointer?Ye(i.registeredClass.instancePrototype,{ptrType:i,ptr:u,smartPtrType:this,smartPtr:e}):Ye(i.registeredClass.instancePrototype,{ptrType:i,ptr:u})}function Xe(e){return"undefined"==typeof FinalizationRegistry?(Xe=function(e){return e},e):(je=new FinalizationRegistry((function(e){Oe(e.$$)})),Xe=function(e){var t=e.$$;if(t.smartPtr){var r={$$:t};je.register(e,r,e)}return e},$e=function(e){return je.unregister(e)},Xe(e))}function Ge(){if(this.$$.ptr||Me(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Xe(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Je(){this.$$.ptr||Me(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ce("Object already scheduled for deletion"),$e(this),Oe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ke(){return!this.$$.ptr}function Ze(){return this.$$.ptr||Me(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ce("Object already scheduled for deletion"),ze.push(this),1===ze.length&&Ue&&Ue(Ie),this.$$.deleteScheduled=!0,this}function Qe(){}function et(e,t,r){if(void 0===e[t].overloadTable){var n=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ce("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[n.argCount]=n}}function tt(e,t,r,n,o,i,a,s){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=a,this.downcast=s,this.pureVirtualFunctions=[]}function rt(e,t,r){for(;t!==r;)t.upcast||Ce("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function nt(e,t){if(null===t)return this.isReference&&Ce("null is not a valid "+this.name),0;t.$$||Ce('Cannot pass "'+Ft(t)+'" as a '+this.name),t.$$.ptr||Ce("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return rt(t.$$.ptr,r,this.registeredClass)}function ot(e,t){var r;if(null===t)return this.isReference&&Ce("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ce('Cannot pass "'+Ft(t)+'" as a '+this.name),t.$$.ptr||Ce("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ce("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var n=t.$$.ptrType.registeredClass;if(r=rt(t.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ce("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ce("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var o=t.clone();r=this.rawShare(r,Tt.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ce("Unsupporting sharing policy")}return r}function it(e,t){if(null===t)return this.isReference&&Ce("null is not a valid "+this.name),0;t.$$||Ce('Cannot pass "'+Ft(t)+'" as a '+this.name),t.$$.ptr||Ce("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ce("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return rt(t.$$.ptr,r,this.registeredClass)}function at(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function st(e){this.rawDestructor&&this.rawDestructor(e)}function ut(e){null!==e&&e.delete()}function ct(e,t,r,n,o,i,a,s,u,c,f){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=f,o||void 0!==t.baseClass?this.toWireType=ot:n?(this.toWireType=nt,this.destructorFunction=null):(this.toWireType=it,this.destructorFunction=null)}var ft=[];function lt(e){var t=ft[e];return t||(e>=ft.length&&(ft.length=e+1),ft[e]=t=R.get(e)),t}function dt(e,r,n){return e.includes("j")?function(e,r,n){var o=t["dynCall_"+e];return n&&n.length?o.apply(null,[r].concat(n)):o.call(null,r)}(e,r,n):lt(r).apply(null,n)}function pt(e,t){var r,n,o,i=(e=De(e)).includes("j")?(r=e,n=t,o=[],function(){return o.length=0,Object.assign(o,arguments),dt(r,n,o)}):lt(t);return"function"!=typeof i&&Ce("unknown function pointer with signature "+e+": "+t),i}var ht=void 0;function mt(e){var t=rr(e),r=De(t);return er(t),r}function vt(e,t){var r=[],n={};throw t.forEach((function e(t){n[t]||ye[t]||(ge[t]?ge[t].forEach(e):(r.push(t),n[t]=!0))})),new ht(e+": "+r.map(mt).join([", "]))}function yt(e,t){for(var r=[],n=0;n>2]);return r}function gt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+l(e)+" which is not a function");var r=_e(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var n=new r,o=e.apply(n,t);return o instanceof Object?o:n}function wt(e,t,r,n,o){var i=t.length;i<2&&Ce("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,s=!1,u=1;u0?", ":"")+l),d+=(c?"var rv = ":"")+"invoker(fn"+(l.length>0?", ":"")+l+");\n",s)d+="runDestructors(destructors);\n";else for(u=a?1:2;u4&&0==--Et[e].refcount&&(Et[e]=void 0,_t.push(e))}function kt(){for(var e=0,t=5;t>2])};case 3:return function(e){return this.fromWireType(O[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function St(e,t,r){switch(t){case 0:return r?function(e){return S[e]}:function(e){return C[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return x[e>>1]};case 2:return r?function(e){return M[e>>2]}:function(e){return j[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Ct="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function At(e,t){for(var r=e,n=r>>1,o=n+t/2;!(n>=o)&&x[n];)++n;if((r=n<<1)-e>32&&Ct)return Ct.decode(C.subarray(e,r));for(var i="",a=0;!(a>=t/2);++a){var s=A[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function xt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,o=(r-=2)<2*e.length?r/2:e.length,i=0;i>1]=a,t+=2}return A[t>>1]=0,t-n}function Mt(e){return 2*e.length}function jt(e,t){for(var r=0,n="";!(r>=t/4);){var o=M[e+4*r>>2];if(0==o)break;if(++r,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function $t(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var n=t,o=n+r-4,i=0;i=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i)),M[t>>2]=a,(t+=4)+4>o)break}return M[t>>2]=0,t-n}function Ot(e){for(var t=0,r=0;r=55296&&n<=57343&&++r,t+=4}return t}function Rt(e,t){var r=ye[e];return void 0===r&&Ce(t+" has unknown type "+mt(e)),r}var Wt={};function Bt(e){var t=Wt[e];return void 0===t?De(e):t}var Nt=[];function zt(){return"object"==("undefined"==typeof globalThis?"undefined":l(globalThis))?globalThis:Function("return this")()}var It,Ut=[];It=w?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:function(){return performance.now()};var Ht={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":l(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:v||"./this.program"};for(var t in Ht)void 0===Ht[t]?delete e[t]:e[t]=Ht[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}function Vt(e){return e%4==0&&(e%100!=0||e%400==0)}var Yt=[31,29,31,30,31,30,31,31,30,31,30,31],qt=[31,28,31,30,31,30,31,31,30,31,30,31];function Xt(e,t,r,n){var o=M[n+40>>2],i={tm_sec:M[n>>2],tm_min:M[n+4>>2],tm_hour:M[n+8>>2],tm_mday:M[n+12>>2],tm_mon:M[n+16>>2],tm_year:M[n+20>>2],tm_wday:M[n+24>>2],tm_yday:M[n+28>>2],tm_isdst:M[n+32>>2],tm_gmtoff:M[n+36>>2],tm_zone:o?N(o):""},a=N(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)a=a.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"];function l(e,t,r){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}var n;return 0===(n=r(e.getFullYear()-t.getFullYear()))&&0===(n=r(e.getMonth()-t.getMonth()))&&(n=r(e.getDate()-t.getDate())),n}function h(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var n=Vt(r.getFullYear()),o=r.getMonth(),i=(n?Yt:qt)[o];if(!(t>i-r.getDate()))return r.setDate(r.getDate()+t),r;t-=i-r.getDate()+1,r.setDate(1),o<11?r.setMonth(o+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=h(r),i=h(n);return p(o,t)<=0?p(i,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var v={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return f[e.tm_mon].substring(0,3)},"%B":function(e){return f[e.tm_mon]},"%C":function(e){return d((e.tm_year+1900)/100|0,2)},"%d":function(e){return d(e.tm_mday,2)},"%e":function(e){return l(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return d(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(e){return d(e.tm_mday+function(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}(Vt(e.tm_year+1900)?Yt:qt,e.tm_mon-1),3)},"%m":function(e){return d(e.tm_mon+1,2)},"%M":function(e){return d(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return d(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return d(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&Vt(e.tm_year)||(t=1)}}else{t=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&Vt(e.tm_year%400-1))&&t++}return d(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return d(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in a=a.replace(/%%/g,"\0\0"),v)a.includes(u)&&(a=a.replace(new RegExp(u,"g"),v[u](i)));var y=se(a=a.replace(/\0\0/g,"%"),!1);return y.length>t?0:(function(e,t){S.set(e,t)}(y,e),y.length-1)}var Gt=function(e,t,r,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=le.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n},Jt=365,Kt=146;Object.defineProperties(Gt.prototype,{read:{get:function(){return(this.mode&Jt)===Jt},set:function(e){e?this.mode|=Jt:this.mode&=-366}},write:{get:function(){return(this.mode&Kt)===Kt},set:function(e){e?this.mode|=Kt:this.mode&=-147}},isFolder:{get:function(){return le.isDir(this.mode)}},isDevice:{get:function(){return le.isChrdev(this.mode)}}}),le.FSNode=Gt,le.staticInit(),t.FS_createPath=le.createPath,t.FS_createDataFile=le.createDataFile,t.FS_createPreloadedFile=le.createPreloadedFile,t.FS_unlink=le.unlink,t.FS_createLazyFile=le.createLazyFile,t.FS_createDevice=le.createDevice,be=t.InternalError=Ee(Error,"InternalError"),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e}(),Se=t.BindingError=Ee(Error,"BindingError"),Qe.prototype.isAliasOf=xe,Qe.prototype.clone=Ge,Qe.prototype.delete=Je,Qe.prototype.isDeleted=Ke,Qe.prototype.deleteLater=Ze,t.getInheritedInstanceCount=Be,t.getLiveInheritedInstances=Ne,t.flushPendingDeletes=Ie,t.setDelayFunction=He,ct.prototype.getPointee=at,ct.prototype.destructor=st,ct.prototype.argPackAdvance=8,ct.prototype.readValueFromPointer=me,ct.prototype.deleteObject=ut,ct.prototype.fromWireType=qe,ht=t.UnboundTypeError=Ee(Error,"UnboundTypeError"),t.count_emval_handles=kt,t.get_first_emval=Pt;var Zt={f:function(e){return Qt(e+24)+24},e:function(e,t,r){throw new oe(e).init(t,r),e},v:function(e,t,r){de.varargs=r;try{var n=de.getStreamFromFD(e);switch(t){case 0:return(o=de.get())<0?-28:le.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=de.get();return n.flags|=o,0;case 5:return o=de.get(),A[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return i=28,M[tr()>>2]=i,-1}}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}var i},H:function(e,t,r){de.varargs=r;try{var n=de.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=de.get();return M[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:return o=de.get(),le.ioctl(n,t,o);default:Z("bad ioctl syscall "+t)}}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,n){de.varargs=n;try{t=de.getStr(t),t=de.calculateAt(e,t);var o=n?de.get():0;return le.open(t,r,o).fd}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}},Q:function(e){var t=pe[e];delete pe[e];var r=t.rawConstructor,n=t.rawDestructor,o=t.fields;Pe([e],o.map((function(e){return e.getterReturnType})).concat(o.map((function(e){return e.setterArgumentType}))),(function(e){var i={};return o.forEach((function(t,r){var n=t.fieldName,a=e[r],s=t.getter,u=t.getterContext,c=e[r+o.length],f=t.setter,l=t.setterContext;i[n]={read:function(e){return a.fromWireType(s(u,e))},write:function(e,t){var r=[];f(l,e,c.toWireType(r,t)),he(r)}}})),[{name:t.name,fromWireType:function(e){var t={};for(var r in i)t[r]=i[r].read(e);return n(e),t},toWireType:function(e,t){for(var o in i)if(!(o in t))throw new TypeError('Missing field: "'+o+'"');var a=r();for(o in i)i[o].write(a,t[o]);return null!==e&&e.push(n,a),a},argPackAdvance:8,readValueFromPointer:me,destructorFunction:n}]}))},C:function(e,t,r,n,o){},N:function(e,t,r,n,o){var i=Te(r);Ae(e,{name:t=De(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===r)n=S;else if(2===r)n=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);n=M}return this.fromWireType(n[e>>i])},destructorFunction:null})},T:function(e,r,n,o,i,a,s,u,c,f,l,d,p){l=De(l),a=pt(i,a),u&&(u=pt(s,u)),f&&(f=pt(c,f)),p=pt(d,p);var h=we(l);!function(e,r,n){t.hasOwnProperty(e)?((void 0===n||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[n])&&Ce("Cannot register public name '"+e+"' twice"),et(t,e,e),t.hasOwnProperty(n)&&Ce("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),t[e].overloadTable[n]=r):(t[e]=r,void 0!==n&&(t[e].numArguments=n))}(h,(function(){vt("Cannot construct "+l+" due to unbound types",[o])})),Pe([e,r,n],o?[o]:[],(function(r){var n,i;r=r[0],i=o?(n=r.registeredClass).instancePrototype:Qe.prototype;var s=_e(h,(function(){if(Object.getPrototypeOf(this)!==c)throw new Se("Use 'new' to construct "+l);if(void 0===d.constructor_body)throw new Se(l+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new Se("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),c=Object.create(i,{constructor:{value:s}});s.prototype=c;var d=new tt(l,s,c,p,n,a,u,f),m=new ct(l,d,!0,!1,!1),v=new ct(l+"*",d,!1,!1,!1),y=new ct(l+" const*",d,!1,!0,!1);return We[e]={pointerType:v,constPointerType:y},function(e,r,n){t.hasOwnProperty(e)||ke("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==n?t[e].overloadTable[n]=r:(t[e]=r,t[e].argCount=n)}(h,s),[m,v,y]}))},S:function(e,t,r,n,o,i){F(t>0);var a=yt(t,r);o=pt(n,o),Pe([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Se("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=function(){vt("Cannot construct "+e.name+" due to unbound types",a)},Pe([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[t-1]=wt(r,n,null,o,i),[]})),[]}))},l:function(e,t,r,n,o,i,a,s){var u=yt(r,n);t=De(t),i=pt(o,i),Pe([],[e],(function(e){var n=(e=e[0]).name+"."+t;function o(){vt("Cannot call "+n+" due to unbound types",u)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,f=c[t];return void 0===f||void 0===f.overloadTable&&f.className!==e.name&&f.argCount===r-2?(o.argCount=r-2,o.className=e.name,c[t]=o):(et(c,t,n),c[t].overloadTable[r-2]=o),Pe([],u,(function(o){var s=wt(n,o,e,i,a);return void 0===c[t].overloadTable?(s.argCount=r-2,c[t]=s):c[t].overloadTable[r-2]=s,[]})),[]}))},M:function(e,t){Ae(e,{name:t=De(t),fromWireType:function(e){var t=Tt.toValue(e);return bt(e),t},toWireType:function(e,t){return Tt.toHandle(t)},argPackAdvance:8,readValueFromPointer:me,destructorFunction:null})},x:function(e,t,r){var n=Te(r);Ae(e,{name:t=De(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:Dt(t,n),destructorFunction:null})},d:function(e,t,r,n,o){t=De(t);var i=Te(r),a=function(e){return e};if(0===n){var s=32-8*r;a=function(e){return e<>>s}}var u=t.includes("unsigned");Ae(e,{name:t,fromWireType:a,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:St(t,i,0!==n),destructorFunction:null})},b:function(e,t,r){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(e){var t=j,r=t[e>>=2],o=t[e+1];return new n(D,o,r)}Ae(e,{name:r=De(r),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},w:function(e,t){var r="std::string"===(t=De(t));Ae(e,{name:t,fromWireType:function(e){var t,n=j[e>>2],o=e+4;if(r)for(var i=o,a=0;a<=n;++a){var s=o+a;if(a==n||0==C[s]){var u=N(i,s-i);void 0===t?t=u:(t+=String.fromCharCode(0),t+=u),i=s+1}}else{var c=new Array(n);for(a=0;a>2]=n,r&&o)z(t,C,a,n+1);else if(o)for(var s=0;s255&&(er(a),Ce("String has UTF-16 code units that do not fit in 8 bits")),C[a+s]=u}else for(s=0;s>2],a=i(),u=e+4,c=0;c<=o;++c){var f=e+4+c*t;if(c==o||0==a[f>>s]){var l=n(u,f-u);void 0===r?r=l:(r+=String.fromCharCode(0),r+=l),u=f+t}}return er(e),r},toWireType:function(e,n){"string"!=typeof n&&Ce("Cannot pass non-string to C++ string type "+r);var i=a(n),u=Qt(4+i+t);return j[u>>2]=i>>s,o(n,u+4,i+t),null!==e&&e.push(er,u),u},argPackAdvance:8,readValueFromPointer:me,destructorFunction:function(e){er(e)}})},R:function(e,t,r,n,o,i){pe[e]={name:De(t),rawConstructor:pt(r,n),rawDestructor:pt(o,i),fields:[]}},k:function(e,t,r,n,o,i,a,s,u,c){pe[e].fields.push({fieldName:De(t),getterReturnType:r,getter:pt(n,o),getterContext:i,setterArgumentType:a,setter:pt(s,u),setterContext:c})},O:function(e,t){Ae(e,{isVoid:!0,name:t=De(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},K:function(){return Date.now()},P:function(e){do{var t=j[e>>2],r=j[(e+=4)>>2],n=j[(e+=4)>>2];e+=4;var o=N(t);le.createPath("/",ie.dirname(o),!0,!0),le.createDataFile(o,null,S.subarray(n,n+r),!0,!0,!0)}while(j[e>>2])},J:function(){return!0},j:function(e,t,r){e=Tt.toValue(e),t=Rt(t,"emval::as");var n=[],o=Tt.toHandle(n);return j[r>>2]=o,t.toWireType(n,e)},z:function(e,t,r,n,o){return(e=Nt[e])(t=Tt.toValue(t),r=Bt(r),function(e){var t=[];return j[e>>2]=Tt.toHandle(t),t}(n),o)},W:function(e,t,r,n){(e=Nt[e])(t=Tt.toValue(t),r=Bt(r),null,n)},a:bt,A:function(e){return 0===e?Tt.toHandle(zt()):(e=Bt(e),Tt.toHandle(zt()[e]))},s:function(e,t){var r=function(e,t){for(var r=new Array(e),n=0;n>2],"parameter "+n);return r}(e,t),n=r[0],o=n.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",i=Ut[o];if(void 0!==i)return i;for(var a=["retType"],s=[n],u="",c=0;c4&&(Et[e].refcount+=1)},r:function(){return Tt.toHandle([])},c:function(e){return Tt.toHandle(Bt(e))},V:function(){return Tt.toHandle({})},h:function(e){he(Tt.toValue(e)),bt(e)},y:function(e,t,r){e=Tt.toValue(e),t=Tt.toValue(t),r=Tt.toValue(r),e[t]=r},U:function(e,t){var r=(e=Rt(e,"_emval_take_value")).readValueFromPointer(t);return Tt.toHandle(r)},n:function(){Z("")},I:It,L:function(e,t,r){C.copyWithin(e,t,t+r)},E:function(e){C.length,Z("OOM")},F:function(e,t){var r=0;return Lt().forEach((function(n,o){var i=t+r;j[e+4*o>>2]=i,function(e,t,r){for(var n=0;n>0]=e.charCodeAt(n);r||(S[t>>0]=0)}(n,i),r+=n.length+1})),0},G:function(e,t){var r=Lt();j[e>>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),j[t>>2]=n,0},p:function(e){try{var t=de.getStreamFromFD(e);return le.close(t),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},t:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=j[t+4>>2];t+=8;var u=le.read(e,S,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},B:function(e,t,r,n,o){try{var i=(u=r)+2097152>>>0<4194305-!!(s=t)?(s>>>0)+4294967296*u:NaN;if(isNaN(i))return 61;var a=de.getStreamFromFD(e);return le.llseek(a,i,n),L=[a.position>>>0,(H=a.position,+Math.abs(H)>=1?H>0?(0|Math.min(+Math.floor(H/4294967296),4294967295))>>>0:~~+Math.ceil((H-+(~~H>>>0))/4294967296)>>>0:0)],M[o>>2]=L[0],M[o+4>>2]=L[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}var s,u},o:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=j[t+4>>2];t+=8;var u=le.write(e,S,a,s,n);if(u<0)return-1;o+=u}return o}(de.getStreamFromFD(e),t,r);return j[n>>2]=o,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},i:function(e){},D:function(e,t,r,n){return Xt(e,t,r,n)}};!function(){var e={a:Zt};function r(e,r){var n,o,i=e.exports;t.asm=i,b=t.asm.X,n=b.buffer,D=n,t.HEAP8=S=new Int8Array(n),t.HEAP16=A=new Int16Array(n),t.HEAP32=M=new Int32Array(n),t.HEAPU8=C=new Uint8Array(n),t.HEAPU16=x=new Uint16Array(n),t.HEAPU32=j=new Uint32Array(n),t.HEAPF32=$=new Float32Array(n),t.HEAPF64=O=new Float64Array(n),R=t.asm._,o=t.asm.Y,Y.unshift(o),K()}function n(e){r(e.instance)}function o(t){return function(){if(!E&&(y||g)){if("function"==typeof fetch&&!ee(U))return fetch(U,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+U+"'";return e.arrayBuffer()})).catch((function(){return te(U)}));if(c)return new Promise((function(e,t){c(U,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return te(U)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){P("failed to asynchronously prepare wasm: "+e),Z(e)}))}if(J(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return P("Module.instantiateWasm callback failed with error: "+e),!1}(E||"function"!=typeof WebAssembly.instantiateStreaming||Q(U)||ee(U)||w||"function"!=typeof fetch?o(n):fetch(U,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return P("wasm streaming compile failed: "+e),P("falling back to ArrayBuffer instantiation"),o(n)}))}))).catch(s)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.Y).apply(null,arguments)};var Qt=t._malloc=function(){return(Qt=t._malloc=t.asm.Z).apply(null,arguments)},er=t._free=function(){return(er=t._free=t.asm.$).apply(null,arguments)},tr=t.___errno_location=function(){return(tr=t.___errno_location=t.asm.aa).apply(null,arguments)},rr=t.___getTypeName=function(){return(rr=t.___getTypeName=t.asm.ba).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.ca).apply(null,arguments)};var nr,or=t.___cxa_is_pointer_type=function(){return(or=t.___cxa_is_pointer_type=t.asm.da).apply(null,arguments)};function ir(e){function r(){nr||(nr=!0,t.calledRun=!0,T||(t.noFSInit||le.init.initialized||le.init(),le.ignorePermissions=!1,ne(Y),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),q.unshift(e);var e;ne(q)}()))}X>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),V.unshift(e);var e;ne(V)}(),X>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),r()}),1)):r()))}if(t.dynCall_ji=function(){return(t.dynCall_ji=t.asm.ea).apply(null,arguments)},t.dynCall_jiii=function(){return(t.dynCall_jiii=t.asm.fa).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.ga).apply(null,arguments)},t.dynCall_viji=function(){return(t.dynCall_viji=t.asm.ha).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.ia).apply(null,arguments)},t.dynCall_viijii=function(){return(t.dynCall_viijii=t.asm.ja).apply(null,arguments)},t.dynCall_iiiiij=function(){return(t.dynCall_iiiiij=t.asm.ka).apply(null,arguments)},t.dynCall_iiiiijj=function(){return(t.dynCall_iiiiijj=t.asm.la).apply(null,arguments)},t.dynCall_iiiiiijj=function(){return(t.dynCall_iiiiiijj=t.asm.ma).apply(null,arguments)},t.___emscripten_embedded_file_data=804680,t.addRunDependency=J,t.removeRunDependency=K,t.FS_createPath=le.createPath,t.FS_createDataFile=le.createDataFile,t.FS_createPreloadedFile=le.createPreloadedFile,t.FS_createLazyFile=le.createLazyFile,t.FS_createDevice=le.createDevice,t.FS_unlink=le.unlink,G=function e(){nr||ir(),nr||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return ir(),e.exports=t,t.ready});e.exports=n})),k=function(){function e(){c(this,e)}return h(e,[{key:"on",value:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this}},{key:"once",value:function(e,t,r){var n=this;function o(){n.off(e,o);for(var i=arguments.length,a=new Array(i),s=0;s1?r-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:{};return c(this,r),(e=t.call(this)).module=null,e.detector=null,e.startTimestamp=null,e.detectWidth=n.detectWidth||192,e.showRect=!1!==n.showRect,e.rectangleColor=n.rectangleColor||{r:0,g:255,b:0},e}return h(r,[{key:"destroy",value:function(){this.off(),this.detector&&(this.detector.clear(),this.detector.delete()),this.module&&(this.module=null),this.startTimestamp=null}},{key:"load",value:function(){var e=this;return new Promise((function(t,r){b().then((function(n){e.module=n,e.module.FaceDetector?(t(),e.detector=new e.module.FaceDetector(e),e.detector.setDetectWidth(e.detectWidth),e.detector.setParams({showInfo:e.showRect,rectangleColor:e.rectangleColor})):r("load jessibuca face detector fail")})).catch((function(e){console.error(e),r("load jessibuca face detector error")}))}))}},{key:"updateConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.detectWidth&&(this.detectWidth=e.detectWidth,this.detector&&this.detector.setDetectWidth(this.detectWidth));var t={};P(e.showRect)&&(this.showRect=e.showRect,t.showInfo=e.showRect),P(e.rectangleColor)&&(this.rectangleColor=e.rectangleColor,t.rectangleColor=e.rectangleColor),T(t)&&this.detector&&this.detector.setParams(t)}},{key:"detect",value:function(e){if(!this.detector)return e.data;if(null===this.startTimestamp&&(this.startTimestamp=Date.now()),Date.now()-this.startTimestamp>6e5)return e.data;var t=this.detector.detect(e.data,e.width,e.height);if(t){var r=t.faces||[];if(this.emit("jessibuca-pro-face-detector-info",{ts:e.ts,list:r}),t.outFaceYUV){var n=t.outFaceYUV,o=n+3*(e.width*e.height)/2;return this.module.HEAPU8.subarray(n,o)}}return e.data}}]),r}(k);window.JessibucaProFaceDetector=D})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-image-detector-decoder.wasm b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-image-detector-decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1a8bf9b93df1a60d1329e55aa556e4c36913483e Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-image-detector-decoder.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-image-detector-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-image-detector-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..81f5555b3f79c6575685b43a8816058b198c5310 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-image-detector-demo.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e,t){return e(t={exports:{}},t.exports),t.exports}var r=e(t((function(e){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports}))),n=t((function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})),o=e(n),i=t((function(e){var t=n.default;e.exports=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,r||"default");if("object"!==t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(i);var a=t((function(e){var t=n.default;e.exports=function(e){var r=i(e,"string");return"symbol"===t(r)?r:String(r)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(a);var s=e(t((function(e){function t(e,t){for(var r=0;r1&&(d=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),e.inspect=function(){return"[Emscripten Module object]"}):(p||h)&&(h?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),l&&(v=l),v=0!==v.indexOf("blob:")?v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(a=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),i=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)});var y,g,w=e.print||console.log.bind(console),_=e.printErr||console.warn.bind(console);Object.assign(e,f),f=null,e.arguments&&e.arguments,e.thisProgram&&(d=e.thisProgram),e.quit&&e.quit,e.wasmBinary&&(y=e.wasmBinary),e.noExitRuntime,"object"!=("undefined"==typeof WebAssembly?"undefined":o(WebAssembly))&&q("no native wasm support detected");var E=!1;function b(e,t){e||q(t)}var k,P,S,T,D,A,C,M,F,x,O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function j(e,t,r){for(var n=t+r,o=t;e[o]&&!(o>=n);)++o;if(o-t>16&&e.buffer&&O)return O.decode(e.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function $(e,t){return e?j(S,e,t):""}function R(e,t,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-o}function B(e){for(var t=0,r=0;r=55296&&n<=57343?(t+=4,++r):t+=3}return t}e.INITIAL_MEMORY;var N=[],U=[],I=[],z=0,W=null;function L(t){z++,e.monitorRunDependencies&&e.monitorRunDependencies(z)}function H(t){if(z--,e.monitorRunDependencies&&e.monitorRunDependencies(z),0==z&&W){var r=W;W=null,r()}}function q(t){e.onAbort&&e.onAbort(t),_(t="Aborted("+t+")"),E=!0,t+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(t);throw r(n),n}var V,G,Y,J,X="data:application/octet-stream;base64,";function K(e){return e.startsWith(X)}function Z(e){return e.startsWith("file://")}function Q(e){try{if(e==V&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){q(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(t){for(;t.length>0;)t.shift()(e)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){C[this.ptr+4>>2]=e},this.get_type=function(){return C[this.ptr+4>>2]},this.set_destructor=function(e){C[this.ptr+8>>2]=e},this.get_destructor=function(){return C[this.ptr+8>>2]},this.set_refcount=function(e){A[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,P[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=P[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,P[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=P[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=A[this.ptr>>2];A[this.ptr>>2]=e+1},this.release_ref=function(){var e=A[this.ptr>>2];return A[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){C[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return C[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return C[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function ne(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}e.locateFile?K(V="jessibuca-pro-image-detector-decoder.wasm")||(G=V,V=e.locateFile?e.locateFile(G,v):v+G):V=new URL("jessibuca-pro-image-detector-decoder.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("jessibuca-pro-image-detector-demo.js",document.baseURI).href).toString();var oe=void 0;function ie(e){for(var t="",r=e;S[r];)t+=oe[S[r++]];return t}var ae={},se={},ue={},ce=48,fe=57;function le(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ce&&t<=fe?"_"+e:e}function de(e,t){return e=le(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function pe(e,t){var r=de(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var he=void 0;function me(e){throw new he(e)}var ve=void 0;function ye(e){throw new ve(e)}function ge(e,t,r){function n(t){var n=r(t);n.length!==e.length&&ye("Mismatched type converter count");for(var o=0;o2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=t.name;if(e||me('type "'+n+'" must have a positive integer typeid pointer'),se.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;me("Cannot register type '"+n+"' twice")}if(se[e]=t,delete ue[e],ae.hasOwnProperty(e)){var o=ae[e];delete ae[e],o.forEach((function(e){return e()}))}}function _e(e){if(!(this instanceof We))return!1;if(!(e instanceof We))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return t===n&&r===o}function Ee(e){me(e.$$.ptrType.registeredClass.name+" instance already deleted")}var be=!1;function ke(e){}function Pe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Se(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var n=Se(e,t,r.baseClass);return null===n?null:r.downcast(n)}var Te={};function De(){return Object.keys(Oe).length}function Ae(){var e=[];for(var t in Oe)Oe.hasOwnProperty(t)&&e.push(Oe[t]);return e}var Ce=[];function Me(){for(;Ce.length;){var e=Ce.pop();e.$$.deleteScheduled=!1,e.delete()}}var Fe=void 0;function xe(e){Fe=e,Ce.length&&Fe&&Fe(Me)}var Oe={};function je(e,t){return t=function(e,t){for(void 0===t&&me("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Oe[t]}function $e(e,t){return t.ptrType&&t.ptr||ye("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&ye("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Be(Object.create(e,{$$:{value:t}}))}function Re(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=je(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var n=r.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?$e(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):$e(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(t),s=Te[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var u=Se(t,this.registeredClass,i.registeredClass);return null===u?o.call(this):this.isSmartPointer?$e(i.registeredClass.instancePrototype,{ptrType:i,ptr:u,smartPtrType:this,smartPtr:e}):$e(i.registeredClass.instancePrototype,{ptrType:i,ptr:u})}function Be(e){return"undefined"==typeof FinalizationRegistry?(Be=function(e){return e},e):(be=new FinalizationRegistry((function(e){Pe(e.$$)})),Be=function(e){var t=e.$$;if(t.smartPtr){var r={$$:t};be.register(e,r,e)}return e},ke=function(e){return be.unregister(e)},Be(e))}function Ne(){if(this.$$.ptr||Ee(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Be(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ue(){this.$$.ptr||Ee(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),ke(this),Pe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ie(){return!this.$$.ptr}function ze(){return this.$$.ptr||Ee(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),Ce.push(this),1===Ce.length&&Fe&&Fe(Me),this.$$.deleteScheduled=!0,this}function We(){}function Le(e,t,r){if(void 0===e[t].overloadTable){var n=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||me("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[n.argCount]=n}}function He(e,t,r,n,o,i,a,s){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=a,this.downcast=s,this.pureVirtualFunctions=[]}function qe(e,t,r){for(;t!==r;)t.upcast||me("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Ve(e,t){if(null===t)return this.isReference&&me("null is not a valid "+this.name),0;t.$$||me('Cannot pass "'+vt(t)+'" as a '+this.name),t.$$.ptr||me("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return qe(t.$$.ptr,r,this.registeredClass)}function Ge(e,t){var r;if(null===t)return this.isReference&&me("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||me('Cannot pass "'+vt(t)+'" as a '+this.name),t.$$.ptr||me("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&me("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var n=t.$$.ptrType.registeredClass;if(r=qe(t.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&me("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:me("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var o=t.clone();r=this.rawShare(r,mt.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:me("Unsupporting sharing policy")}return r}function Ye(e,t){if(null===t)return this.isReference&&me("null is not a valid "+this.name),0;t.$$||me('Cannot pass "'+vt(t)+'" as a '+this.name),t.$$.ptr||me("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&me("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return qe(t.$$.ptr,r,this.registeredClass)}function Je(e){return this.fromWireType(A[e>>2])}function Xe(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Ke(e){this.rawDestructor&&this.rawDestructor(e)}function Ze(e){null!==e&&e.delete()}function Qe(e,t,r,n,o,i,a,s,u,c,f){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=f,o||void 0!==t.baseClass?this.toWireType=Ge:n?(this.toWireType=Ve,this.destructorFunction=null):(this.toWireType=Ye,this.destructorFunction=null)}var et=[];function tt(e){var t=et[e];return t||(e>=et.length&&(et.length=e+1),et[e]=t=x.get(e)),t}function rt(t,r,n){return t.includes("j")?function(t,r,n){var o=e["dynCall_"+t];return n&&n.length?o.apply(null,[r].concat(n)):o.call(null,r)}(t,r,n):tt(r).apply(null,n)}function nt(e,t){var r,n,o,i=(e=ie(e)).includes("j")?(r=e,n=t,o=[],function(){return o.length=0,Object.assign(o,arguments),rt(r,n,o)}):tt(t);return"function"!=typeof i&&me("unknown function pointer with signature "+e+": "+t),i}var ot=void 0;function it(e){var t=Yt(e),r=ie(t);return Gt(t),r}function at(e,t){var r=[],n={};throw t.forEach((function e(t){n[t]||se[t]||(ue[t]?ue[t].forEach(e):(r.push(t),n[t]=!0))})),new ot(e+": "+r.map(it).join([", "]))}function st(e,t){for(var r=[],n=0;n>2]);return r}function ut(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ct(e,t,r,n,i){var a=t.length;a<2&&me("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=null!==t[1]&&null!==r,u=!1,c=1;c0?", ":"")+d),p+=(f?"var rv = ":"")+"invoker(fn"+(d.length>0?", ":"")+d+");\n",u)p+="runDestructors(destructors);\n";else for(c=s?1:2;c4&&0==--lt[e].refcount&&(lt[e]=void 0,ft.push(e))}function pt(){for(var e=0,t=5;t>2])};case 3:return function(e){return this.fromWireType(F[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function gt(e,t,r){switch(t){case 0:return r?function(e){return P[e]}:function(e){return S[e]};case 1:return r?function(e){return T[e>>1]}:function(e){return D[e>>1]};case 2:return r?function(e){return A[e>>2]}:function(e){return C[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var wt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function _t(e,t){for(var r=e,n=r>>1,o=n+t/2;!(n>=o)&&D[n];)++n;if((r=n<<1)-e>32&&wt)return wt.decode(S.subarray(e,r));for(var i="",a=0;!(a>=t/2);++a){var s=T[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function Et(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,o=(r-=2)<2*e.length?r/2:e.length,i=0;i>1]=a,t+=2}return T[t>>1]=0,t-n}function bt(e){return 2*e.length}function kt(e,t){for(var r=0,n="";!(r>=t/4);){var o=A[e+4*r>>2];if(0==o)break;if(++r,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function Pt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var n=t,o=n+r-4,i=0;i=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i)),A[t>>2]=a,(t+=4)+4>o)break}return A[t>>2]=0,t-n}function St(e){for(var t=0,r=0;r=55296&&n<=57343&&++r,t+=4}return t}var Tt,Dt={};Tt=m?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:function(){return performance.now()};var At={};function Ct(){if(!Ct.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":o(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:d||"./this.program"};for(var t in At)void 0===At[t]?delete e[t]:e[t]=At[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Ct.strings=r}return Ct.strings}var Mt={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t=Mt.isAbs(e),r="/"===e.substr(-1);return(e=Mt.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=Mt.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=Mt.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Mt.normalize(e.join("/"))},join2:function(e,t){return Mt.normalize(e+"/"+t)}},Ft={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:Rt.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t=Mt.isAbs(n)}return(t?"/":"")+(e=Mt.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=Ft.resolve(e).substr(1),t=Ft.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?r:B(e)+1,o=new Array(n),i=R(e,o,0,o.length);return t&&(o.length=i),o}var Ot={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){Ot.ttys[e]={input:[],output:[],ops:t},Rt.registerDevice(e,Ot.stream_ops)},stream_ops:{open:function(e){var t=Ot.ttys[e.node.rdev];if(!t)throw new Rt.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,n,o){if(!e.tty||!e.tty.ops.get_char)throw new Rt.ErrnoError(60);for(var i=0,a=0;a0?r.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=xt(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(w(j(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(w(j(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(_(j(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(j(e.output,0)),e.output=[])}}};function jt(e){q()}var $t={ops_table:null,mount:function(e){return $t.createNode(null,"/",16895,0)},createNode:function(e,t,r,n){if(Rt.isBlkdev(r)||Rt.isFIFO(r))throw new Rt.ErrnoError(63);$t.ops_table||($t.ops_table={dir:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr,lookup:$t.node_ops.lookup,mknod:$t.node_ops.mknod,rename:$t.node_ops.rename,unlink:$t.node_ops.unlink,rmdir:$t.node_ops.rmdir,readdir:$t.node_ops.readdir,symlink:$t.node_ops.symlink},stream:{llseek:$t.stream_ops.llseek}},file:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr},stream:{llseek:$t.stream_ops.llseek,read:$t.stream_ops.read,write:$t.stream_ops.write,allocate:$t.stream_ops.allocate,mmap:$t.stream_ops.mmap,msync:$t.stream_ops.msync}},link:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr,readlink:$t.node_ops.readlink},stream:{}},chrdev:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr},stream:Rt.chrdev_stream_ops}});var o=Rt.createNode(e,t,r,n);return Rt.isDir(o.mode)?(o.node_ops=$t.ops_table.dir.node,o.stream_ops=$t.ops_table.dir.stream,o.contents={}):Rt.isFile(o.mode)?(o.node_ops=$t.ops_table.file.node,o.stream_ops=$t.ops_table.file.stream,o.usedBytes=0,o.contents=null):Rt.isLink(o.mode)?(o.node_ops=$t.ops_table.link.node,o.stream_ops=$t.ops_table.link.stream):Rt.isChrdev(o.mode)&&(o.node_ops=$t.ops_table.chrdev.node,o.stream_ops=$t.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[t]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=Rt.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Rt.isDir(e.mode)?t.size=4096:Rt.isFile(e.mode)?t.size=e.usedBytes:Rt.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&$t.resizeFileStorage(e,t.size)},lookup:function(e,t){throw Rt.genericErrors[44]},mknod:function(e,t,r,n){return $t.createNode(e,t,r,n)},rename:function(e,t,r){if(Rt.isDir(e.mode)){var n;try{n=Rt.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new Rt.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=Rt.lookupNode(e,t);for(var n in r.contents)throw new Rt.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var n=$t.createNode(e,t,41471,0);return n.link=r,n},readlink:function(e){if(!Rt.isLink(e.mode))throw new Rt.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),r);else for(var s=0;s0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=Ft.resolve(Rt.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new Rt.ErrnoError(32);for(var r=Mt.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),n=Rt.root,o="/",i=0;i40)throw new Rt.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var t;;){if(Rt.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,n=0;n>>0)%Rt.nameTable.length},hashAddNode:function(e){var t=Rt.hashName(e.parent.id,e.name);e.name_next=Rt.nameTable[t],Rt.nameTable[t]=e},hashRemoveNode:function(e){var t=Rt.hashName(e.parent.id,e.name);if(Rt.nameTable[t]===e)Rt.nameTable[t]=e.name_next;else for(var r=Rt.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=Rt.mayLookup(e);if(r)throw new Rt.ErrnoError(r,e);for(var n=Rt.hashName(e.id,t),o=Rt.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===t)return o}return Rt.lookup(e,t)},createNode:function(e,t,r,n){var o=new Rt.FSNode(e,t,r,n);return Rt.hashAddNode(o),o},destroyNode:function(e){Rt.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=Rt.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return Rt.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2},mayLookup:function(e){var t=Rt.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{return Rt.lookupNode(e,t),20}catch(e){}return Rt.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var n;try{n=Rt.lookupNode(e,t)}catch(e){return e.errno}var o=Rt.nodePermissions(e,"wx");if(o)return o;if(r){if(!Rt.isDir(n.mode))return 54;if(Rt.isRoot(n)||Rt.getPath(n)===Rt.cwd())return 10}else if(Rt.isDir(n.mode))return 31;return 0},mayOpen:function(e,t){return e?Rt.isLink(e.mode)?32:Rt.isDir(e.mode)&&("r"!==Rt.flagsToPermissionString(t)||512&t)?31:Rt.nodePermissions(e,Rt.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Rt.MAX_OPEN_FDS,r=e;r<=t;r++)if(!Rt.streams[r])return r;throw new Rt.ErrnoError(33)},getStream:function(e){return Rt.streams[e]},createStream:function(e,t,r){Rt.FSStream||(Rt.FSStream=function(){this.shared={}},Rt.FSStream.prototype={},Object.defineProperties(Rt.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new Rt.FSStream,e);var n=Rt.nextfd(t,r);return e.fd=n,Rt.streams[n]=e,e},closeStream:function(e){Rt.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=Rt.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new Rt.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){Rt.devices[e]={stream_ops:t}},getDevice:function(e){return Rt.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),Rt.syncFSRequests++,Rt.syncFSRequests>1&&_("warning: "+Rt.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Rt.getMounts(Rt.root.mount),n=0;function o(e){return Rt.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:function(e,t,r){var n,o="/"===r,i=!r;if(o&&Rt.root)throw new Rt.ErrnoError(10);if(!o&&!i){var a=Rt.lookupPath(r,{follow_mount:!1});if(r=a.path,n=a.node,Rt.isMountpoint(n))throw new Rt.ErrnoError(10);if(!Rt.isDir(n.mode))throw new Rt.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?Rt.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var t=Rt.lookupPath(e,{follow_mount:!1});if(!Rt.isMountpoint(t.node))throw new Rt.ErrnoError(28);var r=t.node,n=r.mounted,o=Rt.getMounts(n);Object.keys(Rt.nameTable).forEach((function(e){for(var t=Rt.nameTable[e];t;){var r=t.name_next;o.includes(t.mount)&&Rt.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(n);r.mount.mounts.splice(i,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var n=Rt.lookupPath(e,{parent:!0}).node,o=Mt.basename(e);if(!o||"."===o||".."===o)throw new Rt.ErrnoError(28);var i=Rt.mayCreate(n,o);if(i)throw new Rt.ErrnoError(i);if(!n.node_ops.mknod)throw new Rt.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,Rt.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,Rt.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),n="",o=0;o1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var n=Rt.open(e,r.flags),o=Rt.stat(e).size,i=new Uint8Array(o);return Rt.read(n,i,0,o,0),"utf8"===r.encoding?t=j(i,0):"binary"===r.encoding&&(t=i),Rt.close(n),t},writeFile:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var n=Rt.open(e,r.flags,r.mode);if("string"==typeof t){var o=new Uint8Array(B(t)+1),i=R(t,o,0,o.length);Rt.write(n,o,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Rt.write(n,t,0,t.byteLength,void 0,r.canOwn)}Rt.close(n)},cwd:function(){return Rt.currentPath},chdir:function(e){var t=Rt.lookupPath(e,{follow:!0});if(null===t.node)throw new Rt.ErrnoError(44);if(!Rt.isDir(t.node.mode))throw new Rt.ErrnoError(54);var r=Rt.nodePermissions(t.node,"x");if(r)throw new Rt.ErrnoError(r);Rt.currentPath=t.path},createDefaultDirectories:function(){Rt.mkdir("/tmp"),Rt.mkdir("/home"),Rt.mkdir("/home/web_user")},createDefaultDevices:function(){Rt.mkdir("/dev"),Rt.registerDevice(Rt.makedev(1,3),{read:function(){return 0},write:function(e,t,r,n,o){return n}}),Rt.mkdev("/dev/null",Rt.makedev(1,3)),Ot.register(Rt.makedev(5,0),Ot.default_tty_ops),Ot.register(Rt.makedev(6,0),Ot.default_tty1_ops),Rt.mkdev("/dev/tty",Rt.makedev(5,0)),Rt.mkdev("/dev/tty1",Rt.makedev(6,0));var e=function(){if("object"==("undefined"==typeof crypto?"undefined":o(crypto))&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(m)try{var t=require("crypto");return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){return q("randomDevice")}}();Rt.createDevice("/dev","random",e),Rt.createDevice("/dev","urandom",e),Rt.mkdir("/dev/shm"),Rt.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Rt.mkdir("/proc");var e=Rt.mkdir("/proc/self");Rt.mkdir("/proc/self/fd"),Rt.mount({mount:function(){var t=Rt.createNode(e,"fd",16895,73);return t.node_ops={lookup:function(e,t){var r=+t,n=Rt.getStream(r);if(!n)throw new Rt.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){e.stdin?Rt.createDevice("/dev","stdin",e.stdin):Rt.symlink("/dev/tty","/dev/stdin"),e.stdout?Rt.createDevice("/dev","stdout",null,e.stdout):Rt.symlink("/dev/tty","/dev/stdout"),e.stderr?Rt.createDevice("/dev","stderr",null,e.stderr):Rt.symlink("/dev/tty1","/dev/stderr"),Rt.open("/dev/stdin",0),Rt.open("/dev/stdout",1),Rt.open("/dev/stderr",1)},ensureErrnoError:function(){Rt.ErrnoError||(Rt.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Rt.ErrnoError.prototype=new Error,Rt.ErrnoError.prototype.constructor=Rt.ErrnoError,[44].forEach((function(e){Rt.genericErrors[e]=new Rt.ErrnoError(e),Rt.genericErrors[e].stack=""})))},staticInit:function(){Rt.ensureErrnoError(),Rt.nameTable=new Array(4096),Rt.mount($t,{},"/"),Rt.createDefaultDirectories(),Rt.createDefaultDevices(),Rt.createSpecialDirectories(),Rt.filesystems={MEMFS:$t}},init:function(t,r,n){Rt.init.initialized=!0,Rt.ensureErrnoError(),e.stdin=t||e.stdin,e.stdout=r||e.stdout,e.stderr=n||e.stderr,Rt.createStandardStreams()},quit:function(){Rt.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var t=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+t),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):xt(o.responseText||"",!0)}(t,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:r};var u=Rt.createFile(e,t,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function f(e,t,r,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s>2]=n.dev,A[r+4>>2]=0,A[r+8>>2]=n.ino,A[r+12>>2]=n.mode,A[r+16>>2]=n.nlink,A[r+20>>2]=n.uid,A[r+24>>2]=n.gid,A[r+28>>2]=n.rdev,A[r+32>>2]=0,J=[n.size>>>0,(Y=n.size,+Math.abs(Y)>=1?Y>0?(0|Math.min(+Math.floor(Y/4294967296),4294967295))>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],A[r+40>>2]=J[0],A[r+44>>2]=J[1],A[r+48>>2]=4096,A[r+52>>2]=n.blocks,J=[Math.floor(n.atime.getTime()/1e3)>>>0,(Y=Math.floor(n.atime.getTime()/1e3),+Math.abs(Y)>=1?Y>0?(0|Math.min(+Math.floor(Y/4294967296),4294967295))>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],A[r+56>>2]=J[0],A[r+60>>2]=J[1],A[r+64>>2]=0,J=[Math.floor(n.mtime.getTime()/1e3)>>>0,(Y=Math.floor(n.mtime.getTime()/1e3),+Math.abs(Y)>=1?Y>0?(0|Math.min(+Math.floor(Y/4294967296),4294967295))>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],A[r+72>>2]=J[0],A[r+76>>2]=J[1],A[r+80>>2]=0,J=[Math.floor(n.ctime.getTime()/1e3)>>>0,(Y=Math.floor(n.ctime.getTime()/1e3),+Math.abs(Y)>=1?Y>0?(0|Math.min(+Math.floor(Y/4294967296),4294967295))>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],A[r+88>>2]=J[0],A[r+92>>2]=J[1],A[r+96>>2]=0,J=[n.ino>>>0,(Y=n.ino,+Math.abs(Y)>=1?Y>0?(0|Math.min(+Math.floor(Y/4294967296),4294967295))>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],A[r+104>>2]=J[0],A[r+108>>2]=J[1],0},doMsync:function(e,t,r,n,o){var i=S.slice(e,e+r);Rt.msync(t,i,o,r,n)},varargs:void 0,get:function(){return Bt.varargs+=4,A[Bt.varargs-4>>2]},getStr:function(e){return $(e)},getStreamFromFD:function(e){var t=Rt.getStream(e);if(!t)throw new Rt.ErrnoError(8);return t}};function Nt(e){return e%4==0&&(e%100!=0||e%400==0)}var Ut=[31,29,31,30,31,30,31,31,30,31,30,31],It=[31,28,31,30,31,30,31,31,30,31,30,31];function zt(e,t,r,n){var o=A[n+40>>2],i={tm_sec:A[n>>2],tm_min:A[n+4>>2],tm_hour:A[n+8>>2],tm_mday:A[n+12>>2],tm_mon:A[n+16>>2],tm_year:A[n+20>>2],tm_wday:A[n+24>>2],tm_yday:A[n+28>>2],tm_isdst:A[n+32>>2],tm_gmtoff:A[n+36>>2],tm_zone:o?$(o):""},a=$(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)a=a.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"];function l(e,t,r){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}var n;return 0===(n=r(e.getFullYear()-t.getFullYear()))&&0===(n=r(e.getMonth()-t.getMonth()))&&(n=r(e.getDate()-t.getDate())),n}function h(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var n=Nt(r.getFullYear()),o=r.getMonth(),i=(n?Ut:It)[o];if(!(t>i-r.getDate()))return r.setDate(r.getDate()+t),r;t-=i-r.getDate()+1,r.setDate(1),o<11?r.setMonth(o+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=h(r),i=h(n);return p(o,t)<=0?p(i,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var v={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return f[e.tm_mon].substring(0,3)},"%B":function(e){return f[e.tm_mon]},"%C":function(e){return d((e.tm_year+1900)/100|0,2)},"%d":function(e){return d(e.tm_mday,2)},"%e":function(e){return l(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return d(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(e){return d(e.tm_mday+function(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}(Nt(e.tm_year+1900)?Ut:It,e.tm_mon-1),3)},"%m":function(e){return d(e.tm_mon+1,2)},"%M":function(e){return d(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return d(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return d(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&Nt(e.tm_year)||(t=1)}}else{t=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&Nt(e.tm_year%400-1))&&t++}return d(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return d(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in a=a.replace(/%%/g,"\0\0"),v)a.includes(u)&&(a=a.replace(new RegExp(u,"g"),v[u](i)));var y=xt(a=a.replace(/\0\0/g,"%"),!1);return y.length>t?0:(function(e,t){P.set(e,t)}(y,e),y.length-1)}!function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);oe=e}(),he=e.BindingError=pe(Error,"BindingError"),ve=e.InternalError=pe(Error,"InternalError"),We.prototype.isAliasOf=_e,We.prototype.clone=Ne,We.prototype.delete=Ue,We.prototype.isDeleted=Ie,We.prototype.deleteLater=ze,e.getInheritedInstanceCount=De,e.getLiveInheritedInstances=Ae,e.flushPendingDeletes=Me,e.setDelayFunction=xe,Qe.prototype.getPointee=Xe,Qe.prototype.destructor=Ke,Qe.prototype.argPackAdvance=8,Qe.prototype.readValueFromPointer=Je,Qe.prototype.deleteObject=Ze,Qe.prototype.fromWireType=Re,ot=e.UnboundTypeError=pe(Error,"UnboundTypeError"),e.count_emval_handles=pt,e.get_first_emval=ht;var Wt=function(e,t,r,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Rt.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n},Lt=365,Ht=146;Object.defineProperties(Wt.prototype,{read:{get:function(){return(this.mode&Lt)===Lt},set:function(e){e?this.mode|=Lt:this.mode&=-366}},write:{get:function(){return(this.mode&Ht)===Ht},set:function(e){e?this.mode|=Ht:this.mode&=-147}},isFolder:{get:function(){return Rt.isDir(this.mode)}},isDevice:{get:function(){return Rt.isChrdev(this.mode)}}}),Rt.FSNode=Wt,Rt.staticInit();var qt={d:function(e){return Vt(e+24)+24},e:function(e,t,r){throw new re(e).init(t,r),e},u:function(e,t,r,n,o){},G:function(e,t,r,n,o){var i=ne(r);we(e,{name:t=ie(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===r)n=P;else if(2===r)n=T;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);n=A}return this.fromWireType(n[e>>i])},destructorFunction:null})},s:function(t,r,n,o,i,a,s,u,c,f,l,d,p){l=ie(l),a=nt(i,a),u&&(u=nt(s,u)),f&&(f=nt(c,f)),p=nt(d,p);var h=le(l);!function(t,r,n){e.hasOwnProperty(t)?((void 0===n||void 0!==e[t].overloadTable&&void 0!==e[t].overloadTable[n])&&me("Cannot register public name '"+t+"' twice"),Le(e,t,t),e.hasOwnProperty(n)&&me("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),e[t].overloadTable[n]=r):(e[t]=r,void 0!==n&&(e[t].numArguments=n))}(h,(function(){at("Cannot construct "+l+" due to unbound types",[o])})),ge([t,r,n],o?[o]:[],(function(r){var n,i;r=r[0],i=o?(n=r.registeredClass).instancePrototype:We.prototype;var s=de(h,(function(){if(Object.getPrototypeOf(this)!==c)throw new he("Use 'new' to construct "+l);if(void 0===d.constructor_body)throw new he(l+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new he("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),c=Object.create(i,{constructor:{value:s}});s.prototype=c;var d=new He(l,s,c,p,n,a,u,f),m=new Qe(l,d,!0,!1,!1),v=new Qe(l+"*",d,!1,!1,!1),y=new Qe(l+" const*",d,!1,!0,!1);return Te[t]={pointerType:v,constPointerType:y},function(t,r,n){e.hasOwnProperty(t)||ye("Replacing nonexistant public symbol"),void 0!==e[t].overloadTable&&void 0!==n?e[t].overloadTable[n]=r:(e[t]=r,e[t].argCount=n)}(h,s),[m,v,y]}))},r:function(e,t,r,n,o,i){b(t>0);var a=st(t,r);o=nt(n,o),ge([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new he("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=function(){at("Cannot construct "+e.name+" due to unbound types",a)},ge([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[t-1]=ct(r,n,null,o,i),[]})),[]}))},f:function(e,t,r,n,o,i,a,s){var u=st(r,n);t=ie(t),i=nt(o,i),ge([],[e],(function(e){var n=(e=e[0]).name+"."+t;function o(){at("Cannot call "+n+" due to unbound types",u)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,f=c[t];return void 0===f||void 0===f.overloadTable&&f.className!==e.name&&f.argCount===r-2?(o.argCount=r-2,o.className=e.name,c[t]=o):(Le(c,t,n),c[t].overloadTable[r-2]=o),ge([],u,(function(o){var s=ct(n,o,e,i,a);return void 0===c[t].overloadTable?(s.argCount=r-2,c[t]=s):c[t].overloadTable[r-2]=s,[]})),[]}))},F:function(e,t){we(e,{name:t=ie(t),fromWireType:function(e){var t=mt.toValue(e);return dt(e),t},toWireType:function(e,t){return mt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Je,destructorFunction:null})},p:function(e,t,r){var n=ne(r);we(e,{name:t=ie(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:yt(t,n),destructorFunction:null})},c:function(e,t,r,n,o){t=ie(t);var i=ne(r),a=function(e){return e};if(0===n){var s=32-8*r;a=function(e){return e<>>s}}var u=t.includes("unsigned");we(e,{name:t,fromWireType:a,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:gt(t,i,0!==n),destructorFunction:null})},a:function(e,t,r){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(e){var t=C,r=t[e>>=2],o=t[e+1];return new n(k,o,r)}we(e,{name:r=ie(r),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},o:function(e,t){var r="std::string"===(t=ie(t));we(e,{name:t,fromWireType:function(e){var t,n=C[e>>2],o=e+4;if(r)for(var i=o,a=0;a<=n;++a){var s=o+a;if(a==n||0==S[s]){var u=$(i,s-i);void 0===t?t=u:(t+=String.fromCharCode(0),t+=u),i=s+1}}else{var c=new Array(n);for(a=0;a>2]=n,r&&o)R(t,S,a,n+1);else if(o)for(var s=0;s255&&(Gt(a),me("String has UTF-16 code units that do not fit in 8 bits")),S[a+s]=u}else for(s=0;s>2],a=i(),u=e+4,c=0;c<=o;++c){var f=e+4+c*t;if(c==o||0==a[f>>s]){var l=n(u,f-u);void 0===r?r=l:(r+=String.fromCharCode(0),r+=l),u=f+t}}return Gt(e),r},toWireType:function(e,n){"string"!=typeof n&&me("Cannot pass non-string to C++ string type "+r);var i=a(n),u=Vt(4+i+t);return C[u>>2]=i>>s,o(n,u+4,i+t),null!==e&&e.push(Gt,u),u},argPackAdvance:8,readValueFromPointer:Je,destructorFunction:function(e){Gt(e)}})},H:function(e,t){we(e,{isVoid:!0,name:t=ie(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},C:function(){return Date.now()},B:function(){return!0},b:dt,q:function(e){e>4&&(lt[e].refcount+=1)},i:function(e){return mt.toHandle(void 0===(r=Dt[t=e])?ie(t):r);var t,r},j:function(){return mt.toHandle({})},g:function(e,t,r){e=mt.toValue(e),t=mt.toValue(t),r=mt.toValue(r),e[t]=r},h:function(e,t){var r,n,o;n="_emval_take_value",void 0===(o=se[r=e])&&me(n+" has unknown type "+it(r));var i=(e=o).readValueFromPointer(t);return mt.toHandle(i)},k:function(){q("")},A:Tt,D:function(e,t,r){S.copyWithin(e,t,t+r)},w:function(e){S.length,q("OOM")},x:function(e,t){var r=0;return Ct().forEach((function(n,o){var i=t+r;C[e+4*o>>2]=i,function(e,t,r){for(var n=0;n>0]=e.charCodeAt(n);r||(P[t>>0]=0)}(n,i),r+=n.length+1})),0},y:function(e,t){var r=Ct();C[e>>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),C[t>>2]=n,0},E:function(e){try{var t=Bt.getStreamFromFD(e);return Rt.close(t),0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}},z:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=C[t+4>>2];t+=8;var u=Rt.read(e,P,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}},t:function(e,t,r,n,o){try{var i=(u=r)+2097152>>>0<4194305-!!(s=t)?(s>>>0)+4294967296*u:NaN;if(isNaN(i))return 61;var a=Bt.getStreamFromFD(e);return Rt.llseek(a,i,n),J=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?(0|Math.min(+Math.floor(Y/4294967296),4294967295))>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],A[o>>2]=J[0],A[o+4>>2]=J[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}var s,u},n:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=C[t+4>>2];t+=8;var u=Rt.write(e,P,a,s,n);if(u<0)return-1;o+=u}return o}(Bt.getStreamFromFD(e),t,r);return C[n>>2]=o,0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}},m:function(e){},v:function(e,t,r,n){return zt(e,t,r,n)}};!function(){var t={a:qt};function n(t,r){var n,o,i=t.exports;e.asm=i,g=e.asm.I,n=g.buffer,k=n,e.HEAP8=P=new Int8Array(n),e.HEAP16=T=new Int16Array(n),e.HEAP32=A=new Int32Array(n),e.HEAPU8=S=new Uint8Array(n),e.HEAPU16=D=new Uint16Array(n),e.HEAPU32=C=new Uint32Array(n),e.HEAPF32=M=new Float32Array(n),e.HEAPF64=F=new Float64Array(n),x=e.asm.K,o=e.asm.J,U.unshift(o),H()}function o(e){n(e.instance)}function a(e){return function(){if(!y&&(p||h)){if("function"==typeof fetch&&!Z(V))return fetch(V,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+V+"'";return e.arrayBuffer()})).catch((function(){return Q(V)}));if(i)return new Promise((function(e,t){i(V,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(V)}))}().then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(e,(function(e){_("failed to asynchronously prepare wasm: "+e),q(e)}))}if(L(),e.instantiateWasm)try{return e.instantiateWasm(t,n)}catch(e){return _("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||K(V)||Z(V)||m||"function"!=typeof fetch?a(o):fetch(V,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(o,(function(e){return _("wasm streaming compile failed: "+e),_("falling back to ArrayBuffer instantiation"),a(o)}))}))).catch(r)}(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.J).apply(null,arguments)};var Vt=e._malloc=function(){return(Vt=e._malloc=e.asm.L).apply(null,arguments)},Gt=e._free=function(){return(Gt=e._free=e.asm.M).apply(null,arguments)},Yt=e.___getTypeName=function(){return(Yt=e.___getTypeName=e.asm.N).apply(null,arguments)};e.___embind_register_native_and_builtin_types=function(){return(e.___embind_register_native_and_builtin_types=e.asm.O).apply(null,arguments)};var Jt,Xt=e.___cxa_is_pointer_type=function(){return(Xt=e.___cxa_is_pointer_type=e.asm.P).apply(null,arguments)};function Kt(r){function n(){Jt||(Jt=!0,e.calledRun=!0,E||(e.noFSInit||Rt.init.initialized||Rt.init(),Rt.ignorePermissions=!1,te(U),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)t=e.postRun.shift(),I.unshift(t);var t;te(I)}()))}z>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)t=e.preRun.shift(),N.unshift(t);var t;te(N)}(),z>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),n()}),1)):n()))}if(e.dynCall_ji=function(){return(e.dynCall_ji=e.asm.Q).apply(null,arguments)},e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.R).apply(null,arguments)},e.dynCall_viijii=function(){return(e.dynCall_viijii=e.asm.S).apply(null,arguments)},e.dynCall_iiiiij=function(){return(e.dynCall_iiiiij=e.asm.T).apply(null,arguments)},e.dynCall_iiiiijj=function(){return(e.dynCall_iiiiijj=e.asm.U).apply(null,arguments)},e.dynCall_iiiiiijj=function(){return(e.dynCall_iiiiiijj=e.asm.V).apply(null,arguments)},W=function e(){Jt||Kt(),Jt||(W=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return Kt(),e.ready}),g="debug",w="warn",_={debug:!1,debugLevel:w,debugUuid:""},E=s((function e(t){r(this,e),this.log=function(e){if(t._opt.debug&&t._opt.debugLevel==g){for(var r,n=t._opt.debugUuid?"[".concat(t._opt.debugUuid,"]"):"",o=arguments.length,i=new Array(o>1?o-1:0),a=1;a1?o-1:0),a=1;a1?o-1:0),a=1;a1?r-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:{};r(this,n),(e=t.call(this))._opt={},e.TAG_NAME="ImageDetector",Object.keys(o).forEach((function(e){if(void 0===o[e])throw new Error('JbProImageDetector option "'.concat(e,'" can not be undefined'))})),e.originalOptions=o;var i=P(),a=Object.assign({},i,o);return e._opt=a,e.debug=new E(c(e)),e.module=null,e.detector=null,e.startTimestamp=null,e.width=o.width||0,e.height=o.height||0,e.debug.log(e.TAG_NAME,"init",JSON.stringify(e._opt)),e}return s(n,[{key:"destroy",value:function(){this.off(),this.detector&&(this.detector.clear(),this.detector.delete(),this.detector=null),this.module&&(this.module=null),this.startTimestamp=null,this.debug.log(this.TAG_NAME,"destroy")}},{key:"load",value:function(){var e=this;return new Promise((function(t,r){y().then((function(n){e.module=n,e.module.ImageDetector?(e.detector=new e.module.ImageDetector(e),t()):r("load jessibuca image detector fail")})).catch((function(e){console.error(e),r("load jessibuca image detector error")}))}))}},{key:"updateConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.width&&e.height&&(this.width=e.width,this.height=e.height)}},{key:"check",value:function(e){var t="blackScreen",r="greenScreen",n="blurredScreen",o="mosaic",i={data:!1,type:""};return i.data=this._isBlackScreen(e.data,e.width,e.height),i.data?(i.type=t,i):!i.data&&(i.data=this._isGreenScreen(e.data,e.width,e.height),i.data)?(i.type=r,i):!i.data&&(i.data=this._isBlurredScreen(e.data,e.width,e.height),i.data)?(i.type=n,i):!i.data&&(i.data=this._checkMosaic(e.data,e.width,e.height),i.data)?(i.type=o,i):i}},{key:"_isBlackScreen",value:function(e,t,r){return this._check("isBlackScreen",e,t,r)}},{key:"_isBlurredScreen",value:function(e,t,r){return this._check("isBlurredScreen",e,t,r)}},{key:"_isGreenScreen",value:function(e,t,r){return this._check("isGreenScreen",e,t,r)}},{key:"_checkMosaic",value:function(e,t,r){return this._check("checkMosaic",e,t,r)}},{key:"_check",value:function(e,t,r,n){if(function(e){return null==e}(t)||!k(this.detector))return!1;if(!e||!this.detector[e])return!1;if(!(r&&n&&this.width&&this.height))return!1;var o=r||this.width,i=n||this.height;if(null===this.startTimestamp&&(this.startTimestamp=Date.now()),Date.now()-this.startTimestamp>6e5)return!1;var a=this.detector[e](t,o,i),s=!1;return a&&(s=a.result),s}}]),n}(b);window.JessibucaProImageDetector=T})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-mp4-recorder-decoder.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-mp4-recorder-decoder.js new file mode 100644 index 0000000000000000000000000000000000000000..190399ff259d73beb8b606b264a358a9de5286ea --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-mp4-recorder-decoder.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e,t){return e(t={exports:{}},t.exports),t.exports}var r=t((function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})),n=e(r),o=t((function(e){var t=r.default;e.exports=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,r||"default");if("object"!==t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(o);var i=t((function(e){var t=r.default;e.exports=function(e){var r=o(e,"string");return"symbol"===t(r)?r:String(r)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(i);var a=e(t((function(e){function t(e,t){for(var r=0;r=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),c=a.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),D(r),w}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;D(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:j(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=r),w}},o}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports}));e(_);var k=_(),P=k;try{regeneratorRuntime=k}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=k:Function("r","regeneratorRuntime = r")(k)}function T(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=h(e);if(t){var o=h(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return d(this,r)}}var x,S=(x="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("jessibuca-pro-mp4-recorder-decoder.js",document.baseURI).href,E(P.mark((function e(){var t,r,o,i,u,f,l,d,p,h,m,v,g,y,b,E,_,k,S,C,F,A,M,D,R,j,$,O,L,U,I,N,z,W,B,H,V,q,G,X,Y,J,K,Z,Q,ee,te,re,ne,oe,ie,ae,se,ue,ce,fe,le,de,pe,he,me,ve,ge,ye,we,be,Ee,_e,ke,Pe,Te,xe,Se,Ce,Fe,Ae,Me,De,Re,je,$e,Oe,Le,Ue,Ie,Ne,ze,We,Be,He,Ve,qe,Ge,Xe,Ye,Je,Ke,Ze,Qe,et,tt,rt,nt,ot,it,at,st,ut,ct,ft,lt,dt,pt,ht,mt,vt,gt,yt,wt,bt,Et,_t,kt,Pt,Tt,xt,St,Ct,Ft,At,Mt,Dt,Rt,jt,$t,Ot,Lt,Ut,It,Nt,zt,Wt,Bt,Ht,Vt,qt,Gt,Xt,Yt,Jt,Kt,Zt,Qt,er,tr,rr,nr,or,ir,ar,sr,ur,cr,fr,lr,dr,pr,hr,mr,vr,gr,yr,wr,br,Er,_r,kr,Pr,Tr,xr,Sr,Cr,Fr,Ar,Mr,Dr,Rr,jr,$r,Or,Lr,Ur,Ir,Nr,zr,Wr,Br,Hr,Vr,qr,Gr,Xr,Yr,Jr,Kr,Zr,Qr,en,tn,rn,nn,on,an,sn,un,cn,fn,ln,dn,pn,hn,mn,vn,gn,yn,wn,bn,En,_n,kn,Pn,Tn,xn,Sn,Cn,Fn,An,Mn,Dn,Rn,jn,$n,On,Ln,Un,In,Nn,zn,Wn=arguments;return P.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(zn=function(){function e(){Nn||(Nn=!0,r.calledRun=!0,D||(G(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),X()))}Z>0||(q(),Z>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),e()}),1)):e()))},Cn=function(e,t,r,n){try{var o=We.getStreamFromFD(e),i=Sn(o,t,r);return I[n>>2]=i,0}catch(e){if(void 0===Ne||"ErrnoError"!==e.name)throw e;return e.errno}},xn=function(e,t,r,n,o){var i=Qr(t,r);try{if(isNaN(i))return 61;var a=We.getStreamFromFD(e);return Ne.llseek(a,i,n),he=[a.position>>>0,(pe=a.position,+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[o>>2]=he[0],U[o+4>>2]=he[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===Ne||"ErrnoError"!==e.name)throw e;return e.errno}},Tn=function(e,t,r,n){try{var o=We.getStreamFromFD(e),i=Pn(o,t,r);return I[n>>2]=i,0}catch(e){if(void 0===Ne||"ErrnoError"!==e.name)throw e;return e.errno}},kn=function(e,t){try{var r=We.getStreamFromFD(e),n=r.tty?2:Ne.isDir(r.mode)?3:Ne.isLink(r.mode)?7:4;return j[t>>0]=n,O[t+2>>1]=0,he=[0,(pe=0,+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[t+8>>2]=he[0],U[t+12>>2]=he[1],he=[0,(pe=0,+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[t+16>>2]=he[0],U[t+20>>2]=he[1],0}catch(e){if(void 0===Ne||"ErrnoError"!==e.name)throw e;return e.errno}},_n=function(e){try{var t=We.getStreamFromFD(e);return Ne.close(t),0}catch(e){if(void 0===Ne||"ErrnoError"!==e.name)throw e;return e.errno}},an=function(e,t,r){var n=Qr(e,t),o=new Date(1e3*n);U[r>>2]=o.getSeconds(),U[r+4>>2]=o.getMinutes(),U[r+8>>2]=o.getHours(),U[r+12>>2]=o.getDate(),U[r+16>>2]=o.getMonth(),U[r+20>>2]=o.getFullYear()-1900,U[r+24>>2]=o.getDay();var i=0|on(o);U[r+28>>2]=i,U[r+36>>2]=-60*o.getTimezoneOffset();var a=new Date(o.getFullYear(),0,1),s=new Date(o.getFullYear(),6,1).getTimezoneOffset(),u=a.getTimezoneOffset(),c=0|(s!=u&&o.getTimezoneOffset()==Math.min(u,s));U[r+32>>2]=c},en=function(e,t,r){var n=Qr(e,t),o=new Date(1e3*n);U[r>>2]=o.getUTCSeconds(),U[r+4>>2]=o.getUTCMinutes(),U[r+8>>2]=o.getUTCHours(),U[r+12>>2]=o.getUTCDate(),U[r+16>>2]=o.getUTCMonth(),U[r+20>>2]=o.getUTCFullYear()-1900,U[r+24>>2]=o.getUTCDay();var i=Date.UTC(o.getUTCFullYear(),0,1,0,0,0,0),a=(o.getTime()-i)/864e5|0;U[r+28>>2]=a},hr=function(e){return this.fromWireType(U[e>>2])},ur=function(){this.allocated=[void 0],this.freelist=[]},sr=function(){Object.assign(ur.prototype,{get:function(e){return this.allocated[e]},has:function(e){return void 0!==this.allocated[e]},allocate:function(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free:function(e){this.allocated[e]=void 0,this.freelist.push(e)}})},nr=function(e,t,r,n,o,i){var a=t.length;a<2&&Qe("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=null!==t[1]&&null!==r,u=!1,c=1;c0?", ":"")+d),p+=(f||i?"var rv = ":"")+"invoker(fn"+(d.length>0?", ":"")+d+");\n",u)p+="runDestructors(destructors);\n";else for(c=s?1:2;c>2])},Lt=function(e,t){if(null===t)return this.isReference&&Qe("null is not a valid ".concat(this.name)),0;t.$$||Qe('Cannot pass "'.concat(vr(t),'" as a ').concat(this.name)),t.$$.ptr||Qe("Cannot pass deleted object as a pointer of type ".concat(this.name)),t.$$.ptrType.isConst&&Qe("Cannot convert argument of type ".concat(t.$$.ptrType.name," to parameter type ").concat(this.name));var r=t.$$.ptrType.registeredClass;return jt(t.$$.ptr,r,this.registeredClass)},Ot=function(e,t){var r;if(null===t)return this.isReference&&Qe("null is not a valid ".concat(this.name)),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Qe('Cannot pass "'.concat(vr(t),'" as a ').concat(this.name)),t.$$.ptr||Qe("Cannot pass deleted object as a pointer of type ".concat(this.name)),!this.isConst&&t.$$.ptrType.isConst&&Qe("Cannot convert argument of type ".concat(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name," to parameter type ").concat(this.name));var n=t.$$.ptrType.registeredClass;if(r=jt(t.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Qe("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Qe("Cannot convert argument of type ".concat(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name," to parameter type ").concat(this.name));break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var o=t.clone();r=this.rawShare(r,pr.toHandle((function(){return o.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Qe("Unsupporting sharing policy")}return r},$t=function(e,t){if(null===t)return this.isReference&&Qe("null is not a valid ".concat(this.name)),0;t.$$||Qe('Cannot pass "'.concat(vr(t),'" as a ').concat(this.name)),t.$$.ptr||Qe("Cannot pass deleted object as a pointer of type ".concat(this.name));var r=t.$$.ptrType.registeredClass;return jt(t.$$.ptr,r,this.registeredClass)},Rt=function(e,t,r,n,o,i,a,s){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=a,this.downcast=s,this.pureVirtualFunctions=[]},Ct=function(){},Tt=function(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=kt(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var n=r.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?Pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(t),s=pt[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var u=dt(t,this.registeredClass,i.registeredClass);return null===u?o.call(this):this.isSmartPointer?Pt(i.registeredClass.instancePrototype,{ptrType:i,ptr:u,smartPtrType:this,smartPtr:e}):Pt(i.registeredClass.instancePrototype,{ptrType:i,ptr:u})},ot=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return nt(e,t,r)},nt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=t.name;if(e||Qe('type "'.concat(n,'" must have a positive integer typeid pointer')),Je.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Qe("Cannot register type '".concat(n,"' twice"))}if(Je[e]=t,delete Ke[e],Ye.hasOwnProperty(e)){var o=Ye[e];delete Ye[e],o.forEach((function(e){return e()}))}},He=function(e,t,r,n){We.varargs=n;try{t=We.getStr(t),t=We.calculateAt(e,t);var o=n?We.get():0;return Ne.open(t,r,o).fd}catch(e){if(void 0===Ne||"ErrnoError"!==e.name)throw e;return-e.errno}},Be=function(e,t,r){We.varargs=r;try{var n=We.getStreamFromFD(e);switch(t){case 0:if((o=We.get())<0)return-28;for(;Ne.streams[o];)o++;return Ne.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=We.get();return n.flags|=o,0;case 5:return o=We.getp(),O[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ye(28),-1}}catch(e){if(void 0===Ne||"ErrnoError"!==e.name)throw e;return-e.errno}},Ce=function(e,t,r){var n=r>0?r:xe(e)+1,o=new Array(n),i=Se(e,o,0,o.length);return t&&(o.length=i),o},ve=function(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){I[this.ptr+4>>2]=e},this.get_type=function(){return I[this.ptr+4>>2]},this.set_destructor=function(e){I[this.ptr+8>>2]=e},this.get_destructor=function(){return I[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,j[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=j[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,j[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=j[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){I[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return I[this.ptr+16>>2]},this.get_exception_ptr=function(){if(In(this.get_type()))return I[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}},de=function(){var e={a:Dn};function t(e,t){return Rn=e.exports,M=Rn.S,W(),Ht=Rn.W,J(Rn.T),ne("wasm-instantiate"),Rn}if(re("wasm-instantiate"),r.instantiateWasm)try{return r.instantiateWasm(e,t)}catch(e){F("Module.instantiateWasm callback failed with error: ".concat(e)),i(e)}return le(A,se,e,(function(e){t(e.instance)})).catch(i),{}},le=function(e,t,r,n){return e||"function"!=typeof WebAssembly.instantiateStreaming||ie(t)||ae(t)||p||"function"!=typeof fetch?fe(t,r,n):fetch(t,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,r).then(n,(function(e){return F("wasm streaming compile failed: ".concat(e)),F("falling back to ArrayBuffer instantiation"),fe(t,r,n)}))}))},fe=function(e,t,r){return ce(e).then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(r,(function(e){F("failed to asynchronously prepare wasm: ".concat(e)),oe(e)}))},ce=function(e){if(!A&&(l||d)){if("function"==typeof fetch&&!ae(e))return fetch(e,{credentials:"same-origin"}).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((function(){return ue(e)}));if(g)return new Promise((function(t,r){g(e,(function(e){return t(new Uint8Array(e))}),r)}))}return Promise.resolve().then((function(){return ue(e)}))},ue=function(e){if(e==se&&A)return new Uint8Array(A);if(y)return y(e);throw"both async and sync fetching of the wasm failed"},oe=function(e){r.onAbort&&r.onAbort(e),F(e="Aborted("+e+")"),D=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t},ne=function(e){if(Z--,r.monitorRunDependencies&&r.monitorRunDependencies(Z),0==Z&&(null!==Q&&(clearInterval(Q),Q=null),ee)){var t=ee;ee=null,t()}},re=function(e){Z++,r.monitorRunDependencies&&r.monitorRunDependencies(Z)},te=function(e){return e},K=function(e){V.unshift(e)},J=function(e){H.unshift(e)},Y=function(e){B.unshift(e)},X=function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)K(r.postRun.shift());me(V)},G=function(){r.noFSInit||Ne.init.initialized||Ne.init(),Ne.ignorePermissions=!1,Ae.init(),me(H)},q=function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)Y(r.preRun.shift());me(B)},W=function(){var e=M.buffer;r.HEAP8=j=new Int8Array(e),r.HEAP16=O=new Int16Array(e),r.HEAPU8=$=new Uint8Array(e),r.HEAPU16=L=new Uint16Array(e),r.HEAP32=U=new Int32Array(e),r.HEAPU32=I=new Uint32Array(e),r.HEAPF32=N=new Float32Array(e),r.HEAPF64=z=new Float64Array(e)},R=function(e,t){e||oe(t)},m=function(e){return r.locateFile?r.locateFile(e,h):h+e},(r=t=Wn.length>0&&void 0!==Wn[0]?Wn[0]:{}).ready=new Promise((function(e,t){o=e,i=t})),(r=void 0!==r?r:{}).locateFile=function(e){return"decoder-pro-mp4-recorder-decoder.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_MP4_RECORDER_WASM_URL&&""!=JESSIBUCA_PRO_MP4_RECORDER_WASM_URL?JESSIBUCA_PRO_MP4_RECORDER_WASM_URL:e},u=Object.assign({},r),f="./this.program",l="object"==("undefined"==typeof window?"undefined":n(window)),d="function"==typeof importScripts,p="object"==("undefined"==typeof process?"undefined":n(process))&&"object"==n(process.versions)&&"string"==typeof process.versions.node,h="",!p){e.next=76;break}return e.next=61,import("module");case 61:b=e.sent,E=b.createRequire,_=E("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("jessibuca-pro-mp4-recorder-decoder.js",document.baseURI).href),k=_("fs"),S=_("path"),h=d?S.dirname(h)+"/":_("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("jessibuca-pro-mp4-recorder-decoder.js",document.baseURI).href)),v=function(e,t){return e=ae(e)?new URL(e):S.normalize(e),k.readFileSync(e,t?void 0:"utf8")},y=function(e){var t=v(e,!0);return t.buffer||(t=new Uint8Array(t)),t},g=function(e,t,r){var n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=ae(e)?new URL(e):S.normalize(e),k.readFile(e,n?void 0:"utf8",(function(e,o){e?r(e):t(n?o.buffer:o)}))},!r.thisProgram&&process.argv.length>1&&(f=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),r.inspect=function(){return"[Emscripten Module object]"},e.next=77;break;case 76:(l||d)&&(d?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),x&&(h=x),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",v=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(y=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),g=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)});case 77:if(C=r.print||console.log.bind(console),F=r.printErr||console.error.bind(console),Object.assign(r,u),u=null,r.arguments&&r.arguments,r.thisProgram&&(f=r.thisProgram),r.quit&&r.quit,r.wasmBinary&&(A=r.wasmBinary),"object"!=("undefined"==typeof WebAssembly?"undefined":n(WebAssembly))&&oe("no native wasm support detected"),D=!1,B=[],H=[],V=[],Z=0,Q=null,ee=null,ie=function(e){return e.startsWith("data:application/octet-stream;base64,")},ae=function(e){return e.startsWith("file://")},r.locateFile?ie(se="jessibuca-pro-mp4-recorder-decoder.wasm")||(se=m(se)):se=new URL("jessibuca-pro-mp4-recorder-decoder.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("jessibuca-pro-mp4-recorder-decoder.js",document.baseURI).href).href,me=function(e){for(;e.length>0;)e.shift()(r)},r.noExitRuntime,ge=function(e,t,r){throw new ve(e).init(t,r),e},ye=function(e){return U[On()>>2]=e,e},we={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t=we.isAbs(e),r="/"===e.substr(-1);return(e=we.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=we.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=we.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return we.normalize(e.join("/"))},join2:function(e,t){return we.normalize(e+"/"+t)}},be=function(){if("object"==("undefined"==typeof crypto?"undefined":n(crypto))&&"function"==typeof crypto.getRandomValues)return function(e){return crypto.getRandomValues(e)};if(p)try{var e=_("crypto");if(e.randomFillSync)return function(t){return e.randomFillSync(t)};var t=e.randomBytes;return function(e){return e.set(t(e.byteLength)),e}}catch(e){}oe("initRandomDevice")},Ee=function(e){return(Ee=be())(e)},_e={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:Ne.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t=we.isAbs(n)}return(t?"/":"")+(e=we.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=_e.resolve(e).substr(1),t=_e.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s=n);)++o;if(o-t>16&&e.buffer&&ke)return ke.decode(e.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i},Te=[],xe=function(e){for(var t=0,r=0;r=55296&&n<=57343?(t+=4,++r):t+=3}return t},Se=function(e,t,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-o},Fe=function(){if(!Te.length){var e=null;if(p){var t=Buffer.alloc(256),r=0,n=process.stdin.fd;try{r=k.readSync(n,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;Te=Ce(e,!0)}return Te.shift()},Ae={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){Ae.ttys[e]={input:[],output:[],ops:t},Ne.registerDevice(e,Ae.stream_ops)},stream_ops:{open:function(e){var t=Ae.ttys[e.node.rdev];if(!t)throw new Ne.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,t,r,n,o){if(!e.tty||!e.tty.ops.get_char)throw new Ne.ErrnoError(60);for(var i=0,a=0;a0&&(C(Pe(e.output,0)),e.output=[])},ioctl_tcgets:function(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(e,t,r){return 0},ioctl_tiocgwinsz:function(e){return[24,80]}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(F(Pe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync:function(e){e.output&&e.output.length>0&&(F(Pe(e.output,0)),e.output=[])}}},Me=function(e){oe()},De={ops_table:null,mount:function(e){return De.createNode(null,"/",16895,0)},createNode:function(e,t,r,n){if(Ne.isBlkdev(r)||Ne.isFIFO(r))throw new Ne.ErrnoError(63);De.ops_table||(De.ops_table={dir:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr,lookup:De.node_ops.lookup,mknod:De.node_ops.mknod,rename:De.node_ops.rename,unlink:De.node_ops.unlink,rmdir:De.node_ops.rmdir,readdir:De.node_ops.readdir,symlink:De.node_ops.symlink},stream:{llseek:De.stream_ops.llseek}},file:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr},stream:{llseek:De.stream_ops.llseek,read:De.stream_ops.read,write:De.stream_ops.write,allocate:De.stream_ops.allocate,mmap:De.stream_ops.mmap,msync:De.stream_ops.msync}},link:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr,readlink:De.node_ops.readlink},stream:{}},chrdev:{node:{getattr:De.node_ops.getattr,setattr:De.node_ops.setattr},stream:Ne.chrdev_stream_ops}});var o=Ne.createNode(e,t,r,n);return Ne.isDir(o.mode)?(o.node_ops=De.ops_table.dir.node,o.stream_ops=De.ops_table.dir.stream,o.contents={}):Ne.isFile(o.mode)?(o.node_ops=De.ops_table.file.node,o.stream_ops=De.ops_table.file.stream,o.usedBytes=0,o.contents=null):Ne.isLink(o.mode)?(o.node_ops=De.ops_table.link.node,o.stream_ops=De.ops_table.link.stream):Ne.isChrdev(o.mode)&&(o.node_ops=De.ops_table.chrdev.node,o.stream_ops=De.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[t]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=Ne.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Ne.isDir(e.mode)?t.size=4096:Ne.isFile(e.mode)?t.size=e.usedBytes:Ne.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&De.resizeFileStorage(e,t.size)},lookup:function(e,t){throw Ne.genericErrors[44]},mknod:function(e,t,r,n){return De.createNode(e,t,r,n)},rename:function(e,t,r){if(Ne.isDir(e.mode)){var n;try{n=Ne.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new Ne.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=Ne.lookupNode(e,t);for(var n in r.contents)throw new Ne.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var n=De.createNode(e,t,41471,0);return n.link=r,n},readlink:function(e){if(!Ne.isLink(e.mode))throw new Ne.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),r);else for(var s=0;s0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=_e.resolve(e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new Ne.ErrnoError(32);for(var r=e.split("/").filter((function(e){return!!e})),n=Ne.root,o="/",i=0;i40)throw new Ne.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var t;;){if(Ne.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?"".concat(r,"/").concat(t):r+t:r}t=t?"".concat(e.name,"/").concat(t):e.name,e=e.parent}},hashName:function(e,t){for(var r=0,n=0;n>>0)%Ne.nameTable.length},hashAddNode:function(e){var t=Ne.hashName(e.parent.id,e.name);e.name_next=Ne.nameTable[t],Ne.nameTable[t]=e},hashRemoveNode:function(e){var t=Ne.hashName(e.parent.id,e.name);if(Ne.nameTable[t]===e)Ne.nameTable[t]=e.name_next;else for(var r=Ne.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=Ne.mayLookup(e);if(r)throw new Ne.ErrnoError(r,e);for(var n=Ne.hashName(e.id,t),o=Ne.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===t)return o}return Ne.lookup(e,t)},createNode:function(e,t,r,n){var o=new Ne.FSNode(e,t,r,n);return Ne.hashAddNode(o),o},destroyNode:function(e){Ne.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return Ne.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2},mayLookup:function(e){var t=Ne.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{return Ne.lookupNode(e,t),20}catch(e){}return Ne.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var n;try{n=Ne.lookupNode(e,t)}catch(e){return e.errno}var o=Ne.nodePermissions(e,"wx");if(o)return o;if(r){if(!Ne.isDir(n.mode))return 54;if(Ne.isRoot(n)||Ne.getPath(n)===Ne.cwd())return 10}else if(Ne.isDir(n.mode))return 31;return 0},mayOpen:function(e,t){return e?Ne.isLink(e.mode)?32:Ne.isDir(e.mode)&&("r"!==Ne.flagsToPermissionString(t)||512&t)?31:Ne.nodePermissions(e,Ne.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=0;e<=Ne.MAX_OPEN_FDS;e++)if(!Ne.streams[e])return e;throw new Ne.ErrnoError(33)},getStreamChecked:function(e){var t=Ne.getStream(e);if(!t)throw new Ne.ErrnoError(8);return t},getStream:function(e){return Ne.streams[e]},createStream:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Ne.FSStream||(Ne.FSStream=function(){this.shared={}},Ne.FSStream.prototype={},Object.defineProperties(Ne.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new Ne.FSStream,e),-1==t&&(t=Ne.nextfd()),e.fd=t,Ne.streams[t]=e,e},closeStream:function(e){Ne.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=Ne.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new Ne.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){Ne.devices[e]={stream_ops:t}},getDevice:function(e){return Ne.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),Ne.syncFSRequests++,Ne.syncFSRequests>1&&F("warning: ".concat(Ne.syncFSRequests," FS.syncfs operations in flight at once, probably just doing extra work"));var r=Ne.getMounts(Ne.root.mount),n=0;function o(e){return Ne.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:function(e,t,r){var n,o="/"===r,i=!r;if(o&&Ne.root)throw new Ne.ErrnoError(10);if(!o&&!i){var a=Ne.lookupPath(r,{follow_mount:!1});if(r=a.path,n=a.node,Ne.isMountpoint(n))throw new Ne.ErrnoError(10);if(!Ne.isDir(n.mode))throw new Ne.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?Ne.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var t=Ne.lookupPath(e,{follow_mount:!1});if(!Ne.isMountpoint(t.node))throw new Ne.ErrnoError(28);var r=t.node,n=r.mounted,o=Ne.getMounts(n);Object.keys(Ne.nameTable).forEach((function(e){for(var t=Ne.nameTable[e];t;){var r=t.name_next;o.includes(t.mount)&&Ne.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(n);r.mount.mounts.splice(i,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var n=Ne.lookupPath(e,{parent:!0}).node,o=we.basename(e);if(!o||"."===o||".."===o)throw new Ne.ErrnoError(28);var i=Ne.mayCreate(n,o);if(i)throw new Ne.ErrnoError(i);if(!n.node_ops.mknod)throw new Ne.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,Ne.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,Ne.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),n="",o=0;o1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'.concat(r.encoding,'"'));var n=Ne.open(e,r.flags),o=Ne.stat(e).size,i=new Uint8Array(o);return Ne.read(n,i,0,o,0),"utf8"===r.encoding?t=Pe(i,0):"binary"===r.encoding&&(t=i),Ne.close(n),t},writeFile:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var n=Ne.open(e,r.flags,r.mode);if("string"==typeof t){var o=new Uint8Array(xe(t)+1),i=Se(t,o,0,o.length);Ne.write(n,o,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Ne.write(n,t,0,t.byteLength,void 0,r.canOwn)}Ne.close(n)},cwd:function(){return Ne.currentPath},chdir:function(e){var t=Ne.lookupPath(e,{follow:!0});if(null===t.node)throw new Ne.ErrnoError(44);if(!Ne.isDir(t.node.mode))throw new Ne.ErrnoError(54);var r=Ne.nodePermissions(t.node,"x");if(r)throw new Ne.ErrnoError(r);Ne.currentPath=t.path},createDefaultDirectories:function(){Ne.mkdir("/tmp"),Ne.mkdir("/home"),Ne.mkdir("/home/web_user")},createDefaultDevices:function(){Ne.mkdir("/dev"),Ne.registerDevice(Ne.makedev(1,3),{read:function(){return 0},write:function(e,t,r,n,o){return n}}),Ne.mkdev("/dev/null",Ne.makedev(1,3)),Ae.register(Ne.makedev(5,0),Ae.default_tty_ops),Ae.register(Ne.makedev(6,0),Ae.default_tty1_ops),Ne.mkdev("/dev/tty",Ne.makedev(5,0)),Ne.mkdev("/dev/tty1",Ne.makedev(6,0));var e=new Uint8Array(1024),t=0,r=function(){return 0===t&&(t=Ee(e).byteLength),e[--t]};Ne.createDevice("/dev","random",r),Ne.createDevice("/dev","urandom",r),Ne.mkdir("/dev/shm"),Ne.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Ne.mkdir("/proc");var e=Ne.mkdir("/proc/self");Ne.mkdir("/proc/self/fd"),Ne.mount({mount:function(){var t=Ne.createNode(e,"fd",16895,73);return t.node_ops={lookup:function(e,t){var r=+t,n=Ne.getStreamChecked(r),o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){r.stdin?Ne.createDevice("/dev","stdin",r.stdin):Ne.symlink("/dev/tty","/dev/stdin"),r.stdout?Ne.createDevice("/dev","stdout",null,r.stdout):Ne.symlink("/dev/tty","/dev/stdout"),r.stderr?Ne.createDevice("/dev","stderr",null,r.stderr):Ne.symlink("/dev/tty1","/dev/stderr"),Ne.open("/dev/stdin",0),Ne.open("/dev/stdout",1),Ne.open("/dev/stderr",1)},ensureErrnoError:function(){Ne.ErrnoError||(Ne.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Ne.ErrnoError.prototype=new Error,Ne.ErrnoError.prototype.constructor=Ne.ErrnoError,[44].forEach((function(e){Ne.genericErrors[e]=new Ne.ErrnoError(e),Ne.genericErrors[e].stack=""})))},staticInit:function(){Ne.ensureErrnoError(),Ne.nameTable=new Array(4096),Ne.mount(De,{},"/"),Ne.createDefaultDirectories(),Ne.createDefaultDevices(),Ne.createSpecialDirectories(),Ne.filesystems={MEMFS:De}},init:function(e,t,n){Ne.init.initialized=!0,Ne.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,Ne.createStandardStreams()},quit:function(){Ne.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var t=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+t),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):Ce(o.responseText||"",!0)}(t,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,C("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!d)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:r};var u=Ne.createFile(e,t,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function f(e,t,r,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s>2]=n.dev,U[r+4>>2]=n.mode,I[r+8>>2]=n.nlink,U[r+12>>2]=n.uid,U[r+16>>2]=n.gid,U[r+20>>2]=n.rdev,he=[n.size>>>0,(pe=n.size,+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[r+24>>2]=he[0],U[r+28>>2]=he[1],U[r+32>>2]=4096,U[r+36>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),a=n.ctime.getTime();return he=[Math.floor(o/1e3)>>>0,(pe=Math.floor(o/1e3),+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[r+40>>2]=he[0],U[r+44>>2]=he[1],I[r+48>>2]=o%1e3*1e3,he=[Math.floor(i/1e3)>>>0,(pe=Math.floor(i/1e3),+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[r+56>>2]=he[0],U[r+60>>2]=he[1],I[r+64>>2]=i%1e3*1e3,he=[Math.floor(a/1e3)>>>0,(pe=Math.floor(a/1e3),+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[r+72>>2]=he[0],U[r+76>>2]=he[1],I[r+80>>2]=a%1e3*1e3,he=[n.ino>>>0,(pe=n.ino,+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],U[r+88>>2]=he[0],U[r+92>>2]=he[1],0},doMsync:function(e,t,r,n,o){if(!Ne.isFile(t.node.mode))throw new Ne.ErrnoError(43);if(2&n)return 0;var i=$.slice(e,e+r);Ne.msync(t,i,o,r,n)},varargs:void 0,get:function(){var e=U[+We.varargs>>2];return We.varargs+=4,e},getp:function(){return We.get()},getStr:function(e){return ze(e)},getStreamFromFD:function(e){return Ne.getStreamChecked(e)}},Ve=function(e,t,r,n,o){},qe=function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ge=e},Xe=function(e){for(var t="",r=e;$[r];)t+=Ge[$[r++]];return t},Ye={},Je={},Ke={},Qe=function(e){throw new Ze(e)},tt=function(e){throw new et(e)},rt=function(e,t,r){function n(t){var n=r(t);n.length!==e.length&&tt("Mismatched type converter count");for(var o=0;o=48&&t<=57?"_".concat(e):e},jt=function(e,t,r){for(;t!==r;)t.upcast||Qe("Expected null or instance of ".concat(r.name,", got an instance of ").concat(t.name)),e=t.upcast(e),t=t.baseClass;return e},It=function(){Object.assign(Nt.prototype,{getPointee:function(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor:function(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:8,readValueFromPointer:Ut,deleteObject:function(e){null!==e&&e.delete()},fromWireType:Tt})},zt=function(e,t,n){r.hasOwnProperty(e)||tt("Replacing nonexistant public symbol"),void 0!==r[e].overloadTable&&void 0!==n?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)},Wt=function(e,t,n){var o=r["dynCall_"+e];return n&&n.length?o.apply(null,[t].concat(n)):o.call(null,t)},Bt=[],Vt=function(e){var t=Bt[e];return t||(e>=Bt.length&&(Bt.length=e+1),Bt[e]=t=Ht.get(e)),t},qt=function(e,t,r){return e.includes("j")?Wt(e,t,r):Vt(t).apply(null,r)},Gt=function(e,t){var r=[];return function(){return r.length=0,Object.assign(r,arguments),qt(e,t,r)}},Xt=function(e,t){var r=(e=Xe(e)).includes("j")?Gt(e,t):Vt(t);return"function"!=typeof r&&Qe("unknown function pointer with signature ".concat(e,": ").concat(t)),r},Yt=function(e,t){var r=Ft(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:"".concat(this.name,": ").concat(this.message)},r},Kt=function(e){var t=Ln(e),r=Xe(t);return $n(t),r},Zt=function(e,t){var r=[],n={};throw t.forEach((function e(t){n[t]||Je[t]||(Ke[t]?Ke[t].forEach(e):(r.push(t),n[t]=!0))})),new Jt("".concat(e,": ")+r.map(Kt).join([", "]))},Qt=function(e,t,r,n,o,i,a,s,u,c,f,l,d){f=Xe(f),i=Xt(o,i),s&&(s=Xt(a,s)),c&&(c=Xt(u,c)),d=Xt(l,d);var p=Dt(f);Mt(p,(function(){Zt("Cannot construct ".concat(f," due to unbound types"),[n])})),rt([e,t,r],n?[n]:[],(function(t){var r,o;t=t[0],o=n?(r=t.registeredClass).instancePrototype:Ct.prototype;var a=Ft(f,(function(){if(Object.getPrototypeOf(this)!==u)throw new Ze("Use 'new' to construct "+f);if(void 0===l.constructor_body)throw new Ze(f+" has no accessible constructor");var e=l.constructor_body[arguments.length];if(void 0===e)throw new Ze("Tried to invoke ctor of ".concat(f," with invalid number of parameters (").concat(arguments.length,") - expected (").concat(Object.keys(l.constructor_body).toString(),") parameters instead!"));return e.apply(this,arguments)})),u=Object.create(o,{constructor:{value:a}});a.prototype=u;var l=new Rt(f,a,u,d,r,i,s,c);l.baseClass&&(void 0===l.baseClass.__derivedClasses&&(l.baseClass.__derivedClasses=[]),l.baseClass.__derivedClasses.push(l));var h=new Nt(f,l,!0,!1,!1),m=new Nt(f+"*",l,!1,!1,!1),v=new Nt(f+" const*",l,!1,!0,!1);return pt[e]={pointerType:m,constPointerType:v},zt(p,a),[h,m,v]}))},er=function(e,t){for(var r=[],n=0;n>2]);return r},tr=function(e){for(;e.length;){var t=e.pop();e.pop()(t)}},or=function(e,t,r,n,o,i){var a=er(t,r);o=Xt(n,o),rt([],[e],(function(e){e=e[0];var r="constructor ".concat(e.name);if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Ze("Cannot register multiple constructors with identical number of parameters (".concat(t-1,") for class '").concat(e.name,"'! Overload resolution is currently only performed using the parameter count, not actual type info!"));return e.registeredClass.constructor_body[t-1]=function(){Zt("Cannot construct ".concat(e.name," due to unbound types"),a)},rt([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[t-1]=nr(r,n,null,o,i),[]})),[]}))},ir=function(e){var t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},ar=function(e,t,r,n,o,i,a,s,u){var c=er(r,n);t=Xe(t),t=ir(t),i=Xt(o,i),rt([],[e],(function(e){e=e[0];var n="".concat(e.name,".").concat(t);function o(){Zt("Cannot call ".concat(n," due to unbound types"),c)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(t);var f=e.registeredClass.instancePrototype,l=f[t];return void 0===l||void 0===l.overloadTable&&l.className!==e.name&&l.argCount===r-2?(o.argCount=r-2,o.className=e.name,f[t]=o):(At(f,t,n),f[t].overloadTable[r-2]=o),rt([],c,(function(o){var s=nr(n,o,e,i,a,u);return void 0===f[t].overloadTable?(s.argCount=r-2,f[t]=s):f[t].overloadTable[r-2]=s,[]})),[]}))},cr=new ur,fr=function(e){e>=cr.reserved&&0==--cr.get(e).refcount&&cr.free(e)},lr=function(){for(var e=0,t=cr.reserved;t>2])};case 8:return function(e){return this.fromWireType(z[e>>3])};default:throw new TypeError("invalid float width (".concat(t,"): ").concat(e))}},yr=function(e,t,r){t=Xe(t),ot(e,{name:t,fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:gr(t,r),destructorFunction:null})},wr=function(e,t,r){switch(t){case 1:return r?function(e){return j[e>>0]}:function(e){return $[e>>0]};case 2:return r?function(e){return O[e>>1]}:function(e){return L[e>>1]};case 4:return r?function(e){return U[e>>2]}:function(e){return I[e>>2]};default:throw new TypeError("invalid integer width (".concat(t,"): ").concat(e))}},br=function(e,t,r,n,o){t=Xe(t);var i=function(e){return e};if(0===n){var a=32-8*r;i=function(e){return e<
          >>a}}var s=t.includes("unsigned");ot(e,{name:t,fromWireType:i,toWireType:s?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:wr(t,r,0!==n),destructorFunction:null})},Er=function(e,t,r){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(e){var t=I[e>>2],r=I[e+4>>2];return new n(j.buffer,r,t)}r=Xe(r),ot(e,{name:r,fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},_r=function(e,t,r){return Se(e,$,t,r)},kr=function(e,t){var r="std::string"===(t=Xe(t));ot(e,{name:t,fromWireType:function(e){var t,n=I[e>>2],o=e+4;if(r)for(var i=o,a=0;a<=n;++a){var s=o+a;if(a==n||0==$[s]){var u=ze(i,s-i);void 0===t?t=u:(t+=String.fromCharCode(0),t+=u),i=s+1}}else{var c=new Array(n);for(a=0;a>2]=n,r&&o)_r(t,a,n+1);else if(o)for(var s=0;s255&&($n(a),Qe("String has UTF-16 code units that do not fit in 8 bits")),$[a+s]=u}else for(s=0;s>1,o=n+t/2;!(n>=o)&&L[n];)++n;if((r=n<<1)-e>32&&Pr)return Pr.decode($.subarray(e,r));for(var i="",a=0;!(a>=t/2);++a){var s=O[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i},xr=function(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,o=(r-=2)<2*e.length?r/2:e.length,i=0;i>1]=a,t+=2}return O[t>>1]=0,t-n},Sr=function(e){return 2*e.length},Cr=function(e,t){for(var r=0,n="";!(r>=t/4);){var o=U[e+4*r>>2];if(0==o)break;if(++r,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n},Fr=function(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var n=t,o=n+r-4,i=0;i=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i)),U[t>>2]=a,(t+=4)+4>o)break}return U[t>>2]=0,t-n},Ar=function(e){for(var t=0,r=0;r=55296&&n<=57343&&++r,t+=4}return t},Mr=function(e,t,r){var n,o,i,a,s;r=Xe(r),2===t?(n=Tr,o=xr,a=Sr,i=function(){return L},s=1):4===t&&(n=Cr,o=Fr,a=Ar,i=function(){return I},s=2),ot(e,{name:r,fromWireType:function(e){for(var r,o=I[e>>2],a=i(),u=e+4,c=0;c<=o;++c){var f=e+4+c*t;if(c==o||0==a[f>>s]){var l=n(u,f-u);void 0===r?r=l:(r+=String.fromCharCode(0),r+=l),u=f+t}}return $n(e),r},toWireType:function(e,n){"string"!=typeof n&&Qe("Cannot pass non-string to C++ string type ".concat(r));var i=a(n),u=jn(4+i+t);return I[u>>2]=i>>s,o(n,u+4,i+t),null!==e&&e.push($n,u),u},argPackAdvance:8,readValueFromPointer:hr,destructorFunction:function(e){$n(e)}})},Dr=function(e,t){t=Xe(t),ot(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},Rr=function(){return 1},jr=function(e,t){var r=Je[e];return void 0===r&&Qe(t+" has unknown type "+Kt(e)),r},$r=function(e,t,r){var n=[],o=e.toWireType(n,r);return n.length&&(I[t>>2]=pr.toHandle(n)),o},Or=function(e,t,r){return e=pr.toValue(e),t=jr(t,"emval::as"),$r(t,r,e)},Lr={},Ur=function(e){var t=Lr[e];return void 0===t?Xe(e):t},Ir=[],Nr=function(e,t,r,n,o){return(e=Ir[e])(t=pr.toValue(t),t[r=Ur(r)],n,o)},zr=function(){return"object"==("undefined"==typeof globalThis?"undefined":n(globalThis))?globalThis:Function("return this")()},Wr=function(e){return 0===e?pr.toHandle(zr()):(e=Ur(e),pr.toHandle(zr()[e]))},Br=function(e){var t=Ir.length;return Ir.push(e),t},Hr=function(e,t){for(var r=new Array(e),n=0;n>2],"parameter "+n);return r},Vr=function(e,t,r){var n=Hr(e,t),o=n.shift();e--;var i="return function (obj, func, destructorsRef, args) {\n",a=0,s=[];0===r&&s.push("obj");for(var u=["retType"],c=[o],f=0;f ").concat(o.name,">");return Br(Ft(d,l))},qr=function(e,t){return e=pr.toValue(e),t=pr.toValue(t),pr.toHandle(e[t])},Gr=function(e){e>4&&(cr.get(e).refcount+=1)},Xr=function(e){return pr.toHandle(Ur(e))},Yr=function(){return pr.toHandle({})},Jr=function(e){var t=pr.toValue(e);tr(t),fr(e)},Kr=function(e,t,r){e=pr.toValue(e),t=pr.toValue(t),r=pr.toValue(r),e[t]=r},Zr=function(e,t){var r=(e=jr(e,"_emval_take_value")).readValueFromPointer(t);return pr.toHandle(r)},Qr=function(e,t){return t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN},tn=function(e){return e%4==0&&(e%100!=0||e%400==0)},rn=[0,31,60,91,121,152,182,213,244,274,305,335],nn=[0,31,59,90,120,151,181,212,243,273,304,334],on=function(e){return(tn(e.getFullYear())?rn:nn)[e.getMonth()]+e.getDate()-1},sn=function(e){var t=function(){var t=new Date(U[e+20>>2]+1900,U[e+16>>2],U[e+12>>2],U[e+8>>2],U[e+4>>2],U[e>>2],0),r=U[e+32>>2],n=t.getTimezoneOffset(),o=new Date(t.getFullYear(),0,1),i=new Date(t.getFullYear(),6,1).getTimezoneOffset(),a=o.getTimezoneOffset(),s=Math.min(a,i);if(r<0)U[e+32>>2]=Number(i!=a&&s==n);else if(r>0!=(s==n)){var u=Math.max(a,i),c=r>0?s:u;t.setTime(t.getTime()+6e4*(c-n))}U[e+24>>2]=t.getDay();var f=0|on(t);U[e+28>>2]=f,U[e>>2]=t.getSeconds(),U[e+4>>2]=t.getMinutes(),U[e+8>>2]=t.getHours(),U[e+12>>2]=t.getDate(),U[e+16>>2]=t.getMonth(),U[e+20>>2]=t.getYear();var l=t.getTime();return isNaN(l)?(ye(61),-1):l/1e3}();return Un((pe=t,+Math.abs(pe)>=1?pe>0?+Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)),t>>>0},un=function(e){var t=xe(e)+1,r=jn(t);return r&&_r(e,r,t),r},cn=function(e,t,r){var n=(new Date).getFullYear(),o=new Date(n,0,1),i=new Date(n,6,1),a=o.getTimezoneOffset(),s=i.getTimezoneOffset(),u=Math.max(a,s);function c(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}I[e>>2]=60*u,U[t>>2]=Number(a!=s);var f=c(o),l=c(i),d=un(f),p=un(l);s>2]=d,I[r+4>>2]=p):(I[r>>2]=p,I[r+4>>2]=d)},fn=function(){oe("")},ln=function(){return Date.now()},dn=function(){return performance.now()},pn=function(e,t,r){return $.copyWithin(e,t,t+r)},hn=function(e){var t=(e-M.buffer.byteLength+65535)/65536;try{return M.grow(t),W(),1}catch(e){}},mn=function(e){var t=$.length,r=2147483648;if((e>>>=0)>r)return!1;for(var n,o,i=1;i<=4;i*=2){var a=t*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(r,(n=Math.max(e,a))+((o=65536)-n%o)%o);if(hn(s))return!0}return!1},vn={},gn=function(){return f||"./this.program"},yn=function e(){if(!e.strings){var t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":n(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:gn()};for(var r in vn)void 0===vn[r]?delete t[r]:t[r]=vn[r];var o=[];for(var r in t)o.push("".concat(r,"=").concat(t[r]));e.strings=o}return e.strings},wn=function(e,t){for(var r=0;r>0]=e.charCodeAt(r);j[t>>0]=0},bn=function(e,t){var r=0;return yn().forEach((function(n,o){var i=t+r;I[e+4*o>>2]=i,wn(n,i),r+=n.length+1})),0},En=function(e,t){var r=yn();I[e>>2]=r.length;var n=0;return r.forEach((function(e){return n+=e.length+1})),I[t>>2]=n,0},Pn=function(e,t,r,n){for(var o=0,i=0;i>2],s=I[t+4>>2];t+=8;var u=Ne.read(e,j,a,s,n);if(u<0)return-1;if(o+=u,u>2],s=I[t+4>>2];t+=8;var u=Ne.write(e,j,a,s,n);if(u<0)return-1;o+=u,void 0!==n&&(n+=u)}return o},Fn=function(e,t,r,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ne.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n},An=365,Mn=146,Object.defineProperties(Fn.prototype,{read:{get:function(){return(this.mode&An)===An},set:function(e){e?this.mode|=An:this.mode&=-366}},write:{get:function(){return(this.mode&Mn)===Mn},set:function(e){e?this.mode|=Mn:this.mode&=-147}},isFolder:{get:function(){return Ne.isDir(this.mode)}},isDevice:{get:function(){return Ne.isChrdev(this.mode)}}}),Ne.FSNode=Fn,Ne.createPreloadedFile=Le,Ne.staticInit(),qe(),Ze=r.BindingError=function(e){c(r,e);var t=T(r);function r(e){var n;return s(this,r),(n=t.call(this,e)).name="BindingError",n}return a(r)}(w(Error)),et=r.InternalError=function(e){c(r,e);var t=T(r);function r(e){var n;return s(this,r),(n=t.call(this,e)).name="InternalError",n}return a(r)}(w(Error)),St(),bt(),It(),Jt=r.UnboundTypeError=Yt(Error,"UnboundTypeError"),sr(),dr(),Dn={P:ge,L:Be,D:He,A:Ve,N:it,u:Qt,Q:or,i:ar,M:mr,s:yr,h:br,d:Er,t:kr,p:Mr,O:Dr,H:Rr,g:Or,o:Nr,b:fr,R:Wr,l:Vr,e:qr,q:Gr,c:Xr,v:Yr,f:Jr,k:Kr,j:Zr,w:en,x:an,y:sn,C:cn,a:fn,n:ln,m:dn,I:pn,B:mn,F:bn,G:En,r:_n,E:kn,K:Tn,z:xn,J:Cn},Rn=de(),jn=function(e){return(jn=Rn.U)(e)},$n=function(e){return($n=Rn.V)(e)},On=function(){return(On=Rn.X)()},Ln=function(e){return(Ln=Rn.Y)(e)},Un=function(e){return(Un=Rn.Z)(e)},In=function(e){return(In=Rn._)(e)},r.dynCall_jiji=function(e,t,n,o,i){return(r.dynCall_jiji=Rn.$)(e,t,n,o,i)},r._ff_h264_cabac_tables=128780,ee=function e(){Nn||zn(),Nn||(ee=e)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return zn(),e.abrupt("return",t.ready);case 284:case"end":return e.stop()}}),e)})))),C="debug",F="warn",A={debug:!1,debugLevel:F,debugUuid:"",decoder:"jessibuca-pro-mp4-recorder-decoder.js"},M="init",D="startRecord",R="stopRecord",j="videoFrame",$="audioFrame",O="destroy",L="init",U="startRecordError",I="startRecordSuccess",N="recordEnd",z="stopRecordError",W="recordTimestamp";function B(e){return!0!==e&&"true"!==e}var H=a((function e(t){s(this,e),this.log=function(e){if(t._opt.debug&&t._opt.debugLevel==C){for(var r,n=t._opt.debugUuid?"[".concat(t._opt.debugUuid,"]"):"",o=arguments.length,i=new Array(o>1?o-1:0),a=1;a1?o-1:0),a=1;a1?o-1:0),a=1;a1?t-1:0),n=1;n1?n-1:0),u=1;u1?n-1:0),u=1;u1?n-1:0),u=1;u0&&void 0!==arguments[0]?arguments[0]:{};t(this,o),(e=r.call(this))._opt={},Object.keys(n).forEach((function(e){if(void 0===n[e])throw new Error('JbProMp4Recorder option "'.concat(e,'" can not be undefined'))})),e.originalOptions=n;var i=U(),u=Object.assign({},i,n);return e._opt=u,e.isRecording=!1,e.debug=new B(s(e)),e.worker=null,e.startTimestamp=null,e.TAG_NAME="Recorder",e.debug.log(e.TAG_NAME,"init",JSON.stringify(e._opt)),e}return d(o,[{key:"destroy",value:function(){this._reset(),this._destroyWorker()}},{key:"_reset",value:function(){this.isRecording=!1,this.startTimestamp=null}},{key:"_destroyWorker",value:function(){this.worker&&(this.worker.destroy(),this.worker=null)}},{key:"startRecord",value:function(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise((function(t,o){e.debug.log(e.TAG_NAME,"startRecord",JSON.stringify(r));var n=!!r.audio,i=!!r.video;if(L(i)&&L(n))return e.debug.error(e.TAG_NAME,"video and audio can not be false at the same time"),void o("video and audio can not be false at the same time");if(n){if(F(r.audio.type))return e.debug.error(e.TAG_NAME,"audio type can not be undefined"),void o("audio type can not be undefined");if(F(r.audio.extraData))return e.debug.error(e.TAG_NAME,"audio extraData can not be undefined"),void o("audio extraData can not be undefined");if(F(r.audio.sampleRate))return e.debug.error(e.TAG_NAME,"audio extraData can not be undefined"),void o("audio extraData can not be undefined");if(F(r.audio.channels))return e.debug.error(e.TAG_NAME,"audio channels can not be undefined"),void o("audio channels can not be undefined");if(F(r.audio.depth))return e.debug.error(e.TAG_NAME,"audio depth can not be undefined"),void o("audio depth can not be undefined")}if(i){if(F(r.video.type))return e.debug.error(e.TAG_NAME,"video type can not be undefined"),void o("video type can not be undefined");if(F(r.video.extraData))return e.debug.error(e.TAG_NAME,"video extraData can not be undefined"),void o("video extraData can not be undefined");if(F(r.video.width))return e.debug.error(e.TAG_NAME,"video width can not be undefined"),void o("video width can not be undefined");if(F(r.video.height))return e.debug.error(e.TAG_NAME,"video height can not be undefined"),void o("video height can not be undefined")}e.worker?e._startRecord(r,t,o):(e.worker=new I(e),e.worker.once(G,(function(){e._startRecord(r,t,o),e.startTimestamp=Date.now()})),e.worker.once(W,(function(e){o(e)})),e.worker.on(J,(function(r){e.emit(J,r)})))}))}},{key:"_startRecord",value:function(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,o=arguments.length>2?arguments[2]:void 0;this.worker.startRecord(r),this.worker.once(P,(function(r){e.debug.error(e.TAG_NAME,"startRecordError",r),o(r)})),this.worker.once(j,(function(){e.isRecording=!0,e.debug.log(e.TAG_NAME,"startRecordSuccess"),t()}))}},{key:"stopRecord",value:function(){var e=this;return new Promise((function(r,t){e.debug.log(e.TAG_NAME,"stopRecord"),L(e.isRecording)&&(e._destroyWorker(),e.debug.error(e.TAG_NAME,"isRecording is false"),t("isRecording is false")),e.isRecording=!1,e.worker.stopRecord(),e.worker.once(S,(function(r){e._destroyWorker(),e.debug.error(e.TAG_NAME,"stopRecordError",r),t(r)})),e.worker.once(D,(function(t){e._destroyWorker(),e.debug.log(e.TAG_NAME,"recordEnd");var o=new Blob([t.buffer],{type:"video/mp4"});r(o)}))}))}},{key:"sendVideoFrame",value:function(e,r,t,o){if(this.isRecording&&this.worker){if(Date.now()-this.startTimestamp>6e5)return;var n=t+o;this.worker.sendVideoFrame(e,r,t,n)}}},{key:"sendAudioFrame",value:function(e,r){if(this.isRecording&&this.worker){if(Date.now()-this.startTimestamp>6e5)return;this.worker.sendAudioFrame(e,r)}}}]),o}(v);window.JessibucaProMp4Recorder=q})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-multi-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-multi-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..4f0e1a13155d0ae4887a72e3459ba5bdafda7f11 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-multi-demo.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["jessibuca-multi"]=t(e.crypto$1)}(this,(function(t){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=s(t);class o{on(e,t,i){const s=this.e||(this.e={});return(s[e]||(s[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const s=this;function r(){s.off(e,r);for(var o=arguments.length,a=new Array(o),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.length;e1?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),o=1;o32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}const Pr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Br=Pr,Mr=Pr;function Fr(e){let{profile:t,sampleRate:i,channel:s}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|s<<3])}function Ur(e){return Or(e)&&e[1]===ys}function Or(e){return e[0]>>4===_t}function Nr(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}function jr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return 1024*t/e}const Gr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function zr(e){let t=new Uint8Array(e),i=null,s=0,r=0,o=0,a=null;if(s=r=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=Gr.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=Gr[o],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===s&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let d=self.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?o>=6?(s=5,i=new Array(4),a=o-3):(s=2,i=new Array(2),a=o):-1!==d.indexOf("android")?(s=2,i=new Array(2),a=o):(s=5,a=o,i=new Array(4),o>=6?a=o-3:1===l&&(s=2,i=new Array(2),a=o)),i[0]=s<<3,i[0]|=(15&o)>>>1,i[1]=(15&o)<<7,i[1]|=(15&l)<<3,5===s&&(i[1]|=(15&a)>>>1,i[2]=(1&a)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:s,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}class Wr{constructor(e){this.buffer=e,this.buflen=e.length,this.bufpos=0,this.bufoff=0,this.iserro=!1}read(e){let t=0,i=0;for(;e;){if(e<0||this.bufpos>=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,o=1&e[i+1],a=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,d=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+d>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let h=1===o?7:9,c=d-h;i+=h;let u=this.findNextSyncwordOffset(i+c);if(this.current_syncword_offset_=u,0!==s&&1!==s||0!==r)continue;let p=e.subarray(i,i+c);t={},t.audio_object_type=a+1,t.sampling_freq_index=n,t.sampling_frequency=Br[n],t.channel_config=l,t.data=p}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Kr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let s=0;s<=t;s++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let s=this.current_syncword_offset_,r=(31&t[s+1])<<8|t[s+2];if(s+3+r>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new Ir(t.subarray(s+3,s+3+r)),a=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(s+3+r),o.destroy();continue}a=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,i=o.readBits(5);t-=5;let s=o.readBits(4);t-=4;let r=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let n=o.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let l=o.readBool();if(l)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),a={},a.audio_object_type=i,a.sampling_freq_index=s,a.sampling_frequency=Br[a.sampling_freq_index],a.channel_config=r,a.other_data_present=l}let n=0;for(;;){let e=o.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const i=e.length,s=[];let r,o=0;for(;o+t>>=8),o+=t,r){if(o+r>i)break;s.push(e.subarray(o,o+r)),o+=r}return s}function Xr(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const s=new Uint8Array(t+4);return s.set(i,0),s.set(e,4),s}function Zr(){}function eo(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let s=0;for(;!t&&s0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),s=t[0].replace("data:","").replace(";base64","");let r=i.length,o=new Uint8Array(r);for(;r--;)o[r]=i.charCodeAt(r);return new File([o],"file",{type:s})}function so(){return(new Date).getTime()}function ro(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function oo(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{oo(e,i,t[i])})),e.style[t]=i,e}function ao(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const s=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(s):s}function no(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function lo(e){let t=0,i=no();return s=>{if(!ko(s))return;t+=s;const r=no(),o=r-i;o>=1e3&&(e(t/o*1e3),i=r,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();const ho='"6-18-2024"',co=!1;function uo(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function po(){return/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase())}function fo(){return!(uo()||po())}function mo(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function go(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function yo(){const e=window.navigator.userAgent.toLowerCase()||"",t={type:"",version:""},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let s in i)if(i[s]){let i="";if("IE"===s){const t=e.match(/(msie\s|trident.*rv:)([\w.]+)/);t&&t.length>2&&(i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2])}else if("Chrome"===s){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(s="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===s){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===s){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===s){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===s){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===s){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=s,t.version=parseInt(i)}return t}function Ao(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function bo(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function vo(e,t){if(0===arguments.length)return null;var i,s=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"==typeof e?i=e:(10===(""+e).length&&(e=1e3*parseInt(e)),e=+e,i=new Date(e));var r={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()},o=s.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=r[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}));return o}function _o(){return"VideoFrame"in window}function wo(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function So(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Eo(e,t){let i,s,r=!1;return function o(){for(var a=arguments.length,n=new Array(a),l=0;l{r=!1,i&&(o.apply(s,i),i=null,s=null)}),t)}}function To(e){if(null==e||""==e)return"0 Bytes";const t=new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");let i=0;const s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+t[i]}function ko(e){return"[object Number]"===Object.prototype.toString.call(e)}function Co(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ui)||self.MediaSource.isTypeSupported(pi)||self.MediaSource.isTypeSupported(fi)||self.MediaSource.isTypeSupported(mi)||self.MediaSource.isTypeSupported(gi))&&(e=!0),e}function xo(){const e=yo();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Do(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Lo(){let e=!1;return"MediaStream"in window&&(e=!0),e}function Ro(e,t){let i=window.URL.createObjectURL(t),s=window.document.createElement("a");s.download=e,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),Ao()?1e3:0)}function Io(e){return null==e}function Po(e){return!0===e||!1===e}function Bo(e){return!Io(e)}function Mo(e){let t={left:"",right:"",top:"",bottom:"",opacity:1,backgroundColor:"",image:{src:"",width:"100",height:"60"},text:{content:"",fontSize:"14",color:"#000",width:"",height:""},rect:{color:"green",lineWidth:2,width:"",height:"",fill:"",fillOpacity:.2},line:{x1:"",y1:"",x2:"",y2:"",color:"green",lineWidth:2},polygon:{color:"green",lineWidth:2,list:[],fill:"",fillOpacity:.2},html:""};const i=Object.assign(t.image,e.image||{}),s=Object.assign(t.text,e.text||{}),r=Object.assign(t.rect,e.rect||{}),o=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:s,rect:r,line:o}),t}function Fo(e,t){let i={container:e||"",text:"",opacity:"",angle:"",color:"",fontSize:"",fontFamily:""};return i=Object.assign(i,t),{watermark_parent_node:i.container,watermark_alpha:i.opacity,watermark_angle:i.angle,watermark_fontsize:i.fontSize,watermark_color:i.color,watermark_font:i.fontFamily,watermark_txt:i.text}}function Uo(e,t){return new Promise(((i,s)=>{let r=Mo(t);if(!r.image.src&&!r.text.content)return i(e);let o=document.createElement("canvas");o.width=t.width,o.height=t.height;let a=o.getContext("2d");a.imageSmoothingEnabled=!0,a.imageSmoothingEnabled&&(a.imageSmoothingQuality="high");let n=0,l=0;ko(r.left)?n=r.left:ko(r.right)&&(n=o.width-r.right),ko(r.top)?l=r.top:ko(r.bottom)&&(l=o.height-r.bottom);const d=new Image;d.src=e,d.onload=()=>{if(a.drawImage(d,0,0),r.image&&r.image.src){const e=new Image;e.src=r.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=r.image.width,a.drawImage(e,n,l,r.image.width,r.image.height),i(o.toDataURL(t.format,t.quality))},e.onerror=e=>{s()}}else r.text&&r.text.content&&(a.font=r.text.fontSize+"px 宋体",a.fillStyle=r.text.color,a.textAlign="right",a.fillText(r.text.content,n,l),i(o.toDataURL(t.format,t.quality)))},d.onerror=e=>{s(e)}}))}function Oo(e){var t,i=0;if(0===e.length)return i;for(t=0;t{if(!t.copyright)return i(e);let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let o=r.getContext("2d");o.imageSmoothingEnabled=!0,o.imageSmoothingEnabled&&(o.imageSmoothingQuality="high");const a=new Image;a.src=e,a.onload=()=>{o.drawImage(a,0,0);const e=Oo(t.copyright),s=o.getImageData(0,0,r.width,r.height);!function(e,t){for(var i=e.data,s=0,r=0;r<32;r++){var o=t>>r&1,a=254&i[s]|o;i[s]=a,s+=4}}(s,e),o.putImageData(s,0,0),i(r.toDataURL(t.format,t.quality))},a.onerror=e=>{s(e)}}))}function jo(e){var t;if(e>-1){var i=Math.floor(e/3600),s=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function Go(e,t){let i="";if(e>-1){const s=Math.floor(e/60)%60;let r=e%60;r=Math.round(r),i=s<10?"0"+s+":":s+":",r<10&&(i+="0"),i+=r,Io(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function zo(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let s=Math.floor(e/60)%60,r=e%60;s=Math.round(s),t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",r<10&&(t+="0"),t+=r}return t}function Wo(e,t){const i=Math.floor(t/60)%60,s=Math.floor(t%60);return new Date(e).setHours(i,s,0,0)}function $o(e,t){const i=Math.floor(t/60/60)%60,s=Math.floor(t/60)%60,r=t%60;return new Date(e).setHours(i,s,r,0)}function Vo(e){return(""+e).length}function Ho(e){return e&&0===Object.keys(e).length}function Jo(e){return!Ho(e)}function qo(e){return"string"==typeof e}const Ko=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},Yo=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function Qo(e){const t=e||window.event;return t.target||t.srcElement}function Xo(){return go()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function Zo(e){return"function"==typeof e}function ea(e){if(uo()){let t=0,i=0;if(1===e.touches.length){let s=e.touches[0];t=s.clientX,i=s.clientY}return{posX:t,posY:i}}let t=0,i=0;const s=e||window.event;return s.pageX||s.pageY?(t=s.pageX,i=s.pageY):(s.clientX||s.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function ta(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function ia(e){let t=ya(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&ya(e.demuxUseWorker);return!!(ya(t)&&e.useMSE&&e.mseDecodeAudio&&ya(e.demuxUseWorker))||(!!(ya(t)&&e.useWCS&&e.wcsDecodeAudio)||t)}function sa(e){let t=null,i=31&e[0];return i!==kt&&i!==Ct||(t=bt),t||(i=(126&e[0])>>1,i!==Gt&&i!==Wt&&i!==Vt||(t=vt)),t}function ra(e){e.close()}function oa(e){e.close()}function aa(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function na(e){const t=Object.prototype.toString;return function(e){switch(t.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:try{return e instanceof Error}catch(e){return!1}}}(e)?e.message:null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function la(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],s=null,r=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,r=2)}if(i)for(let o=r;o=1e3){e[o-1].ts-i.ts<1e3&&(s=o+1)}}}return s}function da(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),s=new Uint8Array(i.length),r=0;r>4===As&&e[1]===ys}function ga(e){return!0===e||"true"===e}function ya(e){return!0!==e&&"true"!==e}function Aa(e,t,i){e&&(e.dataset?e.dataset[t]=i:e.setAttribute("data-"+t,i))}function ba(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}function va(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function _a(){return/iphone/i.test(navigator.userAgent)}function wa(){return window.performance&&window.performance.memory?window.performance.memory:null}function Sa(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Ea(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Ta(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function ka(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function Ca(e,t){const i=Qr(e.slice(5));let s=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===Mt||i===Ut||i===Nt)||ya(t)&&i===xt)&&(s=!0)})),s}function xa(){let e={down:"mousedown",move:"mousemove",up:"mouseup",click:"click"};return uo()&&(e={down:"touchstart",move:"touchmove",up:"touchend",click:"click"}),e}class Da{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{Zo(e.removeEventListener)&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}var La=1e-6,Ra="undefined"!=typeof Float32Array?Float32Array:Array;function Ia(){var e=new Ra(16);return Ra!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Pa(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var Ba,Ma=function(e,t,i,s,r,o,a){var n=1/(t-i),l=1/(s-r),d=1/(o-a);return e[0]=-2*n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*d,e[11]=0,e[12]=(t+i)*n,e[13]=(r+s)*l,e[14]=(a+o)*d,e[15]=1,e};function Fa(e,t,i){var s=new Ra(3);return s[0]=e,s[1]=t,s[2]=i,s}Ba=new Ra(3),Ra!=Float32Array&&(Ba[0]=0,Ba[1]=0,Ba[2]=0);class Ua{constructor(e,t){this.gl=e,t&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1);const i=this._initShaderProgram();this._programInfo={program:i,attribLocations:{vertexPosition:e.getAttribLocation(i,"aVertexPosition"),texturePosition:e.getAttribLocation(i,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(i,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(i,"uModelMatrix"),viewMatrix:e.getUniformLocation(i,"uViewMatrix"),rgbatexture:e.getUniformLocation(i,"rgbaTexture"),ytexture:e.getUniformLocation(i,"yTexture"),utexture:e.getUniformLocation(i,"uTexture"),vtexture:e.getUniformLocation(i,"vTexture"),isyuv:e.getUniformLocation(i,"isyuv")}},this._buffers=this._initBuffers(),this._rgbatexture=this._createTexture(),this._ytexture=this._createTexture(),this._utexture=this._createTexture(),this._vtexture=this._createTexture()}destroy(){this.gl.deleteProgram(this._programInfo.program),this.gl.deleteBuffer(this._buffers.position),this.gl.deleteBuffer(this._buffers.texPosition),this.gl.deleteBuffer(this._buffers.indices),this.gl.deleteTexture(this._rgbatexture),this.gl.deleteTexture(this._ytexture),this.gl.deleteTexture(this._utexture),this.gl.deleteTexture(this._vtexture),this._programInfo=null,this._buffers=null,this._rgbatexture=null,this._ytexture=null,this._utexture=null,this._vtexture=null}_initShaderProgram(){const e=this._loadShader(this.gl.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),t=this._loadShader(this.gl.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 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\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS)?i:(console.log("Unable to initialize the shader program: "+this.gl.getProgramInfoLog(i)),null)}_loadShader(e,t){const i=this.gl,s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),i.getShaderParameter(s,i.COMPILE_STATUS)?s:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(s)),i.deleteShader(s),null)}_initBuffers(){const e=this.gl,t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);const i=[-1,-1,1,-1,1,1,-1,1];e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),e.STATIC_DRAW);var s=[];s=s.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(s),e.STATIC_DRAW);const o=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:r,indices:o}}_createTexture(){let e=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),e}_drawScene(e,t,i){this.gl.viewport(0,0,e,t),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.position),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(this._buffers.positions),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this._programInfo.attribLocations.vertexPosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.vertexPosition),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.texPosition),this.gl.vertexAttribPointer(this._programInfo.attribLocations.texturePosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.texturePosition),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this._buffers.indices);i?(this.gl.activeTexture(this.gl.TEXTURE0+3),this.gl.bindTexture(this.gl.TEXTURE_2D,this._ytexture),this.gl.activeTexture(this.gl.TEXTURE0+4),this.gl.bindTexture(this.gl.TEXTURE_2D,this._utexture),this.gl.activeTexture(this.gl.TEXTURE0+5),this.gl.bindTexture(this.gl.TEXTURE_2D,this._vtexture)):(this.gl.activeTexture(this.gl.TEXTURE0+2),this.gl.bindTexture(this.gl.TEXTURE_2D,this._rgbatexture)),this.gl.useProgram(this._programInfo.program),this.gl.uniform1i(this._programInfo.uniformLocations.rgbatexture,2),this.gl.uniform1i(this._programInfo.uniformLocations.ytexture,3),this.gl.uniform1i(this._programInfo.uniformLocations.utexture,4),this.gl.uniform1i(this._programInfo.uniformLocations.vtexture,5),this.gl.uniform1i(this._programInfo.uniformLocations.isyuv,i?1:0),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0)}_calRect(e,t,i,s,r,o){let a=2*e/r-1,n=2*(o-t-s)/o-1,l=2*(e+i)/r-1,d=2*(o-t)/o-1;return[a,n,l,n,l,d,a,d]}_clear(){this.gl.clearColor(0,0,0,1),this.gl.clearDepth(1),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}render(e,t,i,s,r){const o=this.gl;this._clear(),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._ytexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,t,0,o.LUMINANCE,o.UNSIGNED_BYTE,i),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this._utexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,s),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this._vtexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,r),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),o=i.slice(e*t*5/4,e*t*3/2);const a=this.gl;this._clear(),a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._ytexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e,t,0,a.LUMINANCE,a.UNSIGNED_BYTE,s),a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,this._utexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,r),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,this._vtexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,o),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,s,r){const o=this.gl;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._rgbatexture),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,r),this._buffers.positions=this._calRect(i,s,r.width,r.height,e,t),this._drawScene(e,t,!1)}}const Oa=1,Na=2,ja=4;class Ga{constructor(e){this.gpu=e,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null,this.hasInited=!1,this.buffers=this._initBuffer(),this.isDestroyed=!1,this._initPipeline().then((e=>{this.isDestroyed||(this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.matrixGroupInfo&&(this.hasInited=!0))}))}destroy(){this.isDestroyed=!1,this.gpu&&(this.gpu.device.destroy(),this.gpu=null),this.hasInited=!1,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null}_initBuffer(){const e=this.gpu.device,t=new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),i=e.createBuffer({size:t.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(i,0,t);const s=new Float32Array([0,1,1,1,1,0,0,0]),r=e.createBuffer({size:s.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(r,0,s);const o=new Uint16Array([0,1,2,0,2,3]),a=e.createBuffer({size:o.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(a,0,o),{positionBuffer:i,texpositionBuffer:r,indexBuffer:a}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,s=this.gpu.format,r={layout:"auto",vertex:{module:i.createShaderModule({code:"\n\n @binding(0) @group(0) var uModelMatrix : mat4x4;\n @binding(1) @group(0) var uViewMatrix : mat4x4;\n @binding(2) @group(0) var uProjectionMatrix : mat4x4;\n\n struct VertexOutput {\n @builtin(position) Position : vec4,\n @location(0) vTexturePosition : vec2,\n }\n\n @vertex\n fn main(\n @location(0) aVertexPosition : vec4,\n @location(1) aTexturePosition : vec2\n ) -> VertexOutput {\n var output : VertexOutput;\n var tmppos : vec4 = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n output.Position = vec4(tmppos.x, tmppos.y, (tmppos.z+1.)/2., tmppos.w); // webgl z [-1, 1], webgpu z [0, 1], 这里z做下调整 z-webgpu = (z-webgl+1)/2\n output.vTexturePosition = aTexturePosition;\n return output;\n }\n\n "}),entryPoint:"main",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]},{arrayStride:8,attributes:[{shaderLocation:1,offset:0,format:"float32x2"}]}]},primitive:{topology:"triangle-list"},fragment:{module:i.createShaderModule({code:"\n @group(1) @binding(0) var mySampler: sampler;\n @group(1) @binding(1) var pixelType: i32;\n @group(1) @binding(2) var yTexture: texture_2d;\n @group(1) @binding(3) var uTexture: texture_2d;\n @group(1) @binding(4) var vTexture: texture_2d;\n @group(1) @binding(5) var uvTexture: texture_2d;\n @group(1) @binding(6) var rgbaTexture: texture_2d;\n\n const YUV2RGB : mat4x4 = mat4x4( 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 @fragment\n fn main(\n @location(0) vTexturePosition: vec2\n ) -> @location(0) vec4 {\n if(pixelType == 1){\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(vTexture, mySampler, vTexturePosition).r;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else if (pixelType == 2) {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uvTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(uvTexture, mySampler, vTexturePosition).g;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else {\n\n return textureSample(rgbaTexture, mySampler, vTexturePosition);\n }\n\n }\n\n "}),entryPoint:"main",targets:[{format:s}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(r).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){if(!this.gpu)return null;const e=this.gpu.device,t=this.pipeline,i=Ia();Ma(i,-1,1,-1,1,.1,100);const s=Ia();Pa(s);const r=Ia();!function(e,t,i,s){var r,o,a,n,l,d,h,c,u,p,f=t[0],m=t[1],g=t[2],y=s[0],A=s[1],b=s[2],v=i[0],_=i[1],w=i[2];Math.abs(f-v)Mo(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.width,t=this.player.height,i=this.player.getVideoInfo();if(!(i&&i.height>0&&i.width>0))return;let s=i.width,r=i.height;const o=this.player._opt;let a=t,n=e;if(this.player.isControlBarShow()){const e=o.playType===w?Qt:Yt;uo()&&this.player.fullscreen&&o.useWebFullScreen?n-=e:a-=e}const l=o.rotate;let d=(n-s)/2,h=(a-r)/2;270!==l&&90!==l||(s=i.height,r=i.width);const c=n/s,u=a/r;let p=c>u?u:c;o.isResize||c!==u&&(p=c+","+u),o.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===o.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===o.mirrorRotate?f+=" rotateY(180deg)":"vertical"===o.mirrorRotate&&(f+=" rotateX(180deg)"),this.scale=-1!==(""+p).indexOf(",")?c:p,this.shadowRootInnerDom.style.transform=f,this.shadowRootInnerDom.style.left=d+"px",this.shadowRootInnerDom.style.top=h+"px",this.shadowRootInnerDom.style.width=i.width+"px",this.shadowRootInnerDom.style.height=i.height+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomForCanvas(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt;let i=this.player.width,s=this.player.height;if(this.player.isControlBarShow()){const e=t.playType===w?Qt:Yt;uo()&&this.player.fullscreen&&t.useWebFullScreen?i-=e:s-=e}let r=e.width,o=e.height;const a=t.rotate;let n=(i-r)/2,l=(s-o)/2;270!==a&&90!==a||(r=e.height,o=e.width);const d=i/r,h=s/o;let c=d>h?h:d;t.isResize||d!==h&&(c=d+","+h),t.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===t.mirrorRotate&&a&&(u+=" rotate("+a+"deg)"),"level"===t.mirrorRotate?u+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(u+=" rotateX(180deg)"),this.shadowRootInnerDom.style.height=e.height+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.padding="0",this.shadowRootInnerDom.style.transform=u,this.shadowRootInnerDom.style.left=n+"px",this.shadowRootInnerDom.style.top=l+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomRatio(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt.aspectRatio.split(":").map(Number);let i=this.player.width,s=this.player.height;const r=this.player._opt;let o=0;this.player.isControlBarShow()&&(o=r.playType===w?Qt:Yt,s-=o);const a=e.width/e.height,n=t[0]/t[1];if(a>n){const t=n*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${o}px)`,this.shadowRootInnerDom.style.padding=`0 ${(i-i*t)/2}px`}else{const t=e.width/n/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${o}px)`,this.shadowRootInnerDom.style.padding=(s-s*t)/2+"px 0"}this.shadowRootInnerDom.style.display="block"}_updateDom(){this.shadowRoot&&this.configList.forEach((e=>{const t=document.createElement("div");let i=null;if(e.image&&e.image.src?(i=document.createElement("img"),i.style.height="100%",i.style.width="100%",i.style.objectFit="contain",i.src=e.image.src):e.text&&e.text.content?i=document.createTextNode(e.text.content):(e.rect&&e.rect.color&&e.rect.width||e.html||e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2||e.polygon&&e.polygon.list&&e.polygon.list.length>=3)&&(i=document.createElement("div")),i){if(t.appendChild(i),t.style.visibility="",t.style.position="absolute",t.style.display="block",t.style["-ms-user-select"]="none",t.style["-moz-user-select"]="none",t.style["-webkit-user-select"]="none",t.style["-o-user-select"]="none",t.style["user-select"]="none",t.style["-webkit-touch-callout"]="none",t.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",t.style["-webkit-text-size-adjust"]="none",t.style["-webkit-touch-callout"]="none",t.style.opacity=e.opacity,Bo(e.left)&&(ko(e.left)?t.style.left=e.left+"px":t.style.left=e.left),Bo(e.right)&&(ko(e.right)?t.style.right=e.right+"px":t.style.right=e.right),Bo(e.top)&&(ko(e.top)?t.style.top=e.top+"px":t.style.top=e.top),Bo(e.bottom)&&(ko(e.bottom)?t.style.bottom=e.bottom+"px":t.style.bottom=e.bottom),e.backgroundColor&&(t.style.backgroundColor=e.backgroundColor),t.style.overflow="hidden",t.style.zIndex="9999999",e.image&&e.image.src)t.style.width=e.image.width+"px",t.style.height=e.image.height+"px";else if(e.text&&e.text.content)t.style.fontSize=e.text.fontSize+"px",t.style.color=e.text.color,e.text.width&&(t.style.width=e.text.width+"px"),e.text.height&&(t.style.height=e.text.height+"px");else if(e.rect&&e.rect.color&&e.rect.width){if(t.style.width=e.rect.width+"px",t.style.height=e.rect.height+"px",t.style.borderWidth=e.rect.lineWidth+"px",t.style.borderStyle="solid",t.style.borderColor=e.rect.color,e.rect.fill){const i=document.createElement("div");i.style.position="absolute",i.style.width="100%",i.style.height="100%",i.style.backgroundColor=e.rect.fill,e.rect.fillOpacity&&(i.style.opacity=e.rect.fillOpacity),t.appendChild(i)}}else if(e.html)t.style.width="100%",t.style.height="100%",t.innerHTML=e.html;else if(e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2)this.settingLine(t,e.line);else if(e.polygon&&e.polygon.list&&e.polygon.list.length>=3){t.style.width="100%",t.style.height="100%";let i=e.polygon.list;const s=e.polygon.color,r=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const s=document.createElement("div");s.style.position="absolute",s.style.width="100%",s.style.height="100%";const r="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";s.style.clipPath=r,s.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(s.style.opacity=e.polygon.fillOpacity),t.appendChild(s)}i.forEach(((e,o)=>{const a=document.createElement("div");if(o===i.length-1){const o=i[0],n={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:s,lineWidth:r};return this.settingLine(a,n),void t.appendChild(a)}const n=i[o+1],l={x1:e.x,y1:e.y,x2:n.x,y2:n.y,color:s,lineWidth:r};this.settingLine(a,l),t.appendChild(a)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,s=t.y1,r=t.x2,o=t.y2;var a=Math.sqrt((i-r)**2+(s-o)**2),n=180*Math.atan2(o-s,r-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=a+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=s+"px",e.style.left=i+"px",e.style.transform="rotate("+n+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class Wa extends o{constructor(){super(),this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1,this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.prevOcclusionDetectTime=null,this.contentWatermark=null,this.aiContentWatermark=null,this.tempContentList=[],this.tempAiContentList=[],this.streamFps=0}destroy(){this.resetInit(),this.contentWatermark&&(this.contentWatermark.destroy(),this.contentWatermark=null),this.tempContentList=[],this.aiContentWatermark&&(this.aiContentWatermark.destroy(),this.aiContentWatermark=null),this.tempAiContentList=[],this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.streamFps=0,this.off()}resetInit(){this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1}getHasInit(){return this.init}updateVideoInfo(e){Bo(e.encTypeCode)&&(this.videoInfo.encType=gt[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),Bo(e.encType)&&(this.videoInfo.encType=e.encType),Bo(e.width)&&(this.videoInfo.width=e.width),Bo(e.height)&&(this.videoInfo.height=e.height),Bo(this.videoInfo.encType)&&Bo(this.videoInfo.height)&&Bo(this.videoInfo.width)&&!this.init&&(this.player.emit(ot.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debug.log("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||uo()?this._resize():this._resizeRatio(),this.contentWatermark&&this.contentWatermark.resize(),this.aiContentWatermark&&this.aiContentWatermark.resize(),this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize(),this.player.zoom&&this.player.zooming){const e=this._getStyleScale();this.player.zoom.updatePrevVideoElementStyleScale(e),this.player.zoom.updateVideoElementScale()}}_resizeRatio(){this.player.debug.log("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const s=this.player._opt;let r=0;this.player.isControlBarShow()&&(r=s.playType===w?Qt:Yt,i-=r);const o=this.videoInfo,a=o.width/o.height,n=e[0]/e[1];if(this.getType()===H&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===J&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),a>n){const e=n*o.height/o.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${r}px)`,this.$videoElement.style.padding=`0 ${(t-t*e)/2}px`}else{const e=o.width/n/o.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${r}px)`,this.$videoElement.style.padding=(i-i*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}isVideoPlaying(){return this.isPlaying()}getPlaybackQuality(){return null}setStreamFps(e){this.player.debug.log("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempContentList=e}addAiContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempAiContentList=e}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new za(this.player),this.contentWatermark.resize());const e=[];this.tempContentList.forEach((t=>{let i={left:t.x||0,top:t.y||0};"text"===t.type?i.text={content:t.text,fontSize:t.fontSize||"14",color:t.color||"#000"}:"rect"===t.type?i.rect={width:t.width,height:t.height,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill||"",fillOpacity:t.fillOpacity||.2}:"polygon"===t.type?i.polygon={list:t.list,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill,fillOpacity:t.fillOpacity||.2}:"line"===t.type&&(i.line={color:t.color||"green",lineWidth:t.lineWidth||2,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}),e.push(i)})),this.contentWatermark.update(e)}else this.contentWatermark&&this.contentWatermark.remove()}doAddAiContentToWatermark(){if(this.tempAiContentList.length>0){this.aiContentWatermark||(this.aiContentWatermark=new za(this.player),this.aiContentWatermark.resize());const e=this.tempAiContentList.map((e=>{let t={left:e.x,top:e.y};return"text"===e.type?t.text={content:e.text,fontSize:e.fontSize,color:e.color}:"rect"===e.type&&(t.rect={width:e.width,height:e.height,color:e.color,lineWidth:e.lineWidth}),t}));this.aiContentWatermark.update(e)}else this.aiContentWatermark&&this.aiContentWatermark.remove()}_getStyleScale(){let e=this.$videoElement.style.transform.match(/scale\([0-9., ]*\)/g),t="";if(e&&e[0]){t=e[0].replace("scale(","").replace(")","").split(",")}return t}getReadyStateInited(){return!0}screenshotByCurrentWatermark(){}initCanvasViewSize(){}bindMediaStream(){}}var $a="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function Va(e,t,i){var s=new XMLHttpRequest;s.open("GET",e),s.responseType="blob",s.onload=function(){Ka(s.response,t,i)},s.onerror=function(){console.error("could not download file")},s.send()}function Ha(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function Ja(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var qa=$a.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ka="object"!=typeof window||window!==$a?function(){}:"download"in HTMLAnchorElement.prototype&&!qa?function(e,t,i){var s=$a.URL||$a.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Ha(r.href)?Va(e,t,i):Ja(r,r.target="_blank"):Ja(r)):(r.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Ja(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Ha(e))Va(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){Ja(s)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return Va(e,t,i);var r="application/octet-stream"===e.type,o=/constructor/i.test($a.HTMLElement)||$a.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&o||qa)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},n.readAsDataURL(e)}else{var l=$a.URL||$a.webkitURL,d=l.createObjectURL(e);s?s.location=d:location.href=d,s=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};function Ya(e){return new Promise(((t,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((s=>{s?s.requestDevice().then((r=>{if(r){const o=e.getContext("webgpu");if(o){const e=navigator.gpu.getPreferredCanvasFormat();o.configure({device:r,format:e,alphaMode:"opaque"}),t({adapter:s,device:r,context:o,format:e})}else i('WebGPU "context" create fail')}else i('WebGPU "device" request fail')})).catch((e=>{i('WebGPU "adapter.requestDevice()" fail')})):i('WebGPU "adapter" request fail is empty')})).catch((e=>{i('WebGPU "navigator.gpu.requestAdapter()" fail')})):i("WebGPU not support!!")}))}class Qa{constructor(e,t){this.canvas=e,this.gl=t;const i=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(i,"\n attribute vec2 xy;\n varying highp vec2 uv;\n void main(void) {\n gl_Position = vec4(xy, 0.0, 1.0);\n // Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).\n // UV coordinates are Y-flipped relative to vertex coordinates.\n uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);\n }\n "),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))throw t.getShaderInfoLog(i);const s=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(s,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS))throw t.getShaderInfoLog(s);const r=t.createProgram();if(t.attachShader(r,i),t.attachShader(r,s),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))throw t.getProgramInfoLog(r);t.useProgram(r);const o=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const a=t.getAttribLocation(r,"xy");t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(a);const n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.program=r,this.buffer=o,this.vertexShader=i,this.fragmentShader=s,this.texture=n}destroy(){this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.buffer),this.gl.deleteTexture(this.texture),this.gl.deleteShader(this.vertexShader),this.gl.deleteShader(this.fragmentShader),this.program=null,this.buffer=null,this.vertexShader=null,this.fragmentShader=null,this.texture=null}render(e){this.canvas.width=e.displayWidth,this.canvas.height=e.displayHeight;const t=this.gl;t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),t.viewport(0,0,t.drawingBufferWidth,t.drawingBufferHeight),t.clearColor(1,0,0,1),t.clear(t.COLOR_BUFFER_BIT),t.drawArrays(t.TRIANGLE_FAN,0,4)}}class Xa extends Wa{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.webglRender=null,this.webglRectRender=null,this.webGPURender=null,this.isWebglContextLost=!1,this.isWcsWebgl2=!1,this.isWcsWebgpu=!1,this.bitmaprenderer=null,this.renderType=null,this.controlHeight=0,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.webglRender&&(this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.webglRectRender.destroy(),this.webglRectRender=null),this.webGPURender&&(this.webGPURender.destroy(),this.webGPURender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.isWebglContextLost=!1,this.isWcsWebgpu=!1,this.isWcsWebgl2=!1,this.videoInfo={width:"",height:"",encType:""},this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off()}_initContext2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){if(this.player.events,this.contextGl=eo(this.$videoElement),!this.contextGl)throw this.player.debug.error("CommonCanvasLoader","_initContextGl() createContextGL error"),new Error("CommonCanvasLoader and _initContextGl createContextGL error");this._bindContextGlEvents(),this.webglRender=new Ua(this.contextGl,this.player._opt.openWebglAlignment)}_initContextGl2(){if(this.contextGl=to(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new Qa(this.$videoElement,this.contextGl)}catch(e){this.player.debug.error("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debug.error("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debug.error("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debug.log("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=eo(this.$videoElement):2===e&&(this.contextGl=to(this.$videoElement)),this.player.debug.log("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new Ua(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new Qa(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debug.log("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(lt.webglContextLostError))}else this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(lt.webglContextLostError)}),500)})),s=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debug.log("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,s)}_initContextGPU(){Ya(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ga(e),this.player.debug.log("CommonCanvasLoader","webGPURender init success")):(this.player.debug.warn("CommonCanvasLoader","webGPURender init failed because context is null and next use webgl render"),this.renderType=ii,this._initContextGl()))})).catch((e=>{this.player.isDestroyedOrClosed()||(this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=ii,this._initContextGl())}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,s){e=e||so(),s=s||pt.download;let r=.92;!$i[t]&&pt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=$i[t]||$i.png,a=this.$videoElement.toDataURL(o,r);if(s===pt.base64)return a;{const t=io(a);if(s===pt.blob)return t;if(s===pt.download){const i=o.split("/")[1];Ka(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{qo(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||so(),e.format=e.format?$i[e.format]:$i.png,e.quality=Number(e.quality)||.92,e.type=e.type||pt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Uo(s,e).then((i=>{if(e.type===pt.base64)t(s);else{const s=io(i);if(e.type===pt.blob)t(s);else if(e.type===pt.download){t();const i=e.format.split("/")[1];Ka(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(qo(e)){(e=(e={filename:e})||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||so(),e.format=e.format?$i[e.format]:$i.png,e.quality=Number(e.quality)||.92,e.type=e.type||pt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);No(s,e).then((i=>{if(e.type===pt.base64)t(s);else{const s=io(i);if(e.type===pt.blob)t(s);else if(e.type===pt.download){t();const i=e.format.split("/")[1];Ka(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}}))}screenshotByCurrentWatermark(e){}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debug.log("canvasVideo","_resize()");const e=this.player._opt;let t=this.player.width,i=this.player.height;if(this.player.isControlBarShow()){const s=this.controlHeight;uo()&&this.player.fullscreen&&e.useWebFullScreen?t-=s:i-=s}let s=this.$videoElement.width,r=this.$videoElement.height;const o=e.rotate;let a=(t-s)/2,n=(i-r)/2;270!==o&&90!==o||(s=this.$videoElement.height,r=this.$videoElement.width);const l=t/s,d=i/r;let h=l>d?d:l;ya(e.isResize)&&l!==d&&(h=l+","+d),e.isFullResize&&(h=l>d?l:d);let c="scale("+h+")";"none"===e.mirrorRotate&&o&&(c+=" rotate("+o+"deg)"),"level"===e.mirrorRotate?c+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(c+=" rotateX(180deg)"),this.$videoElement.style.height=this.videoInfo.height+"px",this.$videoElement.style.width=this.videoInfo.width+"px",this.$videoElement.style.padding="0",this.$videoElement.style.transform=c,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return H}getCanvasType(){let e=this.renderType===ri?ri:ii;return this.isWcsWebgl2?e=si:this.isWcsWebgpu&&(e=ri),e}}class Za extends Xa{constructor(e){super(e),this.TAG_NAME="CanvasVideo",this.yuvList=[],this.controlHeight=Yt,this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.yuvList=[],this.tempTextCanvas&&(this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvas.width=0,this.tempTextCanvas.height=0,this.tempTextCanvas=null),this.player.debug.log("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=ti,this.player._opt.useWebGPU?Ya(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ga(e),this.isWcsWebgpu=!0,this.player.debug.log(this.TAG_NAME,"webGPURender init success")):(this.player.debug.warn(this.TAG_NAME,"webGPURender init failed because context is null and next use webgl render"),this._initWebglRenderForWCS()))})).catch((()=>{this.player.isDestroyedOrClosed()||(this.player.debug.warn(this.TAG_NAME,`createWebGPUContext error is ${e} and next use webgl render`),this._initWebglRenderForWCS())})):this._initWebglRenderForWCS()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=ai,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=ni,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=li,this._initContext2D()):this._supportOffscreen()?(this.renderType=oi,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=ri,this._initContextGPU()):(this.renderType=ii,this._initContextGl())}_initWebglRenderForWCS(){this.player._opt.wcsUseWebgl2Render&&Sa()?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}render(e){this.yuvList.push(e),this.startRender()}startRender(){for(;!(this.yuvList.length<=0);){const e=this.yuvList.shift();this.doRender(e)}}doRender(e){if(this.renderType!==ai){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case oi:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case ii:case ri:if(this.isWebglContextLost)return void this.player.debug.warn("CanvasVideoLoader","doRender() and webgl context is lost");let t=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=so());const i=so();i-this.prevAiFaceDetectTime>=this.player._opt.aiFaceDetectInterval&&(t=this.player.ai.faceDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=i)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=so());const i=so();i-this.prevAiObjectDetectTime>=this.player._opt.aiObjectDetectInterval&&(t=this.player.ai.objectDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=i)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=so());const t=so();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});this.prevAiOcclusionDetectTime=t,i&&this.player.emit(ot.aiOcclusionDetectResult,{ts:e.ts||0})}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});if(t&&t.data&&(this.player.emit(ot.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===ri)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===ii)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case ti:if(this.webGPURender)this.webGPURender.render(e.videoFrame),ra(e.videoFrame);else if(this.webglRender)this.webglRender.render(e.videoFrame),ra(e.videoFrame);else if(this.context2D)if(Zo(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ra(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),ra(e.videoFrame);else this.player.debug.warn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case ai:case ni:case li:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===ai&&(t=parseInt(1e3*e.$video.currentTime,10)+(this.player.mseDecoder.firstRenderTime||0)),this.player.updateCurrentPts(t),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}clearView(){switch(super.clearView(),this.renderType){case oi:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,s})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case ii:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case ri:this.webGPURender.clear();break;case ti:this.webGPURender?this.webGPURender.clear():this.contextGl?this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT):this.context2D&&this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height);break;case ai:case ni:case li:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}_initTempTextCanvas(){this.tempTextCanvas=document.createElement("canvas"),this.tempTextCanvasCtx=this.tempTextCanvas.getContext("2d"),this.tempTextCanvas.width=600,this.tempTextCanvas.height=20}doAddContentToCanvas(){this.tempContentList.length>0&&this.context2D&&function(e){let{ctx:t,list:i}=e;t.save(),(i||[]).forEach((e=>{"text"===e.type?(t.font=`${e.fontSize||12}px Arial`,t.fillStyle=e.color||"green",t.fillText(e.text,e.x,e.y)):"rect"===e.type&&(t.strokeStyle=e.color||"green",t.lineWidth=e.lineWidth||2,t.strokeRect(e.x,e.y,e.width,e.height))})),t.restore()}({ctx:this.context2D,list:this.tempContentList})}doAddContentToWebGlCanvas(){this.tempContentList.length>0&&this.contextGl&&this.webglRectRender&&this.tempContentList.forEach((e=>{const t=e.x,i=e.y;if("rect"===e.type){const r=e.width,o=e.height,a=(s=e.color||"#008000",[parseInt(s.substring(1,3),16)/255,parseInt(s.substring(3,5),16)/255,parseInt(s.substring(5,7),16)/255,1]),n=e.lineWidth||4;if(!r||!o)return;this.webglRectRender.drawBox({x:t,y:i,width:r,height:o,lineColor:a,lineWidth:n,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const s=e.text||"";if(!s)return;const r=e.fontSize||20,o=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${r}px Arial`,this.tempTextCanvasCtx.fillStyle=o,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(s,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var s}))}}class en extends Wa{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video");t.muted=!0,t.disablePictureInPicture=!0,mo()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=null,this.canvasContext=null,this.mediaStream=null,this.vwriter=null,this.awriter=null,this.trackGenerator=null,this.audioTrackGenerator=null,this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.progressProxyDestroy=null,this.checkVideoCanplayTimeout=null,this.visibilityChangePlayTimeout=null,this.pauseDelayTimeout=null,this.replayTimeout=null,this.detectAndFixStuckPlaybackStartTime=null;const i=Ta();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,r=s(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this.player.isDestroyedOrClosed()||(this.canplayReceived=!0,this._delayPlay?(this.clearCheckVideoCanplayTimeout(),this._play(),Ta()?this.supportVideoFrameCallbackHandle||(this.player.debug.log("Video","support requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debug.warn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats")):this.$videoElement.paused&&(this.player.isMSEPlaybackRateChangePause?(this.player.debug.log("Video",`canplay and video is paused and isMSEPlaybackRateChangePause is ${this.player.isMSEPlaybackRateChangePause} so next try to play`),this.player.isMSEPlaybackRateChangePause=!1,this._play()):this.player.isMSECurrentMoreThanBufferedPause?(this.player.debug.log("Video",`canplay and video is paused and isMSECurrentMoreThanBufferedPause is ${this.player.isMSECurrentMoreThanBufferedPause} so next try to play`),this.player.isMSECurrentMoreThanBufferedPause=!1,this._play()):(this.player.debug.warn("Video","canplay and video is paused and try to play"),this._play())))})),o=s(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),a=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debug.log("Video","loadedmetadata")})),n=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(ya(i)){const t=parseInt(1e3*this.getCurrentTime(),10);(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())&&(this.player.emit(ot.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}))}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),l=s(this.$videoElement,"error",(e=>{if(!this.$videoElement.error)return void this.player.debug.error(this.TAG_NAME,"on error",e);let t={};if(this.player.isUseMSE()&&(t=this.player.getMseMineType()),this.player.debug.error("Video","Error Code "+this.$videoElement.error.code+" "+er[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message+"; Video Info: "+JSON.stringify(this.videoInfo)+"; Mse Mine Type: "+t.video+"; "),this.player.isUseMSE()){this.$videoElement.error.code;const e=this.$videoElement.error.message;-1!==e.indexOf(tr)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),-1!==e.indexOf(ir)&&(this.player.isMSEAudioDecoderError=!0)}this.player.isHlsCanVideoPlay()})),d=s(this.$videoElement,"stalled",(()=>{this._detectAndFixStuckPlayback(!0)}));if(this.progressProxyDestroy=s(this.$videoElement,"progress",(()=>{this._detectAndFixStuckPlayback()})),this.eventListenList.push(r,o,n,l,a,d),this.player.isUseMSE()){const e=s(this.$videoElement,es,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"ratechange and video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));this.eventListenList.push(e),this.player.on(ot.visibilityChange,(e=>{e&&(this.visibilityChangePlayTimeout=setTimeout((()=>{if(this.clearVisibilityChangePlayTimeout(),this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getBufferMaxDelayTime()&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300))}))}this.player.debug.log("Video","init")}async destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this.clearReplayTimeout(),this.clearVisibilityChangePlayTimeout(),this.clearPauseDelayTimeout(),this._cancelVideoFrameCallback(),this._removeProgressProxyDestroy(),this.eventListenList.length&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement&&(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null),this.canvasContext=null,this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}this.player.$container.removeChild(this.$videoElement),this.$videoElement=null}this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.audioTrackGenerator&&(this.audioTrackGenerator.stop(),this.audioTrackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.awriter&&(await this.awriter.close(),this.awriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debug.log("Video","destroy")}_createScreenShotCanvas(){const e=document.createElement("canvas");this.$canvasElement=e,this.canvasContext=e.getContext("2d"),this.canvasContext.imageSmoothingEnabled=!0,this.canvasContext.imageSmoothingEnabled&&(this.canvasContext.imageSmoothingQuality="high")}bindMediaStream(){if(this.player.canVideoTrackWritter()&&Do()&&Lo()&&!this.mediaStream){this.player.debug.log(this.TAG_NAME,"bindMediaStream"),this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.player.useVideoPlayAudio()&&(this.audioTrackGenerator=new MediaStreamTrackGenerator({kind:"audio"}),this.awriter=this.audioTrackGenerator.writable.getWriter());const e=[this.trackGenerator];this.audioTrackGenerator&&e.push(this.audioTrackGenerator),this.mediaStream=new MediaStream(e),this.$videoElement.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()}}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log("Video","videoFrameCallback() and isDestroyedOrClosed and return"));this.player.handleRender();const i=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)||0;if(this.player.isUseHls265UseMse())this.player.updateStats({fps:!0,ts:i});else if(this.player.isMseDecoderUseWorker()){this.player._times.videoStart||(this.player._times.videoStart=so(),this.player.handlePlayToRenderTimes());const e=i+(this.player._mseWorkerData.firstRenderTime||0);if(this.player.updateStats({fps:!0,dfps:!0,ts:e,mseTs:i}),this.player.emit(ot.timeUpdate,e),ya(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.updateVideoInfo(e),this.initCanvasViewSize()}}if(this.player.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc()){if(this.player.emit(ot.timeUpdate,i),ya(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=yt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(ga(this.player._opt.useMSE)&&ya(this.player._opt.mseUseCanvasRender)){if(this.player.mseDecoder){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}fixChromeVideoFlashBug(){if(this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.transform="translateZ(0)"}}fixMobileAutoFullscreen(){const e=Ao(),t=mo();(e||t)&&(this.player.debug.log("Video",`fixMobileAutoFullscreen and isIOS ${e} and isAndroid ${t}`),this.$videoElement.setAttribute("webkit-playsinline","true"),this.$videoElement.setAttribute("playsinline","true"),this.$videoElement.setAttribute("x5-video-player-type","h5-page"))}_detectAndFixStuckPlayback(e){const t=this.$videoElement,i=t.buffered,s=t.readyState;if(this.player.debug.log(this.TAG_NAME,`_detectAndFixStuckPlayback() and isStalled is ${e} ,canplayReceived is ${this.canplayReceived} ,videoReadyState is ${s} and bufferedLength is ${i.length} and startTime is ${i.length>0?i.start(0):"null"} and currentTime is ${t.currentTime}`),e||ya(this.canplayReceived)||s<2){if(i.length>0&&t.currentTime=1e3*this.player._opt.mseWaitVideoCanplayTimeout&&(this.player.debug.warn(this.TAG_NAME,`_detectAndFixStuckPlayback() and video is stuck and currentTime is ${t.currentTime} , diff is ${e} and timeout`),this.player.emit(lt.mseWaitVideoCanplayTimeout,e))}}else this._removeProgressProxyDestroy()}_removeProgressProxyDestroy(){this.progressProxyDestroy&&(this.player.debug.log(this.TAG_NAME,"_removeProgressProxyDestroy()"),this.progressProxyDestroy(),this.progressProxyDestroy=null),this.detectAndFixStuckPlaybackStartTime=null}_isNeedAddBackDropFilter(){const e=yo().type.toLowerCase();return"chrome"===e||"edge"===e}isPaused(){let e=!0;return this.$videoElement&&(e=this.$videoElement.paused),e}isPause(){return this.isPaused()}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.log("Video","readyState is 0 and set _delayPlay to true and listen canplay event to play"),this._delayPlay=!0,void(null===this.checkVideoCanplayTimeout&&(this.checkVideoCanplayTimeout=setTimeout((()=>{if(this.clearCheckVideoCanplayTimeout(),!this.player.isDestroyedOrClosed()&&ya(this.isPlaying())){const e=this._getBufferStore();this.player.debug.warn("Video",`checkVideoCanplayTimeout and video is not playing and buffer store is ${e} and retry play`),this.$videoElement.currentTime=e,this._replay()}}),1e3)));this._play()}}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),this.isPlaying()?(this.player.emit(ot.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.log("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debug.log("Video",`_play error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debug.error("Video","_play error",e),this.isRetryPlaying=!1,this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&ya(this.player.isDestroyedOrClosed())&&ya(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3){let e="";return void(this.player.isWebrtcH264()?(e=`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`,this.player.debug.error("Video",e),this.player.emitError(lt.videoElementPlayingFailedForWebrtc,e)):(e=`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`,this.player.debug.error("Video",e),this.player.emitError(lt.videoElementPlayingFailed,e)))}this.player.debug.warn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debug&&this.player.debug.log("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debug.log(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):this.pauseDelayTimeout=setTimeout((()=>{this.clearPauseDelayTimeout(),this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()}),100))}clearView(){super.clearView(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")))}screenshot(e,t,i,s){if(!this._canScreenshot())return this.player.debug.warn("Video",`screenshot failed, video is not ready and stats is ${this._getVideoReadyState()}`),null;e=e||so(),s=s||pt.download;let r=.92;!$i[t]&&pt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=this.$videoElement;this.$canvasElement||this._createScreenShotCanvas();let a=this.$canvasElement;a.width=o.videoWidth,a.height=o.videoHeight,this.canvasContext.drawImage(o,0,0,a.width,a.height);const n=$i[t]||$i.png,l=a.toDataURL(n,r);if(this.canvasContext.clearRect(0,0,a.width,a.height),a.width=0,a.height=0,s===pt.base64)return l;{const t=io(l);if(s===pt.blob)return t;if(s===pt.download){const i=n.split("/")[1];Ka(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(qo(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||so(),e.format=e.format?$i[e.format]:$i.png,e.quality=Number(e.quality)||.92,e.type=e.type||pt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Uo(o,e).then((i=>{if(e.type===pt.base64)t(o);else{const s=io(i);if(e.type===pt.blob)t(s);else if(e.type===pt.download){t();const i=e.format.split("/")[1];Ka(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(qo(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||so(),e.format=e.format?$i[e.format]:$i.png,e.quality=Number(e.quality)||.92,e.type=e.type||pt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,No(o,e).then((i=>{if(e.type===pt.base64)t(o);else{const s=io(i);if(e.type===pt.blob)t(s);else if(e.type===pt.download){t();const i=e.format.split("/")[1];Ka(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotByCurrentWatermark(e){}initCanvasViewSize(){this.resize()}clear(){const e=this.$videoElement,t=e.buffered,i=t.length?t.end(t.length-1):0;e.currentTime=i}render(e){if(this.vwriter){if(this.$videoElement.srcObject||(this.$videoElement.srcObject=this.mediaStream),this.isPaused()){const e=this._getVideoReadyState();if(this.player.debug.warn("Video","render() error, video is paused and readyState is "+e),4===e&&ya(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3){const t="render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render";return this.player.debug.error("Video",t),void this.player.emitError(lt.videoElementPlayingFailed,t)}this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debug.log("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debug.log("Video",`_play error render() error, video is paused and replay error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debug.error("Video","render() error, video is paused and replay error ",e)}))}}if(this.player.updateStats({fps:!0,ts:e.ts||0}),e.videoFrame)this.vwriter.write(e.videoFrame),ra(e.videoFrame);else if(e.output){let s=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=so());const t=so();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(s=this.player.ai.faceDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=t)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=so());const t=so();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(s=this.player.ai.objectDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=t)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=so());const t=so();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});this.prevAiOcclusionDetectTime=t,i&&(this.player.debug.log("Video","render() and ai occlusion detect result is true"),this.player.emit(ot.aiOcclusionDetectResult,{ts:e.ts||0}))}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});if(t&&t.data&&(this.player.emit(ot.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const r=(t=s,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:e.ts},new VideoFrame(t,i));this.vwriter.write(r),ra(r)}catch(e){this.player.debug.error("Video","render error",e),this.player.emitError(lt.wasmUseVideoRenderError,`code is ${e.code} and message is ${e.message}`)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debug.warn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debug.log("Video","_resize()");let e=this.player.width,t=this.player.height;const i=this.player._opt,s=i.rotate;if(this.player.isControlBarShow()){const s=i.playType===w?Qt:Yt;uo()&&this.player.fullscreen&&i.useWebFullScreen?e-=s:t-=s}this.$videoElement.width=e,this.$videoElement.height=t,this.$videoElement.style.width=e+"px",this.$videoElement.style.height=t+"px",270!==s&&90!==s||(this.$videoElement.width=t,this.$videoElement.height=e,this.$videoElement.style.width=t+"px",this.$videoElement.style.height=e+"px");let r=(e-this.$videoElement.width)/2,o=(t-this.$videoElement.height)/2,a="contain";ya(i.isResize)&&(a="fill"),i.isFullResize&&(a="none");let n="";"none"===i.mirrorRotate&&s&&(n+=" rotate("+s+"deg)"),"level"===i.mirrorRotate?n+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(n+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=a),this.$videoElement.style.transform=n,this.$videoElement.style.padding="0",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=o+"px"}getType(){return J}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&ya(this.$videoElement.paused)&&ya(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isVideoPlaying(){return this.isPlaying()}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=1}getPlaybackQuality(){let e=null;if(this.$videoElement){if(Zo(this.$videoElement.getVideoPlaybackQuality)){const t=this.$videoElement.getVideoPlaybackQuality();e={droppedVideoFrames:t.droppedVideoFrames||t.corruptedVideoFrames,totalVideoFrames:t.totalVideoFrames,creationTime:t.creationTime}}else e={droppedVideoFrames:this.$videoElement.webkitDroppedFrameCount,totalVideoFrames:this.$videoElement.webkitDecodedFrameCount,creationTime:so()};e&&(e.renderedVideoFrames=e.totalVideoFrames-e.droppedVideoFrames)}return e}setRate(e){this.$videoElement&&(this.$videoElement.playbackRate=e)}get rate(){let e=1;return this.$videoElement&&(e=this.$videoElement.playbackRate),e}clearCheckVideoCanplayTimeout(){this.checkVideoCanplayTimeout&&(clearTimeout(this.checkVideoCanplayTimeout),this.checkVideoCanplayTimeout=null)}clearReplayTimeout(){this.replayTimeout&&(clearTimeout(this.replayTimeout),this.replayTimeout=null)}clearVisibilityChangePlayTimeout(){this.visibilityChangePlayTimeout&&(clearTimeout(this.visibilityChangePlayTimeout),this.visibilityChangePlayTimeout=null)}clearPauseDelayTimeout(){this.pauseDelayTimeout&&(clearTimeout(this.pauseDelayTimeout),this.pauseDelayTimeout=null)}_cancelVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}_getBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.start(0)),t}_handleUpdatePlaybackRate(){const e=this.$videoElement,t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(lt.mediaSourceBufferedIsZeroError,"video.buffered is empty");if(s>1){const t=this._getPlaybackRate(i-s);e.playbackRate!==t&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${t} `),e.playbackRate=t)}}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkVideoSourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debug.warn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}getBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}getReadyStateInited(){return this._getVideoReadyState()>=1}}class tn extends Xa{constructor(e){super(e),this.controlHeight=Qt,this.bufferList=[],this.playing=!1,this.playInterval=null,this.fps=1,this.preFps=1,this.streamFps=0,this.playbackRate=1,this._firstTimestamp=null,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,this.player.on(ot.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debug.log("CanvasPlaybackLoader","init")}async destroy(){this._stopSync(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this.bufferList=[],this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debug.log("CanvasPlaybackLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=ti,Sa()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=ri,this._initContextGPU()):(this.renderType=ii,this._initContextGl())}_sync(){this._stopSync(),this._doPlay(),this.playInterval=setInterval((()=>{this._doPlay()}),this.fragDuration)}_doPlay(){if(this.bufferList.length>0&&!this.player.seeking){const e=this.bufferList.shift();e&&e.buffer&&(this._doRender(e.buffer),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:e.tfTs}))}}_stopSync(){this.playInterval&&(clearInterval(this.playInterval),this.playInterval=null)}_doRender(e){if(this.player._opt.useWCS)if(this.webglRender)this.webglRender.render(e),ra(e);else if(Zo(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ra(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),ra(e);else if(this.getCanvasType()===ii)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===ri)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgpu render and error: ${e.toString()}`)}}get rate(){return this.playbackRate}get fragDuration(){return Math.ceil(1e3/(this.fps*this.playbackRate))}get bufferSize(){return this.bufferList.length}getStreamFps(){return this.streamFps}initFps(){this._hasCalcFps?this.player.debug.log("CanvasPlaybackLoader","initFps, has calc fps"):(this.preFps=ro(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debug.warn("CanvasPlaybackLoader","setFps max",e),e<0&&this.player.debug.warn("CanvasPlaybackLoader","setFps min",e),this.fps=ro(e,1,100),this.player.debug.log("CanvasPlaybackLoader",`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debug.log("CanvasPlaybackLoader",`setFps, same fps ${e}`)}setStreamFps(e){this.player.debug.log("CanvasPlaybackLoader","setStreamFps",e),this._hasCalcFps=!0,this.streamFps=e,this.preFps=e,this.setFps(e)}setRate(e){e!==this.playbackRate&&(this.playbackRate=e,this.player.playback.isUseFpsRender&&this._sync())}render$2(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output,this.bufferList.push(t),this.startRender(),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:t.tfTs})}startRender(){for(;!(this.bufferList.length<=0);){const e=this.bufferList.shift();this._doRender(e.buffer)}}pushData(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output;const i=this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender;if(i||this.bufferSize>this.fps*this.playbackRate*2&&(this.player.debug.warn("CanvasPlaybackLoader",`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=la(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debug.log("CanvasPlaybackLoader",`calc fps is ${e} pre fps is ${this.preFps} and updatePreFps`),this.setStreamFps(e))}if(!i){const e=this.bufferList.length,t=e/(this.fps*this.playbackRate);this.player.debug.log("CanvasPlaybackLoader","rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debug.warn("CanvasPlaybackLoader","rate is",t,"fps is",this.fps,"bufferListLength is",e))}}initVideo(){this.player.playback&&this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}initVideoDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initVideo()}),e):this.initVideo()}clearView(){super.clearView(),this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT)}clear(){this.player._opt.useWCS&&this.bufferList.forEach((e=>{e.buffer&&ra(e.buffer)})),this.bufferList=[]}resume(){this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}pause(){this.player.playback.isUseFpsRender&&this._stopSync(),this.playing=!1}}class sn{constructor(e){return new(sn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?e.mseUseCanvasRender?Za:en:e.isHls&&ya(e.supportHls265)||e.isWebrtc&&ya(e.isWebrtcH265)?e.useCanvasRender?Za:en:e.isAliyunRtc?en:e.useWCS?e.playType===w?tn:!e.useOffscreen&&e.wcsUseVideoRender?en:Za:e.playType===w?tn:e.wasmUseVideoRender&&!e.useOffscreen?en:Za}}class rn extends o{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.workletWorkerCloseTimeout=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:Er}),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.gainNode.gain.value=0,this._prevVolume=null,this.playing=!1,this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null}async destroy(){return this.closeAudio(),this.resetInit(),this.clearAudioResumeStateTimeout(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.disconnect(),this.scriptNode.onaudioprocess=Zr,this.scriptNode=null),await this._destroyWorklet(),this.workletProcessorNode&&(this.workletProcessorNode.disconnect(),this.workletProcessorNode.port.onmessage=Zr,this.workletProcessorNode=null),this.audioBufferSourceNode&&(this.audioBufferSourceNode.stop(),this.audioBufferSourceNode=null),this.mediaStreamAudioDestinationNode&&(this.mediaStreamAudioDestinationNode.disconnect(),this.mediaStreamAudioDestinationNode=null),this.hasInitScriptNode=!1,this._prevVolume=null,this.off(),!0}_destroyWorklet(){return new Promise(((e,t)=>{this.workletProcessorNode?(this.workletProcessorNode.port.postMessage({type:"destroy"}),this.workletWorkerCloseTimeout=setTimeout((()=>{this.player.debug.log(this.TAG_NAME,"send close and wait 10ms destroy directly"),this.workletWorkerCloseTimeout&&(clearTimeout(this.workletWorkerCloseTimeout),this.workletWorkerCloseTimeout=null),e()}),10)):e()}))}resetInit(){this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Tt[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),e.depth&&(this.audioInfo.depth=e.depth),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(ot.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}get audioContextState(){let e=null;return this.audioContext&&(e=this.audioContext.state),e}initScriptNode(){}initMobileScriptNode(){}initWorkletScriptNode(){}getEngineType(){return""}mute(e){e?(this.setVolume(0),this.clear()):this.setVolume(this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(this.audioEnabled(!0),e=ro(e,0,1),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(ot.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(ot.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(ot.mute,!0),this.gainNode.gain.value=e,this.player.emit(ot.volumechange,this.player.volume),this.player.emit(ot.volume,this.player.volume),this._prevVolume=e))}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.workletProcessorNode&&this.workletProcessorNode.disconnect(this.gainNode),this.gainNode&&(this.gainNode.disconnect(this.mediaStreamAudioDestinationNode),this.$audio||this.gainNode.disconnect(this.audioContext.destination))),this.clear()}audioEnabled(e){e?this.isStateSuspended()&&(this.audioContext.resume().then((()=>{this.player.emit(ot.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.isStateSuspended()&&this.player.emit(ot.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)):this.isStateRunning()&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContextState}isStateSuspended(){return"suspended"===this.audioContextState}clearAudioResumeStateTimeout(){this.audioResumeStateTimeout&&(clearTimeout(this.audioResumeStateTimeout),this.audioResumeStateTimeout=null)}clear(){this.bufferList=[]}play(e,t){}pause(){this.playing=!1}resume(){this.playing=!0}setRate(e){}getAudioBufferSize(){return 0}}class on{constructor(e,t,i,s){this.player=e,this.audio=t,this.channel=i,this.bufferSize=s}destroy(){this.buffer=null,this.channel=null}extract(e,t){let i=this.provide(t);for(let t=0;t=a){try{for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const s=2*(t=t||0);i>=0||(i=(e.length-s)/2);const r=2*i;this.ensureCapacity(i+this._frameCount);const o=this.endIndex;this.vector.set(e.subarray(s,s+r),o),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t=t||0,i>=0||(i=e.frameCount-t),this.putSamples(e.vector,e.position+t,i)}receive(e){e>=0&&!(e>this._frameCount)||(e=this.frameCount),this._frameCount-=e,this._position+=e}receiveSamples(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,s=this.startIndex;e.set(this._vector.subarray(s,s+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=this.startIndex+2*t,r=2*i;e.set(this._vector.subarray(s,s+r))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class nn{constructor(e){e?(this._inputBuffer=new an,this._outputBuffer=new an):this._inputBuffer=this._outputBuffer=null}destroy(){this.clear(),this._outputBuffer&&(this._outputBuffer.destroy(),this._outputBuffer=null),this._inputBuffer&&(this._inputBuffer.destroy(),this._inputBuffer=null)}get inputBuffer(){return this._inputBuffer}set inputBuffer(e){this._inputBuffer=e}get outputBuffer(){return this._outputBuffer}set outputBuffer(e){this._outputBuffer=e}clear(){this._inputBuffer.clear(),this._outputBuffer.clear()}}class ln extends nn{constructor(e){super(e),this.reset(),this._rate=1}destroy(){super.destroy()}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new ln;return e.rate=this._rate,e}process(){const e=this._inputBuffer.frameCount;this._outputBuffer.ensureAdditionalCapacity(e/this._rate+1);const t=this.transpose(e);this._inputBuffer.receive(),this._outputBuffer.put(t)}transpose(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,s=this._outputBuffer.vector,r=this._outputBuffer.endIndex;let o=0,a=0;for(;this.slopeCount<1;)s[r+2*a]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],s[r+2*a+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],a+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,o+=1,o>=e-1)break e;const n=i+2*o;s[r+2*a]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],s[r+2*a+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],a+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],a}}const dn=function(){};class hn extends class{constructor(e){this._pipe=e}destroy(){}get pipe(){return this._pipe}get inputBuffer(){return this._pipe.inputBuffer}get outputBuffer(){return this._pipe.outputBuffer}fillInputBuffer(){throw new Error("fillInputBuffer() not overridden")}fillOutputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:dn;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}destroy(){this.clear(),this.sourceSound.destroy(),this.sourceSound=null,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._position)throw new RangeError("New position may not be greater than current position");const t=this.outputBufferPosition-(this._position-e);if(t<0)throw new RangeError("New position falls outside of history buffer");this.outputBufferPosition=t,this._position=e}get sourcePosition(){return this._sourcePosition}set sourcePosition(e){this.clear(),this._sourcePosition=e}onEnd(){this.callback()}fillInputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const t=new Float32Array(2*e),i=this.sourceSound.extract(t,e,this._sourcePosition);this._sourcePosition+=i,this.inputBuffer.putSamples(t,0,i)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const s=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,s),this.outputBuffer.receive(Math.max(s-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const cn=[[124,186,248,310,372,434,496,558,620,682,744,806,868,930,992,1054,1116,1178,1240,1302,1364,1426,1488,0],[-100,-75,-50,-25,25,50,75,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-20,-15,-10,-5,5,10,15,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-4,-3,-2,-1,1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],un=-10/1.5;class pn extends nn{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.refMidBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}destroy(){this.clear(),super.destroy()}clear(){super.clear(),this.clearMidBuffer(),this.refMidBuffer=null}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1),this.midBuffer=null}setParameters(e,t,i,s){e>0&&(this.sampleRate=e),s>0&&(this.overlapMs=s),t>0?(this.sequenceMs=t,this.autoSeqSetting=!1):this.autoSeqSetting=!0,i>0?(this.seekWindowMs=i,this.autoSeekSetting=!1):this.autoSeekSetting=!0,this.calculateSequenceParameters(),this.calculateOverlapLength(this.overlapMs),this.tempo=this._tempo}set tempo(e){let t;this._tempo=e,this.calculateSequenceParameters(),this.nominalSkip=this._tempo*(this.seekWindowLength-this.overlapLength),this.skipFract=0,t=Math.floor(this.nominalSkip+.5),this.sampleReq=Math.max(t+this.overlapLength,this.seekWindowLength)+this.seekLength}get tempo(){return this._tempo}get inputChunkSize(){return this.sampleReq}get outputChunkSize(){return this.overlapLength+Math.max(0,this.seekWindowLength-2*this.overlapLength)}calculateOverlapLength(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,this.refMidBuffer=new Float32Array(2*this.overlapLength),this.midBuffer=new Float32Array(2*this.overlapLength)}checkLimits(e,t,i){return ei?i:e}calculateSequenceParameters(){let e,t;this.autoSeqSetting&&(e=150+-50*this._tempo,e=this.checkLimits(e,50,125),this.sequenceMs=Math.floor(e+.5)),this.autoSeekSetting&&(t=28.333333333333332+un*this._tempo,t=this.checkLimits(t,15,25),this.seekWindowMs=Math.floor(t+.5)),this.seekWindowLength=Math.floor(this.sampleRate*this.sequenceMs/1e3),this.seekLength=Math.floor(this.sampleRate*this.seekWindowMs/1e3)}set quickSeek(e){this._quickSeek=e}clone(){const e=new pn;return e.tempo=this._tempo,e.setParameters(this.sampleRate,this.sequenceMs,this.seekWindowMs,this.overlapMs),e}seekBestOverlapPosition(){return this._quickSeek?this.seekBestOverlapPositionStereoQuick():this.seekBestOverlapPositionStereo()}seekBestOverlapPositionStereo(){let e,t,i,s=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;st&&(t=i,e=s);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,s,r,o=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,s=0,r=0;o<4;o+=1){let a=0;for(;cn[o][a]&&(r=s+cn[o][a],!(r>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer),i>t&&(t=i,e=r),a+=1;s=e}return e}preCalculateCorrelationReferenceStereo(){let e,t,i=0;for(;i=this.sampleReq;){e=this.seekBestOverlapPosition(),this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),this.overlap(Math.floor(e)),this._outputBuffer.put(this.overlapLength),t=this.seekWindowLength-2*this.overlapLength,t>0&&this._outputBuffer.putBuffer(this._inputBuffer,e+this.overlapLength,t);const s=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(s,s+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const fn=function(e,t){return(e>t?e-t:t-e)>1e-10};class mn{constructor(){this.transposer=new ln(!1),this.stretch=new pn(!1),this._inputBuffer=new an,this._intermediateBuffer=new an,this._outputBuffer=new an,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}destroy(){this.clear(),this._inputBuffer.destroy(),this._intermediateBuffer.destroy(),this._outputBuffer.destroy(),this._inputBuffer=null,this._intermediateBuffer=null,this._outputBuffer=null}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new mn;return e.rate=this.rate,e.tempo=this.tempo,e}get rate(){return this._rate}set rate(e){this.virtualRate=e,this.calculateEffectiveRateAndTempo()}set rateChange(e){this._rate=1+.01*e}get tempo(){return this._tempo}set tempo(e){this.virtualTempo=e,this.calculateEffectiveRateAndTempo()}set tempoChange(e){this.tempo=1+.01*e}set pitch(e){this.virtualPitch=e,this.calculateEffectiveRateAndTempo()}set pitchOctaves(e){this.pitch=Math.exp(.69314718056*e),this.calculateEffectiveRateAndTempo()}set pitchSemitones(e){this.pitchOctaves=e/12}get inputBuffer(){return this._inputBuffer}get outputBuffer(){return this._outputBuffer}calculateEffectiveRateAndTempo(){const e=this._tempo,t=this._rate;this._tempo=this.virtualTempo/this.virtualPitch,this._rate=this.virtualRate*this.virtualPitch,fn(this._tempo,e)&&(this.stretch.tempo=this._tempo),fn(this._rate,t)&&(this.transposer.rate=this._rate),this._rate>1?this._outputBuffer!=this.transposer.outputBuffer&&(this.stretch.inputBuffer=this._inputBuffer,this.stretch.outputBuffer=this._intermediateBuffer,this.transposer.inputBuffer=this._intermediateBuffer,this.transposer.outputBuffer=this._outputBuffer):this._outputBuffer!=this.stretch.outputBuffer&&(this.transposer.inputBuffer=this._inputBuffer,this.transposer.outputBuffer=this._intermediateBuffer,this.stretch.inputBuffer=this._intermediateBuffer,this.stretch.outputBuffer=this._outputBuffer)}process(){this._rate>1?(this.stretch.process(),this.transposer.process()):(this.transposer.process(),this.stretch.process())}}class gn{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new mn,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new hn(i,this.soundTouch)}destroy(){this.filter&&(this.filter.destroy(),this.filter=null),this.soundTouch&&(this.soundTouch.destroy(),this.soundTouch=null)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),s=new Float32Array(i),r=new Float32Array(i);for(let e=0;e{e()})),this.eventListenList=[]),this.$audio&&(this.$audio.pause(),this.$audio.srcObject=null,this.$audio.parentNode&&this.$audio.parentNode.removeChild(this.$audio),this.$audio=null),this.processor&&(this.processor.destroy(),this.processor=null),this.rateProcessor&&(this.rateProcessor.destroy(),this.rateProcessor=null),this.scriptNodeInterval&&(clearInterval(this.scriptNodeInterval),this.scriptNodeInterval=null),this.defaultPlaybackRate=1,this.playbackRate=1,this.scriptStartTime=0,this.audioBufferSize=0,this.engineType=vs,this.player.debug.log("AudioContext","destroy"),!0}isAudioPlaying(){return this.$audio&&ya(this.$audio.paused)&&ya(this.$audio.ended)&&0!==this.$audio.playbackRate&&0!==this.$audio.readyState}_bindAudioProxy(){const{proxy:e}=this.player.events,t=e(this.$audio,"canplay",(()=>{this.player.debug.log("AudioContext","canplay"),this._delayPlay&&this._audioElementPlay()}));this.eventListenList.push(t)}_getAudioElementReadyState(){let e=0;return this.$audio&&(e=this.$audio.readyState),e}audioElementPlay(){if(this.$audio){const e=this._getAudioElementReadyState();if(this.player.debug.log("AudioContext",`play and readyState: ${e}`),!(0!==e||Ko()&&Ao()))return this.player.debug.warn("AudioContext","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._audioElementPlay()}}_audioElementPlay(){this.$audio&&this.$audio.play().then((()=>{this._delayPlay=!1,this.player.debug.log("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debug.warn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debug.log("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debug.error("AudioContext","_audioElementPlay error",e),document.addEventListener("click",this._audioElementPlay.bind(this))}))}getAudioBufferSize(){return this.audioBufferSize}get oneBufferDuration(){return this.audioBufferSize/this.audioContext.sampleRate*1e3}get isActiveEngineType(){return this.engineType===_s}getBufferListDuration(){return this.bufferList.length*this.oneBufferDuration}isMoreThanMinBufferDuration(){return this.getBufferListDuration()>=100*this.playbackRate}initProcessor(){this.processor=new on(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new gn(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||vs;const t=()=>{e=Ko()&&mo()?_s:(Ao()&&this.player._opt.supportLockScreenPlayAudio||aa()&&this.supportAudioWorklet(),vs)};return this.player._opt.audioEngine?this.player._opt.audioEngine===bs&&aa()&&this.supportAudioWorklet()?e=vs:this.player._opt.audioEngine===_s?e=_s:this.player._opt.audioEngine===vs?e=vs:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===bs?1024:e===_s?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet&&"function"==typeof this.audioContext.audioWorklet.addModule}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===bs?this.initWorkletScriptNode():this.engineType===_s?this.initIntervalScriptNode():this.engineType===vs&&this.initProcessScriptNode(),this.audioElementPlay())}getEngineType(){return this.engineType}isPlaybackRateSpeed(){return this.playbackRate>this.defaultPlaybackRate}initProcessScriptNode(){const e=this.audioContext.createScriptProcessor(this.audioBufferSize,0,this.audioInfo.channels);e.onaudioprocess=e=>{const t=e.outputBuffer;this.handleScriptNodeCallback(t)},e.connect(this.gainNode),this.scriptNode=e,this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0}initIntervalScriptNode(){this.scriptStartTime=0;const e=1e3*this.audioBufferSize/this.audioContext.sampleRate;this.scriptNodeInterval=setInterval((()=>{if(0===this.bufferList.length||ya(this.playing)||this.isMute)return void(this.playing&&ya(this.isMute)&&this.player.debug.log("AudioContext",`interval script node and bufferList is ${this.bufferList.length} or playing is ${this.playing}`));const e=this.audioContext.createBufferSource(),t=this.audioContext.createBuffer(this.audioInfo.channels,this.audioBufferSize,this.audioContext.sampleRate);this.handleScriptNodeCallback(t,(()=>{this.scriptStartTime{"init"===e.data.message?(this.audioBufferSize=e.data.audioBufferSize,this.start=e.data.start,this.channels=e.data.channels,this.state=0,this.offset=0,this.samplesArray=[]):"stop"===e.data.message?(this.state=0,this.start=!1,this.offset=0,this.samplesArray=[]):"data"===e.data.message?this.samplesArray.push(e.data.buffer):"zero"===e.data.message&&this.samplesArray.push({left:new Float32Array(this.audioBufferSize).fill(0),right:new Float32Array(this.audioBufferSize).fill(0)})}}process(e,t,i){const s=t[0][0],r=t[0][1];if(0===this.offset&&this.port.postMessage({message:"beep"}),0===this.state)this.state=1;else if(1===this.state&&this.samplesArray.length>=4)this.state=2;else if(2===this.state){const e=this.samplesArray[0];for(let t=0;t{if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log("AudioContext","initWorkletScriptNode() player is destroyed"));if(!this.audioContext)return void this.player.debug.warn("AudioContext","initWorkletScriptNode audioContext is null");let e=[1];2===this.audioInfo.channels&&(e=[1,1]);try{this.workletProcessorNode=new AudioWorkletNode(this.audioContext,"worklet-processor",{numberOfOutputs:this.audioInfo.channels,outputChannelCount:e})}catch(e){this.player.debug.error("AudioContext","initWorkletScriptNode error",e),this.workletProcessorNode=null,this.tierDownToProcessScript()}this.workletProcessorNode&&(this.workletProcessorNode.connect(this.gainNode),this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0,this.workletProcessorNode.port.postMessage({message:"init",audioBufferSize:this.audioBufferSize,start:!0,channels:this.audioInfo.channels}),this.workletProcessorNode.port.onmessage=e=>{this.workletProcessorNode?this.audioContext?this.handleScriptNodeCallback(this.workletProcessorNode,null,!0):this.workletProcessorNode.port.postMessage({message:"zero"}):this.player.debug.error("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),ie)}tierDownToProcessScript(){this.player.debug.log("AudioContext","tierDownToProcessScript"),this.engineType=vs,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t||Zr;let r=e.length;s&&(i=e,r=this.audioBufferSize);const o=this.audioInfo.channels;if(this.playing&&this.isMoreThanMinBufferDuration()){if(this.player._opt,this.player.openSyncAudioAndVideo()&&ga(this.player.visibility)){this.calcPlaybackRateBySync();const r=this.player.getAudioSyncVideoDiff();if(r>this.player._opt.syncAudioAndVideoDiff){const a=this.player.getCurrentVideoAndAudio();return this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${r},\n and video is ${a.video} ,\n and audio is ${a.audio} , waiting and bufferList is ${this.bufferList.length}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t()}}let a=this._provide(r);if(0===a.size)return ya(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debug.warn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${r},and bufferItem.size is 0, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t();a&&a.ts&&(this.player.audioTimestamp=a.ts),s?i.port.postMessage({message:"data",buffer:a}):this.fillScriptNodeOutputBuffer(e,o,a),t()}else 0===this.bufferList.length&&this.playing&&ya(this.isMute)&&ya(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debug.warn("AudioContext",`bufferList size is 0 and outputBufferLength is ${r}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),t()}fillScriptNodeOutputBuffer(e,t,i){if(1===t){const t=e.getChannelData(0);i?0===i.size?t.fill(0):t.set(i.left):t.fill(0)}else if(2===t){const t=e.getChannelData(0),s=e.getChannelData(1);i?0===i.size?(t.fill(0),s.fill(0)):(t.set(i.left),s.set(i.right)):(t.fill(0),s.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),ya(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debug.warn("AudioContext","play has not init script node"))}calcPlaybackRateBySync(){if(this.isMute)return;if(!this.playing)return;const e=Math.floor(2e3/this.oneBufferDuration);if(this.bufferList.length>e)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===_s){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debug.warn("AudioContext",`engine active , audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n and bufferlist is ${this.bufferList.length}`);const e=this.player.getRenderCurrentPts();for(;this.bufferList.length>0;){const t=this.bufferList[0],i=t.ts-e;if(i>-this.player._opt.syncAudioAndVideoDiff/2){this.player.audioTimestamp=t.ts,this.player.debug.log("AudioContext",`engine active , audioSyncVideoOption\n item.ts is ${t.ts} and currentVideoTimestamp is ${e}, diff is ${i} > -${this.player._opt.syncAudioAndVideoDiff/2} and end`);break}this.bufferList.shift(),this.player.audioTimestamp=t.ts}}}else{let e=this.playbackRate;t<-this.player._opt.syncAudioAndVideoDiff?e===this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n speed up, playbackRate is ${e},\n and bufferList is ${this.bufferList.length}`),e=this.defaultPlaybackRate+.2):t>-this.player._opt.syncAudioAndVideoDiff/2&&e!==this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`diff is ${t} > -${this.player._opt.syncAudioAndVideoDiff/2} and speed to 1`),e=this.defaultPlaybackRate),this.updatePlaybackRate(e)}}calcPlaybackRateByBuffer(){if(this.isMute)return;if(!this.playing)return;let e=this.playbackRate,t=1e3,i=5e3;this.isAudioPlayer&&(t=this.player._opt.videoBufferDelay,i=this.player._opt.videoBufferMax);const s=Math.floor(t/this.oneBufferDuration),r=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>r)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, and drop`),void this.clear();this.getEngineType()!==_s&&(this.bufferList.length>s?(e=this.defaultPlaybackRate+.2,this.player.debug.log("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, speed up, playbackRate is ${e}`)):this.bufferList.length0?this.player.emit(ot.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(ot.mute,!0),this.$video.volume=e,this.player.emit(ot.volumechange,this.player.volume),this.player.emit(ot.volume,this.player.volume),this._prevVolume=e))}clear(){}play(e,t){const i=this.player.video.awriter;if(i)if(e.close)try{i.write(e),oa(e)}catch(e){this.player.debug.error("Video","play audio error",e)}else try{const s=function(e,t){const i={...t,format:"f32-planar",data:new Float32Array(0)};if(i.numberOfFrames=e[0].length,1===e.length)i.data=e[0];else if(2===e.length){const t=new Float32Array(e[0].length+e[1].length);for(let i=0;i{this.listenPlaybackPause(e)})),this.player.debug.log("AudioPlaybackContext","init")}async destroy(){return this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),await super.destroy(),this.player.debug.log("AudioPlaybackLoader","destroy"),!0}listenPlaybackPause(e){e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()}initScriptNodeDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initScriptNode()}),e):this.initScriptNode()}setRate(e){e!==this.defaultPlaybackRate&&this.rateProcessor&&(this.player.debug.log("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class vn extends yn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debug.log(this.TAG_NAME,"init")}async destroy(){return await super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy"),!0}play(e,t){ya(this.playing)||super.play(e,t)}pause(){this.player.debug.log(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debug.log(this.TAG_NAME,"resume"),this.playing=!0}}class _n extends o{constructor(e){super(),this.TAG_NAME="AudioWebrtcPlayerLoader",this.$video=new Audio,this.player=e,this.init=!1,this._prevVolume=null,this.eventsDestroy=[],this._handleDocumentClickPlay=this._handleClickPlay.bind(this),this._initAudioEvents(),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){return this.resetInit(),this.off(),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this._prevVolume=null,this.$video&&(this.$video.pause(),this.$video.srcObject=null,this.$video=null),this.player.debug.log(this.TAG_NAME,"destroy"),!0}_initAudioEvents(){const{proxy:e}=this.player.events,t=e(this.$video,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t})}));this.eventsDestroy.push(t)}resetInit(){this.init=!1}_handleClickPlay(){this.$video&&(this.$video.play(),document.removeEventListener("click",this._handleDocumentClickPlay))}bindStream(e){this.$video.srcObject=e,this.$video.volume=1,this.$video.play().catch((e=>{this.player.debug.warn(this.TAG_NAME,"audio play error",e),document.addEventListener("click",this._handleDocumentClickPlay)}))}getEngineType(){return"audio"}get isPlaying(){return!0}get volume(){return ga(this.$video.muted)?0:this.$video.volume}get isMute(){return 0===this.$video.volume||ga(this.$video.muted)}mute(e){this.setVolume(e?0:this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e),isNaN(e)||null===this.$video||(this.$video.muted&&(this.$video.muted=!1),e=ro(e,0,1),Ao()&&(this.$video.muted=0===e),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(ot.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(ot.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(ot.mute,!0),this.$video.volume=e,this.player.emit(ot.volumechange,this.player.volume),this.player.emit(ot.volume,this.player.volume),this._prevVolume=e))}pause(){}resume(){}audioEnabled(){this.mute(!1)}}class wn{constructor(e){return new(wn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===w?e.useMSE&&e.mseDecodeAudio?An:bn:e.playType===_?e.isWebrtc?_n:vn:e.isHls&&ya(e.supportHls265)||e.isWebrtc&&ya(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc||e.useWCS&&e.wcsDecodeAudio||e.useWasm&&e.wasmPlayAudioUseVideoRender?An:yn}}class Sn extends o{constructor(e){super(),this.player=e,this.playing=!1,this._requestAbort=!1,this._status=Qs,this.writableStream=null,this.abortController=new AbortController,this.streamRate=lo((t=>{e.emit(ot.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("FetchStream","init")}async destroy(){return this.abort(),this.writableStream&&ya(this.writableStream.locked)&&this.writableStream.close().catch((e=>{this.player.debug.log("FetchStream","destroy and writableStream.close()",e)})),this.writableStream=null,this.off(),this._status=Qs,this.streamRate=null,this.stopStreamRateInterval(),this.player.debug.log("FetchStream","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=so();const s=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,s).then((e=>{if(this._requestAbort)return this._status=Qs,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return this.player.debug.error("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(lt.fetchError,`fetch response status is ${e.status} and ok is ${e.ok}`);if(this.emit(ot.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)this.player.debug.log("FetchStream","use WritableStream() to read stream"),this.writableStream=new WritableStream({write:e=>this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debug.log("FetchStream","writableStream.write() and this.abortController.signal.aborted so return"),void(this._status=Zs)):ga(this._requestAbort)?(this.player.debug&&this.player.debug.log("FetchStream","writableStream.write() and this._requestAbort is true so return"),void(this._status=Zs)):"string"!=typeof e?(this._status=Xs,this.streamRate&&this.streamRate(e.byteLength),i.dispatch(e)):void this.player.debug.warn("FetchStream",`writableStream.write() and value is "${e}" string so return`),close:()=>{this._status=Zs,i.close(),this.emit(ot.streamEnd,"fetch done")},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debug.log("FetchStream","writableStream.abort() and this.abortController.signal.aborted so return"),void(this._status=Zs);i.close();const t=e.toString();-1===t.indexOf(hs)&&-1===t.indexOf(cs)&&e.name!==us&&(this.abort(),this.emit(lt.fetchError,e))}}),e.body.pipeTo(this.writableStream);else{this.player.debug.log("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),s=()=>{t.read().then((e=>{let{done:t,value:r}=e;return t?(this._status=Zs,i.close(),void this.emit(ot.streamEnd,"fetch done")):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debug.log("FetchStream","reader.read() and this.abortController.signal.aborted so return"),void(this._status=Zs)):ga(this._requestAbort)?(this.player.debug.log("FetchStream","reader.read() and this._requestAbort is true so return"),void(this._status=Zs)):void("string"!=typeof r?(this._status=Xs,this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),s()):this.player.debug.warn("FetchStream",`reader.read() and value is "${r}" string so return`))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debug.log("FetchStream","reader.read().catch() and this.abortController.signal.aborted so return"),void(this._status=Zs);i.close();const t=e.toString();-1===t.indexOf(hs)&&-1===t.indexOf(cs)&&e.name!==us&&(this.abort(),this.emit(lt.fetchError,e))}))};s()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(lt.fetchError,e))}))}abort(){this._requestAbort=!0;const e=Yo();if(this._status!==Xs||ya(e)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null,this.player.debug.log("FetchStream",`abort() and not abortController.abort() _status is ${this._status} and _isChrome is ${e}`)}getStreamType(){return p}}class En extends o{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.abortController=new AbortController,this.streamRate=lo((t=>{e.emit(ot.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.fetchWorker?(this.player.debug.log(this.TAG_NAME,"send destroy"),this.fetchWorker.postMessage({cmd:Ze}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug.warn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.off(),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this._stopStreamRateInterval(),this.streamRate=null,this.fetchWorker&&(this.fetchWorker.terminate(),this.fetchWorker.onmessage=null,this.fetchWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.player.debug.log(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=Ea(function(){function e(e){return!0===e||"true"===e}function t(e){return!1===e||"false"===e}const i="The user aborted a request",s="AbortError",r="AbortError",o="fetch",a="destroy",n="destroyEnd",l="buffer",d="fetchError",h="fetchClose",c="fetchSuccess",u="idle",p="buffering",f="complete";let m=new class{constructor(){this._requestAbort=!1,this._status=u,this.writableStream=null,this.isChrome=!1,this.abortController=new AbortController}destroy(){this.abort(),this.writableStream&&t(this.writableStream.locked)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=u}fetchStream(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=Object.assign({signal:this.abortController.signal},{headers:o.headers||{}});fetch(t,a).then((t=>{if(this._requestAbort)return this._status=u,void t.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(t))return this.abort(),void postMessage({cmd:d,message:`fetch response status is ${t.status} and ok is ${t.ok}`});if(postMessage({cmd:c}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=f:"string"!=typeof t&&(this._status=p,postMessage({cmd:l,buffer:t},[t.buffer]))},close:()=>{this._status=f,postMessage({cmd:h})},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=f);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(s)&&e.name!==r&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}}),t.body.pipeTo(this.writableStream);else{const o=t.body.getReader(),a=()=>{o.read().then((t=>{let{done:i,value:s}=t;if(i)return this._status=f,void postMessage({cmd:h});this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=f:"string"!=typeof s&&(this._status=p,postMessage({cmd:l,buffer:s},[s.buffer]),a())})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=f);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(s)&&e.name!==r&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}))};a()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}))}abort(){if(this._requestAbort=!0,this._status!==p||t(m.isChrome)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case o:m.isChrome=e(i.isChrome),m.fetchStream(i.url,JSON.parse(i.options));break;case a:m.destroy(),m=null,postMessage({cmd:n})}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case tt:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case rt:this.emit(ot.streamSuccess),this._startStreamRateInterval();break;case st:t.close(),this.emit(ot.streamEnd,"fetch done");break;case it:t.close(),this.emit(lt.fetchError,i.message);break;case et:this._destroy()}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player._times.streamStart=so(),this.fetchWorker.postMessage({cmd:Xe,url:e,isChrome:Yo(),options:JSON.stringify(t)})}getStreamType(){return p}}class Tn extends o{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=dt,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=lo((t=>{e.emit(ot.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebsocketStream","init")}async destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debug.log("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:s}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer";const r=i(this.socket,"open",(()=>{t.log("WebsocketStream","socket open"),this.socketStatus=ht,this.emit(ot.streamSuccess),this.player.emit(ot.websocketOpen),this.startStreamRateInterval()})),o=i(this.socket,"message",(e=>{"string"!=typeof e.data?(this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)):this.player.debug.warn("WebsocketStream",`websocket handle message message is "${e.data}" string so return`)})),a=i(this.socket,"close",(e=>{if(!this.player.isDestroyedOrClosed())if(this.socketStatus!==ut){if(t.log("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&t.error("WebsocketStream",`socket close abnormally and code is ${e.code}`),ga(this.requestAbort))return this.requestAbort=!1,void t.log("WebsocketStream","socket close and requestAbort is true");s.close(),this.socketStatus=ct,this.player.emit(ot.websocketClose,e.code),this.emit(ot.streamEnd,e.code)}else t.log("WebsocketStream","socket close and status is error, so return")})),n=i(this.socket,"error",(e=>{this.player.isDestroyedOrClosed()||(t.error("WebsocketStream","socket error",e),this.socketStatus=ut,this.emit(lt.websocketError,e),s.close(),t.log("WebsocketStream","socket error:",e.isTrusted?"websocket user aborted":"websocket error"))}));this.socketDestroyFnList.push(r,o,a,n)}_closeWebSocket(){this.socketDestroyFnList.forEach((e=>e())),!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debug.log("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket=null,this.socketStatus=dt,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("WebsocketStream","websocket handle message demux is null so return")}fetchStream(e,t){this.player._times.streamStart=so(),this.wsUrl=e,this._createWebSocket()}sendMessage(e){this.socket?this.socketStatus===ht?this.socket.send(e):this.player.debug.error("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debug.error("WebsocketStream","websocket send message socket is null")}resetFetchStream(){this._closeWebSocket(),this._createWebSocket()}getStreamType(){return m}}class kn extends o{constructor(e){super(),this.player=e,e.debug.log("HlsStream","init")}async destroy(){return this.off(),this.player.debug.log("HlsStream","destroy"),!0}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=so(),t.loadSource(e).then((()=>{this.player.debug.log("HlsStream","loadSource success"),this.emit(ot.streamSuccess)})).catch((e=>{this.emit(lt.hlsError,e)}))}getStreamType(){return f}}class Cn extends o{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debug.log("WebrtcStream","init")}async destroy(){return this.webrctUrl=null,this.off(),this.player.debug.log("WebrtcStream","destroy"),!0}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{webrtc:i,debug:s}=this.player;if(this.player._times.streamStart=so(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),this.player.isWebrtcForM7S()&&-1===this.webrctUrl.indexOf("/webrtc/play")){const t=new URL(this.webrctUrl),i="/webrtc/play"+t.pathname;this.webrctUrl=t.origin+i+t.search,this.player.debug.log("WebrtcStream",`original url is ${e}, and new url is: ${this.webrctUrl}`)}i.loadSource(this.webrctUrl,t).then((()=>{this.player.debug.log("WebrtcStream","loadSource success"),this.emit(ot.streamSuccess)})).catch((e=>{this.player.debug.error("WebrtcStream","loadSource error",e),this.emit(lt.webrtcError,e)}))}getStreamType(){return g}}class xn extends o{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=lo((t=>{e.emit(ot.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebTransportLoader","init")}async destroy(){return this.abort(),this.off(),this.player.debug.log("WebTransportLoader","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebTransport(){const e=this.player,{debug:t,events:{proxy:i},demux:s}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(ot.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(s.input))}))})).catch((e=>{this.player.debug.warn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debug.warn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=so(),this.wtUrl=e.replace(/^wt:/,"https:"),this._createWebTransport()}abort(){if(this.transport)try{this.transport.close(),this.transport=null}catch(e){this.transport=null}}getStreamType(){return y}}class Dn extends o{constructor(e){super(),this.player=e,this.workUrl=null,e.debug.log("WorkerStream","init")}async destroy(){return this.workUrl=null,this.off(),this.player.debug.log("WorkerStream","destroy"),!0}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.workUrl=e,this.player._times.streamStart=so(),this.player.decoderWorker.workerFetchStream(e,t)}getStreamType(){const e=this.player._opt.protocol;return A+" "+(e===n?p:m)}}class Ln extends o{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debug.log(this.TAG_NAME,"init")}async destroy(){return this.off(),this.player.debug.log(this.TAG_NAME,"destroy"),!0}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=so(),t.loadSource(e).then((()=>{this.player.debug.log(this.TAG_NAME,"loadSource success"),this.emit(ot.streamSuccess)})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource error",e),this.emit(lt.aliyunRtcError,e)}))}getStreamType(){return b}}class Rn{constructor(e){return new(Rn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:i,playType:s,useWCS:r,useMSE:o,demuxUseWorker:u,mainThreadFetchUseWorker:p}=e;return t===n?s===_?Dn:s===v?i&&!ia(e)||u?Dn:p?En:Sn:r||o?u?Dn:p?En:Sn:Dn:t===a?s===_?Dn:s===v?i&&!ia(e)||u?Dn:Tn:r||o?u?Dn:Tn:Dn:t===l?kn:t===d?Cn:t===h?xn:t===c?Ln:void 0}}var In=Lr((function(e){function t(e,r){if(!e)throw"First parameter is required.";r=new i(e,r=r||{type:"video"});var o=this;function a(t){t&&(r.initCallback=function(){t(),t=r.initCallback=null});var i=new s(e,r);(p=new i(e,r)).record(),u("recording"),r.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",r.type)}function n(e){if(e=e||function(){},p){if("paused"===o.state)return o.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===o.state||r.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',o.state),r.disableLogs||console.log("Stopped recording "+r.type+" stream."),"gif"!==r.type?p.stop(t):(p.stop(),t()),u("stopped")}else m();function t(t){if(p){Object.keys(p).forEach((function(e){"function"!=typeof p[e]&&(o[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!r.disableLogs&&console.log(i.type,"->",y(i.size)),e){var s;try{s=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(o,s):e(s)}r.autoWriteToDisk&&d((function(e){var t={};t[r.type+"Blob"]=e,D.Store(t)}))}else"function"==typeof e.call?e.call(o,""):e("")}}function l(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(p||{}).blob;if(!i)return r.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var s=new FileReader;s.readAsDataURL(i),s.onload=function(t){e(t.target.result)}}else{var o=function(e){try{var t=h.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return h.revokeObjectURL(t),i}catch(e){}}(l);o.onmessage=function(t){e(t.data)},o.postMessage(i)}}function c(e){e=e||0,"paused"!==o.state?"stopped"!==o.state&&(e>=o.recordingDuration?n(o.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){o&&(o.state=e,"function"==typeof o.onStateChanged.call?o.onStateChanged.call(o,e):o.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+r.type+" recorder.";function m(){!0!==r.disableLogs&&console.warn(f)}var g={startRecording:function(t){return r.disableLogs||console.log("RecordRTC version: ",o.version),t&&(r=new i(e,t)),r.disableLogs||console.log("started recording "+r.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),o.recordingDuration&&c(),o):(a((function(){o.recordingDuration&&c()})),o)},stopRecording:n,pauseRecording:function(){p?"recording"===o.state?(u("paused"),p.pause(),r.disableLogs||console.log("Paused recording.")):r.disableLogs||console.warn("Unable to pause the recording. Recording state: ",o.state):m()},resumeRecording:function(){p?"paused"===o.state?(u("recording"),p.resume(),r.disableLogs||console.log("Resumed recording.")):r.disableLogs||console.warn("Unable to resume the recording. Recording state: ",o.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return o.recordingDuration=e,o.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){o.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),r.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(p)return p.blob;m()},getDataURL:d,toURL:function(){if(p)return h.createObjectURL(p.blob);m()},getInternalRecorder:function(){return p},save:function(e){p?A(p.blob,e):m()},getFromDisk:function(e){p?t.getFromDisk(r.type,e):m()},setAdvertisementArray:function(e){r.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||b()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),m=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);m&&!f&&-1!==navigator.userAgent.indexOf("CriOS")&&(m=!1,f=!0);var g=window.MediaStream;function y(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function A(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var s=t.split(".");t=s[0],i=s[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var o=document.createElement("a");o.href=h.createObjectURL(e),o.download=r,o.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(o),"function"==typeof o.click?o.click():(o.target="_blank",o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(o.href)}function b(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function v(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function _(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=A,t.getTracks=v,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,s=new EBML.Decoder,r=EBML.tools,o=new FileReader;o.onload=function(e){s.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var o=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([o,a],{type:"video/webm"});t(n)},o.readAsArrayBuffer(e)},t.bytesToSize=y,t.isElectron=b;var w={};function S(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),s=i.substring(e+7)),-1!==(t=s.indexOf(";"))&&(s=s.substring(0,t)),-1!==(t=s.indexOf(" "))&&(s=s.substring(0,t)),r=parseInt(""+s,10),isNaN(r)&&(s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function E(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var s;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(s=new g).addTrack(v(e,"audio")[0]):s=new g(v(e,"audio")),e=s;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=f?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var r,o=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function l(){o=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return o},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],o=[];var s=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",s),r&&(r=null),f&&!S()&&(s="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&s.mimeType&&(MediaRecorder.isTypeSupported(s.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType),s.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,s),t.mimeType=s.mimeType}catch(t){r=new MediaRecorder(e)}s.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(s.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+y(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(s)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(o.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",s.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(o,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(l),l()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function s(){if(r&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(s,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var s,r=this,o=[],a=[],n=!1,l=0,d=2,c=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function p(e,t){function i(e,t){var i,s=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),o=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var s=Math.round(e.length*(t/i)),r=[],o=Number((e.length-1)/(s-1));r[0]=e[0];for(var a=1;a96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var b=!1;function _(){o=[],a=[],l=0,S=!1,n=!1,b=!1,f=null,r.leftchannel=o,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=A,r.recordingLength=l,E={left:[],right:[],recordingLength:0}}function w(){s&&(s.onaudioprocess=null,s.disconnect(),s=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){b=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();b=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(w),w()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var S=!1;s.onaudioprocess=function(e){if(!b)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),s.disconnect(),n=!1),n){S||(S=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(o.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);a.push(p)}l+=y,r.recordingLength=l,void 0!==i.timeSlice&&(E.recordingLength+=y,E.left.push(h),2===d&&E.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?s.connect(f.createMediaStreamDestination()):s.connect(f.destination),this.leftchannel=o,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,r.recordingLength=l;var E={left:[],right:[],recordingLength:0};function T(){n&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(E.left.length?(p({desiredSampRate:c,sampleRate:A,numberOfAudioChannels:d,internalInterleavedLength:E.recordingLength,leftBuffers:E.left,rightBuffers:1===d?[]:E.right},(function(e,t){var s=new Blob([t],{type:"audio/wav"});i.ondataavailable(s),setTimeout(T,i.timeSlice)})),E={left:[],right:[],recordingLength:0}):setTimeout(T,i.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var s,r,o,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&l&&l[2]&&(n=parseInt(l[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)s=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";s=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(o=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in s?e=s.captureStream(25):"mozCaptureStream"in s?e=s.mozCaptureStream(25):"webkitCaptureStream"in s&&(e=s.webkitCaptureStream(25));try{var a=new g;a.addTrack(v(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new E(e,{mimeType:t.mimeType||"video/webm"})).record()}else p.frames=[],u=(new Date).getTime(),c();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var s=p.frames.length;p.frames.forEach((function(e,i){var r=s-i;t.disableLogs||console.log(r+"/"+s+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,s);var o=e.image.toDataURL("image/webp",1);p.frames[i].image=o})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){o=!1;var s=this;i&&r?r.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),s.blob=i,s.blob.forEach&&(s.blob=new Blob([],{type:"video/webm"})),e&&e(s.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],o=!1,d=!1}function c(){if(d)return u=(new Date).getTime(),setTimeout(c,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),p.frames.push({image:(s=document.createElement("canvas"),r=s.getContext("2d"),s.width=e.width,s.height=e.height,r.drawImage(e,0,0),s),duration:i}),void(o&&setTimeout(c,t.frameInterval))}var s,r;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(c,t.frameInterval);u=(new Date).getTime(),p.frames.push({image:e.toDataURL("image/webp",1),duration:i}),o&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof E&&r.pause()},this.resume=function(){d=!1,r instanceof E?r.resume():o||this.record()},this.clearRecordedData=function(){o&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new x.Video(100)}function C(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?o?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),n.paused&&n.play(),c.drawImage(n,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function s(e,t,i,s,r){var o=document.createElement("canvas");o.width=h.width,o.height=h.height;var a=o.getContext("2d"),n=[],l=-1===t,d=t&&t>0&&t<=e.length?t:e.length,c=0,u=0,p=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),m=i&&i>=0&&i<=1?i:0,g=s&&s>=0&&s<=1?s:0,y=!1;!function(e){var t=-1,i=e.length;!function s(){++t!==i?setTimeout((function(){e.functionToLoop(s,t)}),1):e.callback()}()}({length:d,functionToLoop:function(t,i){var s,r,o,d=function(){!y&&o-s<=o*g||(l&&(y=!0),n.push(e[i])),t()};if(y)d();else{var A=new Image;A.onload=function(){a.drawImage(A,0,0,h.width,h.height);var e=a.getImageData(0,0,h.width,h.height);s=0,r=e.data.length,o=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function s(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*o[0].width:o[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),r.height=o[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),o.forEach((function(e,t){u(e,t)})),setTimeout(c,a.frameInterval)}}function u(e,t){if(!s){var i=0,r=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),o.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(o,i,r,a,n,t)}}function p(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,i.push(t)}}))}void 0!==n?h.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(h.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){c()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var s=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=p(t);r.stream=t,i.push(r),s.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var o=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),o.connect(a.audioDestination),s.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(s)}))},this.releaseStreams=function(){i=[],s=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,o.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;f(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){h.AudioContextConstructor||(h.AudioContextConstructor=new h.AudioContext);a.audioContext=h.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function I(e,t){e=e||[];var i,s,r=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var r;i=new R(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){v(e,"video").forEach((function(e){r.push(e)}))})),r).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(s=new E(i.getMixedStream(),t)).record()},this.stop=function(e){s&&s.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){s&&s.pause()},this.resume=function(){s&&s.resume()},this.clearRecordedData=function(){s&&(s.clearRecordedData(),s=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),s&&i&&(i.appendStreams(r),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function P(e,t){var i,s,r;function o(){return new ReadableStream({start:function(s){var r=document.createElement("canvas"),o=document.createElement("video"),a=!0;o.srcObject=e,o.muted=!0,o.height=t.height,o.width=t.width,o.volume=0,o.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),s.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(o,0,0),"closed"!==s._controlledReadableStream.state)try{s.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},o.play()}})}function a(e,l){if(!t.workerPath&&!l)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&l instanceof ArrayBuffer){var d=new Blob([l],{type:"text/javascript"});t.workerPath=h.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(s=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),s.addEventListener("message",(function(e){"READY"===e.data?(s.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),o().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):s.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){s?(s.addEventListener("message",(function(t){null===t.data&&(s.terminate(),s=null,e&&e())})),s.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}t.DiskStorage=D,t.GifRecorder=L,t.MultiStreamRecorder=I,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var s=this;s.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{s.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{s.recordRTC.stopRecording((function(i){s.blob=s.recordRTC.getBlob(),s.blob&&s.blob.size?e(i):t("Empty blob.",s.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{s.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{s.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{s.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(s.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(s.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(s.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(s.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(s.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=P}));class Pn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(e){let t=Pn._ebsp2rbsp(e),i=new Ir(t);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let o=Pn.getProfileString(s),a=Pn.getLevelString(r),n=1,l=420,d=[0,420,422,444],h=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(l=d[n]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],_=s[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),_=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);S=i.readBool(),E=t,T=2*e,w=E/T}}let k=1;1===v&&1===_||(k=v/_);let C=0,x=0;if(0===n)C=1,x=2-m;else{C=3===n?1:2,x=(1===n?2:1)*(2-m)}let D=16*(p+1),L=16*(f+1)*(2-m);D-=(g+y)*C,L-=(A+b)*x;let R=Math.ceil(D*k);return i.destroy(),i=null,{profile_string:o,level_string:a,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:Pn.getChromaFormatString(l),frame_rate:{fixed:S,fps:w,fps_den:T,fps_num:E},sar_ratio:{width:v,height:_},codec_size:{width:D,height:L},present_size:{width:R,height:L}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let s=t[e].toString(16);s.length<2&&(s="0"+s),i+=s}let s=Pn._ebsp2rbsp(e),r=new Ir(s);r.readByte();let o=r.readByte();r.readByte();let a=r.readByte();r.readUEG();let n=Pn.getProfileString(o),l=Pn.getLevelString(a),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(d=r.readUEG(),3===d&&r.readBits(1),d<=3&&(h=c[d]),u=r.readUEG()+8,p=r.readUEG()+8,r.readBits(1),r.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(S=t[e-1],E=i[e-1]):255===e&&(S=r.readByte()<<8|r.readByte(),E=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);k=r.readBool(),C=t,x=2*e,T=C/x}}let D=1;1===S&&1===E||(D=S/E);let L=0,R=0;if(0===d)L=1,R=2-A;else{L=3===d?1:2,R=(1===d?2:1)*(2-A)}let I=16*(g+1),P=16*(y+1)*(2-A);I-=(b+v)*L,P-=(_+w)*R;let B=Math.ceil(I*D);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:o,level_idc:a,profile_string:n,level_string:l,chroma_format_idc:d,bit_depth:u,bit_depth_luma:u,bit_depth_chroma:p,ref_frames:m,chroma_format:h,chroma_format_string:Pn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:x,fps_num:C},sar_ratio:{width:S,height:E},codec_size:{width:I,height:P},present_size:{width:B,height:P}}}static _skipScalingList(e,t){let i=8,s=8,r=0;for(let o=0;o=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.sps,4),t.sps=s}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.pps,4),t.pps=s}return t}function Fn(e){let{sps:t,pps:i}=e,s=8+t.byteLength+1+2+i.byteLength,r=!1;const o=Pn.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(r=!0,s+=4);let a=new Uint8Array(s);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let n=t.byteLength;a[6]=n>>>8,a[7]=255&n;let l=8;a.set(t,8),l+=n,a[l]=1;let d=i.byteLength;a[l+1]=d>>>8,a[l+2]=255&d,a.set(i,l+3),l+=3+d,r&&(a[l]=252|o.chroma_format_idc,a[l+1]=248|o.bit_depth_luma-8,a[l+2]=248|o.bit_depth_chroma-8,a[l+3]=0,l+=4);const h=[23,0,0,0,0],c=new Uint8Array(h.length+a.byteLength);return c.set(h,0),c.set(a,h.length),c}function Un(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function On(e){return 31&e[0]}function Nn(e){return e===Rt}function jn(e){return!function(e){return e===kt||e===Ct}(e)&&!Nn(e)}function Gn(e){return e===xt}class zn{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=31&e[i],r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,s>=Bt||0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class Wn{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const $n=e=>{let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)},Vn=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Hn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseVPS(e){let t=Hn._ebsp2rbsp(e),i=new Ir(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}}static parseSPS(e){let t=Hn._ebsp2rbsp(e),i=new Ir(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),w=[],S=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(B=t[e-1],M=s[e-1]):255===e&&(B=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(U=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!0,a=1;r||(o=i.readBool());let n=!1;if(o?i.readUEG():n=i.readBool(),n||(a=i.readUEG()+1),e){for(let e=0;e>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let s=e[22],r=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let t=0;t{let t=$n(e),i=new Ir(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(t),a=(e=>{let t=$n(e),i=new Ir(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),w=[],S=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(B=t[e-1],M=s[e-1]):255===e&&(B=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(s+=i.readUEG(),r+=i.readUEG(),o+=i.readUEG(),a+=i.readUEG()),i.readBool()&&(U=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!1,a=1;r||(o=i.readBool());let n=!1;if(o?i.readSEG():n=i.readBool(),n||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=$n(e),i=new Ir(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let s=i.readBool(),r=i.readBool(),o=1;return r&&s?o=0:r?o=3:s&&(o=2),{parallelismType:o}})(i);r=Object.assign(r,o,a,n);let l=23+(5+t.byteLength)+(5+s.byteLength)+(5+i.byteLength),d=new Uint8Array(l);d[0]=1,d[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,d[2]=r.general_profile_compatibility_flags_1||0,d[3]=r.general_profile_compatibility_flags_2||0,d[4]=r.general_profile_compatibility_flags_3||0,d[5]=r.general_profile_compatibility_flags_4||0,d[6]=r.general_constraint_indicator_flags_1||0,d[7]=r.general_constraint_indicator_flags_2||0,d[8]=r.general_constraint_indicator_flags_3||0,d[9]=r.general_constraint_indicator_flags_4||0,d[10]=r.general_constraint_indicator_flags_5||0,d[11]=r.general_constraint_indicator_flags_6||0,d[12]=60,d[13]=240|(3840&r.min_spatial_segmentation_idc)>>8,d[14]=255&r.min_spatial_segmentation_idc,d[15]=252|3&r.parallelismType,d[16]=252|3&r.chroma_format_idc,d[17]=248|7&r.bit_depth_luma_minus8,d[18]=248|7&r.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&r.constant_frame_rate)<<6|(7&r.num_temporal_layers)<<3|(r.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|Gt,d[24]=0,d[25]=1,d[26]=(65280&t.byteLength)>>8,d[27]=(255&t.byteLength)>>0,d.set(t,28),d[23+(5+t.byteLength)+0]=128|Wt,d[23+(5+t.byteLength)+1]=0,d[23+(5+t.byteLength)+2]=1,d[23+(5+t.byteLength)+3]=(65280&s.byteLength)>>8,d[23+(5+t.byteLength)+4]=(255&s.byteLength)>>0,d.set(s,23+(5+t.byteLength)+5),d[23+(5+t.byteLength+5+s.byteLength)+0]=128|Vt,d[23+(5+t.byteLength+5+s.byteLength)+1]=0,d[23+(5+t.byteLength+5+s.byteLength)+2]=1,d[23+(5+t.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+t.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,d.set(i,23+(5+t.byteLength+5+s.byteLength)+5);const h=[28,0,0,0,0],c=new Uint8Array(h.length+d.byteLength);return c.set(h,0),c.set(d,h.length),c}function Qn(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function Xn(e){return(126&e[0])>>1}function Zn(e){return!function(e){return e>=32&&e<=40}(e)}function el(e){return e>=16&&e<=21}class tl{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=e[i]>>1&63,r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class il{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}class sl extends o{constructor(e){super(),this.TAG_NAME="recorderCommon",this.player=e,this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.recordingInterval=null,this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo={codecWidth:0,codecHeight:0,presentWidth:0,presentHeight:0,refSampleDuration:0,timescale:1e3,avcc:null,videoType:""},this.audioMetaInfo={timescale:1e3,sampleRate:0,refSampleDuration:0,channelCount:0,codec:"",originalCodec:"",audioType:"",extraData:new Uint8Array(0)}}destroy(){this._reset(),this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo=null,this.audioMetaInfo=null}get isH264(){return this.codecId===yt}get isH265(){return this.codecId===At}setFileName(e){this.fileName=e}get isRecording(){return this._isRecording}get recording(){return this._isRecording}get recordTime(){return this._recordingTimestamp}startRecord(){}handleAddNaluTrack(e,t,i,s){}handleAddAudioTrack(e,t){}handleAddTrack(e){}stopRecordAndSave(){}startRecordingInterval(){}isWasmMp4(){return!1}stopRecordingInterval(){this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}getToTalByteLength(){return 0}_reset(){this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.stopRecordingInterval()}initMetaData(e,t){let i;const s=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=s,t===yt)i=Mn(s);else if(t===At){i=function(e){let t=23;const i=e[t];if((63&i)!==Gt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const s=e[t+1]|e[t]<<8;t+=2;const r=e.slice(t,t+s);t+=s;const o=e[t];if((63&o)!==Wt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${o}`),{};t+=2,t+=1;const a=e[t+1]|e[t]<<8;t+=2;const n=e.slice(t,t+a);t+=a;const l=e[t];if((63&l)!==Vt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and pps tag is ${l}`),{};t+=2,t+=1;const d=e[t+1]|e[t]<<8;t+=2;const h=e.slice(t,t+d),c=new Uint8Array([a>>>24&255,a>>>16&255,a>>>8&255,255&a]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(a+4);f.set(c,0),f.set(n,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const g=new Uint8Array(s+4);return g.set(p,0),g.set(r,4),{sps:f,pps:m,vps:g}}(s);const t=Jn(e);i=Object.assign(i,t)}i&&(i.vps&&(this.vps=i.vps),i.pps&&(this.pps=i.pps),i.sps&&(this.sps=i.sps),i.presentWidth&&(this.metaInfo.presentWidth=i.presentWidth),i.presentHeight&&(this.metaInfo.presentHeight=i.presentHeight),i.codecWidth&&(this.metaInfo.codecWidth=i.codecWidth),i.codecHeight&&(this.metaInfo.codecHeight=i.codecHeight),i.timescale&&(this.metaInfo.timescale=i.timescale),i.refSampleDuration&&(this.metaInfo.refSampleDuration=i.refSampleDuration),i.videoType&&(this.metaInfo.videoType=i.videoType))}initAudioMetaData(e,t){this.audioCodeId=t;const i=e[0]>>1&1;let s=null;t===_t?(s=function(e){let t={},i=new Wr(e);return i.read(16),t.object_type=$r(i),t.sample_rate=Vr(i,t),t.chan_config=i.read(4),t.chan_config{r.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const r=s.makeMetadataSeekable(t.metadatas,t.duration,t.cues),a=this.result.slice(t.metadataSize),n=new Blob([r,a],{type:"video/webm"});o(n)},r.readAsArrayBuffer(e)}))}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:t=>{e.log("RecorderRTC","record timestamp :"+t),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=t),this._recordingTimestamp=(t-this._startRecordingTimestamp)/1e3},ondataavailable:t=>{this.totalByteLength+=t.size,e.log("RecorderRTC","ondataavailable",t.size)},disableLogs:!this.player._opt.debug};try{let i=null;if(this.player.getRenderType()===H?i=this.player.video.$videoElement.captureStream(25):this.player.video.mediaStream?i=this.player.video.mediaStream:this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?i=this.player.video.$videoElement.captureStream(25):this.player.isWebrtcH264()?i=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(i=this.player.video.$videoElement.captureStream(25)),!i)return e.error("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(ot.recordCreateError,"can not create stream");if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const e=this.player.audio.mediaStreamAudioDestinationNode.stream;if(e.getAudioTracks().length>0){const t=e.getAudioTracks()[0];t&&t.enabled&&i.addTrack(t)}}this.recorder=In(i,t)}catch(t){return e.error("RecorderRTC","startRecord error",t),void this.player.emitError(ot.recordCreateError,t)}this.recorder&&(this._isRecording=!0,this.player.emit(ot.recording,!0),this.recorder.startRecording(),e.log("RecorderRTC","start recording"),this.player.emit(ot.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(ot.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ft,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{this.recorder&&this._isRecording||s("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debug.log("RecorderRTC","stop recording");const t=(this.fileName||so())+"."+E;if(this.player._opt.recordWebMSupportSeek);else{if(e===mt){const e=this.recorder.getBlob();i(e),this.player.emit(ot.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(ot.recordEnd),this._reset(),this.player.emit(ot.recording,!1)}}))}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.recorder||!this._isRecording)return e();this.recorder.stopRecording((()=>{this._reset(),this.player.emit(ot.recording,!1),this.player.emit(ot.recordCancel),e()}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return E}initMetaData(){}}class ol{static init(){ol.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],free:[],edts:[],elst:[],stss:[]};for(let e in ol.types)ol.types.hasOwnProperty(e)&&(ol.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=ol.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,2,0,105,115,111,109,105,115,111,50,97,118,99,49,109,112,52,49,0,0,0,0]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,s=Array.prototype.slice.call(arguments,1),r=s.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let o=8;for(let e=0;e=Math.pow(2,32)-1?(o=16,a=new Uint8Array(i+o),a.set(new Uint8Array([0,0,0,1]),0),a.set(ol.types.mdat,4),a.set(new Uint8Array([i+8>>>56&255,i+8>>>48&255,i+8>>>40&255,i+8>>>32&255,i+8>>>24&255,i+8>>>16&255,i+8>>>8&255,i+8&255]),8)):(a=new Uint8Array(i+o),a[0]=i+8>>>24&255,a[1]=i+8>>>16&255,a[2]=i+8>>>8&255,a[3]=i+8&255,a.set(ol.types.mdat,4));for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3]))}static trak(e){return ol.box(ol.types.trak,ol.tkhd(e),ol.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return"video"===e.type?ol.box(ol.types.tkhd,new Uint8Array([0,0,0,15,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0])):"audio"===e.type?ol.box(ol.types.tkhd,new Uint8Array([0,0,0,15,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0])):void 0}static edts(e,t){return ol.box(ol.types.edts,ol.elst(e,t))}static elst(e,t){let i=0;for(let s=0;s>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,0,0,0,0,0,1,0,0]))}static mdia(e){return ol.box(ol.types.mdia,ol.mdhd(e),ol.hdlr(e),ol.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return ol.box(ol.types.mdhd,new Uint8Array([0,0,0,0,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?ol.constants.HDLR_AUDIO:ol.constants.HDLR_VIDEO,ol.box(ol.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?ol.box(ol.types.smhd,ol.constants.SMHD):ol.box(ol.types.vmhd,ol.constants.VMHD),ol.box(ol.types.minf,t,ol.dinf(),ol.stbl(e))}static dinf(){return ol.box(ol.types.dinf,ol.box(ol.types.dref,ol.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],s=[t[0].duration],r=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+8*t);r.set(i,0);for(let i=0;i>>24&255,e[i].num>>>16&255,e[i].num>>>8&255,255&e[i].num,e[i].sampleDelte>>>24&255,e[i].sampleDelte>>>16&255,e[i].sampleDelte>>>8&255,255&e[i].sampleDelte]),s),s+=8;return ol.box(ol.types.stts,r)}static stss(e){let t=[],i=e.length;for(let s=0;s>>24&255,s>>>16&255,s>>>8&255,255&s]),o=r.byteLength,a=new Uint8Array(o+4*s);a.set(r,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),o),o+=4;return ol.box(ol.types.stss,a)}static stsc(e){let t=e.length,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+12*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a]),s),s+=12}return ol.box(ol.types.stsc,r)}static stsz(e){let t=e.length,i=new Uint8Array([0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+4*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),s),s+=4}return ol.box(ol.types.stsz,r)}static stco(e,t){let i=t[0].chunkOffset;return ol.box(ol.types.stco,new Uint8Array([0,0,0,0,0,0,0,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i]))}static stsd(e){return"audio"===e.type?"mp3"===e.codec?ol.box(ol.types.stsd,ol.constants.STSD_PREFIX,ol.mp3(e)):ol.box(ol.types.stsd,ol.constants.STSD_PREFIX,ol.mp4a(e)):"avc"===e.videoType?ol.box(ol.types.stsd,ol.constants.STSD_PREFIX,ol.avc1(e)):ol.box(ol.types.stsd,ol.constants.STSD_PREFIX,ol.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return ol.box(ol.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return ol.box(ol.types.mp4a,s,ol.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return ol.box(ol.types.esds,s)}static avc1(e){let t=e.avcc,i=e.codecWidth,s=e.codecHeight,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ol.box(ol.types.avc1,r,ol.box(ol.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ol.box(ol.types.hvc1,r,ol.box(ol.types.hvcC,t))}static mvex(e){return ol.box(ol.types.mvex,ol.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return ol.box(ol.types.trex,i)}static moof(e,t){return ol.box(ol.types.moof,ol.mfhd(e.sequenceNumber),ol.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return ol.box(ol.types.mfhd,t)}static traf(e,t){let i=e.id,s=ol.box(ol.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=ol.box(ol.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=ol.sdtp(e),a=ol.trun(e,o.byteLength+16+16+8+16+8+8);return ol.box(ol.types.traf,s,r,a,o)}static sdtp(e){let t=e.samples||[],i=t.length,s=new Uint8Array(4+i);for(let e=0;e>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*e)}return ol.box(ol.types.trun,o)}static mdat(e){return ol.box(ol.types.mdat,e)}}ol.init();class al extends sl{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.bufferList=[],this.audioBufferList=[],this.cacheTrack={},this.audioCacheTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(ot.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(ot.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(ot.recordingTimestamp,this.getTotalDuration())}),1e3)}formatFmp4Track(e,t,i,s){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:s,isKeyframe:t,data:e,duration:0,flags:{isLeading:0,dependsOn:t?2:1,isDependedOn:t?1:0,hasRedundancy:0,isNonSync:t?0:1}}}formatAudioFmp4Track(e,t){return{id:2,sequenceNumber:++this.audioSequenceNumber,size:e.byteLength,dts:t,pts:t,cts:0,data:new Uint8Array(e),duration:0,originalDts:t,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}}handleAddNaluTrack(e,t,i,s){this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.handleAddFmp4Track(this.cacheTrack)):this.cacheTrack={},this.cacheTrack=this.formatFmp4Track(e,t,i,s)}handleAddAudioTrack(e,t){}handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h264 and this.sps or this.pps is null ");if((null===this.sps||null===this.pps||null===this.vps)&&this.isH265)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h265 and this.sps or this.pps or this.vps is null ");const t=Object.assign({},e);t.pts=t.dts+t.cts;const i=t.data;if(t.isKeyframe)if(this.isH264){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength);e.set(this.sps,0),e.set(this.pps,this.sps.byteLength);const s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}else if(this.isH265){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength+this.vps.byteLength);e.set(this.vps,0),e.set(this.sps,this.vps.byteLength),e.set(this.pps,this.vps.byteLength+this.sps.byteLength);const s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}t.size=t.data.byteLength,this.totalDuration+=t.duration,this.totalByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.bufferList.push(t)}handleAddFmp4AudioTrack(e){const t=Object.assign({},e);t.pts=t.dts+t.cts,t.size=t.data.byteLength,this.totalAudioDuration+=t.duration,this.totalAudioByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.audioBufferList.push(t)}getTotalDuration(){return this.totalDuration/1e3}getType(){return S}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ft,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r={id:1,type:"video",sps:this.sps,pps:this.pps,samples:this.bufferList,sequenceNumber:this.bufferList.length,length:0,addSampleNum:1,duration:0,...this.metaInfo},o={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},a=[r];o.samples.length>0&&a.push(o),this.player.debug.log(this.TAG_NAME,`trackList length is ${a.length}`);const n=ol.generateInitSegment({timescale:1e3,duration:this.totalDuration},a,this.totalByteLength+this.totalAudioByteLength);this.player.debug.log(this.TAG_NAME,"stop recording");const l=new Blob([n],{type:"application/octet-stream"});if(e===mt)i(l),this.player.emit(ot.recordBlob,l);else{i();Ro((this.fileName||so())+"."+S,l)}this._reset(),this.player.emit(ot.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(ot.recording,!1),this.player.emit(ot.recordCancel),e()}))}}function nl(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new s((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new s)}function ll(e){if((e=e.replace(/\s/g,"")).length%2!=0)return console.error("hexStringToUint8Array: invalid hexString length, must be even and bexString length is: ",e.length),null;const t=new Uint8Array(e.length/2);for(let i=0;i{this.player.emit(ot.recordingTimestamp,this.getTotalDuration())}),1e3)}addMetaData(e){this.flvMetaData=e}addAACSequenceHeader(e){this.aacSequenceHeader=e}addVideoSequenceHeader(e){this.videoSequenceHeader=e}addVideo(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasVideo=!0,this._createBufferItem(e,je,i)}addAudio(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasAudio=!0,this._createBufferItem(e,Ne,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debug.log(this.TAG_NAME,`_setStartTime is ${e}`))}_getBufferTs(e){e>this.currentTime&&(this.currentTime=e);let t=0;return this.startTime&&e>=this.startTime&&(t=e-this.startTime),t>this.prevTimestamp?this.prevTimestamp=t:t=this.prevTimestamp,t}_createBufferItem(e,t,i){const s=this._createFlvPacket(e,t,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let s=new DataView(i.buffer);return i[1]=e.header.length>>16&255,i[2]=e.header.length>>8&255,i[3]=255&e.header.length,i[4]=e.header.timestamp>>16&255,i[5]=e.header.timestamp>>8&255,i[6]=255&e.header.timestamp,i[7]=e.header.timestamp>>24&255,i[8]=0,i[9]=0,i[10]=0,s.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ft,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let o=[r];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,Ge),t=this._createFlvTag(e);o.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,je),t=this._createFlvTag(e);o.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,Ne),t=this._createFlvTag(e);o.push(t)}const a=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const s=new t((0|e.byteLength)+(0|i.byteLength));return s.set(e,0),s.set(i,0|e.byteLength),s}),new t)}(o.concat(this.bufferList));this.player.debug.log(this.TAG_NAME,"stop recording");const n=new Blob([a],{type:"application/octet-stream"});if(e===mt)i(n),this.player.emit(ot.recordBlob,n);else{i();Ro((this.fileName||so())+"."+T,n)}this._reset(),this.player.emit(ot.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(ot.recording,!1),this.player.emit(ot.recordCancel),e()}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return T}getToTalByteLength(){return this.totalByteLength}}const hl={init:0,findFirstStartCode:1,findSecondStartCode:2};class cl extends o{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=hl.init,this.tempBuffer=new Uint8Array(0),this.parsedOffset=0,this.versionLayer=0}dispatch(e,t){let i=new Uint8Array(this.tempBuffer.length+e.length);for(i.set(this.tempBuffer,0),i.set(e,this.tempBuffer.length),this.tempBuffer=i;!this.isDestroyed;){if(this.state==hl.Init){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=hl.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hl.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=hl.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hl.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=hl.findFirstStartCode}}}}class ul extends sl{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=null,this.mp3Demuxer=null,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.cacheTrack={},this.audioCacheTrack={},this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.hasAudio=!1,this.hasVideo=!1}getType(){return S}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player,t=this.player.debug,i=this.player.getAudioInfo(),s=this.player.getVideoInfo(),r={};if(this.codecId){const e={type:this.codecId,width:s.width,height:s.height,extraData:this.metaInfo.avcc};r.video=e,this.hasVideo=!0}if(i.encTypeCode){const e={type:i.encTypeCode,sampleRate:i.sampleRate,channels:i.channels,extraData:this.audioMetaInfo.extraData,depth:i.depth};this.audioCodeId=i.encTypeCode,r.audio=e,this.hasAudio=!0}this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.wasmMp4Recorder.on("recordingTimestamp",(e=>{this._recordingTimestamp=e/1e3})),this.wasmMp4Recorder.startRecord(r).then((()=>{this._isRecording=!0,this.player.emit(ot.recording,!0),t.log(this.TAG_NAME,"start recording"),this.player.emit(ot.recordStart),this.startRecordingInterval()})).catch((e=>{t.error(this.TAG_NAME,"startRecord error",e),this.player.emitError(ot.recordCreateError,e)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(ot.recordingTimestamp,this.recordTime)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ft,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debug.error(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===mt)i(t),this.player.emit(ot.recordBlob,t);else{i();Ro((this.fileName||so())+"."+S,t)}})).catch((e=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",e),s(e)})).finally((()=>{this._reset(),this.player.emit(ot.recording,!1)}))):(this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debug.log(this.TAG_NAME,"cancel recording"),!this.isRecording||0===this.totalDuration)return e();this.wasmMp4Recorder.stopRecord().then((t=>{e()})).catch((e=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",e),t(e)})).finally((()=>{this._reset(),this.player.emit(ot.recording,!1),this.player.emit(ot.recordCancel)}))}))}handleAddAudioTrack(e,t){this.audioCodeId===St?(this.mp3Demuxer||(this.mp3Demuxer=new cl(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){ya(this.hasAudio)||(this.audioCacheTrack.id&&t>=this.audioCacheTrack.dts?(this.audioCacheTrack.duration=t-this.audioCacheTrack.dts,this.totalAudioDuration+=this.audioCacheTrack.duration,this.totalAudioByteLength+=this.audioCacheTrack.payload.byteLength,this.wasmMp4Recorder.sendAudioFrame(this.audioCacheTrack.payload,this.audioCacheTrack.dts)):this.audioCacheTrack={},this.audioCacheTrack={id:2,payload:e,dts:t})}handleAddNaluTrack(e,t,i,s){ya(this.hasVideo)||(this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.totalDuration+=this.cacheTrack.duration,this.totalByteLength+=this.cacheTrack.payload.byteLength,this.wasmMp4Recorder.sendVideoFrame(this.cacheTrack.payload,this.cacheTrack.isIFrame,this.cacheTrack.dts,this.cacheTrack.cts)):this.cacheTrack={},this.cacheTrack={id:1,payload:e,isIFrame:t,dts:i,cts:s})}}class pl{constructor(e){return new(pl.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){if(e.recordType===S){if(e.useWasm||e.useMSE||e.useWCS)return window.JessibucaProMp4Recorder&&e.mp4RecordUseWasm?ul:al}else if(e.recordType===T)return dl;return rl}}function fl(e,t,i){let s=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),s+=2;continue}}}else if(i[s]<240){if(fl(i,s,2)){let e=(15&i[s])<<12|(63&i[s+1])<<6|63&i[s+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),s+=3;continue}}}else if(i[s]<248&&fl(i,s,3)){let e=(7&i[s])<<18|(63&i[s+1])<<12|(63&i[s+2])<<6|63&i[s+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),s+=4;continue}}t.push(String.fromCharCode(65533)),++s}return t.join("")}let gl=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class yl{static parseScriptData(e,t,i){let s={};try{let r=yl.parseValue(e,t,i),o=yl.parseValue(e,t+r.size,i-r.size);s[r.data]=o.data}catch(e){console.error("AMF",e.toString())}return s}static parseObject(e,t,i){let s=yl.parseString(e,t,i),r=yl.parseValue(e,t+s.size,i-s.size),o=r.objectEnd;return{data:{name:s.data,value:r.data},size:s.size+r.size,objectEnd:o}}static parseVariable(e,t,i){return yl.parseObject(e,t,i)}static parseString(e,t,i){let s,r=new DataView(e,t,i).getUint16(0,!gl);return s=r>0?ml(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}static parseLongString(e,t,i){let s,r=new DataView(e,t,i).getUint32(0,!gl);return s=r>0?ml(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}static parseDate(e,t,i){let s=new DataView(e,t,i),r=s.getFloat64(0,!gl);return r+=60*s.getInt16(8,!gl)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){let s,r=new DataView(e,t,i),o=1,a=r.getUint8(0),n=!1;try{switch(a){case 0:s=r.getFloat64(1,!gl),o+=8;break;case 1:s=!!r.getUint8(1),o+=1;break;case 2:{let r=yl.parseString(e,t+1,i-1);s=r.data,o+=r.size;break}case 3:{s={};let a=0;for(9==(16777215&r.getUint32(i-4,!gl))&&(a=3);o{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),e.debug.log("decoderWorker",`init and decoder url is ${t}`),e.on(ot.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{if(this.player.loaded)if(this.player.debug.log("decoderWorker","has loaded and post message to destroy"),this.decoderWorker){const t={};this.player.isMseDecoderUseWorker()&&(t.isVideoInited=this.player.isMseVideoStateInited()),this.decoderWorker.postMessage({cmd:He,options:t}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug&&this.player.debug.warn("decoderWorker","send close but not response and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)}else this.player.debug.warn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0);else this.player.debug.log("decoderWorker","has not loaded and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}))}_destroy(){this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.decoderWorker&&(this.decoderWorker.terminate(),this.decoderWorker.onerror=null,this.decoderWorker.onmessageerror=null,this.decoderWorker.onmessage=null,this.decoderWorker=null),this.player.debug&&this.player.debug.log("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.isDestroyed=!0}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onerror=e=>{const t=e.filename||"",i=e.message||"",s=t&&(-1!==t.indexOf(".wasm")||-1!==t.indexOf("wasm://"));s&&-1!==i.indexOf(sr)?this.player.debug.log("decoderWorker",`onerror and ignore filename: ${t},message: ${i}`,e):(this.player.debug.error("decoderWorker",`onerror filename: ${t},message: ${i}`,e),s?this.player.emitError(lt.decoderWorkerWasmError,`filename: ${t},message: ${i}`):this.player.emitError(lt.decoderWorkerInitError,`filename: ${t},message: ${i}`))},this.decoderWorker.onmessageerror=e=>{this.player.debug.error("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case oe:e.log("decoderWorker","onmessage:",oe),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(ot.load),this.player.emit(ot.decoderWorkerInit);break;case pe:e.log("decoderWorker","onmessage:",pe,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=so()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case fe:e.log("decoderWorker","onmessage:",fe,i.codecId),this.player.recorder&&this.player.recorder.initMetaData(i.buffer,i.codecId),this.player.video.updateVideoInfo({encTypeCode:i.codecId});break;case he:e.log("decoderWorker","onmessage:",he,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case ue:e.log("decoderWorker","onmessage:",ue),this.player.recorder&&this.player.recorder.initAudioAacExtraData(i.buffer);break;case ae:if(e.log("decoderWorker","onmessage:",ae,`width:${i.w},height:${i.h}`),Io(i.w)||Io(i.h))return void this.player.emitError(lt.videoInfoError,`video width ${i.w} or height ${i.h} is empty`);if(this.player.video.bindMediaStream(),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0&&this.player.getRenderType()===H)return void this.player.emitError(lt.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===w&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case de:if(e.log("decoderWorker","onmessage:",de,`channels:${i.channels},sampleRate:${i.sampleRate}`),i.channels>2)return void this.player.emitError(lt.audioChannelError,`audio channel is ${i.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player._opt.playType===v?this.player.audio.initScriptNode():this.player._opt.playType===w&&this.player.audio.initScriptNodeDelay());break;case ne:if(!this.player.video)return void e.warn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(ya(this.player.video.getHasInit()))return void e.warn("decoderWorker","onmessage render but video has not init");this.player.video.render(i),this.player.handleRender(),this.player.emit(ot.timeUpdate,i.ts),this.player.updateStats({dfps:!0,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=so(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ya(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(i):this.player.video.render$2(i)):!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData(i));break;case me:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.handleAddNaluTrack(i.buffer,i.isIFrame,i.ts,i.cts);break;case ce:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(i.buffer,i.ts);break;case ge:const{webcodecsDecoder:t,mseDecoder:s}=this.player;this.player.updateStats({buf:i.delay});const r=new Uint8Array(i.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?t.decodeVideo(r,i.ts,i.isIFrame,i.cts):this.player._opt.useMSE&&s.decodeVideo(r,i.ts,i.isIFrame,i.cts);break;case ye:if(this.player._opt.useMSE){const e=new Uint8Array(i.payload);this.player.mseDecoder.decodeAudio(e,i.ts,i.cts)}break;case le:if(!this.player.audio)return void e.warn("decoderWorker","onmessage playAudio but audio is null");(this.player.playing&&this.player.audio||!this.player.video)&&(this.player._opt.hasVideo||this.player.handleRender(),(this.player._opt.playType===v||this.player._opt.playType===w&&(ya(this.player.playbackPause)||!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender))&&this.player.audio.play(i.buffer,i.ts));break;case Ae:if(i.type===ot.streamSuccess)this.player.stream?this.player.stream.emit(ot.streamSuccess):e.warn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(i.type===ot.streamRate)this.player.emit(ot.kBps,(i.value/1024).toFixed(2));else if(i.type===ot.streamEnd)this.player?(i.value===m&&this.player.emit(ot.websocketClose,i.msg),this.player.stream?this.player.stream.emit(ot.streamEnd,i.msg):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(i.type===lt.websocketError)this.player&&this.player.stream?this.player.stream.emit(lt.websocketError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(i.type===lt.fetchError)this.player&&this.player.stream?this.player.stream.emit(lt.fetchError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(i.type===ot.streamAbps)this.player.updateStats({abps:i.value});else if(i.type===ot.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=so()),this.player.updateStats({vbps:i.value});else if(i.type===ot.streamDts)this.player.updateStats({dts:i.value});else if(i.type===ot.netBuf)this.player.updateStats({netBuf:i.value});else if(i.type===ot.networkDelayTimeout)this.player.emit(ot.networkDelayTimeout,i.value);else if(i.type===ot.streamStats){const e=JSON.parse(i.value);this.player.updateStats({workerStats:e})}else i.type===ot.websocketOpen&&this.player.emit(ot.websocketOpen);break;case be:this.player&&(this.player.videoIframeIntervalTs=i.value);break;case ve:this.player&&this.player.updateStats({isDropping:!0});break;case Pe:this.player.decoderCheckFirstIFrame();break;case we:this.player&&this.player.video&&this.player.video.setStreamFps(i.value);break;case Te:this.player.emitError(lt.simdH264DecodeVideoWidthIsTooLarge,i.value);break;case Se:this.player.emitError(lt.wasmWidthOrHeightChange,i.value);break;case Ee:this.player.emitError(lt.simdDecodeError);break;case _e:e.log("decoderWorker","onmessage:",_e),this.player.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload();break;case ke:e.log("decoderWorker","onmessage:",ke),this._destroy();break;case Ce:this.player&&this.player.pushTempStream(i.buffer);break;case xe:this.player&&this.player.emit(ot.videoSEI,{ts:i.ts,data:new Uint8Array(i.buffer)});break;case De:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addMetaData(e)}const e=Al(new Uint8Array(i.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Le:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addAACSequenceHeader(e,i.ts)}break;case Re:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addVideoSequenceHeader(e,i.ts)}break;case Ie:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(i.buffer);i.type===Oe?this.player.recorder.addVideo(e,i.ts):i.type===Ue&&this.player.recorder.addAudio(e,i.ts)}break;case Be:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Be),this.player.video.$videoElement.srcObject=i.mseHandle);break;case Me:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Me,i.value),this.player._mseWorkerData.firstRenderTime=Number(i.value));break;case Fe:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Fe,i.value,i.msg),this.player.emitError(i.value,i.msg));break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,useMSE:this.player._opt.useMSE,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment,playType:this.player._opt.playType,hasAudio:this.player._opt.hasAudio,hasVideo:this.player._opt.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:this.player._opt.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:this.player.audio&&this.player.audio.audioContext&&this.player.audio.audioContext.sampleRate||Er,audioBufferSize:this.player.audio&&this.player.audio.getAudioBufferSize()||1024,networkDelay:this.player._opt.networkDelay,visibility:this.player.visibility,useSIMD:this.player._opt.useSIMD,recordType:this.player._opt.recordType,checkFirstIFrame:this.player._opt.checkFirstIFrame,isM7sCrypto:this.player._opt.isM7sCrypto,isXorCrypto:this.player._opt.isXorCrypto,isSm4Crypto:this.player._opt.isSm4Crypto,isSm4CryptoH265V2:this.player._opt.isSm4CryptoH265V2,sm4CryptoKey:this.player._opt.sm4CryptoKey,m7sCryptoAudio:this.player._opt.m7sCryptoAudio,isFlv:this.player._opt.isFlv,isFmp4:this.player._opt.isFmp4,isMpeg4:this.player._opt.isMpeg4,isTs:this.player._opt.isTs,isNakedFlow:this.player._opt.isNakedFlow,isHls265:this.player.isUseHls265(),isFmp4Private:this.player._opt.isFmp4Private,isEmitSEI:this.player._opt.isEmitSEI,isRecordTypeFlv:this.player.isRecordTypeFlv(),isWasmMp4:this.player.recorder&&this.player.recorder.isWasmMp4()||!1,isChrome:Yo(),isFirefox:go(),supportMSEDecodeHevc:Co(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,wcsDecodeAudio:this.player._opt.wcsDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:this.player._opt.mseDecoderUseWorker,mseAutoCleanupMinBackwardDuration:this.player._opt.mseAutoCleanupMinBackwardDuration,mseAutoCleanupMaxBackwardDuration:this.player._opt.mseAutoCleanupMaxBackwardDuration,mseCorrectTimeDuration:this.player._opt.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:this.player._opt.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:this.player._opt.nakedFlowDemuxUseNew,nakedFlowFps:this.player._opt.nakedFlowFps};this.decoderWorker.postMessage({cmd:ze,opt:JSON.stringify(e)}),this.player._opt.cryptoKey&&this.player._opt.cryptoKey.byteLength>0&&this.player._opt.cryptoIV&&this.player._opt.cryptoIV.byteLength>0&&(this.updateWorkConfig({key:"cryptoKey",value:this.player._opt.cryptoKey}),this.updateWorkConfig({key:"cryptoIV",value:this.player._opt.cryptoIV}))}decodeVideo(e,t,i){this.player._opt.playType===v?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===w&&(this.player.isPlaybackOnlyDecodeIFrame()?i&&(this.player.debug.log("decoderWorker",`current rate is ${this.player.video.rate},only decode i frame`),this._decodeVideoNoDelay(e,t,i)):1===this.player.video.rate?this._decodeVideo(e,t,i):this._decodeVideoNoDelay(e,t,i))}_decodeVideo(e,t,i){const s={type:Oe,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:We,buffer:e,options:s},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:Ve,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===v?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===w&&(this.player.isPlaybackOnlyDecodeIFrame()||(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t)))}_decodeAudio(e,t){const i={type:Ue,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:We,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:$e,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker&&this.decoderWorker.postMessage({cmd:Je,key:e.key,value:e.value})}workerFetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{_opt:i}=this.player,s={protocol:i.protocol,isFlv:i.isFlv,isFmp4:i.isFmp4,isMpeg4:i.isMpeg4,isNakedFlow:i.isNakedFlow,isTs:i.isTs,options:t};this.decoderWorker.postMessage({cmd:Ke,url:e,opt:JSON.stringify(s)})}clearWorkBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.decoderWorker.postMessage({cmd:qe,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Ye,message:e})}updateVideoTimestamp(e){this.decoderWorker.postMessage({cmd:Qe,message:e})}}var vl,_l="application/json, text/javascript",wl="text/html",Sl=/^(?:text|application)\/xml/i,El=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Tl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,kl=/^\s*$/,Cl={},xl={},Dl="",Ll={type:"GET",beforeSend:Rl,success:Rl,error:Rl,complete:Rl,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:_l,xml:"application/xml, text/xml",html:wl,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Rl,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Rl(){}var Il=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=jl({},t=t||{});for(var s in Ll)void 0===i[s]&&(i[s]=Ll[s]);try{var r={},o=new Promise((function(e,t){r.resolve=e,r.reject=t}));o.resolve=r.resolve,o.reject=r.reject,i.promise=o}catch(e){i.promise={resolve:Rl,reject:Rl}}var a=Tl.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,a[1]+"//");var n=i.url;i.crossDomain||(i.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(i.url)&&RegExp.$2!==window.location.href);var l=i.dataType;if("jsonp"===l){if(!/=\?/.test(i.url)){var d=(i.jsonp||"callback")+"=?";i.url=Ul(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+Wl(),s=window.document.createElement("script"),r={abort:function(){i in window&&(window[i]=Rl)}},o=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function a(i){window.clearTimeout(t),r.abort(),Ml(i.type,r,i.type,e),n()}s.onerror=function(e){a(e)},window[i]=function(i){window.clearTimeout(t),Pl(i,r,e),n()},Ol(e),s.src=e.url.replace(/=\?/,"="+i),s.src=Ul(s.src,"_="+(new Date).getTime()),s.async=!0,e.scriptCharset&&(s.charset=e.scriptCharset);o.insertBefore(s,o.firstChild),e.timeout>0&&(t=window.setTimeout((function(){r.abort(),Ml("timeout",r,"timeout",e),n()}),e.timeout));function n(){s.clearAttributes?s.clearAttributes():s.onload=s.onreadystatechange=s.onerror=null,s.parentNode&&s.parentNode.removeChild(s),s=null,delete window[i]}return e.promise.abort=function(){r.abort()},e.promise.xhr=r,e.promise}(i)}Ol(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=Ll.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(Cl[n]&&(c["If-Modified-Since"]=Cl[n]),xl[n]&&(c["If-None-Match"]=xl[n])),h&&(c.Accept=h,h.indexOf(",")>-1&&(h=h.split(",",2)[0]),p.overrideMimeType&&p.overrideMimeType(h));var f=!/^(?:GET|HEAD)$/.test(i.type.toUpperCase());if((i.data&&f&&!1!==i.contentType||t.contentType)&&(c["Content-Type"]=i.contentType),!1===i.cache&&!f){var m=/([?&])_=[^&]*/;i.url=m.test(n)?n.replace(m,"$1_="+Wl()):n+(/\?/.test(n)?"&":"?")+"_="+Wl()}i.headers=jl(c,i.headers||{}),p.onreadystatechange=function(){if(4===p.readyState){var e;clearTimeout(u);var t=!1;if(p.status>=200&&p.status<300||304===p.status){if(Dl=p.getAllResponseHeaders(),i.ifModified){var s=Fl("Last-Modified");s&&(Cl[n]=s),(s=Fl("etag"))&&(xl[n]=s)}l=l||function(e){return e&&(e===wl?"html":e===_l?"json":Sl.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=kl.test(e)?null:JSON.parse(e))}catch(e){t=e}t?Ml(t,"parseerror",p,i):Pl(e,p,i)}else Ml(null,"error",p,i)}};var g=!("async"in i)||i.async;if(p.open(i.type,i.url,g,i.username,i.password),i.xhrFields)for(var y in i.xhrFields)p[y]=i.xhrFields[y];for(var y in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[y]&&p.setRequestHeader(y,i.headers[y]+"");return!1===function(e,t){var i=t.context;if(!1===t.beforeSend.call(i,e,t))return!1}(p,i)?(p.abort(),!1):(i.timeout>0&&(u=window.setTimeout((function(){p.onreadystatechange=Rl,p.abort(),Ml(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function Pl(e,t,i){var s=i.context,r="success";i.success.call(s,e,r,t),i.promise.resolve(e,r,t),Bl(r,t,i)}function Bl(e,t,i){var s=i.context;i.complete.call(s,t,e)}function Ml(e,t,i,s){var r=s.context;s.error.call(r,i,t,e),s.promise.reject(i,t,e),Bl(t,i,s)}function Fl(e){var t;if(!vl){for(vl={};t=El.exec(Dl);)vl[t[1].toLowerCase()]=t[2];t=vl[e.toLowerCase()]}return null===t?null:t}function Ul(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Ol(e){!Gl(e)||e.data instanceof FormData||!e.processData||(e.data=function(e,t){var i=[];return i.add=function(e,t){this.push(encodeURIComponent(e)+"="+encodeURIComponent(t))},Nl(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=Ul(e.url,e.data))}function Nl(e,t,i,s){var r=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var o in t){var a=t[o];s&&(o=i?s:s+"["+(r?"":o)+"]"),!s&&r?e.add(a.name,a.value):(i?r(a):Gl(a))?Nl(e,a,i,o):e.add(o,a)}}function jl(e){for(var t=Array.prototype.slice,i=t.call(arguments,1),s=0,r=i.length;s255)return!1;return!0}function Hl(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!Vl(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if($l(e.length)&&Vl(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Jl(e){return new Uint8Array(e)}function ql(e,t,i,s,r){null==s&&null==r||(e=e.slice?e.slice(s,r):Array.prototype.slice.call(e,s,r)),t.set(e,i)}Il.get=function(e,t,i,s){return zl(t)&&(s=s||i,i=t,t=void 0),Il({url:e,data:t,success:i,dataType:s})},Il.post=function(e,t,i,s){return zl(t)&&(s=s||i,i=t,t=void 0),Il({type:"POST",url:e,data:t,success:i,dataType:s})},Il.getJSON=function(e,t,i){return zl(t)&&(i=t,t=void 0),Il({url:e,data:t,success:i,dataType:"json"})},Il.ajaxSetup=function(e,t){return t?jl(jl(e,Ll),t):jl(Ll,e)};var Kl={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&s<224?(t.push(String.fromCharCode((31&s)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&s)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},Yl=function(){var e="0123456789abcdef";return{toBytes:function(e){for(var t=[],i=0;i>4]+e[15&r])}return i.join("")}}}(),Ql={16:10,24:12,32:14},Xl=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Zl=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],ed=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],td=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],id=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],sd=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],rd=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],od=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ad=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],nd=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],ld=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],dd=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],hd=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],cd=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],ud=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function pd(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=o[t],this._Kd[e-i][t%4]=o[t];for(var a,n=0,l=r;l>16&255]<<24^Zl[a>>8&255]<<16^Zl[255&a]<<8^Zl[a>>24&255]^Xl[n]<<24,n+=1,8!=r)for(t=1;t>8&255]<<8^Zl[a>>16&255]<<16^Zl[a>>24&255]<<24;for(t=r/2+1;t>2,h=l%4,this._Ke[d][h]=o[t],this._Kd[e-d][h]=o[t++],l++}for(var d=1;d>24&255]^hd[a>>16&255]^cd[a>>8&255]^ud[255&a]},fd.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],s=pd(e),r=0;r<4;r++)s[r]^=this._Ke[0][r];for(var o=1;o>24&255]^id[s[(r+1)%4]>>16&255]^sd[s[(r+2)%4]>>8&255]^rd[255&s[(r+3)%4]]^this._Ke[o][r];s=i.slice()}var a,n=Jl(16);for(r=0;r<4;r++)a=this._Ke[t][r],n[4*r]=255&(Zl[s[r]>>24&255]^a>>24),n[4*r+1]=255&(Zl[s[(r+1)%4]>>16&255]^a>>16),n[4*r+2]=255&(Zl[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(Zl[255&s[(r+3)%4]]^a);return n},fd.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],s=pd(e),r=0;r<4;r++)s[r]^=this._Kd[0][r];for(var o=1;o>24&255]^ad[s[(r+3)%4]>>16&255]^nd[s[(r+2)%4]>>8&255]^ld[255&s[(r+1)%4]]^this._Kd[o][r];s=i.slice()}var a,n=Jl(16);for(r=0;r<4;r++)a=this._Kd[t][r],n[4*r]=255&(ed[s[r]>>24&255]^a>>24),n[4*r+1]=255&(ed[s[(r+3)%4]>>16&255]^a>>16),n[4*r+2]=255&(ed[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(ed[255&s[(r+1)%4]]^a);return n};var md=function(e){if(!(this instanceof md))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new fd(e)};md.prototype.encrypt=function(e){if((e=Hl(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Jl(e.length),i=Jl(16),s=0;sNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},bd.prototype.setBytes=function(e){if(16!=(e=Hl(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},bd.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var vd=function(e,t){if(!(this instanceof vd))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof bd||(t=new bd(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new fd(e)};vd.prototype.encrypt=function(e){for(var t=Hl(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,s=0;s>>2]>>>24-o%4*8&255;t[s+o>>>2]|=a<<24-(s+o)%4*8}else for(var n=0;n>>2]=i[n>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-r%4*8&255;s.push((o>>>4).toString(16)),s.push((15&o).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new d.init(i,t/2)}},u=h.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new d.init(i,t)}},p=h.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},f=n.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,s=this._data,r=s.words,o=s.sigBytes,a=this.blockSize,n=o/(4*a),l=(n=t?e.ceil(n):e.max((0|n)-this._minBufferSize,0))*a,h=e.min(4*l,o);if(l){for(var c=0;c>>2]|=e[r]<<24-r%4*8;t.call(this,s,i)}else t.apply(this,arguments)};s.prototype=e}}(),i.lib.WordArray)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.WordArray,s=e.enc;function r(e){return e<<8&4278255360|e>>>8&16711935}s.Utf16=s.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>16-r%4*8&65535;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var i=e.length,s=[],r=0;r>>1]|=e.charCodeAt(r)<<16-r%2*16;return t.create(s,2*i)}},s.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],o=0;o>>2]>>>16-o%4*8&65535);s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var i=e.length,s=[],o=0;o>>1]|=r(e.charCodeAt(o)<<16-o%2*16);return t.create(s,2*i)}}}(),i.enc.Utf16)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.WordArray;function s(e,i,s){for(var r=[],o=0,a=0;a>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,s=this._map;e.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,n=0;n<4&&o+.75*n>>6*(3-n)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,i=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var o=0;o>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,s=e.sigBytes,r=t?this._safe_map:this._map;e.clamp();for(var o=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(i[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|i[a+2>>>2]>>>24-(a+2)%4*8&255,l=0;l<4&&a+.75*l>>6*(3-l)&63));var d=r.charAt(64);if(d)for(;o.length%4;)o.push(d);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,r=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(r<<24|r>>>8)}var o=this._hash.words,a=e[t+0],l=e[t+1],p=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],y=e[t+6],A=e[t+7],b=e[t+8],v=e[t+9],_=e[t+10],w=e[t+11],S=e[t+12],E=e[t+13],T=e[t+14],k=e[t+15],C=o[0],x=o[1],D=o[2],L=o[3];C=d(C,x,D,L,a,7,n[0]),L=d(L,C,x,D,l,12,n[1]),D=d(D,L,C,x,p,17,n[2]),x=d(x,D,L,C,f,22,n[3]),C=d(C,x,D,L,m,7,n[4]),L=d(L,C,x,D,g,12,n[5]),D=d(D,L,C,x,y,17,n[6]),x=d(x,D,L,C,A,22,n[7]),C=d(C,x,D,L,b,7,n[8]),L=d(L,C,x,D,v,12,n[9]),D=d(D,L,C,x,_,17,n[10]),x=d(x,D,L,C,w,22,n[11]),C=d(C,x,D,L,S,7,n[12]),L=d(L,C,x,D,E,12,n[13]),D=d(D,L,C,x,T,17,n[14]),C=h(C,x=d(x,D,L,C,k,22,n[15]),D,L,l,5,n[16]),L=h(L,C,x,D,y,9,n[17]),D=h(D,L,C,x,w,14,n[18]),x=h(x,D,L,C,a,20,n[19]),C=h(C,x,D,L,g,5,n[20]),L=h(L,C,x,D,_,9,n[21]),D=h(D,L,C,x,k,14,n[22]),x=h(x,D,L,C,m,20,n[23]),C=h(C,x,D,L,v,5,n[24]),L=h(L,C,x,D,T,9,n[25]),D=h(D,L,C,x,f,14,n[26]),x=h(x,D,L,C,b,20,n[27]),C=h(C,x,D,L,E,5,n[28]),L=h(L,C,x,D,p,9,n[29]),D=h(D,L,C,x,A,14,n[30]),C=c(C,x=h(x,D,L,C,S,20,n[31]),D,L,g,4,n[32]),L=c(L,C,x,D,b,11,n[33]),D=c(D,L,C,x,w,16,n[34]),x=c(x,D,L,C,T,23,n[35]),C=c(C,x,D,L,l,4,n[36]),L=c(L,C,x,D,m,11,n[37]),D=c(D,L,C,x,A,16,n[38]),x=c(x,D,L,C,_,23,n[39]),C=c(C,x,D,L,E,4,n[40]),L=c(L,C,x,D,a,11,n[41]),D=c(D,L,C,x,f,16,n[42]),x=c(x,D,L,C,y,23,n[43]),C=c(C,x,D,L,v,4,n[44]),L=c(L,C,x,D,S,11,n[45]),D=c(D,L,C,x,k,16,n[46]),C=u(C,x=c(x,D,L,C,p,23,n[47]),D,L,a,6,n[48]),L=u(L,C,x,D,A,10,n[49]),D=u(D,L,C,x,T,15,n[50]),x=u(x,D,L,C,g,21,n[51]),C=u(C,x,D,L,S,6,n[52]),L=u(L,C,x,D,f,10,n[53]),D=u(D,L,C,x,_,15,n[54]),x=u(x,D,L,C,l,21,n[55]),C=u(C,x,D,L,b,6,n[56]),L=u(L,C,x,D,k,10,n[57]),D=u(D,L,C,x,y,15,n[58]),x=u(x,D,L,C,E,21,n[59]),C=u(C,x,D,L,m,6,n[60]),L=u(L,C,x,D,w,10,n[61]),D=u(D,L,C,x,p,15,n[62]),x=u(x,D,L,C,v,21,n[63]),o[0]=o[0]+C|0,o[1]=o[1]+x|0,o[2]=o[2]+D|0,o[3]=o[3]+L|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;i[r>>>5]|=128<<24-r%32;var o=e.floor(s/4294967296),a=s;i[15+(r+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),i[14+(r+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(i.length+1),this._process();for(var n=this._hash,l=n.words,d=0;d<4;d++){var h=l[d];l[d]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function d(e,t,i,s,r,o,a){var n=e+(t&i|~t&s)+r+a;return(n<>>32-o)+t}function h(e,t,i,s,r,o,a){var n=e+(t&s|i&~s)+r+a;return(n<>>32-o)+t}function c(e,t,i,s,r,o,a){var n=e+(t^i^s)+r+a;return(n<>>32-o)+t}function u(e,t,i,s,r,o,a){var n=e+(i^(t|~s))+r+a;return(n<>>32-o)+t}t.MD5=o._createHelper(l),t.HmacMD5=o._createHmacHelper(l)}(Math),i.MD5)})),Lr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=wd).lib,r=s.WordArray,o=s.Hasher,a=i.algo,n=[],l=a.SHA1=o.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],d=0;d<80;d++){if(d<16)n[d]=0|e[t+d];else{var h=n[d-3]^n[d-8]^n[d-14]^n[d-16];n[d]=h<<1|h>>>31}var c=(s<<5|s>>>27)+l+n[d];c+=d<20?1518500249+(r&o|~r&a):d<40?1859775393+(r^o^a):d<60?(r&o|r&a|o&a)-1894007588:(r^o^a)-899497514,l=a,a=o,o=r<<30|r>>>2,r=s,s=c}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(s+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(l),i.HmacSHA1=o._createHmacHelper(l),d.SHA1)})),Lr((function(e,t){var i;e.exports=(i=wd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=[],l=[];!function(){function t(t){for(var i=e.sqrt(t),s=2;s<=i;s++)if(!(t%s))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var s=2,r=0;r<64;)t(s)&&(r<8&&(n[r]=i(e.pow(s,.5))),l[r]=i(e.pow(s,1/3)),r++),s++}();var d=[],h=a.SHA256=o.extend({_doReset:function(){this._hash=new r.init(n.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=0;p<64;p++){if(p<16)d[p]=0|e[t+p];else{var f=d[p-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=d[p-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;d[p]=m+d[p-7]+y+d[p-16]}var A=s&r^s&o^r&o,b=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),v=u+((n<<26|n>>>6)^(n<<21|n>>>11)^(n<<7|n>>>25))+(n&h^~n&c)+l[p]+d[p];u=c,c=h,h=n,n=a+v|0,a=o,o=r,r=s,s=v+(b+A)|0}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+n|0,i[5]=i[5]+h|0,i[6]=i[6]+c|0,i[7]=i[7]+u|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;return i[r>>>5]|=128<<24-r%32,i[14+(r+64>>>9<<4)]=e.floor(s/4294967296),i[15+(r+64>>>9<<4)]=s,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(h),t.HmacSHA256=o._createHmacHelper(h)}(Math),i.SHA256)})),Lr((function(e,t){var i,s,r,o,a,n;e.exports=(s=(i=n=wd).lib.WordArray,r=i.algo,o=r.SHA256,a=r.SHA224=o.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(a),i.HmacSHA224=o._createHmacHelper(a),n.SHA224)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.Hasher,s=e.x64,r=s.Word,o=s.WordArray,a=e.algo;function n(){return r.create.apply(r,arguments)}var l=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],d=[];!function(){for(var e=0;e<80;e++)d[e]=n()}();var h=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=s.high,f=s.low,m=r.high,g=r.low,y=o.high,A=o.low,b=a.high,v=a.low,_=n.high,w=n.low,S=h.high,E=h.low,T=c.high,k=c.low,C=u.high,x=u.low,D=p,L=f,R=m,I=g,P=y,B=A,M=b,F=v,U=_,O=w,N=S,j=E,G=T,z=k,W=C,$=x,V=0;V<80;V++){var H,J,q=d[V];if(V<16)J=q.high=0|e[t+2*V],H=q.low=0|e[t+2*V+1];else{var K=d[V-15],Y=K.high,Q=K.low,X=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^Y>>>7,Z=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^(Q>>>7|Y<<25),ee=d[V-2],te=ee.high,ie=ee.low,se=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,re=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),oe=d[V-7],ae=oe.high,ne=oe.low,le=d[V-16],de=le.high,he=le.low;J=(J=(J=X+ae+((H=Z+ne)>>>0>>0?1:0))+se+((H+=re)>>>0>>0?1:0))+de+((H+=he)>>>0>>0?1:0),q.high=J,q.low=H}var ce,ue=U&N^~U&G,pe=O&j^~O&z,fe=D&R^D&P^R&P,me=L&I^L&B^I&B,ge=(D>>>28|L<<4)^(D<<30|L>>>2)^(D<<25|L>>>7),ye=(L>>>28|D<<4)^(L<<30|D>>>2)^(L<<25|D>>>7),Ae=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),be=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),ve=l[V],_e=ve.high,we=ve.low,Se=W+Ae+((ce=$+be)>>>0<$>>>0?1:0),Ee=ye+me;W=G,$=z,G=N,z=j,N=U,j=O,U=M+(Se=(Se=(Se=Se+ue+((ce+=pe)>>>0>>0?1:0))+_e+((ce+=we)>>>0>>0?1:0))+J+((ce+=H)>>>0>>0?1:0))+((O=F+ce|0)>>>0>>0?1:0)|0,M=P,F=B,P=R,B=I,R=D,I=L,D=Se+(ge+fe+(Ee>>>0>>0?1:0))+((L=ce+Ee|0)>>>0>>0?1:0)|0}f=s.low=f+L,s.high=p+D+(f>>>0>>0?1:0),g=r.low=g+I,r.high=m+R+(g>>>0>>0?1:0),A=o.low=A+B,o.high=y+P+(A>>>0>>0?1:0),v=a.low=v+F,a.high=b+M+(v>>>0>>0?1:0),w=n.low=w+O,n.high=_+U+(w>>>0>>0?1:0),E=h.low=E+j,h.high=S+N+(E>>>0>>0?1:0),k=c.low=k+z,c.high=T+G+(k>>>0>>0?1:0),x=u.low=x+$,u.high=C+W+(x>>>0<$>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[30+(s+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(s+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(h),e.HmacSHA512=t._createHmacHelper(h)}(),i.SHA512)})),Lr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=wd).x64,r=s.Word,o=s.WordArray,a=i.algo,n=a.SHA512,l=a.SHA384=n.extend({_doReset:function(){this._hash=new o.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=n._createHelper(l),i.HmacSHA384=n._createHmacHelper(l),d.SHA384)})),Lr((function(e,t){var i;e.exports=(i=wd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.x64.Word,n=t.algo,l=[],d=[],h=[];!function(){for(var e=1,t=0,i=0;i<24;i++){l[e+5*t]=(i+1)*(i+2)/2%64;var s=(2*e+3*t)%5;e=t%5,t=s}for(e=0;e<5;e++)for(t=0;t<5;t++)d[e+5*t]=t+(2*e+3*t)%5*5;for(var r=1,o=0;o<24;o++){for(var n=0,c=0,u=0;u<7;u++){if(1&r){var p=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(x=i[r]).high^=a,x.low^=o}for(var n=0;n<24;n++){for(var u=0;u<5;u++){for(var p=0,f=0,m=0;m<5;m++)p^=(x=i[u+5*m]).high,f^=x.low;var g=c[u];g.high=p,g.low=f}for(u=0;u<5;u++){var y=c[(u+4)%5],A=c[(u+1)%5],b=A.high,v=A.low;for(p=y.high^(b<<1|v>>>31),f=y.low^(v<<1|b>>>31),m=0;m<5;m++)(x=i[u+5*m]).high^=p,x.low^=f}for(var _=1;_<25;_++){var w=(x=i[_]).high,S=x.low,E=l[_];E<32?(p=w<>>32-E,f=S<>>32-E):(p=S<>>64-E,f=w<>>64-E);var T=c[d[_]];T.high=p,T.low=f}var k=c[0],C=i[0];for(k.high=C.high,k.low=C.low,u=0;u<5;u++)for(m=0;m<5;m++){var x=i[_=u+5*m],D=c[_],L=c[(u+1)%5+5*m],R=c[(u+2)%5+5*m];x.high=D.high^~L.high&R.high,x.low=D.low^~L.low&R.low}x=i[0];var I=h[n];x.high^=I.high,x.low^=I.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var s=8*t.sigBytes,o=32*this.blockSize;i[s>>>5]|=1<<24-s%32,i[(e.ceil((s+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var a=this._state,n=this.cfg.outputLength/8,l=n/8,d=[],h=0;h>>24)|4278255360&(u<<24|u>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),d.push(p),d.push(u)}return new r.init(d,n)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),i.SHA3)})),Lr((function(e,t){var i;e.exports=(i=wd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),d=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=r.create([0,1518500249,1859775393,2400959708,2840853838]),u=r.create([1352829926,1548603684,1836072691,2053994217,0]),p=a.RIPEMD160=o.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var s=t+i,r=e[s];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,a,p,v,_,w,S,E,T,k,C,x=this._hash.words,D=c.words,L=u.words,R=n.words,I=l.words,P=d.words,B=h.words;for(w=o=x[0],S=a=x[1],E=p=x[2],T=v=x[3],k=_=x[4],i=0;i<80;i+=1)C=o+e[t+R[i]]|0,C+=i<16?f(a,p,v)+D[0]:i<32?m(a,p,v)+D[1]:i<48?g(a,p,v)+D[2]:i<64?y(a,p,v)+D[3]:A(a,p,v)+D[4],C=(C=b(C|=0,P[i]))+_|0,o=_,_=v,v=b(p,10),p=a,a=C,C=w+e[t+I[i]]|0,C+=i<16?A(S,E,T)+L[0]:i<32?y(S,E,T)+L[1]:i<48?g(S,E,T)+L[2]:i<64?m(S,E,T)+L[3]:f(S,E,T)+L[4],C=(C=b(C|=0,B[i]))+k|0,w=k,k=T,T=b(E,10),E=S,S=C;C=x[1]+p+T|0,x[1]=x[2]+v+k|0,x[2]=x[3]+_+w|0,x[3]=x[4]+o+S|0,x[4]=x[0]+a+E|0,x[0]=C},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var r=this._hash,o=r.words,a=0;a<5;a++){var n=o[a];o[a]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}return r},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,i){return e^t^i}function m(e,t,i){return e&t|~e&i}function g(e,t,i){return(e|~t)^i}function y(e,t,i){return e&i|t&~i}function A(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(p),t.HmacRIPEMD160=o._createHmacHelper(p)}(),i.RIPEMD160)})),Lr((function(e,t){var i,s,r;e.exports=(s=(i=wd).lib.Base,r=i.enc.Utf8,void(i.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=r.parse(t));var i=e.blockSize,s=4*i;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),a=this._iKey=t.clone(),n=o.words,l=a.words,d=0;d>>2];e.sigBytes-=t}};s.BlockCipher=h.extend({cfg:h.cfg.extend({mode:p,padding:f}),reset:function(){var e;h.reset.call(this);var t=this.cfg,i=t.iv,s=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=s.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?o.create([1398893684,1701076831]).concat(i).concat(t):t).toString(l)},parse:function(e){var t,i=l.parse(e),s=i.words;return 1398893684==s[0]&&1701076831==s[1]&&(t=o.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:t})}},y=s.SerializableCipher=r.extend({cfg:r.extend({format:g}),encrypt:function(e,t,i,s){s=this.cfg.extend(s);var r=e.createEncryptor(i,s),o=r.finalize(t),a=r.cfg;return m.create({ciphertext:o,key:i,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:s.format})},decrypt:function(e,t,i,s){return s=this.cfg.extend(s),t=this._parse(t,s.format),e.createDecryptor(i,s).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),A=(t.kdf={}).OpenSSL={execute:function(e,t,i,s,r){if(s||(s=o.random(8)),r)a=d.create({keySize:t+i,hasher:r}).compute(e,s);else var a=d.create({keySize:t+i}).compute(e,s);var n=o.create(a.words.slice(t),4*i);return a.sigBytes=4*t,m.create({key:a,iv:n,salt:s})}},b=s.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:A}),encrypt:function(e,t,i,s){var r=(s=this.cfg.extend(s)).kdf.execute(i,e.keySize,e.ivSize,s.salt,s.hasher);s.iv=r.iv;var o=y.encrypt.call(this,e,t,r.key,s);return o.mixIn(r),o},decrypt:function(e,t,i,s){s=this.cfg.extend(s),t=this._parse(t,s.format);var r=s.kdf.execute(i,e.keySize,e.ivSize,t.salt,s.hasher);return s.iv=r.iv,y.decrypt.call(this,e,t,r.key,s)}})}())})),Lr((function(e,t){var i;e.exports=((i=wd).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,s){var r,o=this._iv;o?(r=o.slice(0),this._iv=void 0):r=this._prevBlock,s.encryptBlock(r,0);for(var a=0;a>24&255)){var t=e>>16&255,i=e>>8&255,s=255&e;255===t?(t=0,255===i?(i=0,255===s?s=0:++s):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=s}else e+=1<<24;return e}function s(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var r=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,r=i.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),s(a);var n=a.slice(0);i.encryptBlock(n,0);for(var l=0;l>>2]|=r<<24-o%4*8,e.sigBytes+=r},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Lr((function(e,t){var i;e.exports=((i=wd).pad.Iso10126={pad:function(e,t){var s=4*t,r=s-e.sigBytes%s;e.concat(i.lib.WordArray.random(r-1)).concat(i.lib.WordArray.create([r<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Lr((function(e,t){var i;e.exports=((i=wd).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Lr((function(e,t){var i;e.exports=((i=wd).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Lr((function(e,t){var i;e.exports=((i=wd).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Lr((function(e,t){var i;e.exports=(i=wd,function(e){var t=i,s=t.lib.CipherParams,r=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){var t=r.parse(e);return s.create({ciphertext:t})}}}(),i.format.Hex)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo,r=[],o=[],a=[],n=[],l=[],d=[],h=[],c=[],u=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,s=0;for(t=0;t<256;t++){var f=s^s<<1^s<<2^s<<3^s<<4;f=f>>>8^255&f^99,r[i]=f,o[f]=i;var m=e[i],g=e[m],y=e[g],A=257*e[f]^16843008*f;a[i]=A<<24|A>>>8,n[i]=A<<16|A>>>16,l[i]=A<<8|A>>>24,d[i]=A,A=16843009*y^65537*g^257*m^16843008*i,h[f]=A<<24|A>>>8,c[f]=A<<16|A>>>16,u[f]=A<<8|A>>>24,p[f]=A,i?(i=m^e[e[e[y^m]]],s^=e[e[s]]):i=s=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=s.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,s=4*((this._nRounds=i+6)+1),o=this._keySchedule=[],a=0;a6&&a%i==4&&(d=r[d>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d]):(d=r[(d=d<<8|d>>>24)>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d],d^=f[a/i|0]<<24),o[a]=o[a-i]^d);for(var n=this._invKeySchedule=[],l=0;l>>24]]^c[r[d>>>16&255]]^u[r[d>>>8&255]]^p[r[255&d]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,n,l,d,r)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,h,c,u,p,o),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,s,r,o,a,n){for(var l=this._nRounds,d=e[t]^i[0],h=e[t+1]^i[1],c=e[t+2]^i[2],u=e[t+3]^i[3],p=4,f=1;f>>24]^r[h>>>16&255]^o[c>>>8&255]^a[255&u]^i[p++],g=s[h>>>24]^r[c>>>16&255]^o[u>>>8&255]^a[255&d]^i[p++],y=s[c>>>24]^r[u>>>16&255]^o[d>>>8&255]^a[255&h]^i[p++],A=s[u>>>24]^r[d>>>16&255]^o[h>>>8&255]^a[255&c]^i[p++];d=m,h=g,c=y,u=A}m=(n[d>>>24]<<24|n[h>>>16&255]<<16|n[c>>>8&255]<<8|n[255&u])^i[p++],g=(n[h>>>24]<<24|n[c>>>16&255]<<16|n[u>>>8&255]<<8|n[255&d])^i[p++],y=(n[c>>>24]<<24|n[u>>>16&255]<<16|n[d>>>8&255]<<8|n[255&h])^i[p++],A=(n[u>>>24]<<24|n[d>>>16&255]<<16|n[h>>>8&255]<<8|n[255&c])^i[p++],e[t]=m,e[t+1]=g,e[t+2]=y,e[t+3]=A},keySize:8});e.AES=t._createHelper(m)}(),i.AES)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib,s=t.WordArray,r=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],n=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var s=a[i]-1;t[i]=e[s>>>5]>>>31-s%32&1}for(var r=this._subKeys=[],o=0;o<16;o++){var d=r[o]=[],h=l[o];for(i=0;i<24;i++)d[i/6|0]|=t[(n[i]-1+h)%28]<<31-i%6,d[4+(i/6|0)]|=t[28+(n[i+24]-1+h)%28]<<31-i%6;for(d[0]=d[0]<<1|d[0]>>>31,i=1;i<7;i++)d[i]=d[i]>>>4*(i-1)+3;d[7]=d[7]<<5|d[7]>>>27}var c=this._invSubKeys=[];for(i=0;i<16;i++)c[i]=r[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),u.call(this,1,1431655765);for(var s=0;s<16;s++){for(var r=i[s],o=this._lBlock,a=this._rBlock,n=0,l=0;l<8;l++)n|=d[l][((a^r[l])&h[l])>>>0];this._lBlock=a,this._rBlock=o^n}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(s.create(t)),this._des2=c.createEncryptor(s.create(i)),this._des3=c.createEncryptor(s.create(r))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=r._createHelper(f)}(),i.TripleDES)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=s.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,s=this._S=[],r=0;r<256;r++)s[r]=r;r=0;for(var o=0;r<256;r++){var a=r%i,n=t[a>>>2]>>>24-a%4*8&255;o=(o+s[r]+n)%256;var l=s[r];s[r]=s[o],s[o]=l}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,i=this._j,s=0,r=0;r<4;r++){i=(i+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[i],e[i]=o,s|=e[(e[t]+e[i])%256]<<24-8*r}return this._i=t,this._j=i,s}e.RC4=t._createHelper(r);var a=s.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),i.RC4)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var s=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)l.call(this);for(i=0;i<8;i++)r[i]^=s[i+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(r[0]^=d,r[1]^=c,r[2]^=h,r[3]^=u,r[4]^=d,r[5]^=c,r[6]^=h,r[7]^=u,i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(n)}(),i.Rabbit)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var r=0;r<4;r++)l.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(s[0]^=d,s[1]^=c,s[2]^=h,s[3]^=u,s[4]^=d,s[5]^=c,s[6]^=h,s[7]^=u,r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(n)}(),i.RabbitLegacy)})),Lr((function(e,t){var i;e.exports=(i=wd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function l(e,t){let i=t>>24&255,s=t>>16&255,r=t>>8&255,o=255&t,a=e.sbox[0][i]+e.sbox[1][s];return a^=e.sbox[2][r],a+=e.sbox[3][o],a}function d(e,t,i){let s,o=t,a=i;for(let t=0;t1;--t)o^=e.pbox[t],a=l(e,o)^a,s=o,o=a,a=s;return s=o,o=a,a=s,a^=e.pbox[1],o^=e.pbox[0],{left:o,right:a}}function c(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=a[t][i]}let s=0;for(let a=0;a=i&&(s=0);let n=0,l=0,h=0;for(let t=0;t>>2]|=e[i]<<24-i%4*8;return Sd.lib.WordArray.create(t,e.length)}const kd=16,Cd=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],xd=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function Dd(e){const t=[];for(let i=0,s=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Rd(e){const t=[];for(let i=0,s=e.length;i>>6),t.push(128|63&s);else if(s<=55295||s>=57344&&s<=65535)t.push(224|s>>>12),t.push(128|s>>>6&63),t.push(128|63&s);else{if(!(s>=65536&&s<=1114111))throw t.push(s),new Error("input is not supported");i++,t.push(240|s>>>18&28),t.push(128|s>>>12&63),t.push(128|s>>>6&63),t.push(128|63&s)}}return t}function Id(e){const t=[];for(let i=0,s=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}function Pd(e,t){const i=31&t;return e<>>32-i}function Bd(e){return(255&Cd[e>>>24&255])<<24|(255&Cd[e>>>16&255])<<16|(255&Cd[e>>>8&255])<<8|255&Cd[255&e]}function Md(e){return e^Pd(e,2)^Pd(e,10)^Pd(e,18)^Pd(e,24)}function Fd(e){return e^Pd(e,13)^Pd(e,23)}function Ud(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[4*t],r[1]=255&e[4*t+1],r[2]=255&e[4*t+2],r[3]=255&e[4*t+3],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];for(let e,t=0;t<32;t+=4)e=s[1]^s[2]^s[3]^i[t+0],s[0]^=Md(Bd(e)),e=s[2]^s[3]^s[0]^i[t+1],s[1]^=Md(Bd(e)),e=s[3]^s[0]^s[1]^i[t+2],s[2]^=Md(Bd(e)),e=s[0]^s[1]^s[2]^i[t+3],s[3]^=Md(Bd(e));for(let e=0;e<16;e+=4)t[e]=s[3-e/4]>>>24&255,t[e+1]=s[3-e/4]>>>16&255,t[e+2]=s[3-e/4]>>>8&255,t[e+3]=255&s[3-e/4]}function Od(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[0+4*t],r[1]=255&e[1+4*t],r[2]=255&e[2+4*t],r[3]=255&e[3+4*t],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];s[0]^=2746333894,s[1]^=1453994832,s[2]^=1736282519,s[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=s[1]^s[2]^s[3]^xd[i+0],t[i+0]=s[0]^=Fd(Bd(e)),e=s[2]^s[3]^s[0]^xd[i+1],t[i+1]=s[1]^=Fd(Bd(e)),e=s[3]^s[0]^s[1]^xd[i+2],t[i+2]=s[2]^=Fd(Bd(e)),e=s[0]^s[1]^s[2]^xd[i+3],t[i+3]=s[3]^=Fd(Bd(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function Nd(e,t,i){let{padding:s="pkcs#7",mode:r,iv:o=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===r&&("string"==typeof o&&(o=Dd(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Dd(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Rd(e):Dd(e):[...e],("pkcs#5"===s||"pkcs#7"===s)&&0!==i){const t=kd-e.length%kd;for(let i=0;i=kd;){const t=e.slice(c,c+16),s=new Array(16);if("cbc"===r)for(let e=0;ee.length&&s+r<=i.length?e.length-t:s+r>i.length&&t+r<=e.length?i.length-s:t+r<=e.length&&s+r<=i.length?r:i.length>24&255,e>>16&255,e>>8&255,255&e)}function Kd(e,t){return t+3>>19)^(s<<23|s>>>9)}function Xd(e,t){var i=new Array(36);i[0]=Kd(t,0),i[1]=Kd(t,4),i[2]=Kd(t,8),i[3]=Kd(t,12);for(var s=0;s<32;s++)i[s+4]=i[s]^Zd(i[s+1]^i[s+2]^i[s+3]^e[s]);var r=new Array(4);for(s=35;s>=32;s--)r[35-s]=i[s];var o=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(s<<10|s>>>22)^(s<<18|s>>>14)^(s<<24|s>>>8)}function eh(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var s=Yd(e),r=Math.ceil(i.length/16),o=new Array(i.length),a=t.slice(),n=0;ne)return this.preDelayTimestamp-e>1e3&&this.player.debug.warn("CommonDemux",`getDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return ${this.delay}`),this.preDelayTimestamp=e,this.delay;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;t>=i?(this.isStreamTsMoreThanLocal=!1,this.delay=t-i):(this.isStreamTsMoreThanLocal=!0,this.delay=i-t)}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.preDelayTimestamp=e,this.delay}getDelayNotUpdateDelay(e,t){if(!e||!this.player.isDemuxDecodeFirstIIframeInit())return-1;if(t===Ue)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debug.warn("CommonDemux",`getDelayNotUpdateDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return -1`),-1;if(this.firstTimestamp){let t=-1;if(e){const i=Date.now()-this.startTimestamp,s=e-this.firstTimestamp;t=i>=s?i-s:s-i}return t}return-1}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}resetAllDelay(){this.resetDelay(),this.preDelayTimestamp=null}initInterval(){this.player.isUseHls265()?this.player.debug.log("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(A)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debug.log("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debug.log("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{if(this.player.isDestroyedOrClosed())return;let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debug.warn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debug.log("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}updateHistoryIntervalDiffTimeList(e){this.historyIntervalDiffTimeList.length>5&&this.historyIntervalDiffTimeList.shift(),this.historyIntervalDiffTimeList.push(e)}isHistoryIntervalDiffTimeAllLarge(){if(this.historyIntervalDiffTimeList.length<5)return!1;for(let e=0;e{let e=null;this.bufferList.length&&(e=this.bufferList.shift(),this._doDecoderDecode(e))};e();const t=Math.ceil(1e3/(this.playbackStreamFps*this.player.getPlaybackRate()));this.player.debug.log("CommonDemux",`initPlaybackCacheLoop() and fragDuration is ${t}, playbackStreamFps is ${this.playbackStreamFps}, playbackRate is ${this.player.getPlaybackRate()}`),this.stopId=setInterval(e,t)}_loop(){let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay,s=this.player._opt.playType===v;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debug.warn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debug.warn("CommonDemux",`_loop is dropping and data.ts is ${e.ts}, data.type is ${e.type}, data.isIFrame is ${e.isIFrame}, delay is ${this.delay} ,buffer list is ${this.bufferList.length}`);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift();const t=this.getDelayNotUpdateDelay(e.ts,e.type);e.isIFrame&&t<=this.getNotDroppingDelayTs()&&(this.player.debug.log("CommonDemux",`_loop data isIFrame is true and delay is ${this.delay}`),this.dropping=!1,this._doDecoderDecode(e),this._decodeNext(e))}else if(this.player.isPlayback()||this.player.isPlayUseMSE()||0===t)for(;this.bufferList.length;)e=this.bufferList.shift(),this._doDecoderDecode(e);else if(e=this.bufferList[0],-1===this.getDelay(e.ts,e.type))this.player.debug.log("CommonDemux",`delay is -1 and data.ts is ${e.ts} data.type is ${e.type}`),this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e);else if(this.delay>i+t&&s)this.hasIframeInBufferList()?(this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay}, set dropping is true`),this.resetAllDelay(),this.dropping=!0,this.player.updateStats({isDropping:!0})):(this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e));else for(;this.bufferList.length;){if(e=this.bufferList[0],!(this.getDelay(e.ts,e.type)>t)){this.delay<0&&this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debug.log("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;const o=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};this.player.isPlayer()?(t===Oe&&o._opt.playType===v&&this.calcNetworkDelay(i),o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===Oe&&(a.isIFrame=s),this.pushBuffer(e,a)):t===Oe?o.decoderWorker&&o.decoderWorker.decodeVideo(e,i,s):t===Ue&&o._opt.hasAudio&&o.decoderWorker&&o.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===Oe&&(a.isIFrame=s),this.player.isPlaybackOnlyDecodeIFrame()?t===Oe&&s&&this.pushBuffer(e,a):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,a):this.pushBuffer(e,a,!1))}_doDecodeByHls(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=!1;if(t===Ue&&Ur(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),o=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let a=!1;if(t===Oe&&s&&ma(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&ya(a)&&ya(o)&&this.handleRecording(e,t,i,s,r),t===Oe?this._doDecoderDecode({ts:i,cts:r,payload:e,type:Oe,isIFrame:s}):t===Ue&&this._doDecoderDecode({ts:i,payload:e,type:Ue})}_doDecodeByFmp4(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByTs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByPs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const s=i.ts-t,r=e.type===Oe&&i.type===Ue,o=e.type===Oe&&ma(e.payload);(s<=20||r||o)&&(this.player.debug.log("CommonDemux",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n diff is ${s} and isVideoAndNextAudio is ${r} and isVideoSqeHeader is ${o}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:s}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Ue?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?s.decodeAudio(e.payload,e.ts):t._opt.useWCS&&t._opt.wcsDecodeAudio?i.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===Oe&&(t._opt.isEmitSEI&&this.findSei(e.payload,e.ts),t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t._opt.useMSE?s.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s=this.player._opt.videoBuffer,r=this.player._opt.videoBufferDelay,o=this.player.isPlayer();if(t.type===Ue&&Ur(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() audio ts is ${t.ts}, isAacCodecPacket is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Ue})}else if(t.type===Oe&&t.isIFrame&&ma(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() video ts is ${t.ts}, isVideoSequenceHeader is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Oe,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),o){if(t.type===Oe){if(this.preTimestampDuration>0){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debug.log("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${this.preTimestamp},\n diff is ${e} and preTsDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(null!==this.preTimestamp&&this.preTimestamp>=t.ts&&(this.player.debug.warn("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts} less than (or equal) preTs is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.preTimestamp-t.ts>Z&&(this.player.debug.warn("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${this.preTimestamp-t.ts} more than 3600000\n and resetAllDelay()`),this.resetAllDelay()),this.player._opt.isDropSameTimestampGop&&ya(t.isIFrame)&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=ya(this.isPushDropping);return this.player.debug.log("CommonDemux",`pushBuffer(), isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next drop buffer`),void(e&&t?this.dropBuffer$2():this.clearBuffer(!0))}this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=r+s;this.player._opt.useMSE?this.delay>0&&e>i&&this.delay ${r+s}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.delay>0&&e>i&&this.delay ${r+s},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&ya(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()))}}if(i?t.type===Ue?this.bufferList.push({ts:t.ts,payload:e,type:Ue}):t.type===Oe&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:Oe,isIFrame:t.isIFrame}):t.type===Oe?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:Oe,isIFrame:t.isIFrame}):t.type===Ue&&this._doDecoderDecode({ts:t.ts,payload:e,type:Ue}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&(Io(this.playbackStreamVideoFps)||Io(this.playbackStreamAudioFps))){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if(Io(this.playbackStreamVideoFps)&&(e=la(this.bufferList,Oe),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,ya(this.player._opt.hasAudio)&&(this.player.debug.log(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),Io(this.playbackStreamAudioFps)&&(t=la(this.bufferList,Ue),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),Io(this.playbackStreamVideoFps)&&Io(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debug.log("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${this.bufferList.length} and ts list is ${JSON.stringify(i)}`)}const i=this.getAudioBufferLength()>0,s=i?60:40;this.bufferList.length>=s&&(this.debug.warn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${s}, and hasAudio is ${i} an set streamFps is 25`),this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),i?(this.playbackStreamAudioFps=25,this.playbackStreamFps=this.playbackStreamVideoFps+this.playbackStreamAudioFps):this.playbackStreamFps=this.playbackStreamVideoFps,this.initPlaybackCacheLoop())}}}dropBuffer$2(){if(this.bufferList.length>0){let e=this.bufferList.findIndex((e=>ga(e.isIFrame)&&e.type===Oe));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debug.log("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${this.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){this.isPushDropping=!0,this.player.updateStats({isDropping:!0});const t=this.bufferList.length;this.bufferList=this.bufferList.slice(e);const i=this.bufferList.shift();this.resetAllDelay(),this.getDelay(i.ts,i.type),this._doDecoderDecode(i),this.isPushDropping=!1,this.player.debug.log("CommonDemux",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,and new bufferList length is ${this.bufferList.length} and new delay is ${this.delay} `)}else this.isPushDropping=!1}0===this.bufferList.length&&(this.isPushDropping=!1)}clearBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.player.debug.log("CommonDemux",`clearBuffer,buffer length is ${this.bufferList.length}, need clear is ${e} and _opt.checkFirstIFrame is ${this.player._opt.checkFirstIFrame}`),e&&(this.bufferList=[]),this.player.isPlayer()&&(this.resetAllDelay(),ga(this.player._opt.checkFirstIFrame)&&(this.dropping=!0,this.player.updateStats({isDropping:!0}))),this.player.decoderCheckFirstIFrame()}calcNetworkDelay(e){if(!(this.player.isDemuxDecodeFirstIIframeInit()&&e>0))return;null===this.bufferStartDts?(this.bufferStartDts=e,this.bufferStartLocalTs=so()):et?i-t:0;s>this.player._opt.networkDelay&&this.player._opt.playType===v&&(this.player.debug.warn("CommonDemux",`delay is more than networkDelay and now dts:${e},start dts is ${this.bufferStartDts}, vs start is ${t},local diff is ${i} ,delay is ${s}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(ot.networkDelayTimeout,s)),this.player.updateStats({netBuf:s})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===Oe&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===Ue&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===Oe&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===Oe&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=4;Bo(this.nalUnitSize)&&(s=this.nalUnitSize);const r=Qr(e.slice(5),s);if(ya(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===vt)}r.forEach((e=>{const s=i?e[0]>>>1&63:31&e[0];(i&&(s===Kt||s===qt)||ya(i)&&s===Rt)&&this.player.emit(ot.videoSEI,{ts:t,data:e})}))}handleRecording(e,t,i,s,r){if(this.player.isRecordTypeFlv()){const s=new Uint8Array(e);t===Oe?this.player.recorder.addVideo(s,i):t===Ue&&this.player.recorder.addAudio(s,i)}else if(this.player.isRecordTypeMp4()){const o=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===Oe)this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r);else if(t===Ue){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(Or(t)?t.slice(2):t.slice(1),i)}}else t===Oe&&this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===At;this.nalUnitSize=function(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}(e,i),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=this.player,s=e;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=e.slice(o+4+2,o+4+a);let r=new _d.ModeOfOperation.ctr(t,new _d.Counter(i));const n=r.decrypt(s);r=null,e.set(n,o+4+2)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===At):i.debug.warn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else i.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${i._opt.cryptoKey&&i._opt.cryptoKey.byteLength} or cryptoIV.length is ${i._opt.cryptoIV&&i._opt.cryptoIV.byteLength} null`);else if(i._opt.isSm4Crypto)if(i._opt.sm4CryptoKey){const t=this.player.video.getVideoInfo().encTypeCode===At,r=this.player._opt.isSm4CryptoH265V2;s=i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0?function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const o=e.byteLength;let a=5;for(;ao)break;let l=e[a+4],d=!1,h=2;if(s?(r&&(h=3),l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const s=eh(t,i,e.slice(a+4+h,a+4+n));e.set(s,a+4+h)}a=a+4+n}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t,r):function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=new Uint8Array(e.slice(0,5)),a=5;for(;ar){const t=new Uint8Array(o.length+e.length-a);t.set(o,0),t.set(e.slice(a),o.length),o=t;break}let d=e[a+4],h=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,h=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,h=1===d||5===d),h){const i=Nd(e.slice(a+4+c,a+4+l),t,0,{padding:"none",output:"array"});let s=i[i.length-1];if(s>0&&s<16){let e=!0;for(let t=1;t<=s;t++)if(i[i.length-t]!==s){e=!1;break}e&&i.splice(i.length-s,s)}const r=new Uint8Array(c);r.set(e.slice(a+4,a+4+c),0);const n=Xr(nl(r,new Uint8Array(i))),d=new Uint8Array(o.length+n.length);d.set(o,0),d.set(n,o.length),o=d}else{const t=e.slice(a+4,a+4+l),i=new Uint8Array(o.length+4+t.length);i.set(o,0),i.set(n,o.length),i.set(t,o.length+4),o=i}a=a+4+l}return o}(e,i._opt.sm4CryptoKey,t,r)}else i._opt.sm4CryptoKey||i.debug.error(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(i._opt.isXorCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=Gd(e.slice(o+4,o+4+a),t,i);e.set(s,o+4)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===At)}else i.debug.error(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return s}cryptoPayloadAudio(e){let t=this.player;if(ya(t._opt.isCryptoAudio))return e;let i=e;if(t._opt.isM7sCrypto)if(t._opt.cryptoKey&&t._opt.cryptoKey.byteLength>0&&t._opt.cryptoIV&&t._opt.cryptoIV.byteLength>0){e[0]>>4===_t&&(i=function(e,t,i){if(e.byteLength<=30)return e;const s=e.slice(32);let r=new _d.ModeOfOperation.ctr(t,new _d.Counter(i));const o=r.decrypt(s);return r=null,e.set(o,32),e}(e,t._opt.cryptoKey,t._opt.cryptoIV))}else t.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${t._opt.cryptoKey&&t._opt.cryptoKey.byteLength} or cryptoIV.length is ${t._opt.cryptoIV&&t._opt.cryptoIV.byteLength} null`);return i}_decodeEnhancedH265Video(e,t){const i=e[0],s=48&i,r=15&i,o=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),l="a"==String.fromCharCode(o[0]);if(r===ar){if(s===dr){const t=e.slice(5);if(l);else{const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this.updateNalUnitSize(e),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,Oe,0,!0,0)}}}else if(r===nr){let i=e,r=0;const o=s===dr;if(o&&this.calcIframeIntervalTimestamp(t),l);else{n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=Qn(e.slice(8),o),i=this.cryptoPayload(i,o),this._doDecode(i,Oe,t,o,r)}}else if(r===lr){const i=s===dr,r=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let o=Qn(r,i);o=this.cryptoPayload(o,i),this._doDecode(o,Oe,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}var ih=function(e,t,i,s){return new(i||(i=Promise))((function(r,o){function a(e){try{l(s.next(e))}catch(e){o(e)}}function n(e){try{l(s.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,n)}l((s=s.apply(e,t||[])).next())}))};const sh=Symbol(32),rh=Symbol(16),oh=Symbol(8);class ah{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return ih(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var s;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(s=this.pull)||void 0===s||s.call(this,e)}))}))}readU32(){return this.read(sh)}readU16(){return this.read(rh)}readU8(){return this.read(oh)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const s=e=>t.length<(i=e);if("number"==typeof this.need){if(s(this.need))return;e=t.subarray(0,i)}else if(this.need===sh){if(s(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===rh){if(s(2))return;e=t[0]<<8|t[1]}else if(this.need===oh){if(s(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(s(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}ah.U32=sh,ah.U16=rh,ah.U8=oh;class nh extends th{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new ah(this.demux()),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input=null,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debug.warn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),s=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const o=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield o).slice();if(!s)return;switch(r){case Ne:if(s._opt.hasAudio&&(s.updateStats({abps:n.byteLength}),n.byteLength>0)){let e=this.cryptoPayloadAudio(n);this._doDecode(e,Ue,a)}break;case je:if(s._opt.hasVideo&&n.length>=6){let e=a;s.updateStats({vbps:n.byteLength,dts:e}),s._times.demuxStart||(s._times.demuxStart=so());const t=n[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(n,e);else{const e=15&t;let s=(t>>4&15)===xs;const r=e===At,o=e===yt;if(ya(r||o))return void this.player.debug.warn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);ya(s)&&ga(Ca(n,r))&&(this.player.debug.log(this.TAG_NAME,"demux() isIFrame is false and unit type is IDR and update to true"),s=!0),s&&(this.calcIframeIntervalTimestamp(a),null===this.nalUnitSize&&ma(n)&&this.updateNalUnitSize(n)),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let l=i[0],d=this.cryptoPayload(n,s);this._doDecode(d,Oe,a,s,l)}}else n.length<6&&s.debug.warn(this.TAG_NAME,`payload.length is ${n.length} less than 6 and ignore`);break;case Ge:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(n);this.player.recorder.addMetaData(e)}const e=Al(n);e&&e.onMetaData&&s.updateMetaData(e.onMetaData);break;default:s.debug.log(this.TAG_NAME,`demux() type is ${r}`)}}}close(){this.input=null}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}}class lh extends th{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),s=i.getUint8(0),r=i.getUint32(1,!1),o=new ArrayBuffer(4),a=new Uint32Array(o);switch(s){case Ue:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case Oe:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=so()),i.byteLength>=11){const o=new Uint8Array(e,5);let n=r;t.updateStats({vbps:o.byteLength,dts:n});const l=o[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(o,r);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(r),a[0]=o[4],a[1]=o[3],a[2]=o[2],a[3]=0;let t=a[0],n=this.cryptoPayload(o,e);this._doDecode(n,s,r,e,t)}}else this.player.debug.warn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class dh extends nh{constructor(e){super(e),e.debug.log("WebTransportDemux","init")}destroy(){this.player.debug.log("WebTransportDemux","destroy"),super.destroy()}}var hh,ch=Lr((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),uh=(hh=ch)&&hh.__esModule&&Object.prototype.hasOwnProperty.call(hh,"default")?hh.default:hh;class ph{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>s,o=8-s;if(o>=e)return i&&(this.index+=e),r>>o-e;{i&&(this.index+=o);const s=e-o;return r<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class fh extends th{constructor(e){super(e),uh(this,"TAG_NAME","NakedFlowDemux"),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);if(this.player._opt.nakedFlowDemuxUseNew){const e=this.extractNALu$3(t);this.handleVideoFrames(e)}else this.extractNALu$2(t)}addNaluToBuffer(e){const t=e.byteLength+this.tempNaluBufferList.byteLength,i=new Uint8Array(t);i.set(this.tempNaluBufferList,0),i.set(e,this.tempNaluBufferList.byteLength),this.tempNaluBufferList=i}downloadNakedFlowFile(){const e=new Blob([this.tempNaluBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".h264",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadTempNalu",e)}}getNaluDts(){const e=this.player._opt.nakedFlowFps;return this.localDts=this.localDts+parseInt(1e3/e,10),this.localDts}getNaluAudioDts(){const e=this.player.audio.audioContext.sampleRate,t=this.player.audio.audioBufferSize;return this.localDts+parseInt(t/e*1e3)}extractNALu(e){let t,i,s=0,r=e.byteLength,o=0,a=[];for(;s1)for(let e=0;e{const t=On(e);t===Ct||t===kt?this.handleVideoH264Nalu(e):jn(t)&&s.push(e)})),1===s.length)this.handleVideoH264Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=On(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===vt)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((e=>{const t=Xn(e);t===Vt||t===Wt||t===Gt?this.handleVideoH265Nalu(e):Zn(t)&&s.push(e)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=Xn(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{Xn(t)===Vt?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debug.warn(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{Nn(On(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=Xn(e);t===Jt?this.extractH265SEI(e):this.handleVideoH265Nalu(e)}))}extractH264SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH264Nalu(e)}))}extractH265SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH265Nalu(e)}))}handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i}handleAudioAACNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Et.AAC);let t=new Uint8Array(e);const i=t.slice(0,7);if(t=t.slice(7),!this.isSendAACSeqHeader){const e=(192&i[2])>>6,t=(60&i[2])>>2,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,Ue,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(t.length+2);r.set([175,1],0),r.set(t,2),this._doDecode(r,Ue,s,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Et.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([114],0),s.set(t,1),this._doDecode(s,Ue,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Et.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([130],0),s.set(t,1),this._doDecode(s,Ue,i,!1,0)}handleVideoH264Nalu(e){const t=On(e);switch(t){case kt:this.sps=e;break;case Ct:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Fn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Oe,t,!0,0),this.sps=null,this.pps=null}if(jn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=so());const i=Gn(t),s=this.getNaluDts(),r=function(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Oe,s,i,0)}else this.player.debug.warn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Fn({sps:this.sps,pps:this.pps});this._doDecode(e,Oe,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=so());const i=this.getNaluDts(),s=Un(e.reduce(((e,t)=>{const i=Xr(e),s=Xr(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Oe,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=Xn(e);switch(t){case Gt:this.vps=e;break;case Wt:this.sps=e;break;case Vt:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=Yn({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Oe,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(Zn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=so());const i=el(t),s=this.getNaluDts(),r=function(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Oe,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Yn({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,Oe,0,!0,0),this.vps=null,this.sps=null,this.pps=null}}handleVideoH265NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=so());const i=this.getNaluDts(),s=Qn(e.reduce(((e,t)=>{const i=Xr(e),s=Xr(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Oe,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,s,r){this.player.updateStats({vbps:e.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,Oe,i,s,r)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}handleVideoFrames(e){if(!this.streamVideoType)for(let t of e)if(this.streamVideoType=sa(t),this.streamVideoType)break;this.streamVideoType&&(this.streamVideoType===bt?this.handleVideoH264Frames(e):this.streamVideoType===vt&&this.handleVideoH265Frames(e))}handleVideoH264Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=On(a);let n=!1,l=e===Lt;e!==Dt&&e!==Lt||(o=this.parseVideo264Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ct:this.pps=e;break;case kt:this.sps=e;break;case Rt:r=e}if(jn(t)){const t=Xr(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Fn({sps:this.sps,pps:this.pps});this._doDecode(e,Oe,0,!0,0),this.sps=null,this.pps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Fn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Oe,t,!0,0),this.sps=null,this.pps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=so());const e=this.getNaluDts(),t=Un(s,i);this.player._opt.isEmitSEI&&this.player.emit(ot.videoSEI,{ts:e,data:r}),this._preDoDecode(t,Oe,e,i,0)}}}))}handleVideoH265Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=Xn(a);let n=!1,l=el(e);Zn(e)&&(o=this.parseVideo265Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case Vt:this.pps=e;break;case Wt:this.sps=e;break;case Gt:this.vps=e}if(Zn(t)){const t=Xr(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps&&this.vps){this.isSendSeqHeader=!0;const e=Yn({sps:this.sps,pps:this.pps,vps:this.vps});this._doDecode(e,Oe,0,!0,0),this.sps=null,this.pps=null,this.vps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps&&this.vps){const e=Yn({sps:this.sps,pps:this.pps,vps:this.vps}),t=this.localDts;this._doDecode(e,Oe,t,!0,0),this.sps=null,this.pps=null,this.vps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=so());const e=this.getNaluDts(),t=Qn(s,i);this.player._opt.isEmitSEI&&this.player.emit(ot.videoSEI,{ts:e,data:null}),this._preDoDecode(t,Oe,e,i,0)}}}))}handleVideoH265Frames_1(e){e.forEach((e=>{this.handleVideoNalu(e)}))}parseVideo264Header(e){const t=new ph(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}}parseVideo265Header(e){const t=new ph(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}}class mh extends th{constructor(e){super(e),this.player=e,e.debug.log("EmptyDemux","init")}destroy(){super.destroy(),this.player.debug.log("EmptyDemux","destroy")}}var gh=Lr((function(e,t){var s,r,o,a=(s=new Date,r=4,o={setLogLevel:function(e){r=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=r&&console.debug("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)}},o);a.getDurationString=function(e,t){var i;function s(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+a.getDurationString(e.start(s))+","+a.getDurationString(e.end(s))+"]";return i}return"(empty)"},t.Log=a;var n=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=t}}},l.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},l.BIG_ENDIAN=!1,l.LITTLE_ENDIAN=!0,l.prototype._byteLength=0,Object.defineProperty(l.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(l.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(l.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(l.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),l.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},l.prototype.isEof=function(){return this.position>=this._byteLength},l.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},l.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},l.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},l.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},l.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,l.memcpy=function(e,t,i,s,r){var o=new Uint8Array(e,t,r),a=new Uint8Array(i,s,r);o.set(a)},l.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},l.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},l.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;ir;s--,r++){var o=t[r];t[r]=t[s],t[s]=o}return e},l.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},l.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},l.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},l.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},l.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var h=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(h.prototype=new l(new ArrayBuffer,0,l.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},h.prototype.reduceBuffer=function(e,t,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(e,t,i)),s.buffer.fileStart=e.fileStart+t,s.buffer.usedBytes=0,s.buffer},h.prototype.insertBuffer=function(e){for(var t=!0,i=0;is.byteLength){this.buffers.splice(i,1),i--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=s.fileStart||(e=this.reduceBuffer(e,0,s.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,r,o)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},h.prototype.logBufferLevel=function(e){var t,i,s,r,o,n=[],l="";for(s=0,r=0,t=0;t0&&(l+=o.end-1+"]");var d=e?a.info:a.debug;0===this.buffers.length?d("MultiBufferStream","No more buffer in memory"):d("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+s+"/"+r+" bytes), continuous ranges: "+l)},h.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},h.prototype.findPosition=function(e,t,i){var s,r=null,o=-1;for(s=!0===e?0:this.bufferIndex;s=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},h.prototype.findEndContiguousBuf=function(e){var t,i,s,r=void 0!==e?e:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(t=r+1;t>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=c;var u={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){u.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){u.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,s){u.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=s},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(a.error("BoxParser","Box of type '"+h+"' has a size "+d+" greater than its container size "+i),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):0!==d&&n+d>e.getEndPosition()?(e.seek(n),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):t?{code:u.OK,type:h,size:d,hdr_size:l,start:n}:(u[h+"Box"]?s=new u[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(s=new u.Box(h,d)).has_unparsed_data=!0):u.UUIDBoxes[o]?s=new u.UUIDBoxes[o](d):(a.warn("BoxParser","Unknown uuid type: '"+o+"'"),(s=new u.Box(h,d)).uuid=o,s.has_unparsed_data=!0),s.hdr_size=l,s.start=n,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(a.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(e)),s.parse(e),(r=e.getPosition()-(s.start+s.size))<0?(a.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),e.seek(s.start+s.size)):r>0&&(a.error("BoxParser","Parsing of box '"+c+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&e.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),u.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),u.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),u.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),u.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),u.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|s>>5&7})),u.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|o>>4&15,s.acmod=o>>1&7,s.lfeon=1&o,s.num_dep_sub=a>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&a)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var s=e.readUint8(),r=Math.min(127&s,i.length-1);if(r?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[r]),128&s)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),u.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),u.createBoxCtor("hvcC",(function(e){var t,i,s,r;this.configurationVersion=e.readUint8(),r=e.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),r=e.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,a.nalu_type=63&r;var n=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var s=0;s>7,this.axis=1&t})),u.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),u.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&o)<<8|e.readUint8():a.property_index=127&o}}})),u.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=e.readString(4);break;case 1:s.grouping_type=e.readString(4),s.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),p.prototype.toString=function(){return"("+this.x+","+this.y+")"},u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new p(e.readUint16(),e.readUint16()),this.display_primaries[1]=new p(e.readUint16(),e.readUint16()),this.display_primaries[2]=new p(e.readUint16(),e.readUint16()),this.white_point=new p(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),u.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),u.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(s))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),s=0;s>7,this.num_leading_samples=127&t})),u.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=u.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),u.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[s]=t>>4&3,this.sample_is_depended_on[s]=t>>2&3,this.sample_has_redundancy[s]=3&t})),u.createFullBoxCtor("senc"),u.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=e.readUint32(),r=e.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&s}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=u.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),s=0;s>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,i,s={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(s.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var a=s.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++i)s.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=u.decimalToHex(s,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var r=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||r)&&(o="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,r=!0);t+=o}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var s,r=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,r.push(o),o&&(s=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===s)i=".CA";else{i=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,l=0;for(e=0;e<=s;++e)for(n=n<<8|r[e],l+=8;l>=5;){i+=a[n>>l-5&31],n&=(1<<(l-=5))-1}l&&(i+=a[31&(n<<=5-l)])}}t+=i}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(i?"."+i:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},u.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},u.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof u.Box||t[i]instanceof u.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},y.prototype.setExtractionOptions=function(e,t,i){var s=this.getTrackById(e);if(s){var r={};this.extractedTracks.push(r),r.id=e,r.user=t,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},y.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},y.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=u.parseOneBox(this.stream,false)).code===u.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&a.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},y.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},y.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},y.prototype.getInfo=function(){var e,t,i,s,r,o,a={},n=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(n+1e3*this.moov.mvhd.creation_time),a.modified=new Date(n+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},y.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},y.prototype.getBoxes=function(e,t){var i=[];return y._sweep.call(this,e,i,t),i},y._sweep=function(e,t,i){for(var s in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;y._sweep.call(this.boxes[s],e,t,i)}},y.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},y.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},y.prototype.releaseUsedSamples=function(e,t,i){var s=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var o=r.lastValidSample;oe*r.timescale){d=s-1;break}t&&r.is_sync&&(l=s)}for(t&&(d=l),e=i.samples[d].cts,i.nextSample=d;i.samples[d].alreadyRead===i.samples[d].size&&i.samples[d+1];)d++;return o=i.samples[d].offset+i.samples[d].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+a.getDurationString(e,n)+" and offset: "+o),{offset:o,time:e/n}},y.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},y.prototype.seek=function(e,t){var i,s,r,o=this.moov,n={offset:1/0,time:1/0};if(this.moov){for(r=0;rthis.getTrackDuration(i)||((s=this.seekTrack(e,t,i)).offset-1){a=l;break}switch(a){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var c=new u.avcCBox;c.parse(new n(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var p=new u.hvcCBox;p.parse(new n(t.hevcDecoderConfigRecord)),o.addBox(p)}break;case"Audio":r.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:r.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(o),f.add("stts").set("sample_counts",[]).set("sample_deltas",[]),f.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),f.add("stco").set("chunk_offsets",[]),f.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},u.Box.prototype.computeSize=function(e){var t=e||new l;t.endianness=l.BIG_ENDIAN,this.write(t)},y.prototype.addSample=function(e,t,i){var s=i||{},r={},o=this.getTrackById(e);if(null!==o){r.number=o.samples.length,r.track_id=o.tkhd.track_id,r.timescale=o.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=o.mdia.minf.stbl.stsd.entries[r.description_index],r.data=t,r.size=t.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,o.samples.push(r),o.samples_size+=r.size,o.samples_duration+=r.duration,void 0===o.first_dts&&(o.first_dts=s.dts),this.processSamples();var a=this.createSingleSampleMoof(r);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),r}},y.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(e.track_id);return s.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",e.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var e,t,i,s,r,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=r[a].grouping_type+"/0",(n=new d(r[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=n))}else for(a=0;a=2&&(l=s[a].grouping_type+"/0",n=new d(s[a].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=n))},y.setSampleGroupProperties=function(e,t,i,s){var r,o;for(r in t.sample_groups=[],s){var a;if(t.sample_groups[r]={},t.sample_groups[r].grouping_type=s[r].grouping_type,t.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?t.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:t.sample_groups[r].group_description_index=-1,0!==t.sample_groups[r].group_description_index)a=s[r].fragment_description?s[r].fragment_description:s[r].description,t.sample_groups[r].group_description_index>0?(o=t.sample_groups[r].group_description_index>65535?(t.sample_groups[r].group_description_index>>16)-1:t.sample_groups[r].group_description_index-1,a&&o>=0&&(t.sample_groups[r].description=a.entries[o])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[r].description=a.entries[a.default_group_description_index-1])}},y.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},y.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=o.sample_counts[v]),t>0?(e.samples[t-1].duration=o.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,a?(t>=_&&(w++,_<0&&(_=0),_+=a.sample_counts[w]),k.cts=e.samples[t].dts+a.sample_offsets[w]):k.cts=k.dts,n?(t==n.sample_numbers[S]-1?(k.is_sync=!0,S++):(k.is_sync=!1,k.degradation_priority=0),d&&d.entries[E].sample_delta+T==t+1&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta,E++)):k.is_sync=!0,y.process_sdtp(e.mdia.minf.stbl.sdtp,k,k.number),k.degradation_priority=u?u.priority[t]:0,d&&d.entries[E].sample_delta+T==t&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta),(h.length>0||c.length>0)&&y.setSampleGroupProperties(e,k,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},y.prototype.updateSampleLists=function(){var e,t,i,s,r,o,a,n,l,d,h,c,p,f,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&y.initSampleGroups(c,h,h.sbgps,c.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?f.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(h.tfdt?f.dts=h.tfdt.baseMediaDecodeTime:f.dts=0,c.first_traf_merged=!0),f.cts=f.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(f.cts=f.dts+g.sample_composition_time_offset[i]),m=a,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),f.is_sync=!(m>>16&1),f.is_leading=m>>26&3,f.depends_on=m>>24&3,f.is_depended_on=m>>22&3,f.has_redundancy=m>>20&3,f.degradation_priority=65535&m;var A=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:b||0===t?d.start:n,f.offset=0===t&&0===i?v?_+g.data_offset:_:n,n=f.offset+f.size,(h.sbgps.length>0||h.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(c,f,f.number_in_traf,h.sample_groups_info)}}if(h.subs){c.has_fragment_subsamples=!0;var w=h.first_sample_index;for(t=0;t-1))return null;var o=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=o)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===o)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+o+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,o),s.alreadyRead+=o,i.usedBytes+=o,this.stream.logBufferLevel()}},y.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},y.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?i.type=o.iinf.item_infos[e].item_type:i.type="mime",i.content_type=o.iinf.item_infos[e].content_type,i.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&u.property_index-1-1))return null;var n=(t=this.stream.buffers[o]).byteLength-(r.offset+r.alreadyRead-t.fileStart);if(!(r.length-r.alreadyRead<=n))return a.debug("ISOFile","Getting item #"+e+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,n),r.alreadyRead+=n,i.alreadyRead+=n,t.usedBytes+=n,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,r.length-r.alreadyRead),t.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},y.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(s)}return t},y.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},u.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},u.tkhdBox.prototype.print=function(e){u.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var A={createFile:function(e,t){var i=void 0===e||e,s=new y(t);return s.discardMdatData=!i,s}};t.createFile=A.createFile}));function yh(e){return e.reduce(((e,t)=>256*e+t))}function Ah(e){const t=[101,103,119,99],i=e.length-28,s=e.slice(i,i+t.length);return t.every(((e,t)=>e===s[t]))}gh.Log,gh.MP4BoxStream,gh.DataStream,gh.MultiBufferStream,gh.MPEG4DescriptorParser,gh.BoxParser,gh.XMLSubtitlein4Parser,gh.Textin4Parser,gh.ISOFile,gh.createFile;class bh{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const s=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(s instanceof Error)return console.error(s.message),this.d=!0,e;this.A=!0,this.u=i[1],Ah(t)&&this.c++,WebAssembly.instantiate(i[2],s).then((e=>{if(!function(e){return"function"==typeof e.parse&&"object"==typeof e.memory}(e.instance.exports))return this.d=!0,void console.error("video_error_3");this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}class vh extends th{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=gh.createFile(),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.transportDescarmber=null,this.player._opt.isFmp4Private&&(this.transportDescarmber=new bh),this._listenMp4Box(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.stop(),this.mp4Box.flush(),this.mp4Box.destroy(),this.mp4Box=null),this.transportDescarmber&&(this.transportDescarmber.destroy(),this.transportDescarmber=null),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.player.debug.log(this.TAG_NAME,"destroy")}_listenMp4Box(){this.mp4Box.onReady=this.onReady.bind(this),this.mp4Box.onError=this.onError.bind(this),this.mp4Box.onSamples=this.onSamples.bind(this)}onReady(e){this.player.debug.log(this.TAG_NAME,"onReady",e);const t=e.videoTracks[0],i=e.audioTracks[0];if(t){this.videoTrackId=t.id;const e=this.getSeqHeader(t);e&&(this.player.debug.log(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,Oe,0,!0,0)),this.mp4Box.setExtractionOptions(t.id)}if(i&&this.player._opt.hasAudio){this.audioTrackId=i.id;const e=i.audio||{},t=Mr.indexOf(e.sample_rate),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:t,channel:e.channel_count},o=Fr(r);this.player.debug.log(this.TAG_NAME,"aacADTSHeader",o,"config",r),this._doDecodeByFmp4(o,Ue,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debug.error(this.TAG_NAME,"mp4Box onError",e)}onSamples(e,t,i){if(e===this.videoTrackId){for(const e of i){const t=e.data,i=e.is_sync,s=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?Qn(t,i):Un(t,i);let o=this.cryptoPayload(r,i);this._doDecodeByFmp4(o,Oe,s,i,0)}this.mp4Box.removeUsedSamples(e)}else if(e===this.audioTrackId){if(this.player._opt.hasAudio){for(const e of i){const t=e.data;this.player.updateStats({abps:t.byteLength});const i=1e3*e.cts/e.timescale;e.duration,e.timescale;const s=new Uint8Array(t.byteLength+2);s.set([175,1],0),s.set(t,2),this._doDecodeByFmp4(s,Ue,i,!1,0)}this.mp4Box.removeUsedSamples(e)}}else this.player.debug.warn(this.TAG_NAME,"onSamples() trackId error",e)}getSeqHeader(e){const t=this.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new gh.DataStream(void 0,0,gh.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(this.isHevc=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const s=new Uint8Array(t.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(e){let t=new Uint8Array(e);this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)}downloadFmp4File(){const e=new Blob(this.tempFmp4List,{type:'video/mp4; codecs="avc1.640028,mp4a.40.2"'}),t=URL.createObjectURL(e),i=document.createElement("a");i.href=t,i.download=so()+".fmp4",i.click(),URL.revokeObjectURL(t)}getInputByteLength(){let e=0;return this.mp4Box&&(e=this.mp4Box.getAllocatedSampleDataSize()),e}}class _h extends th{constructor(e){super(e),uh(this,"LOG_NAME","Mpeg4Loader"),this.player=e,this.player.debug.log(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.LOG_NAME,"destroy")}}function wh(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let r=0;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}const Sh=3,Eh=4,Th=6,kh=15,Ch=17,xh=129,Dh=135,Lh=21,Rh=134,Ih=27,Ph=36;class Bh{constructor(){this.slices=[],this.total_length=0,this.expected_length=0,this.random_access_indicator=0}}class Mh{constructor(){this.pid=null,this.data=null,this.stream_type=null,this.random_access_indicator=null}}class Fh{constructor(){this.pid=null,this.stream_id=null,this.len=null,this.data=null,this.pts=null,this.nearest_pts=null,this.dts=null}}const Uh=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class Oh{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&e&&t}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(e){if(null==this.keyframesIndex)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,s=e.length-1,r=0,o=0,a=s;for(t=e[r]&&t=6?(s=5,t=new Array(4),a=r-3):(s=2,t=new Array(2),a=r):-1!==n.indexOf("android")?(s=2,t=new Array(2),a=r):(s=5,a=r,t=new Array(4),r>=6?a=r-3:1===o&&(s=2,t=new Array(2),a=r)),t[0]=s<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===s&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Uh[r],this.sampling_index=r,this.channel_count=o,this.object_type=s,this.original_object_type=i,this.codec_mimetype="mp4a.40."+s,this.original_codec_mimetype="mp4a.40."+i}}class jh extends th{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.first_parse_=!0,this.tsPacketSize=0,this.syncOffset=0,this.pmt_=null,this.config_=null,this.media_info_=new Oh,this.timescale_=90,this.duration_=0,this.pat_={version_number:0,network_pid:0,program_map_pid:{}},this.current_program_=null,this.current_pmt_pid_=-1,this.program_pmt_map_={},this.pes_slice_queues_={},this.section_slice_queues_={},this.video_metadata_={vps:null,sps:null,pps:null,details:null},this.audio_metadata_={codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},this.last_pcr_=null,this.audio_last_sample_pts_=void 0,this.aac_last_incomplete_data_=null,this.has_video_=!1,this.has_audio_=!1,this.video_init_segment_dispatched_=!1,this.audio_init_segment_dispatched_=!1,this.video_metadata_changed_=!1,this.audio_metadata_changed_=!1,this.loas_previous_frame=null,this.video_track_={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this.audio_track_={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._remainingPacketData=null,this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.media_info_=null,this.pes_slice_queues_=null,this.section_slice_queues_=null,this.video_metadata_=null,this.audio_metadata_=null,this.aac_last_incomplete_data_=null,this.video_track_=null,this.audio_track_=null,this._remainingPacketData=null,super.destroy()}probe(e){let t=new Uint8Array(e),i=-1,s=188;if(t.byteLength<=3*s)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*s);for(let r=0;r=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:s,sync_offset:i})}_initPmt(){return{program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}}dispatch(e){let t=new Uint8Array(e);this._remainingPacketData&&(t=wh(this._remainingPacketData,t),this._remainingPacketData=null);let i=t.buffer;const s=this.parseChunks(i);s?this._remainingPacketData=t.subarray(s):t.length>>6;i[1];let o=(31&i[1])<<8|i[2],a=(48&i[3])>>>4,n=15&i[3],l=!(!this.pmt_||this.pmt_.pcr_pid!==o),d={},h=4;if(2==a||3==a){let e=i[4];if(e>0&&(l||3==a)){if(d.discontinuity_indicator=(128&i[5])>>>7,d.random_access_indicator=(64&i[5])>>>6,d.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*(i[6]<<25|i[7]<<17|i[8]<<9|i[9]<<1|i[10]>>>7)+((1&i[10])<<8|i[11]);this.last_pcr_=e}}if(2==a||5+e===188){t+=188,204===this.tsPacketSize&&(t+=16);continue}h=5+e}if(1==a||3==a)if(0===o||o===this.current_pmt_pid_||null!=this.pmt_&&this.pmt_.pid_stream_type[o]===Rh){let i=188-h;this.handleSectionSlice(e,t+h,i,{pid:o,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}else if(null!=this.pmt_&&null!=this.pmt_.pid_stream_type[o]){let i=188-h,s=this.pmt_.pid_stream_type[o];o!==this.pmt_.common_pids.h264&&o!==this.pmt_.common_pids.h265&&o!==this.pmt_.common_pids.adts_aac&&o!==this.pmt_.common_pids.loas_aac&&o!==this.pmt_.common_pids.ac3&&o!==this.pmt_.common_pids.eac3&&o!==this.pmt_.common_pids.opus&&o!==this.pmt_.common_pids.mp3&&!0!==this.pmt_.pes_private_data_pids[o]&&!0!==this.pmt_.timed_id3_pids[o]&&!0!==this.pmt_.synchronous_klv_pids[o]&&!0!==this.pmt_.asynchronous_klv_pids[o]||this.handlePESSlice(e,t+h,i,{pid:o,stream_type:s,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}t+=188,204===this.tsPacketSize&&(t+=16)}return this.dispatchAudioVideoMediaSegment(),t}handleSectionSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=this.section_slice_queues_[s.pid];if(s.payload_unit_start_indicator){let a=r[0];if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t+1,Math.min(i,a));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):this.clearSlices(o,s)}for(let n=1+a;n=o.expected_length&&this.clearSlices(o,s),n+=l.byteLength}}else if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t,Math.min(i,o.expected_length-o.total_length));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):o.total_length>=o.expected_length&&this.clearSlices(o,s)}}handlePESSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=r[0]<<16|r[1]<<8|r[2];r[3];let a=r[4]<<8|r[5];if(s.payload_unit_start_indicator){if(1!==o)return void this.player.debug.warn(this.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=this.pes_slice_queues_[s.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?this.emitPESSlices(e,s):this.clearSlices(e,s)),this.pes_slice_queues_[s.pid]=new Bh,this.pes_slice_queues_[s.pid].random_access_indicator=s.random_access_indicator}if(null==this.pes_slice_queues_[s.pid])return;let n=this.pes_slice_queues_[s.pid];n.slices.push(r),s.payload_unit_start_indicator&&(n.expected_length=0===a?0:a+6),n.total_length+=r.byteLength,n.expected_length>0&&n.expected_length===n.total_length?this.emitPESSlices(n,s):n.expected_length>0&&n.expected_length>>6,n=t[8];2!==a&&3!==a||(i=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,o=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:i);let l,d=9+n;if(0!==r){if(r<3+n)return void this.player.debug.warn(this.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");l=r-3-n}else l=t.byteLength-d;let h=t.subarray(d,d+l);switch(e.stream_type){case Sh:case Eh:this.parseMP3Payload(h,i);break;case Th:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(h,i):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(h,i):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(h,i):this.pmt_.asynchronous_klv_pids[e.pid]?this.parseAsynchronousKLVMetadataPayload(h,e.pid,s):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(h,i,o,e.pid,s):this.parsePESPrivateDataPayload(h,i,o,e.pid,s);break;case kh:this.parseADTSAACPayload(h,i);break;case Ch:this.parseLOASAACPayload(h,i);break;case xh:this.parseAC3Payload(h,i);break;case Dh:this.parseEAC3Payload(h,i);break;case Lh:this.pmt_.timed_id3_pids[e.pid]?this.parseTimedID3MetadataPayload(h,i,o,e.pid,s):this.pmt_.synchronous_klv_pids[e.pid]&&this.parseSynchronousKLVMetadataPayload(h,i,o,e.pid,s);break;case Ih:this.parseH264Payload(h,i,o,e.random_access_indicator);break;case Ph:this.parseH265Payload(h,i,o,e.random_access_indicator)}}else if((188===s||191===s||240===s||241===s||255===s||242===s||248===s)&&e.stream_type===Th){let i,o=6;i=0!==r?r:t.byteLength-o;let a=t.subarray(o,o+i);this.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,s)}}else this.player.debug.error(this.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)}parsePAT(e){let t=e[0];if(0!==t)return void Log.e(this.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let s=(62&e[5])>>>1,r=1&e[5],o=e[6];e[7];let a=null;if(1===r&&0===o)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=s;else if(a=this.pat_,null==a)return;let n=i-5-4,l=-1,d=-1;for(let t=8;t<8+n;t+=4){let i=e[t]<<8|e[t+1],s=(31&e[t+2])<<8|e[t+3];0===i?a.network_pid=s:(a.program_pmt_pid[i]=s,-1===l&&(l=i),-1===d&&(d=s))}1===r&&0===o&&(null==this.pat_&&this.player.debug.log(this.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),this.pat_=a,this.current_program_=l,this.current_pmt_pid_=d)}parsePMT(e){let t=e[0];if(2!==t)return void this.player.debug.error(this.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,s=(15&e[1])<<8|e[2],r=e[3]<<8|e[4],o=(62&e[5])>>>1,a=1&e[5],n=e[6];if(e[7],1===a&&0===n)i=this._initPmt(),i.program_number=r,i.version_number=o,this.program_pmt_map_[r]=i;else if(i=this.program_pmt_map_[r],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let l=(15&e[10])<<8|e[11],d=12+l,h=s-9-l-4;for(let t=d;t0){for(let s=t+5;s0)for(let s=t+5;s1&&(this.player.debug.warn(this.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new qr(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame());){i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ue};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseLOASAACPayload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;if(this.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);t.set(this.aac_last_incomplete_data_,0),t.set(e,this.aac_last_incomplete_data_.byteLength),e=t}let i,s;if(null!=t&&(s=t/this.timescale_),"aac"===this.audio_metadata_.codec){if(null==t&&null!=this.audio_last_sample_pts_)i=1024/this.audio_metadata_.sampling_frequency*1e3,s=this.audio_last_sample_pts_+i;else if(null==t)return void this.player.debug.warn(this.TAG_NAME,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.audio_last_sample_pts_){i=1024/this.audio_metadata_.sampling_frequency*1e3;let e=this.audio_last_sample_pts_+i;Math.abs(e-s)>1&&(this.player.debug.warn(this.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new Kr(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame(Io(this.loas_previous_frame)?void 0:this.loas_previous_frame));){this.loas_previous_frame=a,i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ue};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseAC3Payload(e,t){}parseEAC3Payload(e,t){}parseOpusPayload(e,t){}parseMP3Payload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],s=[22050,24e3,16e3,0],r=[11025,12e3,8e3,0],o=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let n=(12&e[2])>>>2,l=3!==(e[3]>>>6&3)?2:1,d=0,h=34;switch(o){case 0:d=r[n];break;case 2:d=s[n];break;case 3:d=i[n]}switch(a){case 1:h=34;break;case 2:h=33;break;case 3:h=32}const c={};c.object_type=h,c.sample_rate=d,c.channel_count=l,c.data=e;const u={codec:"mp3",data:c};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"mp3",object_type:h,sample_rate:d,channel_count:l},this.dispatchAudioInitSegment(u)):this.detectAudioMetadataChange(u)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(u));let p={payload:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_,type:Ue};this.audio_track_.samples.push(p),this.audio_track_.length+=e.byteLength}detectAudioMetadataChange(e){if(e.codec!==this.audio_metadata_.codec)return this.player.debug.log(this.TAG_NAME,`Audio: Audio Codecs changed from ${this.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==this.audio_metadata_.audio_object_type)return this.player.debug.log(this.TAG_NAME,`AAC: AudioObjectType changed from ${this.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return this.player.debug.log(this.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${this.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==this.audio_metadata_.channel_config)return this.player.debug.log(this.TAG_NAME,`AAC: Channel configuration changed from ${this.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==this.audio_metadata_.sampling_frequency)return this.player.debug.log(this.TAG_NAME,`AC3: Sampling Frequency changed from ${this.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return this.player.debug.log(this.TAG_NAME,`AC3: Bit Stream Identification changed from ${this.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return this.player.debug.log(this.TAG_NAME,`AC3: BitStream Mode changed from ${this.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==this.audio_metadata_.channel_mode)return this.player.debug.log(this.TAG_NAME,`AC3: Channel Mode changed from ${this.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return this.player.debug.log(this.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${this.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debug.log(this.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debug.log(this.TAG_NAME,`Opus: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){const t=e.data;if(t.object_type!==this.audio_metadata_.object_type)return this.player.debug.log(this.TAG_NAME,`MP3: AudioObjectType changed from ${this.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debug.log(this.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debug.log(this.TAG_NAME,`MP3: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1}dispatchAudioInitSegment(e){let t={type:"audio"};t.id=this.audio_track_.id,t.timescale=1e3,t.duration=this.duration_;let i="";if("aac"===this.audio_metadata_.codec){let s="aac"===e.codec?e.data:null,r=new Nh(s);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale,i=_t;const o=Fr({profile:this.player._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});console.error("aacADTSHeader",`profile: ${r.object_type}, sampleRate: ${t.audioSampleRateIndex}, channel: ${t.channelCount}`),this._doDecodeByTs(o,Ue,0,!1,0)}else"ac-3"===this.audio_metadata_.codec||"ec-3"===this.audio_metadata_.codec||"opus"===this.audio_metadata_.codec||"mp3"===this.audio_metadata_.codec&&(t.audioSampleRate=this.audio_metadata_.sample_rate,t.channelCount=this.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0,i=St);0==this.audio_init_segment_dispatched_&&this.player.debug.log(this.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;let s=this.media_info_;s.hasAudio=!0,s.audioCodec=t.originalCodec,s.audioSampleRate=t.audioSampleRate,s.audioChannelCount=t.channelCount,s.hasVideo&&s.videoCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.audioCodec}"`,i&&this.player.audio.updateAudioInfo({encTypeCode:i,channels:t.channelCount,sampleRate:t.audioSampleRate})}dispatchPESPrivateDataDescriptor(e,t,i){}parsePESPrivateDataPayload(e,t,i,s,r){let o=new Fh;if(o.pid=s,o.stream_id=r,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/this.timescale_);o.pts=e}else o.nearest_pts=this.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/this.timescale_);o.dts=e}}parseTimedID3MetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`Timed ID3 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseSynchronousKLVMetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`Synchronous KLV Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseAsynchronousKLVMetadataPayload(e,t,i){this.player.debug.log(this.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)}parseSMPTE2038MetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`SMPTE 2038 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}getNearestTimestampMilliseconds(){if(null!=this.audio_last_sample_pts_)return Math.floor(this.audio_last_sample_pts_);if(null!=this.last_pcr_){return Math.floor(this.last_pcr_/300/this.timescale_)}}_preDoDecode(){const e=this.video_track_,t=this.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Oe?this._doDecodeVideo({...e,payload:t}):e.type===Ue&&this._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Qn(t,e.isIFrame):Un(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength}),e.isIFrame&&this.calcIframeIntervalTimestamp(e.dts);let s=this.cryptoPayload(i,e.isIFrame);this._doDecodeByTs(s,Oe,e.dts,e.isIFrame,e.cts)}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByTs(i,Ue,e.dts,!1,0)}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}class Gh{constructor(e){return new(Gh.getLoaderFactory(e))(e)}static getLoaderFactory(e){const t=e._opt.demuxType;return t===C?lh:t===k||e.isWebrtcH265()?nh:t===L?dh:t===R?fh:t===I?vh:t===P?_h:t===M?jh:mh}}const zh=[44100,48e3,32e3,0],Wh=[22050,24e3,16e3,0],$h=[11025,12e3,8e3,0],Vh=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Hh=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Jh=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function qh(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),i=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let s=t[1]>>>3&3,r=(6&t[1])>>1,o=(240&t[2])>>>4,a=(12&t[2])>>>2,n=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(s){case 0:l=$h[a];break;case 2:l=Wh[a];break;case 3:l=zh[a]}switch(r){case 1:o{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(lt.webcodecsAudioInitTimeout)}),1e3)):this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=so(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ya(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData({videoFrame:e,ts:e.timestamp}):this.player.video.render$2({videoFrame:e,ts:e.timestamp})):ya(this.player.playback.isPlaybackPauseClearCache)&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})))}handleError(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(os)?this.player.emitError(lt.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(as)||-1!==t.indexOf(ns)||-1!==t.indexOf(ls)?this.player.emitError(lt.webcodecsDecodeError,t):-1!==t.indexOf(ds)&&this.player.emitError(lt.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player&&(this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed"):this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback())}handleErrorAudio(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,s){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(this.isDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===yt){i=Mn(e.slice(5))}else t===At&&(i=Jn(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(lt.wcsWidthOrHeightChange,`width ${s.width}->${s.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(ma(e))return void this.player.debug.log(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=!1,r=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=r,s=!0);const o=r-this.prevTimestamp;this.decodeDiffTimestamp=o,o>500&&!s&&this.player.isPlayer()&&this.player.debug.warn(this.TAG_NAME,"decodeVideo diff time is ",o);const a=e.slice(5),n=new EncodedVideoChunk({data:a,timestamp:t,type:i?di:hi});this.player.emit(ot.timeUpdate,t);try{this.decoder.decode(n)}catch(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(ss)||-1!==t.indexOf(rs))&&this.player.emitError(lt.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debug.log(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===ys){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===At&&!xo()){const e=yo();return this.player.debug.warn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(lt.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=so());let i=null,s=null;const r=e.slice(5);if(t===yt?(s=Mn(r),i={codec:s.codec,description:r}):t===At&&(s=qn(r),i={codec:s.codec,description:r}),!i||i&&!i.codec||s&&0===s.codecWidth&&0===s.codecHeight)return this.player.debug.warn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(lt.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth,this.isInitInfo||(this.player.debug.log(this.TAG_NAME,`updateVideoInfo: ${s.codecWidth},${s.codecHeight}`),this.player.video.updateVideoInfo({width:s.codecWidth,height:s.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,t),this.player.video.bindMediaStream(),this.player.debug.log(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{i.optimizeForLatency=!0,i.hardwareAcceleration="prefer-hardware",this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debug.error(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(ds)?this.player.emitError(lt.webcodecsH265NotSupport,t):this.player.emitError(lt.webcodecsDecodeConfigureError,t)}}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(Ur(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.isDecodeFirstIIframe){if(this.isAudioDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),s=i.length/this.player.audio.audioInfo.sampleRate*1e3,r=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(s,10)});try{this.decoderAudio.decode(r)}catch(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,s=t===St,r=t===_t,o=t===wt;let a="";a=r?i?16:8:0===i?8:16;const n={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(r||s){let t=null;if(Ur(e)){const i=e.slice(2);t=zr(i),t&&(n.codec=t.originalCodec,n.numberOfChannels=t.channelCount,n.sampleRate=t.sampleRate),l=i,this.isAAC=r}else s&&(t=qh(e),t&&(n.codec=Sr,n.numberOfChannels=t.channelCount,n.sampleRate=t.samplingRate))}else n.codec=o?wr:_r,n.numberOfChannels=1,n.sampleRate=8e3;if(n.codec&&n.numberOfChannels&&n.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:n.numberOfChannels,sampleRate:n.sampleRate,depth:a}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debug.log(this.TAG_NAME,`decoderAudio.configure() and codec is ${n.codec}`);try{this.decoderAudio.configure(n),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(lt.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debug.error(this.TAG_NAME,"configure audio error",e.code,e),e.toString()}}}}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getDecodeDiffTimes(){return this.decodeDiffTimestamp}isDecodeStateClosed(){return"closed"===this.decoder.state}isDecodeStateConfigured(){return"configured"===this.decoder.state}isDecodeStateUnConfigured(){return"unconfigured"===this.decoder.state}isAudioDecodeStateClosed(){return"closed"===this.decoderAudio.state}isAudioDecodeStateConfigured(){return"configured"===this.decoderAudio.state}isAudioDecodeStateUnConfigured(){return"unconfigured"===this.decoderAudio.state}}const Yh={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制",narrow:"缩小",expand:"放大",ptz:"操作盘",ptzActive:"操作盘激活",zoom:"电子放大",zoomStop:"关闭电子放大",close:"关闭",performance:"性能面板",performanceActive:"性能面板激活",face:"人脸识别",faceActive:"人脸识别激活",object:"物品识别",objectActive:"物品识别激活",occlusion:"遮挡物检查",occlusionActive:"遮挡物检查激活",logSave:"保存日志"};var Qh=Object.keys(Yh).reduce(((e,t)=>(e[t]=`\n \n ${Yh[t]?`${Yh[t]}`:""}\n`,e)),{});function Xh(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function Zh(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const s=e.length,r=t.length,o=Math.max(s,r),a=2e3,n=Math.ceil(o/a);let l=0,d=0;function h(){let r="",o="";for(let i=0;i\n ${i.title}\n
          \n `);const a=t[d];a&&(o+=`\n
          ${a.title}
          \n `),d+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),o&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",o),l+=1,l0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){const r=s%60==0;let o=!1;i&&(o=Xh(e,Wo(i,s))),t.push({title:Go(s),timestamp:s,dataType:"min",hasRecord:o,isStart:r})}return t}(e);Zh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function tc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){let r=60*s,o=r%1800==0,a=!1;i&&(a=Xh(e,$o(i,r))),t.push({title:zo(r),timestamp:r,dataType:"second",hasRecord:a,isStart:o});let n=60*s+30;o=n%1800==0,i&&(a=Xh(e,$o(i,n))),t.push({title:zo(n),timestamp:n,dataType:"second",hasRecord:a,isStart:o})}return t}(e);Zh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",s=t+":30";t<10&&(i="0"+i,s="0"+s),e.push({title:i,hour:t,min:0,second:0}),e.push({title:s,hour:t,min:30,second:0})}return e}(),t)}function ic(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<144;s++)for(let r=0;r<60;r++){let o=10*r+600*s,a=o%600==0,n=!1;i&&(n=Xh(e,$o(i,o))),t.push({title:zo(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);Zh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let s=1;s<6;s++){let r=s+"0";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0})}}return e}(),t)}function sc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<288;s++)for(let r=0;r<60;r++){let o=5*r+300*s,a=o%300==0,n=!1;i&&(n=Xh(e,$o(i,o))),t.push({title:zo(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);Zh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let s=1;s<6;s++){let r=s+"0",o=s+"5";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0}),e.push({title:i.replace(":00",":"+o),hour:t,min:10*s+5,second:0})}}return e}(),t)}function rc(e){const t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),s=Math.floor(e-3600*t-60*i);return(t>0?[t,i,s]:[i,s]).map((e=>e<10?`0${e}`:String(e))).join(":")}function oc(e,t,i){const s=e.$playbackProgress,{left:r}=s.getBoundingClientRect(),o=ro((uo()?i.touches[0].clientX:i.pageX)-r,0,s.clientWidth),a=parseInt(o/s.clientWidth*t,10);return{second:a,time:rc(a),width:o,percentage:ro(o/s.clientWidth,0,1)}}function ac(e,t){return e.classList.add(t)}function nc(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function lc(e,t,i){return e&&e.style&&Bo(t)&&(e.style[t]=i),e}function dc(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function hc(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var cc=(e,t)=>{const{events:{proxy:i}}=e;let s=document.createElement("object"),r=`jb-pro-object-${ca()}`;s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.setAttribute("id",r),s.type="text/html",s.data="about:blank",oo(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,a=e.height;const n=Eo((()=>{e.width===o&&e.height===a||(o=e.width,a=e.height,e.emit(ot.resize),y((()=>{b()})))}),500);i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{n()}))})),e.$container.appendChild(s),e.on(ot.destroy,(()=>{try{if(!hc(s)){const t=e.$container.querySelector(`#${r}`);t&&e.$container&&e.$container.removeChild(t)}}catch(e){}h&&(clearInterval(h),h=null),c=null,u=null,p=0,s=null,r=null})),e.on(ot.volumechange,(()=>{!function(e){if(0===e)oo(t.$volumeOn,"display","none"),oo(t.$volumeOff,"display","flex"),oo(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=ao(t.$volumePanel,"height")||60,s=ao(t.$volumeHandle,"height"),r=i-(i-s)*e-s;oo(t.$volumeHandle,"top",`${r}px`),oo(t.$volumeOn,"display","flex"),oo(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(ot.loading,(i=>{oo(t.$loading,"display",i?"flex":"none"),(ya(e._opt.backgroundLoadingShow)&&ga(i)||ya(i))&&oo(t.$poster,"display","none"),i&&(oo(t.$playBig,"display","none"),oo(t.$tipsMessage,"display","none"),t.extendBtnList.forEach((e=>{e.createdMoment===kr&&(e.$iconWrap&&oo(e.$iconWrap,"display","flex"),e.$activeIconWrap&&oo(e.$activeIconWrap,"display","none"))}))),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&oo(t.$extendDom,"display","block"),i||e.getRenderType()===H&&ya(e._opt.useMSE)&&l()})),e.on(ot.removeLoadingBgImage,(()=>{l()}));const l=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debug&&e.debug.log("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",oo(t.$loadingBg,"display","none"))},d=t=>{Qo(t)===e.$container&&(e.fullscreen,m(),e._opt.androidMobileFullscreenRotate&&uo()&&(e.fullscreen?(e.$container.classList.add("jb-pro-fullscreen-android-rotate"),e.setRotate(270)):(e.$container.classList.remove("jb-pro-fullscreen-android-rotate"),e.setRotate(0)),f()))};let h=null,c=null,u=null,p=0;const f=()=>{c=e.rect,c.width=parseInt(c.width,10),c.height=parseInt(c.height,10),p=0,h=setInterval((()=>{const t=Rr.isFullscreen;u=e.rect,u.width=parseInt(u.width,10),u.height=parseInt(u.height,10);const i=screen.width,s=screen.height,r=u.width===c.width&&u.height===c.height,o=!t||i-u.width<10&&s-u.height<10;if(r&&o||p>=5)return h&&(clearInterval(h),h=null),void y((()=>{b()}));c=u,p++}),1e3)},m=i=>{if(ya(e.isPlaying()))return;let s=Po(i)?i:e.fullscreen;oo(t.$fullscreenExit,"display",s?"flex":"none"),oo(t.$fullscreen,"display",s?"none":"flex")},g=()=>e._opt.playType===w&&e._opt.playbackConfig.showControl,y=i=>{uo()&&t.$controls&&(e._opt.useWebFullScreen||e._opt.androidMobileFullscreenRotate)&&setTimeout((()=>{if(e.fullscreen){const i=g()?Qt:Yt;let s=e.height/2-e.width+i/2,r=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-s}px) translateY(-${r}px) rotate(-90deg)`,t.$zoomControls){const i=156,s=30,r=e.width/2+i/2-s/2;t.$zoomControls.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,s=20,r=e.width/2+i/2-s/2;t.$recording.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}t.$ptzControl&&(t.$ptzControl.style.transform="rotate(-90deg)")}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)",t.$zoomControls&&(t.$zoomControls.style.transform="translateX(-50%) translateY(0) rotate(0)"),t.$recording&&(t.$recording.style.transform="translateX(-50%) translateY(0) rotate(0)"),t.$ptzControl&&(t.$ptzControl.style.transform="rotate(0)");i&&i()}),10)};try{Rr.on("change",d),e.events.destroys.push((()=>{Rr.off("change",d)}))}catch(e){}e.on(ot.webFullscreen,(e=>{uo()&&(m(e),y((()=>{b()})))})),e.on(ot.recording,(()=>{e.playing&&(oo(t.$record,"display",e.recording?"none":"flex"),oo(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(oo(t.$recording,"display",e.recording?"flex":"none"),ya(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=jo(0))))})),e.on(ot.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=jo(e))})),e.on(ot.zooming,(()=>{e.playing&&(oo(t.$zoom,"display",e.zooming?"none":"flex"),oo(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&oo(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(ot.playing,(e=>{A(e)}));const A=i=>{i||e.isPlayFailedAndPaused&&ya(e._opt.playFailedAndPausedShowPlayBtn)?(oo(t.$play,"display","none"),oo(t.$playBig,"display","none")):(oo(t.$play,"display","flex"),oo(t.$playBig,"display","block")),oo(t.$pause,"display",i?"flex":"none"),oo(t.$screenshot,"display",i?"flex":"none"),oo(t.$record,"display",i?"flex":"none"),oo(t.$qualityMenu,"display",i?"flex":"none"),oo(t.$volume,"display",i?"flex":"none"),oo(t.$ptz,"display",i?"flex":"none"),oo(t.$zoom,"display",i?"flex":"none"),oo(t.$scaleMenu,"display",i?"flex":"none"),oo(t.$faceDetect,"display",i?"flex":"none"),oo(t.$objectDetect,"display",i?"flex":"none"),oo(t.$occlusionDetect,"display",i?"flex":"none"),oo(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&oo(t.$speedMenu,"display",i?"flex":"none"),m(),t.extendBtnList.forEach((e=>{e.createdMoment===Cr&&(e.$iconWrap&&oo(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&oo(e.$activeIconWrap,"display","none"))})),e._opt.showPerformance?oo(t.$performanceActive,"display",i?"flex":"none"):(oo(t.$performance,"display",i?"flex":"none"),oo(t.$performanceActive,"display","none")),oo(t.$poster,"display","none"),oo(t.$ptzActive,"display","none"),oo(t.$recordStop,"display","none"),oo(t.$zoomStop,"display","none"),oo(t.$faceDetectActive,"display","none"),oo(t.$objectDetectActive,"display","none"),i||(t.$speed&&(t.$speed.innerHTML=function(e){if(null==e||""===e)return"0 KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}("")),oo(t.$zoomControls,"display","none"),oo(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")),b(),i&&v()};e.on(ot.playbackPause,(e=>{A(!e)})),e.on(ot.kBps,(i=>{const s=function(e){if(null==e||""===e||0===parseFloat(e)||"NaN"===e)return"0 KB/s";const t=["KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"];let i=0;const s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));let r=s/Math.pow(1024,i);return r=r.toFixed(2),r+(t[i]||t[0])}(i);t.kbpsShow=s,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=s),b())}));const b=()=>{if(g()&&e._opt.playbackConfig.controlType===X.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;uo()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},v=()=>{if(!g()||e._opt.playbackConfig.controlType!==X.normal)return;const i=t.$playbackCurrentTime.style.left;let s=parseInt(i,10);const r=t.controlsPlaybackTimeInner.width;s=s-r/2>0?parseInt(s-r/2,10):0,t.$playbackTimeInner.scrollLeft=s};if(g()){const i=()=>{if(g()){let i=0;const s=e.playback&&e.playback.playingTimestamp;if(s){const r=new Date(s),o=r.getHours(),a=r.getMinutes(),n=r.getSeconds();e.playback.is60Min?i=60*o+a:e.playback.is30Min?i=2*(60*o+a)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*o+a)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*o+a)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*o+a)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===Si&&t.$playbackNarrow.classList.add("disabled"),e===ki&&t.$playbackExpand.classList.add("disabled")};e.on(ot.playbackTime,(s=>{if(e._opt.playbackConfig.controlType===X.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=vo(s,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===X.simple){const i=(r=s,o=e.playback.totalDuration,ro(r/o,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${rc(s)} / ${rc(e.playback.totalDuration)}`}var r,o})),e.on(ot.playbackPrecision,((r,o)=>{g()&&e._opt.playbackConfig.controlType===X.normal&&(t.$playbackTimeScroll.classList.remove(Ci.oneHour,Ci.halfHour,Ci.fiveMin,Ci.tenMin),t.$playbackTimeScroll.classList.add(Ci[r]),t.rafId&&(window.cancelAnimationFrame(t.rafId),t.rafId=null),t.changePercisitionInterval&&(clearTimeout(t.changePercisitionInterval),t.changePercisitionInterval=null),t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",t.changePercisitionInterval=setTimeout((()=>{switch(t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",r){case Si:ec(o,t);break;case Ei:tc(o,t);break;case Ti:ic(o,t);break;case ki:sc(o,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&s(r),v()}),16))})),e.on(ot.resize,(()=>{b()})),e.on(ot.playbackTimeScroll,(()=>{v()})),b()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(ot.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("jb-pro-quality-menu-item-active"),i===e&&t.classList.add("jb-pro-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let s="";i.forEach((e=>{s+=`\n
          ${e}
          \n `})),s&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".jb-pro-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(ot.viewResizeChange,(e=>{i(e)}));const i=i=>{const s=e._opt.scaleConfig[i];t.$scaleText.innerText=s,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("jb-pro-scale-menu-item-active"),wo(t)===wo(i)&&e.classList.add("jb-pro-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let s="";i.forEach(((e,t)=>{s+=`\n
          ${e}
          \n `})),s&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".jb-pro-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(ot.playbackRateChange,(e=>{i(e)}));const i=i=>{const s=e._opt.playbackConfig.rateConfig.find((e=>wo(e.value)===wo(i)));s&&(t.$speedText.innerText=s.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("jb-pro-speed-menu-item-active"),wo(t)===wo(i)&&e.classList.add("jb-pro-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let s="";i.forEach(((e,t)=>{s+=`\n
          ${e.label}
          \n `})),s&&(t.$speedMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".jb-pro-speed-menu-item")}))})();const s=e.playback?e.playback.playbackRate:1;i(s)}e.on(ot.stats,(function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e._opt.showPerformance){oo(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const s=ho,r=wa(),o=e.getCpuLevel(),a=Bo(o)&&-1!==o?`${Ys[o]}`:"",n=e.video&&e.video.videoInfo||{},l=e.audio&&e.audio.audioInfo||{},d=e._times||{},h=e.getRenderType(),c=e.getCanvasRenderType(),u=e.getDecodeType(),p=e.getDemuxType(),f=e.getStreamType(),m=e.getAudioEngineType();let g=e.getRecordingDuration(),y=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),b=e.videoIframeIntervalTs;g=jo(g),y=To(y);const v=e.isPlayback()?"录播":"直播";let _=i.isDropping;const w=e._opt.useMSE&&e._opt.mseDecodeAudio,S=e.control?e.control.kbpsShow:"0 KB/s",E=e.getVideoPlaybackQuality(),T=`\n
          \n 版本 ${s}\n
          \n ${e._opt.isMulti?`\n
          \n UUid ${e._opt.debugUuid}\n
          \n `:""}\n ${e.isInMulti()?`\n
          \n 窗口下标 ${e._opt.multiIndex}\n
          \n `:""}\n ${r?`\n
          \n 内存大小限制 ${To(r.jsHeapSizeLimit)}\n
          \n
          \n 可使用的内存 ${To(r.totalJSHeapSize)}\n
          \n
          \n 已使用的内存 ${To(r.usedJSHeapSize)}\n
          \n `:""}\n ${a?`\n
          \n CPU压力情况 ${a}\n
          \n `:""}\n\n ${r&&r.usedJSHeapSize>r.totalJSHeapSize?'\n
          \n 可能内存泄漏 是}\n
          \n ':""}\n
          \n 播放模式 ${v}\n
          \n ${e.isPlayback()?`\n
          \n 播放倍率 ${e.playback.rate}倍\n
          \n
          \n 播放模式 ${e.playback.isUseFpsRender?"固定FPS":"动态FPS"}\n
          \n ${e.playback.isUseFpsRender?`\n
          \n 固定FPS ${e.video.getStreamFps()}\n
          \n `:""}\n `:""}\n
          \n 解封装模式 ${F[p]}\n
          \n
          \n 解码模式 ${u}\n
          \n
          \n 渲染组件 ${h}\n
          \n ${h===H?`\n
          \n 渲染引擎 ${c}\n
          \n `:""}\n
          \n 网络请求组件 ${f}\n
          \n
          \n 视频格式 ${n.encType||"-"}\n
          \n
          \n 视频(宽x高) ${n.width||"-"}x${n.height||"-"}\n
          \n ${e.isPlayer()?`\n
          \n 视频GOP(ms) ${b||"-"}\n
          \n `:""}\n
          \n 音频格式 ${Et[l.encType]||"-"}\n
          \n
          \n 音频引擎 ${m||"-"}\n
          \n
          \n 音频通道 ${l.channels||"-"}\n
          \n
          \n 音频采样率 ${l.sampleRate||"-"}\n
          \n ${e.isPlayer()?`\n
          \n 播放器初始化(ms) ${d.playTimestamp}\n
          \n
          \n 开始请求地址(ms) ${d.streamTimestamp}\n
          \n
          \n 请求响应(ms) ${d.streamResponseTimestamp}\n
          \n
          \n 解封装(ms) ${d.demuxTimestamp}\n
          \n
          \n 解码(ms) ${d.decodeTimestamp}\n
          \n
          \n 页面开始渲染(ms) ${d.videoTimestamp}\n
          \n
          \n 初始化到页面渲染(ms) ${d.allTimestamp}\n
          \n ${e.recording?`\n
          \n 视频录制时间 ${g}\n
          \n
          \n 视频录制大小 ${y}\n
          \n `:""}\n `:""}\n
          \n 音频码率(bit) ${i.abps}\n
          \n
          \n 视频码率(bit) ${i.vbps}\n
          \n
          \n 视频帧率(fps) ${i.fps}\n
          \n
          \n 视频峰值帧率(fps) ${i.maxFps}\n
          \n
          \n 解码帧率(fps) ${i.dfps}\n
          \n
          \n 音频缓冲帧 ${i.audioBuffer}\n
          \n
          \n 音频缓冲时长(ms) ${i.audioBufferDelayTs}\n
          \n ${e.isPlayer()?`\n
          \n 视频待解码帧 ${i.demuxBuffer}\n
          \n `:`\n
          \n 缓存时长(ms) ${i.playbackCacheDataDuration}\n
          \n
          \n 视频待渲染帧 ${i.playbackVideoBuffer}\n
          \n
          \n 视频待解码帧 ${i.demuxBuffer}\n
          \n
          \n 音频待解码帧 ${i.audioDemuxBuffer}\n
          \n `}\n
          \n 待解封装数据(byte) ${i.streamBuffer}\n
          \n ${e._opt.useMSE?`\n
          \n MSE缓冲时长(ms) ${i.mseDelay}\n
          \n
          \n MSE待解码帧 ${i.msePendingBuffer}\n
          \n
          \n MSE缓存时长(s) ${i.mseStore}\n
          \n
          \n MSE解码间隔(ms) ${i.mseDecodeDiffTimes}\n
          \n
          \n MSE解码时间(ms) ${i.mseTs}\n
          \n
          \n MSE播放模式 ${i.mseDecodePlaybackRate>1?"加速":"正常"}\n
          \n `:""}\n ${e._opt.useWCS?`\n
          \n WCS解码间隔(ms) ${i.wcsDecodeDiffTimes}\n
          \n `:""}\n ${e.isOldHls()?`
          \n HLS缓冲时长(ms) ${i.hlsDelay}\n
          \n `:""}\n ${e.isUseHls265()?`
          \n HLS缓冲时长(ms) ${i.hlsDelay}\n
          \n
          \n HLS待解码帧 ${i.hlsDemuxLength}\n
          \n
          \n HLS待解码视频帧 ${i.hlsDemuxVideoLength}\n
          \n
          \n HLS待解码音频帧 ${i.hlsDemuxAudioLength}\n
          \n `:""}\n ${e.isPlayer()&&E?`\n
          \n Video已渲染帧 ${E.renderedVideoFrames}\n
          \n
          \n Video已丢弃帧 ${E.droppedVideoFrames}\n
          \n `:""}\n ${e.isPlayer()?`\n
          \n 网络延迟(ms) ${i.netBuf}\n
          \n
          \n 缓冲时长(ms) ${i.buf}\n
          \n
          \n 最新缓冲时长(ms) ${i.pushLatestDelay}\n
          \n `:""}\n ${e._opt.useMSE||e.isWebrtcH264()||e.isAliyunRtc()?`\n
          \n video显示时间(s) ${i.videoCurrentTime}\n
          \n
          \n video间隔时间(s) ${i.videoCurrentTimeDiff}\n
          \n
          \n videoBuffer缓存时间(ms) ${i.mseVideoBufferDelayTime}\n
          \n `:""}\n
          \n 视频显示时间(ms) ${i.currentPts||i.ts}\n
          \n ${e._opt.hasAudio&&e.isAudioNotMute()&&ya(w)?`\n
          \n 音频显示时间(ms) ${i.audioTs}\n
          \n ${e._opt.hasVideo?`\n
          \n 音视频同步时间戳(ms) ${i.audioSyncVideo}\n
          \n `:""}\n
          \n 音频播放模式 ${A?"加速":"正常"}\n
          \n `:""}\n
          \n 视频解码时间(ms) ${i.dts}\n
          \n ${e.isPlayer()?`\n
          \n 解码前-解码后延迟(ms) ${i.delayTs}\n
          \n
          \n 总延迟(网络+解码)(ms) ${i.totalDelayTs}\n
          \n `:""}\n ${e.isPlayer()&&i.isStreamTsMoreThanLocal?'
          \n 是否超过一倍率推流 是\n
          \n ':""}\n ${e.isPlayer()?`\n
          \n 是否播放流畅 ${i.videoSmooth}\n
          \n `:""}\n ${e.isPlayer()?`\n
          \n 是否在丢帧 ${_}\n
          \n `:""}\n
          \n 网速 ${S}\n
          \n
          \n 播放时长(s) ${jo(i.pTs)}\n
          \n
          \n `;t.$performancePanel.insertAdjacentHTML("beforeend",T)}else t.$performancePanel.innerHTML="",oo(t.$performancePanel,"display","none")})),e.on(ot.togglePerformancePanel,(e=>{oo(t.$performance,"display",e?"none":"flex"),oo(t.$performanceActive,"display",e?"flex":"none")})),e.on(ot.faceDetectActive,(e=>{oo(t.$faceDetect,"display",e?"none":"flex"),oo(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(ot.objectDetectActive,(e=>{oo(t.$objectDetect,"display",e?"none":"flex"),oo(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(ot.occlusionDetectActive,(e=>{oo(t.$occlusionDetect,"display",e?"none":"flex"),oo(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function uc(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}uc('@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-webkit-keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jb-pro-container video::-webkit-media-controls{display:none!important}.jb-pro-container .jb-pro-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.jb-pro-container .jb-pro-ptz-controls{position:absolute;width:156px;height:156px;visibility:hidden;opacity:0;border-radius:78px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4BAMAAAA9UfJZAAAAMFBMVEUAAABHcEy0tLRZWVmysrKoqKi1tbWvr6+2traBgYG1tbWWlpa1tbW1tbVUVFS1tbVGCHqkAAAAD3RSTlMzAO9U3LSWySp3aZcVRDUDw823AAAJYUlEQVR42u3d32sbVxYH8EPHxgg/lBsa7SBkukmpSbwLI2KbEPpgZ5MQtwmM0wRMmgdhP6RgEuwlSVnYlmGMYaEvMU1KKX4QNq0pocVmm7CYfRBaQguFpbgPKRSC/4V2LGliO+bulWKrkvVrftyZ+WbxeTRG+nDnnnNmRjP3EpMR6tMH18du/0Xj1tGz5+9cf/DUlPKx5PsTkr8s3eZ1cX7ym1zkuI/f1wTFunNt9fP+FIno7/98/tFY+Y8ffBUlLrmkl2Cr96guTv27BMxP5iLCqUvi68+tpqhJKPNXBH3SjACnfimm/7Wmsl3fI/FP75lh457oPH+1Da3M+1T8481QcT0T7UetevR618LDPdH4hTlyHLGH3LoZEk6d4PlvyVW8pfNeMwzcDwa/kCKXoTzk9tfB455o1mXyEIOa+0PrFvcFt+fIU8QM/k6guOQifzNFHkN5l/flgsOJVHibfMR9l2nhBqem+VXyFZ/xghkMTp3il8lnDPKiGQROhs2lzjEuKcVW1uWk4ybk2Eq63pxk3CK/RZLiJO+Ti/vZXw3ZX1E+kon7jv+JJMY/+Q15uIRWIKmRthZk4VTDTsnFKYZtSsItWiskObq1Pjm4f8gqIrUF5W8ycAl+nAKIT/iCf1zSKFAgkW4/7drifrLmgsHF2k87alvhblFAcbJttWuDU/VtCiyyedMXbjGfCg6n6H1+cHE+TQFGFx/3jksa2xRoZO2cZ9xsUJn6e8aOeMX1aGco4Biw1jzilm0KPNJb3nBxvhI8rrtVTlCLK5ptCiEyBS+474POhr2c+NA9Lqm/QaHEiXzONW42yN5Q2ydG3OLU4MvI7+XEdImbCWvgSkN3zB1O1YYptOhoNnRNcDM2hRjGMTc4VZsOE9fVZOioyYyjUKPJrKPGNW44XFxX41rXEPc4vFTdS9iLTnFJ4wyFHAO2U1zcSoWNU7RLDnFTb1DocaLoDJfgc+HjYo3uTjTArW9TBJHdcYJTtdEocJ0NCnE97nGBIon0RQc4YzgaXIfdHhdBHdmrJuNtceubFFFkdtrhVG0lKlx3XUrsxz22KbIwLrbBTQ1Hhxsotsb18FR0OIWvtcT9Z5sijOyfW+KM6ShxXXYrXMJKRYlTtIUWuLubFGlknrXAGaPR4jrt5riERRFH7XGtwc1sRo3LHGuKi/qo7j+uhJOr9flKMBW4QR2uxk1NR4/rKjbGRdpXG/bXKtxrAEdVHNfTDXHLf0TAvbLVCJfU5hBwMSvXABfPE0To4w1wP25i4DLPG+CmRjFwncV6nIpQSF4UE7MOd7hAIJG+VIe7u4GCG3pWh0uPouA6C/txMFOuetIR3JSrmnQEN+WqJh2BVbmaSreLS+JMudKky9Xg4jYBRXq8BndoEwmXOVKDWx5GwnVs1eD0OSRcLF+N67EIKrS1Klx8GwuXHa/C/biBhRt6XoVbnsbCdW1V4bDyoZIRZZwKlg8iI8wKLl5Aw73oEWXcoQ003NCRCm59GA3XsVPBTa2g4bqLFZyWQsMp1h6uJ09woa/t4tCaV6WBEWSy7qYrQSbrbroS2MVNzUUOAXbWSnel0sU+AUbpsl/gEjYizlgo4w5vI+Kyl8o4xEryopYI3N1hRFzHszJueRQR17lVxqXnEHGxQhmHd06yd15CgBcQlcsIYokCJi69IHDxbUycOGki9toGJm7otMC9/ism7tXfBA6zBperMIHW4HIVJsDrwsrVIYE2CNEibIHDbBDlFkFJ0AYhWkSOemxUnLFGqN2r1L8ItXuV+hfFN1FxmXH6wwYqbuivdAgXd4RQ+36p8xNq3y91flqfRsV17dD6KCquc4eWcXFbtLyCiusu0hQ0bg4VFytSGhdXICOFilNs0nFx+QOcZ5xGsGEd4DzjOC6OH+A847QD3P9jtuJ2CGjcQeP3gYM+2YQ+TYe+wMG+NETGQd+OgL6RA30LDPrm4eu/ouJe/Q37hjX0rX7oH0mgf16C/mEO+idN6B+DoX9Gx34AAfrRDeiHXqAfF0Lt/OUHrVAfUcucRn+4D/qxSOgHSqEfxcV+iBn68W/EV3AqD85Dv3IA/bIG9GsumC8IaSb+q1XYL6VBv84H/SIk9Cuk0C/fQr+2jP3CN/Sr8tCLDEAvzwC9sAX0kiDYi6lAL0MDvYAP9NJH0ItGYS+3Bb1QGVaP2LfEG/TieNDLCmIvyAi9lCX0IqDQy6diLzwLvWQv9GLH0MtER76rRqWxPgdemtwYf9kWdYdeDh97IwHoLRigN6/A3vYDesMU6K1msDfpgd7eiOmjSEf1ZdpSC3ozMuht3LA3wIPeOjDSTRdfKb7M21VCb/QJvUUq9uay0NvyYm9oHFFKdDvaChp6E23s7cehN25nh5G3vE8aZ8LGDdjMIY49zoc9dPpFx7ikHnIh7sjnHOPYTMj36oxjzDlO1UI9Xe9oUICb49iMDTBwzXCqFuKsG2gycM1wYtaFlrCK3mTgmuJU7UzkA9cUx2bDGjpFH2FucUk9pA57onGNa4lj31uhnJzEtA+ZexxLh3KpkykwL7g4D+GUuJuPe8Kx5RCuJtJbzBuuJ/hyMmCtecSx2aBzIqaNMK+4pBHwtU7WznnGiZwI9Oykq1U2tMWxxSD7hKL3MT84VQ/wwGbzpi8c+47fCsp2kt9g/nDsp6AyNqb1Mb+4pBFQKU7bpm8cS/DjQdg+aXT/wTWOzfLL8m2DfITJwLFFS/oZQHf7CecQpxq25GqnGO0nnEMcS2iSq13WWmCycKLaHZebDDeYPBz7mb8tz3aff8Rk4tiivJQd5H1MLo5NyNIN8t6cbJw6ZV2WYys6tTnHCZ2MsRM2k8nHSdG5srnBMTXNr/qzfcYLLmyucEyd8FdR7vNeNzZ3OJZc5G967mTKu7wvx4LDMfYFtz2efMYM/o7LL3OLY080byVlULNusqBx7AeDX3B9aJWH3P6aBY8rpUX+W3e2t3SXqeAZVzq0/JyLmRe7wt0fUs849t8Jzv/u8Ngq/+K8d42FhxODp/P8VQc85VPxjzc9folXHFO/1Lh1rc3BjT0S//SeycLGCd6Sxvm51abDp8xf4dyaNL1/gw+caBhLuvj6O6v36mWn5scEPe+H5hMn4uP3hUEAr63e6y+PYX//qflHY+U/fvCVzw/3ixPD98vSbV4X5ye/yfn+aP+4MvDpg+tjZ4+K8bKOnr1z/cFTU8rH/g92biFxn2S73AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;transition:visibility .3s,opacity .3s;right:43px;bottom:135px}.jb-pro-container .jb-pro-ptz-controls.show-vertical{right:43px}.jb-pro-container .jb-pro-ptz-controls.show-vertical .jb-pro-ptz-btns{left:0;top:156px}.jb-pro-container .jb-pro-ptz-controls.show-level{right:163px}.jb-pro-container .jb-pro-ptz-controls.show-level .jb-pro-ptz-btns{min-height:156px;left:144px;top:0;display:flex;flex-direction:column;justify-content:center}.jb-pro-container .jb-pro-ptz-controls.jb-pro-ptz-controls-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-bg-active{visibility:hidden;opacity:0;width:156px;height:156px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4CAMAAAD4oR9YAAAAM1BMVEX///////////////////////////9HcEz///////////////////////////////////85yRS0AAAAEXRSTlO5DCgVgZBxAK2fQDRkBR5XTPLKM/gAABnnSURBVHja7F0Jkqs6DGQPO9z/tD8Jq6WWbCCvIjKfzAGmulrW3ooedr6ui+M4TdP++SXPr1l/SdL3aRrHhv7ZyA5qb9xe0L3Am+DrkzeCL/BeX908MezTuPsfOArdgl3KsZuhq99fk/Tx3waum+ByAHua5QbYilkzY1aP728YhrH5InrfBa57OLAtVjpRbYaumex04dq4APeC7vnVSfo/45bXLe33jGscMx3f0A1vyg3t69e2dRL/NeA6wrgdcCvjyPM2U25mXDt9xVD3f/qN0yi3Mm6P20S54vlXtGPS/R3GPSbYOsC4ZAvmJtiaGiL3Zlzx/Ht+Y/KXTJXbqmaqe9za1VYn3N7YpX/OVGev2qduOLIiB7xqOzGuWCiXFVmWtU3368A5lkqeOJI21I5XXaORxVRnxmUTdNnY/4U3riNvHMJts9XRtdXVUttipdzrK/4x7UyY6sK4Gbo+nU21T1zKcd9AGJetlMvyLKvj3zXVfeqQElMljINx3MK4xVQ3xj2Ry7N/6CiMOIfYyVUXWxUyBx7HuZRbcHt9bf/Lb9zsHlzKzabauJaK47iVcC7jJujS33/joKkmxDnM4QiJ4xDjZuT+DXQW3jgxV012qcPuiePhCGfchlv1/P0D6Czmqmuq2gPGkbIS8Q4ZsNU3dGP3Y2+cW1RyKpkrbAnwqhi3iXHFHrU3bFVV5c3vBsCsOALjkXErAW85F3rjFvBm5Kos+TngCOXYG7fA1ojFER7GPUHbmer0tfGPANeROM6pjvDMQSkrsWQ1d564Fbr61964TvSqDa6O0ELmAtvGuc2rrpQrn/aa/qCpYq+6mSpOVhnjWBy38u2JXFl9yL8acg6CV3Ur5yxVZfW4AsRxG+XKssz6n3njVMYR4Eg8sj1yi3tgtroxrpyhG38gc+h8PYddPQ551dVQW5jju2/cG7kXdB946Uy9cbDnQOpxuCCHcq5dHDcht8D2/K67VxPNGtLJd7qDTcgb1zLGbXEcY9z0Fd39GReTzIH1B/2lcxrGTYxjXnXyqxNyef8zpipVlfDsyCCmDkuumhGvWq6W+vyisqxvDJwwOxJQO6fNmjaQcRt0ZdR2dwWOFZViuculNWtgBZjk+DNq1cq45y+Lf5NxE25B3oEyLueFJWqtT+Ciqr8r48jsCAyAG+2Na53MAdQxX16VhHEL4Z7Ilc2dGad28pskaULiEdDlyijjdqa6gBeNtwSu63AnP3V6NUnAG9cu1RHOuL2hVi5qr6+9Za4qV0dCGcfCEfDIufWRFbsZvKy7KeNgW7XHvRqxWfOGLhO6XCrjoiiPb/rGdZ75uGRfj9u3B1sWAEtdLuxVF/Cq9HaMe4A4TptkZYwLqI44rmGDbUe5E8hZcg54zquRbHXu5NN6HKuO7N84YqwbdGV/Q8YF5arUN7CJTNLkgplD5T5xG+OOI2ehAhxv00ocOlpWwhHwljns5uNg6bxCb9wbueSupip6VTnj2jGudSvnOeqrVo6h7vl2nHM2K8AkV1WyfDYDvHUcWF+1VBl3EDlLKdc2dQ6aNbhXw2eAt14Nf+MqFse5rDuS8tucHUmhqaJppYF6B8440h7E8cjhqMTiLtcaAL+ga9jWZb35hpbHceyNI9WRSmHcE7n4jqbqTp2D2nnzgm154mB1hJQy1cwBIpd3twCOrjnEoDsoTZ2jepybb2VKrhpx3zB92Z29Khpl1ZN8MHWzJV1CdYQHJEeqTMbqcfEMW+obLBwES83w7AgvY0YlMNT3N96GcXEHGQdxG2t3CQ5kDkoFeO8esHd4fc193jinAtxvXhUN3Ywz5VAFGM3cENfgVM4x5YICYRumqu5yIVMdJuhaLXMAFWBKOIhbWFBiO44Dg4Usxx/cCrDyxqESMIYuu4lX1fYcGnVaaVmtKXZxHOzW5Bvfqtk3iLAFuVaLew4HluDUzIH1VYMZF+AgLMZxcAYY1uNYBTgrwPDIaqxOQ1p540IchBFTJW9c2ofNAO99Q+sYaugbJ35Vd4sKsPbGqVM33KsWmdpXLeXqufsVNwhH8FyhOh8n74foKb5WVDr0zFky1Rgt+iaJZyJTWErKMynpqsqgVy4q0xv0VTvZq0pJPq5jzn41zzzVET0aCYjmTO05OLaaBEwWqhvSenUkKtVw5P0N96mOpNr2YCPuh4AJCGEAoioDver7628Sx8WAcU2i1eM259AWhZBzuQEJieN07JR6sCHgXoSLnepI7yo9NqgCLE5A6K4hjHGKsVqK49JYEGyBg4XIq2b7FREUx5Xu2LkXOtmz2pJBW5sOqdjJF3sOjHG5fz7OT7n8DtURwjjPtBKtx7VLOa6Q4zh5Wkn8xhvU4xbG9al/s2bAbxwYkJO7XCGME43VIuMc56Dnqi7hpPE4cVopBLnibozTp5X4DHAQ49iwfsCX3IhxYFoJB8C0y7Xr1iwBSZXDulIUjF11G6+qr5aPALlCmTrfyWfQzCEK49xoPMnnjFMaq3QlX9tzQPuq0QFbLeNbMU6cHRn3Sb60HwJ6NXAhKQi61nzpPAbtQaY8jUUgQnRHSodxZSjjoig161W7HePIRGZDJzJHQXiEzE4DpRtSjotCHzkUkhj2qqJi4V54T1S6cWwVp/nhjAP1JQuDhbs4TtFW0spKTgW4UHJVFv4GQpcZA64jkt1xDNS8lDEv9Y3z5KpRGY4biIINMC7e2lxKNFJDqUfQquGZA2yrHoINUM7G6ZX1iVM2RKDUI08dssVUfduDRyI5QDkbFWCnscrWVWV1/RZ2uaRc9UyKL1LO0r7q1qwBm761WsmEUjdge9ApAB9iHHWslq4kMalHTbHQieO0zXKljHmIc4XdOE695yCpsg7eOE7t5B/4Uqv1uDSGKhDYq0r6yQWYj5NnRw5BNxjOHJAKRJB+nJqr4jcuOki4qOzs5qrgulSDJzJHUcyrCNMdOc44ty5nel815KDZ4HTypeoILAEfZJxbCjYkSpVKgZx/IpOfXgnarDkKXWIrHAm7kiTqxw1er+oQzg2Bj32FTcYJ2kpCIx9PK2XMq1ZCz+EM46LYZK4qaCsdmo+TqiOV5FWPITdYLZ2jOqYa/6LN8kJSZT1dxkSTJEYKmZ2/OuI5aIYYh+UzKn3TN9A9mLjL1cl6LexKkqof575xVJWVx3HRefdgUbGQNGs2U2Ul4HYQ60o+HeBzjCtt9VXVqXMpc3DEzh2NzEJSnr7OuG35wUTpPGjqXN3lQgdE0AWRA2sOHls1eO2yh/uqWM1LbUgvQzeatOhR5NZM39QIBNyQbviBVajYItbOYa56knCbrRrUj0vxTn5QVQlOnUtdrjKKztuqpbMEJ27WtCG3BzX9uMPfYqsmlW7SPnRfFeSqwTrAp9641VZtXi1PlX1VN44THzlvPe4k45aZLys9h+7cvuqsAqEpBAm6I9HJN24pZ9oIRzp5XzVUsVCZOnd0Ry4zbu52GdMBDn7j+NVyYXaEneW6+sbNrQcjtwdJCTh4WmlrSLcF3axRZ4AvMC6zxjj9annty1X9M8BoefBMQGKudB5UjnMnMltQV1JuD5JK5jnGTUU52zeke+4cfMJ7ygxwSZuDJ6EbzDEuZF+VNLnczCETlPdkdf3Tj5yhAHhNVdV9VXgJGV9JyqWjjRdS1fWRs6vmRctK1KuiLD/b22q2KyvlWJT1HOPeo3IWqyNwlwtrxJNrlwW69ZNr0qKnoBsfNrWVcH+w9gzIFXxDeisr5cxSrzCusFVWkpVukH7coF/0zQRt0a2QGZ1HLrfAuIfDOL/uiLOTz9UMMiTmtXMOVXmxW/P+OqM6wPBKEmLcbuiGMw4lq9cmIPbewa5iIb3LdYxxKHMouYDcSeRqcxd9+dS5VFWCGZd3e9DtR5+21dbYRd/1EAaagUC6IzDLV7YHj4pSKbmDkZRLnmRNcHeQ3azZdvLJ9qCUOVyhXGVmQUSpx9GWAzNW6Y0DmYMzrbTeHjzxxTeI41zktugXtQezAsRxon7caUt9VZZMMQ7pAPMnjnTyB5lxJHPgU+enGTeajONUHWB46wfW41jmAE79nHerNiYyFeXpBu/keycyM8983CWv+sxWLe2rsgpwH7qRxPuqb7pl6IKe61RPYpcbvefQy3e58LSSbwY4B071CuNKk31VtswlTyuJ+6oZuss1h3HVCTEDluZb7Ks6prqrjijlOLTLxRlXUhng85RLo+77por7qp5c1fUN8I1Tbw9eqce9ArkvA6eqxOOr5UQGgrdVC1l5GszHnYSuNsC4OKgeF6au73S5Mt983IU3bvwqcN3jAe9y9VgkvvHPskp7DuI9h7PfYOGNw3EcH7rx91XRPbNPT2TOEbCNNw7uJOGhG+naD8+5PG/cJcI9gYu/CxuYVuqd+6reHbgBWqrvavlV5LLvAqfdc6AFYElcyW1IS0eScqg7ch65/MvABXW5ElWvZXDiOL2Tz3VHzn7Vt4F7iNuDobMjwp7DUh3hfKs+EQCbAs43O9KgG9KDrK6vMe5qIPdd4NS7XFLi4NxzADf0eEPa8aqX1lV35REjb5zac1geuYVwtfjGbTmXsJH0qf7g14Hz9xzE9iD0qigewTv5F71qaeKNwz0HXI+jb5zLODABQWaAP+MbXA2SbxdH9KlzMjw9jvAUMr72o6363hQ4VyQ+lU+vkH70ALVFM2cnP8f1uOojhLPgVZnWI7y9Enjtcr+TT/qDJdj0LW9tqlgFQtUdYQfNQupxnHE3dw5aripmDgOcOt90gHOpOvKRF85EOCJKPSrVEa/y9D9QLDQEXKco3UiqVPtdrjZIIxNuSEeX+qomc9U+3S/WUIUgvD2o7nJ9UnfECnAPWQUiSOu8HYKERz6oO2IDuE7THcHOATIO9xzQhnT1IcblVhjnagRp8QjZVw1gHOFb9ZnSuY1OvutVe3/86w4Be7XOc6GvetsuF47jAq5dElFWn9a5oJF5YUDOBHCdds9BzRw2xrWy1jl946qrC6tfb0i7uWoKZ0eaoJs1e8LR+6pQPy66GMiNhqaV4ljbc/DqjrTC1fL8n/RVa0ummiI1r0a/yyUPT2dcXBR08s9Cl9gVpdKvEvgO00LB7qta585g4eP7jIuDxEXdaSV87TID91WdiUx67uf011lkHBTea/R6HN1XhTdr0AmROw9Pd1h5euurJvxKEh2e9uyrfnYn38q4vnp7cLchXXuVbtxdLoFx1UVtpWnv0uLNGudquTCROXj2HHI6riRK791zJakjIxDKRGatMI5fu8z81y4vzU5bE2yJmYLyFsc1jaythPcc+CW4j2grGVi71GTQgnLV1tFrQduDUj3uWvwb27p2Sefjel/PAXXy+QywoFh4IZKrTF67lC6I1H6NTHEGOBeWB88LoVm6dimoGaxO1a+RiafOpX3V8r7yGayOuZfPgGsOQhy3V4Fgew7wSlJ5hXG1aY1Msj2IK8B0BAK8cYIIxBXG9bZuD6ZUlCqk5zC0x/Yczh9YtSVK9ZA3pAN6Dqq6vnAo9ANx3Ndl0LazXPK0kq/n4J06F+45XMkc7Ajv0Sy/VzZrpAsiLUnyhZ38fQX4vOqIOXX9o9cutRlgfZfrSuZgTVxU9KrKPQdQOgd3CZB7OO9VzcnZ4pYDHddnkoVSrprlAXe5ynN5gxF1/Vi7ocenp7XdcueJyxSt8wtjhRYku2EcB3Hb1LxqHMb9192VJTmuw7DxSsfxdv/Tvn7TSceiAEpylqYnH/lWsWBRXABMVLHQ8B4cjvWUfN1xTYU6wJEqqy7y1ynBEIGt8ycqBxe2BGh3JEt3hO3HtXjm0KFJ/kHIOTDCmEUM2RFMH9ygn8N+WoNmDpcLZEgfFuz2pQPMKof7eHBME0RsxAVX3OFS1Y/Zj77jtGQ34nLRWjVeHtFF/pOIc2EvRdf1m/2UKy11s+8qtXzmAKQMhiNNTDefqiWtFIlkQqEbNJFuO7g6oqr84p8PC710IxN0R0bK5VIFV2svTx9CnCPTxspm1iiGiBKeptmh26tAYOXpp+y3HSGuqUwnONzIZN7bRAdYp4bDZpee5qq5OsAKcdTQISjykUjmM/aq3lRZK3rH6a5SOMmPZw5BQ47yQ05rvm3NVVXhkLCs0YqF2EN60A4iw8Ev1dtcNXvmsGK+qukh/QIRtEHE06cK1fXtKRfLqoTLRadcw8Ev1ZkTXBXzVdkdt5k1PvtQo/24I604520lvq0EFAvxXLXlytPHpjUXcRU4tTuiJvkx4EbugxHojrRJTn4p5jY3gcspucLQKW0lVnNhFQhF5ir+VhsvgZsN/Tji9cOcVybD6wcOuQ5MuXpxirhyt0tTea9NTPKLEVf7CdzMaZdZbpd0Pw6LZ1wiN7PhWGpwk1Uz/BzQDsSEnOB6vXT+cLscntoB3sQZ4qiaV/qOixjSJYgrBNwwu0OcSYKzzbe1ExwYrF6InFdpVp3EG+IIJSlsnWv9uEQ/DrMH497IcOgt4hNxC9vXv2b5ElhU32fuuF78IQ4r3XyreV3NST5V86K16uG6YRF3iIt1gJscxRbgE9oG88E2oa5fdMu14h9x5pZX2I9DuaGn+nGXmOdw6PHrvh+X9OWagGdNbzCkI5uk7NhpwHliSDf2sIY4wQHl6ZysWvoaqcUz4hLyGUrsfF85QIZIvASsh1zZsYsA54qTDyuHSAViM7wH+x6NarDWeRHiFpHT3HE1g5zldsk6wEDOdiiwJejFJeKYvaqtWEhFqShfFSkWHikaPHZH0qJUxEOvnK9a4CE9ibvACVQsbMLKwWTWGP6qMeKOAW6o3AWOXHHZ/TiD55BGXHZW3UScfqqPVdbGMjSLa1VVcRG+KmRI53fOOxGnn2piedpgSK9GB5h0MssBVzsM3AwdfXPuuFh3ZGLaonBUk3/J9eIfcXDmcC1RLEwotgTvuDzIDY3LwM1z0kMam/1gjcyWjQePq7VscjrE2YuFxNHMLFWB1vlwKDO4rlX1tj7ROidZNc1XzZJPZh/q73O5BPBVo90R5PaTyKqYPVhcdK3iGXHxJB8RRLT14KZYl1FW7RJa5zkf6uw2cJJ8x5kbmcDsx+yO6NglQreInO+Oy9oBNry348qh2M5hFTkH4sysihA3WXNVvAIciQSVtH2d745kdZUYQ9pa1o8QNxzLqO4m+eFcNRk6BLmWiHZ3gK+a+FZH8Y444q9qbuuTmcMLlad7Ee+Iq9gOcNJ7cFqZDjCXOs98AV9m8Y84OFitI7fLK0VcwHPoqZ+Dks+wPtRhEf+IS4kZ1ElqOZrW3CBH+ar2O24U34GT8rmqntWsif24jjFrrCtuEjkD4qC2kpqrjrQ9cpDLZXlIt+I+cEl/VernsB7Zj9PTQZIYKjkX4iCz5go7mYpZY2qdI77qH+M9MtRyGsQZXC5rrzBWnt77OQCNzKB2YIi7ipwDcZXJ5YJS54p32UM/h84WAmZZdZMTBE435LLt3sm2foajbyqtTnKCwCkVCFMlHnKSpkhev4UdYHDHke5IK2cIXKACYbuWm7UqVp7uzDsOI66bzxE4ogKBZg5ZtWqCIR2+4wDiLtl2s84m+VW8ra+YNXZ3BHaA4VwVvn8vjcipEJezr8/UDOgOMDeYYv24ZGXvtzuS0Y9jO8AT3QHmnPzhz9G4OZs5QKIvFgJW40FYqraAWRP4OQSRK4qbM55Dxpeqd4B/uiNTmj1oVg5ZhZbvKZdi1mBHMyIuanPydXdk97GW4U28GZqFSjdL8h2nkgN+x7E7bo+40rj50AHOkTq3NYIQ4tpolRXKi36/Q0rj5m2uWkV81ZS6/hRvK/XRyIHRHIby95v/d1y9WEk1lmW1uVx4XekWua4SOSHiKuZnZu3HYXV9yh6EPIc74NojBuQe9uMqUz+ujp4jI+2dt6w7Qp3ghuw+krNaNctBrwYqaNB7MHgAdyk/h5K+pdfx4GzusoafKujHRR3gDu/HhfpxfxF3lTMGbrZtCdB+XIi4KDegmQPagbh1zsufIY4QV2ltJcVXDTn5EeKKuFyqcmgrOWng9g05pZG5RFvnd8SNtDuiPKRbw9H3/ztumkVOjrg5ra2kEIe7IxBx4e7IA3DjMwf3eMfhh9xovH/73dZ5n9cBHrpFzhs4hbhgB5iqeaH5IGDWtCazZuhnOXHg5jmdVX9mDte0u9TjAQz9HB6Iu4zPHt2v7kgNe+cb3FbqeVa9qBfw39C1jZw9cMBDmr7jwqHDylzL+5Sfw2V9wcn9Iy5qZFoTaZRV9b7+k1nB55Sr2gEOaysFiFO+tCSrhqsj2yzyjyAu3lYCHnojyap85gAdfV9wu3l+x2V0R36INSvWAUbvuMvzydRprWogTmfVO+AI4uB+XF/JvxK4UHekMZRucHdkQhsQvdqPuwGurV95cl+LhUR3hPfjTN5lkFa78bUH97StdEdcOJC277h0bvgO24ty6RkQV5OtG5Pn0GIy19S8/OCeKofojlu47gjVT+4/EjZvdu9grnq1uVxAB1il1beEzRtBJJQICv1VMeKU93a0OzItbzq5k90RgLhl+XGCqy3ERdYrO0fftXnb2T3VqjfE5aigMbf3YANirN54co93XMjJT20rhWteP5Hrr/NbT+7xjoPMctOzJkqq6/Luk3u84+7vuGUBSzeBweoE3yPTm8Hm444LiA5gyMXuuJU56G3NR07uAXHVwwo5fgBTf1Xo2rjVnzq7r6yK1LwSr5HHHTdt9fy5k5/R7XLcJdX7FbeOy2dP7trPweQ57FRZx7r6+Mndq3ldEzrAY938ysl9uiQ1cJNVa2SO16X6tZP/dj8uDqJW2VfM/O/ftf7FmPkK3OMZ3MAu8G3T6ytiTTU7OK8jxMlfuN1idg/X91/9VUZ81WOVo8P+Bw+0DogP6NDPAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-up{transform:rotate(-90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left{transform:rotate(180deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-down{transform:rotate(90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-up{transform:rotate(-135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-up{transform:rotate(-45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-down{transform:rotate(135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-down{transform:rotate(45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left{left:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-up{top:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right{left:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-down{top:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-up{top:39px;left:39px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-down{left:39px;top:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-up{top:39px;left:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-down{top:67px;left:67px}.jb-pro-container .jb-pro-ptz-icon{position:relative}.jb-pro-container .jb-pro-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.jb-pro-container .jb-pro-ptz-btns .jb-pro-ptz-btn{display:flex;justify-content:space-between}.jb-pro-container .jb-pro-ptz-expand .jb-pro-ptz-expand-icon{display:inline-block;width:28px;height:28px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAANlBMVEVfX19fX19fX19fX19fX19fX19fX19HcExfX19fX19fX1/////Pz8+oqKjCwsKhoaHn5+eWlpaOqTaDAAAAC3RSTlP/3CaKxwJiAELtp4ri/s4AAACuSURBVCjPfZPREoUgCERXBdPRyv7/Z6/Z1aQp9oWJMyYLiKUrOIpAJBdGCldgbzBkPM/QEoTI3jBEPBRDhwEvChe08Q1Ge0ImvIq4Qj8ljrLdH77CyQPWlCdHC0Q1e9rmmuC+oQN9Q4LwcQg40L6eyqm0uEpXSUqe3fKpkkqL+Y/o+07SrahNEO0T0LBsvOitf4xsLqiNTB32wtqaVKosGLO2mhUrS93+PZ4D99wPqzMJVcbEyA8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-expand:hover .jb-pro-ptz-expand-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////i4uLZ2dnIyMjExMS8vLy+iXNeAAAACnRSTlMAYomLxwEm9+NCLo6DKwAAALNJREFUKM99k9kWgyAMRIMmEMLm/39tKaVKFJkXl3sYJ4sAXeQ3ZOcYd0+gRYblFBuFLYoS2ot5lpvYn8zJQ65TO2GVNmdCmQq/qczw4gjpejD14BgmhziEIvCjVRlPioftHW6A7xBB1a8CCUMvsuSqEkPM7eZX6h8GrQ67bYpNIbRL6rb4/k2EfVXKsgmqfQrW9qnGq96a28jGQG1ky2HXpVysyYyeDIhWq7le6ua9P36HD6+2GRi8iBZBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-narrow .jb-pro-ptz-narrow-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/9/f2/v7/y8vLUObqxAAAADXRSTlMA3IrE6SZi9wI+y0gNXAn3CgAAAI5JREFUKM+Fk1kOwyAMBQ04bJHT3P+0JVUMNMWv8zvSk1cipfjAKXHwhR7k6KTjYp7dVuWLug1XWB5wz96T/JD2O3Phmv0k5ypL6lVVFIPYpLOka5WKSSFvS0/BloHYlkza5HkMzrvVLo8ZlRr7mtFYWBBsBQ4BjC//GTxcGVw2PpOVHQ6fJj7qS4936OoN2K4e5yE6N1UAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-narrow:hover .jb-pro-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-far .jb-pro-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAASFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+kpKRzc3ODg4PFxcW1tbXW1tbk5OT29vaVlZVmZmZ8vCMFAAAADHRSTlMAxGJ5Mssm9+NCiYtiH91SAAABAklEQVQoz41T7Q6DIAyEJQooUL55/zddhVazzZjdHyqXXo8DhWCYTWqltNyN+MZLuxP69UGti/vAsl6c0e4L+tQ2yv1AEbvecMhO5cXdYhk+6aO3WGrNAMwentlMz/ZAKIlNoRsqY2wtFWu9t8wasc0iYVN0LkQfrG1zbxNyrIBcntOQrH1Ukkb60QcxYF1xMA2dh8zWj6ZDsLCsIrL4Ds5Hm9FMbCEROWUB0COaLXEIZJKV7CKybGO7UuxjxY2C/TkMbxboKBQCxgMN6MCJQ6Ch/QjOZg/B13LGx8FDTe3IFvl+Bc9XBi3UWoex68qeL/vxmdyxyvz3NJ8f9dDef36HN7koIK2LjxB0AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-aperture-far:hover .jb-pro-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v6cnJzr6+u/v7+xsbGlpaXNzc3b29vqh7uRAAAAC3RSTlMAyRjKA59J/3PzPhe1wxwAAAD2SURBVCjPjZPrssMgCIR1mkYtisD7P+zBCyZpM5mzv5hs0M8VnZvaok9BlXzc3FXbO5z0vtifFC5Kn8OL4UfxwVvuHm61d5Z0b6ZGZZwZpQAUosWsjVZntVS1sH3ZFo1IRVYfGXgx+VGwNkkIVbhq9/jm3cAhaNv1Uk3IA8mNn7D3kbQeWK3TLH2jCthrDFcTMwUWaKiClc9mJtJWhS3SF5BpJqMQW1b3xwnkDahMoHYomkeJRgSENA/MFsKML7fgoCBVbGvM+Cx4JcKWbWHKK/h1ZYS1Jy/nK3u8bB3KhzG5deMxtfv3aO7/Heq+9ms8h9fxHP4AHzAWU9zlWNgAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-near .jb-pro-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+FhYWbm5vz8/Nzc3OwsLDi4uLDw8PW1tZmZmYgm6a+AAAAC3RSTlMAYmOLx4kn9+NCIVJiPGAAAAD+SURBVCjPjVPttoMgDMOJAqOU8uH7v+qKFN2c597lF5LTJg1VqQG3aGuM1bNTV0wWDtjpg3pq+IB+npyzcIE9ejsDXzDCrjccs+tOariF3n2OLyw5xko0vh9MDjNb9Q0hp2GK3cixlIApe4/JD9appR8SFxWAUFLg6n63iB1irnY1Jv0mlrok7nUdcZRa1YeshxBA9iijChlxI6iZEaBgSEL2tkRcymPGGJpqlbZ6uDg0WR/F0DwuMpxDkYwiIXA8hO2uMJdGCCK6teB8RQoY8xGfevQjxYQt25qoRwDT25MRBjZ7GtP/P/afa3LHmrflXa+ruf661Hvv+et3eAF6Fh3v+sSUGgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-aperture-near:hover .jb-pro-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZn///+qqqq9vb3z8/PMzMzo6Oja2tpXGg+mAAAACnRSTlP/JomLxwJiAONCr+rW2wAAAOtJREFUKM99U9sWhCAInEpLBS///7WLEWy7p9O8qEzCMBIOQ15DAlLYsoegS9yFMKQ93skl4Adh+ZI54Q8pG5nxgKzkgkcsk4zhmQxRyN1OPHqtncjOu5AuppcJ6s1EHTA1YzC3Wgq3YmzGqpsmlwZAo7F8oLEVKoeE6+TbSxK0JJ/3FLOwFnUxzXuoltYDDMLoAlmYXLAWIrkqbdZKs+q4KBfkNV1uwGaBim9TdLWS3R7iGRvCNTPB7JvGlc5EXK8cKbrxooint73RzXh7Msl6Oj/uT/b62O9j8sj6gMXX0Xwf6jP3Zr9DtNAHTYMMXrXSK0YAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-focus-far .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAPFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////92dnbs7OyFhYWjo6Pe3t7Ly8uxsbG8vLyG+Q0EAAAAC3RSTlMAiWJjx9wm/0Lti7mfpe0AAADaSURBVCjPfVMJDoQgDERFC/bg8P9/XUSO6CqTqA0TptNDpSrMpC2A1btRT8wrNKzzjdo03KC3zhkLD9imbeAFhd3sG2kvZQ2v0NknfGBJZKkhBM9MxOxDKBV1N4iHi0TRHYjN01Qi7/kK2PtyNDU7DAEJgDAAN0u1jsQEFEkcVVmrqjeXrkWRmC67eqbgG7bJyvkQSQkvUvec7szpek6t9ubWJSK/uJVSm+APzHKCh++DWWuH4plQKNYOpfappcjy2VvJn9744cjGwx6uyXjBxqs5Xuqsvf/9Dj8rLhRg+bQ5VAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-focus-far:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZmZmZn///+xsbGoqKjt7e309PTExMTQ0NDe3t774OlGAAAAC3RSTlP/itxixwImAELtp8B2gZgAAADmSURBVCjPjZMLjsUgCEVpq60G8Lf/xQ62gvNeOmZuUiWeKHC1cKnC5iJAdFuwJXgmf+xg2g//G54OPuTOCUOEL8WgMMCLwgPP+Abj2aF38CrnBR7whw6Bo4fWUk7MMrQ2OrpAq0GspTLLgKg1wTailNITZA0EaTkZGjIAY5NwlATah5CGRMJYj50tFtlWiapsLvAPRdtL/WOmET7QzZyl5ywzp7NWsjBJ1odsragJqeJ9HGFNZoLaJw71hMTm0O7NeDE1Z6YsU5rGL69sedmXXz0ToW8PzA/oV09T8OJR32fb7+B17Qe3WwtC9PVbHAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-focus-near .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAARVBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/////t7e2dnZ3W1tbGxsa3t7eDg4Oqqqri4uKTk5NImu/5AAAADXRSTlMAYieJ3MvE/0Lti4oh87zNagAAAOtJREFUKM+NU1sOwyAMY30FtoWS8Lj/UZe2gWpVh2aJH1wcO0mNqbDj4gDc8rLmiscEDdPji3rP8IX5fXLWwQWuaVu4gbKDuyPdsJMz3GLefcIPbJ6PDCEAFDlUAJiORM3NigQFAXAFlqOeRhWJyFFIHxNGvRrN0mp470U++3axGM2RAmXcXqKnkDSN0a9WIk5Sa01MpDXBQAdVtrA8lBhFnnKpsmoo5VBrhszV0KuJ5N2tP92O50iQjpzcctravoihdoi0Q1NrfN56m0VWzFBoje+OrD/s7pr0F0yUr6s5/LvUu/bz+B2ep+IHdMIV2SUZfCsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-focus-near:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////c3Nz09PTp6enR0dHFxcW7u7uwsLAUKT0cAAAADXRSTlMA3IrE6WIm9wI+y0gNQZpqdwAAAOdJREFUKM99U9GShCAMQ8BF3Cmlpfz/r15dAe88l8zwQiQkoRrTEa3zIXhno7lhWxcYWNbtN/fa4Q/218VFDzf4of0O8A/h3TQfOGU/ytsOj9gPVyt8warkmYEQQAgABYDxTKROz88koS6AVIB1fRCNbSI1cVUy15Jq27LGjTtyzipPeWw40/IXQkrHyZSRmqw3LaQgctFNKYzYyGACfEXossLMojFEj7J0WfdwJ3dD9uY2X25tL0Hj45mTR87Y66u9IQFsDS1bL57o7JbUDNIofvpk08eej8kTe3Hz0ZwP9UFfv8OgfgBUByCEUZhYtAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-play .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJWSURBVHgBtZe/b9pAFMefbSYWMjCjdOtmYEYqXVC3umMlBFRiT7qxkexITcdKSDUSYna2iqX+E/DG6LCQgcETUiR+5Pv8I3Kc+McF5ysZ3x2++9x79/zuLFEG9Xq9s/1+r8my/AnVJq4z/2LZfB0Oh1tFUQxd1+208aQ0GAa7kCTpMgRJk4kJXk+nU5NEoe12W8PM/wrAotIx2Z+w3MkE7XQ6Q3S4otNlY5zPUZdL7wiMBUsRIK/fDeWvhQ92XS0HrQia83cCsqoIyMug8gQ9Ho/DpF7FYpEajQa9VTBoyIZxWeEfv6IndSqVSjQYDKhcLtNqtaLtdkuigmGSZVn/XKiqqr9wqyZ1YEtbrRZVKhX3zvX1ei0Eh7Ufa7Xan8C9VRIUg9lyQZfzO19VOOugkBpAgaXRtnq97oLZ5ZvNJm0YQkBZ8m63E7YyKl5ntrrf77vlJCF/qzLlKLZ4NBqRpmmuF2LBlLOyBFYBchDKlIeWyyWNx+PUtS2Qtx+eJA6i2WzmQtMEA+8KnA+73a6N+jkJil1pGAbN5/PMfRBIZsGn3+LFvSABMYiBgpnJgZEeFHQD4EzQrOsWI4N/nrY2uPg/eeefV8WvAKfALOsWJ3jzA++rcqjhB25OXAd244nA62AjV4LGxWLhIBk/oPiF8pc9mUy+BZVnyQEzueEZUb5yjyvhBiX6BCw2YTGvdZNyAkYPZsprT/rgO/K2vDcdQQH7jes7gPcv/kvqyCcKbEVX6PxVAG76QWPGPZAIDcEZqGECTQyokpe9wp8VfNqzyA2L9M+KRzm19l1i6ZQBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-play:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHgBtZe7buJAFIYPjsVFAok3wBUlYcUDLNvQISUSDVVCA0IUYZ8gmzcgBeIiJLwdFau8QToaQKygovI20CJBARKX/Y/jICPAF3B+yRpjZvzNOWfOzLGLLKrZbAaXy+WdKIq32+1WcrlcQe0vZb1e/8XvQT6ff7fyLpdZh0qlEr+5uXne7XZxMpciCIKMSfzGBBSyCwVMAqxpEXYEhzdeAJYtQ2u12h2aJq4gXadSLpf7aQptNBoPm81GJofEsc5ms9/0zwT9j3K5HHUSyEJ4ovV6vXkSyjHEyvxDXyCAHxGy4hEUq+4JjWQ02O/30xV65rTbQ9lKNEWjEYFAgFKpFMViMbpQnOfFPRSKWxnldrtVaDqdpnA4THalefMDinx8sDOYrY7H45RIJOy6PMibjch3F24AJEmSeo3HY+p2u7RYLEzHwNqogOUcpSvFrk4mk5Zcjry9FZCX1+46qj5dzvEOhUKGfQVyWAyPRCLqojsnEYtohpiSE5rP59TpdEhRFMN+Itw7Q3DpGq1WKxqNRurF90YC75+gnXszulBsVbvdpl6vZwpkwasDNWVw9r3BWlu5Op1OVdBkMrEzTD11RO1exmUJytb0+30aDodkV7DyjT2rBpNrG8zg3WwQW9ZqtS4CatASt/sVhAC/GA3glWk1bqcEo+TPwm0P5QeYySt9jRS9UQe54vF4fqEZkMNCdXivrw4PoJlMZoad5IeDYE7F+0KhcPC+syVotVotIQ5PdLm4CD8CGkJZfAIhzlw3SWRdM+T9q9frLbHnTnUwrfBZfPCiecQG8v3MBHj/HvAm4/P55HMwW1C9tG8a/RmsGH1CnNJ/17UakVMOx7kAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-pause .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHySURBVHgBxZc7bsJAEIbHdprQJAU1ckln3FM4J4jTIkSMRB9uQDhBlBPECIk2yQ1MSeeIxg0KZQoKKpSCR/4xtsXTNmA7v2ThHe/ut7M7O7sIFEOGYdzO5/OSJEn3KGp4ZDy33ucxP6vVqo86H71ez47qT4iCLZfLJ0EQmhuQKNlo89rtdk06FVqtVjV49kZrr86RicG2TdMcx4LWarUWGjzT5Rqjn7tdsJAi8Ch4C4op1TGl75S8GKwCPOWC6FsRNDKAL5SOZER30HcAhbFFEUFTLBapXC5v2fL5/J7tiOCXofHLlVfikRhRrSqVChUKBXIchyaTiWtrNBruYLjM9jB5jlmup4vFQqMYyuVydKE03vsuVBTFR8pIcFD317REGQlRXBJ5PSl+iktCskgZC57eZA5l/Q/Uy4lTykjYq1++p5EHb1LC9rRdKA7dT8pO64yERG/SmVM8m81OqW7yckr8Ztv2r6Io1whnLawF59fhcLiVY0ejkWsfDAYUJfRfB+snOE85J2KRvym9RGF2Op06vwRbhg9YHgmlIz7E235B2vwC1x1VVdl7jZLT3nVF2q0BsJUg+ODFTDpU0wP3PfC5a2wB+BD7CuqLgws/TQQYn7cyxYfxfdc6ViEUujMAHUlER4cKHfhbATvPjBUG8/UH1xXJDxHoYGQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-pause:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH/SURBVHgBxVY7bsJAEJ01CAkJKUhUULmiDSnpoKYINyBuQIgi3AA4QZQKIQq4QaChhhuQCxAXSERUSDSIb944axSS+CPA5kn27o7X+2Z2dz6CXKDT6URXq1UqGAw+Hg6HDB4V4qj8rAsh9N1uN9rv971KpTJ2Wk84kW2322csVv1BYr+gEGMo8Foul7uWc6w+NJvNjKIoHXRVOgMg74K8AXLdFWm73a7BujpdDh3rZH8TCw8JLYlPSFutVh7NG10feigUetA0bcEDxZTiDFU0L+QN1M1mc1z7SBoIBGrkcGkSiQQlk8kTWSQS+SP7D3CzJ76c3A/yi61kodOP6XSaYrEYzWYzWi6XhiybzVI8HjfGLLeDNGxoWpohF8C50CXgwMK+r0gNCuQTENnyitQgRT4BQSOlyFvrKsRdCapC/uPuFqR0G1IZExfkH94NSzkHkk+Ap4wNUiTqPvmH74gUDoe7dOYWr9dr13M5sfNxBnjQ7/dXuVwuDGHG7ieOr9Pp9CTGzudzQz6ZTMgJ2FFtMBh8HvMpx0Ro/UEeBQq2slgsatw/uoxMsBp5A64WG+bgxE9LpVIPpUWDrgv7csUE4nEdlWCNPCC0JJXEF5Wg8MchHs11CWpCVvZVkBfckksyrneHVnMEuQRXitiqPBS4lwpEJYmORkc7Qju0IzPxBZ2t+3mW/JtqAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKgSURBVHgBtZe/jtpAEMYH28WJioIa+URDF8MTkAalO6cH4YIiFbk8QXS8QO6oUlCAkGjDtTRHJBoa4nQ0KBZdJApoEAV/Mp9jkAF7bXPcJ5ndtdf725nZWdYxiijDMBKr1SqhKIqKNpdms9mcRxkjFqZTsVjMy7J8x1WdL9WjC6D97Xb73G63m0HjxULAvnI1T+FlMfxBBPeEwoW73Q6we7pcViwWe8+utwKhDFQZ+IOrGr1eAH9ksOkLdSz8Rd5xu1RzBmfdFkvupwz8dmUgBENeYNAZtFQqGVwY9DZSnTVi6+Decrn8h0JYWSgUKJfLHdrL5ZKm0ykNBgOazWbCd9nNt3CzgoZjpUohlEqlKJPJHN3DJHRdp16vR51Ox/ddTiVkw70NlSTp7rRDMpmkWq1G4/HYvmANSpHghXg8To1Gw/M5W1oGVEZD07TvXNy4O8Btw+GQFouFbV06nabRaGRbhbaf8AzvTiYTr8c32Wz2p8KrSuMgJ7x6IEa4AIuivau9tNlsNGm9XqsBY9gxhOvCCi728wa7OCHhRzQAZl2pVGyXRZEoBAoFCDGs1+v2QooiUfpIHE+LBEL+VatVezVfDcp/whYJhAWBVHFvCEFCfz8op6cpORuxJRokajz98tSRae+97OJnUS/RanQLkwNQ4FrzsA2yyU0Gf/br2e12A90LlwYAkS5Pdrm/wRs+/rh1ChAshuV7wTqAQoTAarVat6gorll8YWvzXBXmbdTUcY3/sK/L+4ppmnPeF/9SCGsvAXIsH8+gDthkMFyepyuJgS0GHh3w5NNOzO0zeMHVD/R64BMDP53d93vBORW+0GVnpvmpS0NBXXDDSacwR9K5kxaPok+NUJ8VDlzlQucJvKNj63G2/U3/E78fZqx/rk0w4ggu8jUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgBtVa9jtpAEB58/EqArqCBBqehorgTVDQxPVJOiD5QAEJUeYLjniBcgRACKeQJQsQDBBoqkIigookraC1BwT+ZcQBBsNd7Ovgk2LV3vd/M7PyZgBPlclnc7XZPFovFv91uRZPJdL9fktfr9W987udyuRbPWSajDUgm3d3dPSOhBMaQUaAXu93eSKVSCryVtFQqPaBWXznJNMlR8zo3aa1W+7zZbIo4vYd3QBCEQjqdfjEkrVarzyhlAa4EvOt6JpNJ6ZJWKpUnHH7A9VHMZrNfLkjJO9Ecv3Aqwg2A1osevFs4vCQP5SF0Op3g9XrPflar1egzut9vCNVHzPS3j8EkcCAcDkMgELh4PxqNoNvtwmw20/tUXC6XSRyLqqZ7LS80CgaDqiY8IEESiQSIoqi7B53qE40qqVYsolTgdrshEokAeh9IkgRGIDPTPhJYC8SD4eg3k52RQNQi7XQ66txms+kepEUcjUah2Wxqrq9Wq6h5Pp8/4CUzD1osFuqPFwfnIsE1IBKbyDqANIzFYhCPx+EtYPmCGQxAppJlGQaDAVwLaFlBgRtAx7T/SNGNZWCg1WqpoeP3+4EX0+kUJpOJNiEqKWA49HGusA6gwPd4PMCLXq+nu4bpsK+6LVV9YMDlcqnkPKD7JyF1oFD+PSSHV9ZB4/EYQqEQGGE4HEK73dZdR+Ua6nh4gWXtD3AkfCL3+XzHZ4pfyrekIQnHApr2A2oqn4YM1TvDWkr3xbozPVAxJ0KaH1MRFllSvQG3gYztz7FtOct/mLqorZDhulD2BVzWJKW2kTZckVjBnviM8IKUQBtQ40ck/w7vAIUhnvGYz+cvwpHZbGNHkcQMwtXGnICs9YrCF/Q2GHb4e3IJBxLgo44ACsY6afbT4XDUWd09N+kpqOhTDT55Jf9/Z0b4C/UJLQCcLGi1AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIjSURBVHgBtZe9UsJAEMc3l1Q0WvAA2NEp1MyInVbGnoE8AVrSqW+gT2CY4QGwpTEFNcaOEqksKKiYcYYP/xsSJoRwx8f5n7nRu9u73+7lbu8waAc5jnM6m81sIcQlqhcoOZTTsHvAZT6fv5um2XZdd6Caz1DBMNm9YRgPMYhKHhx8brVaHu0LrVQqNjx/2wOWlAtnn9MiT4VWq9VHDHii4zXAPFdJsPGPwK1gIwHk7/dC+sXgAsBjroioFZsmpznCuHKLxeIxqqwirdVqvGmcbaOy2SyVSqW1tuFwGJTRaES7CEGd8TJbXOEo4YkjG8BQ27ZT+7rdLrXbbSUcx4+P3oOIVQ4Wr0Cj0aBMJiO1Q6Q1PvsirFzSkeKVqNfrKjM+8xeCybRMbUcrn88HRSasqs2R5kijisWitB+reiKm0+mhaS5VvMwqCdIs1WYKoJZljUmj+NwqobS8D7Wp1+tJ+5EPvkWYD33SIE4S/X5faoOHgCdC+jsdKc5GnJUUGiNIzwrpbjwh76tOpxMAJ5OJyjTwKp7wP/CnvM06LeFzdPwNd4AFihL+Chom/U86/HmiAr4CGOR4M2r0fX9cKBR+8e816deg2WzeRJW15ABPXvgxRXoVPFfiDWbSAhF7iJiXvUyagMmHmZlmGYK/aXn7HPSNAWui3AH4s9EnG8ibiy94DL6l3W8jL3zvetsMpNCEAw4cKGPCc9r8WeGj/YuBMlikP+yn3EGZYjlWAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI5SURBVHgBxZZLjtpAEIbLjUFih8QFnBUrJCIOEHOCROIACStALBhOMMwJMlkgBCyYnCDMCUJWrJCQYB+zBwkJFiBe+QvZyEz86IEezSc1dj/w76pyV5dGEnS73cR6vf4SiUQ+HY9HE0MJu5GmaSNcFrvd7hn3vXK5bIU9TwsTw8Oqh8PhzhGRoIf1tSBxX9F2u12FVfVXiL3ksVgs1khWtNVqfcfljm7HgtW5l1Zrbyh4Fo7FYh8LhcLCGRDu2U6nc69YkDG22+0v98DZ0mazaQgh/tLbUUOMHy9E8eH8treDJ8lkkgzDuBibz+c0m81otVqRBAu4+QO7WecerDSDBB3RbDbrOTcej2kwGFAIvNc5dPVTTLHpv9INpNNpyufzBEsC1yF81dOVf8KslCHIEy4SjUYjIxDLDDoGKYAtDrNW13VT7Pf7azOOJ6lUKnAeySLB7jVIIezmMAS9A/igxIIUwns3VBQ+HpFCLMsKnGcjhX0CKLF2MpnQcrkMXIPzuX+KKax9phthtw6Hw7BlVqVSGel25wntqqy02WxOFnLj+xB6/HNTwmdXTqdTGTHmfKA7lhKSxAOCbPr9g90n82X6AcGfTgVxUTngtKlD+J4UAw/2S6VSzulfJAe8SZ3fiNRiQbTgHvgvI0H4Gxb9IAVwTexVmHmmQbiCD1suHy26En7xaDSa86p/A4ttrpuIT3ohpLcTxw/tAWJ9vzUaSWCLm3DXZzS+z7hELFzYjX/i8fiTu9T04x9LgQk+PbvDKQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALxSURBVHgBtVYrrBpBFJ0FFAqBqCIrUXRBk5QaUleewBBIlwSDoW1CUlzz0CSlaJJHA8FgqMBg4CWIKkpRuEfQCDAYAvSeYYfsLgss6fYkk5ndmXvP/c1HYjaQTqdjbrf7PQ0VarLWgBW1Cdput3tutVrdW7qka5OZTEZ1uVwfaBhj9jDf7/ePzWazwe4hVFVVPhwOT3cQnRFLkvS20WjMzRMuCzKFyH7/AxkAg18oQp/ME24LsgENfcwBkJfvQqHQejqd/jr905HJGpnMHIYW3iHGp5AS2df/QabpfiKHfCdCVCN1qh1hv9/PIpEIi0ajLBgMskAgcDZfKBTMYjJVL8+nh7MeS/8ioFiQbDYbtlgseA/lXq+Xt9lsxrrdLkulUmw8Hp/poLB+JC+rkpa7FysiKEokEpyo3+/zBiIrr2EU1kKmWCxariMvsy46IRJWZFBSLpf5GApgvZUSYLlcstFoxMfwHnKQN4Mi+cYdDoe/IGpmslKpxJV0Oh223W7ZLcTjcb6uVqtxLxFayJtkfSga2Sycy+X4YnhlBzAQhGI9euTRqnhAaNjkKA5Unl0yALlD0SC0Au12m/fIvx5nRxsEYV2lUrHMgxmiYMwGwmiE1qzDrSiKSv0r8QMxF2Wdz+fZer3mhXAJCP9gMOCGAiBJJpM8h6jqXq9nWO+hLfGH9ohiVoTFIEbxwFqECMoQInwLy4V3mEMe0SB7YWtMJJzoVK7fLnkgKg65BVBM8Bj5gjHwDORoGNfrdUMu9SDnfl7d+HqAEArFCYNQYoxtAODfJSIBimTWpV2Swxt8PLwiRAgjGrwXuEVGmBNXw6MxP5KXMWYTCKs4U+2COH6g59tCu6uG7A7AYxteCcypVU+EmgVZbcJxkO4HcmplIEQuMcGOTz8nyT6T7on4Npw0mMBzgDnkqUZWNfyzWujQM/FB79lVQh2xeudbZ0VE36mvipzdRagjjtFtnSBlr9nxuS9uGCidk1HPdFp1xcvsGv4CcbeEIeSIw9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgBtVa/SyNREJ7dBLVQELU4bdwrtFJOUCxsXEG0Ue4OK6tLKhEb/QsO/4LzChVtvGvE0sPOxtiYJuFyJBBICtOlSSAQCEnIj5tvyC676ybZYPLB4y373ptv5puZt6uQB1xeXup+v/9zs9lc4qHxK621VFAUJYbRaDSeDw4O7rvZUroQBXw+3zcm0ckbMkx8enh4+It6IWQijYlueiByI95g4oxzQXW+OD8/X1JV9e87yACNbbxeXV0dOxcUJxnn6okfx6l/OOHcnr0hhIzsFcg06jNa8obwbErKOfs+CDIhUdUbxrhJiGrknAW8HB4bGyNN02h+fp6mp6dpcnLStj46OkpbW1vOY1q5XJZ8iqTX19dPnYpkZmZGSObm5qharVI+n5cZ5ENDQzKy2SxFIhFaW1ujTCZDqVTKaabA+z4qrdy9uhHB0PLyskSTSCRkVCoV16gRLfYODw/T7e2tOOQE5zKocmRf3Mggzd7eHvEtQnd3dxSNRl3JgGKxaEaE6HEO553gOllXuQ3W3ch2d3fFyMvLS1siKxYXF0XWh4cHOYfzUMgKpE1t3Y026LouhxCVF8DBhYUFcz9m5HF7e9u5VUOV2pp8dnaWpqamPJMBKysrEh2kNRAOh2VG/q14c7XhILzb3993zYMT2IOCcTo4MTEhkqKgrPCx1gGePxgv6vW6EKJYNjc3qVQqSSG0A+RPJpPiKACS1dVVaQ9UdSwWs+33c6n+47ZYchqKx+NCvLOzI80NiWAMEkFyeM75lx5FdFhD4SCXIEJluxRbTLm4uDjmcv3RLgIYgrfILZBOpymXy0m+UImIDLLCATyHQiFbLq1gB/90bHwrcNPAILwGAaREcz8+Pso6CNsRGZDGx0eS8xXqRgh5DYkgIwZuFQPdyGACfwJ+PHGhnHKUOnkEetS4U72Co/uNWdoC3yovUVqBiD1EZW4fGRk5MwkBjjKIBRoAarXa12AwWLARIpdY4McC9RcnR0dHZjPabhosMOkG9S9S2/8MMLDfRKhljawjoYU4wNXby79OgavxJwrEyFlPhBZinasYH+pPPOMaNL4wMJphJZ553Bt/Zp3wHwTYnvHjbDCuAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANOSURBVHgBtVc9TCJBFB52r7jYyCXWnhcbO1aru8RErjGXWBxX2BijGG1svNhJo56VhQU2ViQsgdDQYEFDc5rQ0BDoaMgRGhoKaMhdCHDve+6QZVhgMfglm9mdn/e9v3kz6xEusL+/79c0bcvj8fjpc8V6gCY9VXqK3W73MZFIpN3I80wj03X9il79wh2q/X7fJAXvTdNszkQaDAZXaHF0BrIRcvLKERE/OQ3qYwh/06shXg8vRPl8PlEqlZ4nktoIV8QcgBxwItbfitBOvL6+XioWi2XZp8kXIryaN6FNdpSM8spvthRWUmPaJ25vb4vV1VVRqVSGBCwtLYm1tTUeW1hY4KfVak2hFe+J+B+5+QkfnL2Hh4fI1KAq/OLiQlxeXorl5WWxsbEhNjc3RbvdFrVajVvMkcTlclmk02nRaDTGETfJ1Z+wlTxWLP84zQoEAkwEodlslh+QqZDWY36hUGByp3m9Xu88Ho+HNaokfidCCAIh2kgkMlYQAOtyuZy4vb1lBW9ubnidCioa37klkw0nQrgWgpLJJMfXDUAOBbEO66GAAkOS+tSRk5MTXgjr4FIAMXULrIObz87O1CHv8fHxR03thXAkDhbahezt7TlpzkA8sc7uUngIQIhUgNRr70AWQsu7u7uBEPTBdaqboQTcCIUgXL4DUBzjTrHVDcP4BmVlR6fTYVLg9PSU9yC2CIghEG7HHIC2GluJOGYyGR6DYiDCGEKD/iErNS2sU238QnH9rGqDopDP5zm+EIJ3aL6zs8NEUAKCQSiVwxp4BFaHQqGRwkJoRqPRkEZ7tCjGAAJQHED28PDAVkirsX1kUcAc7FEXWc5c7+iQTltnpyMgHNYgUSSZBL5BhqTBHkVMAZnxKsijMbQ6Vf+/FFe/mFLs6/X6IJZ20t3dXXb34uIihwFuTqVSI3Mt0nPia3LtpVLot461V0FWLiiBZwzMWCx2xOSy5+DgIEya/BRvA1xfvlKxr+JjUBwola/Fy81u7iDCX5JwiJSPHNJm3sQWoTnUp06a57XFIrxW+0dug8guutM8EvEHpxPIJRDDH6qFA2UmrSSrg0SO5HJLjhDdUxue+bLtQG7QqR8ggVvC4beCFHumRMSxVJxEJvEfnFm91YrgD/sAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBtZa/SyNBFMffboJaKAS10SZ7hXqFegGbCyjmUPTAH3eHlZWmULG6u/Kqi/9BLEQRIdoKigf2l1Q2ChGtBLmtFAQloPgL1HvfRyZuJhuzBvOFzezOj/eZee/NZAzyoMXFxYjf7+99enqK8GNxlZVtyhiGYXOZ5vo/MzMzW17sGaVgPp/vN2DkTbZpmqs8wfloNJqh10AZZjEs8QpYAfzx8TE6Ozub9AQFkGf7l55dWLbYTmxqamruRehbAl8CG5UEOvTNmWSmekHCVAgIJVgB9eHHD1bJSTPp7NXe3k68Hejg4CBvdF1dHTU0NFBVVRVdXl7S/f09nZ+fl2BS4Pb29geXMXyIe5eXlxM6FMaHh4dpY2ODGhsbybIsamlpyUFQog/geE5PT2l3d5eurq6KgTPc7x22kpGN5T+3Xl1dXdTa2ipGDw8P5bm7uyvoB3hTU5P0t22b9vb2ZFIu+smxjSOmEbfW2tpaAcJgMpkUQ25ACG4+Ojqi7e1tqq6uprGxMRmvi8P1BaXJLyE34MjIiBja2dmhzs5O8iLAMUGMw3h4yCkOobDYs+YHfXAkEpGBWJ1KJMTUqzAObh4cHNSbAisrK0FTrw0Gg5I4GKiEBAmHwwUzV2pubpZJOV0KD0EIkS6TlxxwViALMcvx8fGcEdQhKzs6OvIGYxLIcEwIxuFSvEP19fXSjpzQ5RsdHf3M5XtV8fDwIFDs0f7+frq+vpYtAjAMwu3oA/X09MgqEcf9/X1pQ/wBQhuyPZ1O56/SNOO+oaGhMAM+6rM5Ozuj4+NjiS+M4B2ZGQqFBHRyckLd3d2USqWor6+Pbm5uZAySqa2tjdbX1+VbU2Z6evoX3JumIoIBHA6ATUxMyCl1cXEhQOxD1ON9c3NT9qjufl2K5a+pqdliA4liHWEc7kOiwMXOvYpvwJA02KOILwS3FoGuoTTlWDKMJJUQ4qwfDmoyAwMDkkiYIBIOsS2iJH7k7MW1JPu3VpbUyYWVw91u4oWtcjyjOSi0tLQU54bvVBnh+vKJry82PnKHAydFDI1UATFwTgHzoIgtZvPW4Cxw1VlX0YtZFhjT6wvOXrgBK+ZnjcqXimHMrbHUZXuSV43kCpE3IUTzvPfjr75s61pYWAgx/Ctndy9/WlxaCsKPzZs+xc8Ww9IvwZT+A8hTw5fcMmXrAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.jb-pro-container .jb-pro-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-loading-bg{display:none}.jb-pro-container .jb-pro-loading-bg,.jb-pro-container .jb-pro-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-play-big{position:absolute;display:none;height:100%;width:100%;z-index:1;background:rgba(0,0,0,.4)}.jb-pro-container .jb-pro-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jb-pro-container .jb-pro-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.jb-pro-container .jb-pro-recording{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:101px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jb-pro-container .jb-pro-recording .jb-pro-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;-webkit-animation:magentaPulse 1s linear infinite;animation:magentaPulse 1s linear infinite}.jb-pro-container .jb-pro-recording .jb-pro-recording-time{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-recording .jb-pro-recording-stop{height:100%}.jb-pro-container .jb-pro-recording .jb-pro-icon-recordStop{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:156px;height:30px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jb-pro-container .jb-pro-zoom-controls .jb-pro-icon{vertical-align:top}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-narrow{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-expand,.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-stop2{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jb-pro-container .jb-pro-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jb-pro-container .jb-pro-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen-exit,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-microphone-close,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-pause,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-play,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-quality-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record-stop,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-scale-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-screenshot,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-template-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-volume,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom-stop{display:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed{padding:0}.jb-pro-container .jb-pro-controls .jb-pro-controls-item-html{position:relative;display:none;justify-content:center}.jb-pro-container .jb-pro-controls .jb-pro-playback-control-time{position:relative;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-icon-mute{z-index:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom{display:flex;justify-content:space-between;height:100%}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-left,.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-right{display:flex;align-items:center}.jb-pro-container.jb-pro-controls-show .jb-pro-controls{opacity:1;visibility:visible}.jb-pro-container.jb-pro-controls-show-auto-hide .jb-pro-controls{opacity:.8;visibility:visible;display:none}.jb-pro-container.jb-pro-hide-cursor *{cursor:none!important}.jb-pro-container .jb-pro-icon-loading{width:50px;height:50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAIVBMVEVHcEx4eHh4eHh4eHh4eHh3d3d4eHh4eHh4eHh4eHh4eHiqaCaRAAAACnRSTlMAikwX3CxpwZ7zIGi5xgAAAZ9JREFUOMt9lb9Lw0AUx2Njqm4iGEqmEnBxslKUdhJctFMVcW5wKZ0CLpJJQRw6iVqQbg3FtPdX+l5+XHJ3796bQj557773fe8ujtOI+6jz5p84dHjTkYD4+RhT9CIRZWRPJr1bChnbY532GhT4oUpbI6HEuqvgIH9544dh9J4/rpr0Ms8oV3zMNT7X1MXSmaznzfHjM4n72moe5n8ryYrW9rKRvgf0S93JA7yKa9lbzUg3keJb8OVCtwkrFmoO4MnsAuj5rGqnZg+GZXUXkl9NjEui9n3YA9XgpMgakLXz6ujMTIgrCkPVv0Jil8KgKQN/wRN69hLcb1vrbR2nQkxwiZTGQ5Teb7TO8PUaS8Q03sE+zkjP8qbjzgJtEhRbV4gnlkOFeM7hDYNdxPbiYFvKSHN6L2NmY5WzMYPtplZdTxncRvn2sI+DHIoug22jWMaA12Y7BrXzrG8BX32XPMDKWVzw1bdMOnH1KNqNi8toqn7JGumZnStXLi0e4tcP6R3I635Nc/mzsMxl9aux9b78UVmn2pve8u6eR50j9c0/ywzyVl5+z84AAAAASUVORK5CYII=");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;-webkit-animation-name:rotation;animation-name:rotation;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jb-pro-container .jb-pro-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEzMzMzMzMzMzMzMzMzNzc3MzMzMzMzNzc3Nzc3MzMzMzMwv5ahDAAAAC3RSTlMAW+8S2UGVwyyZnOTRhEMAAAEfSURBVDjLzZKxbsJADIYdBQpsSCyVMlXAdEuQYGKpWFk6dWHJgsQ7sMDSpUv3PgITAQT0f7ly57ucQ45KXRAZot+/89k+X4ju9KzL4XOhlm3pR0enYrWViSRPXQIQSASkRSkIJEFRimYCuQAHSW89IOv6SH5TCsuAj68Ab1wDzqkAzqoC7AUAPtgsABgkBBgkCJiNHehGok//KRVsHqd+3Dj1/vukt3AH/Jj05s5/AmyZhFVWXDls44iVvfQWkCvgxU6g9ZdJfCLvjJbYaT3GvjOY4mQSG3SJGjhr/Y1Xohp+TGKqqzexZ/1GVGdNCitt6R8zVvb9d+JmKdl8o5sPWbtxT6zFuJcDQtk92MNmYiXHquYlZlVt1j4P6cd7fgHFW7Nhqu29TwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEz////////////////////////////////////////////////////////NXt0CAAAADnRSTlMAWe+X2TINXUYZvctoYyuS2NgAAAEVSURBVDjLzZKhDsJADIZLCAsEg8WgEGCWGSwCgZxB4MgEAonB8wQEXoBH4BEWXgPJgEBG0mdgR3u77raRYAgnlq+9+/t3TQF+dKbZcJXSYSnzlViT457lRScKmBqILSFA3GoO8S4E+Ex5JiSJ4CbVdyOQdZNomX9D4dl+ko3NC8vFFmhPy8FIsi0ZlwLBW/LY5BxYYreUSgoFAEmhB5Rc9OCbUoXmTmDadQKTn4y6A/XTaoSKdb6KyGU6RJ7eHgpb3ABinAoil303xB6vQnRahNhXvMdre+fzOgxVrokX4jHAnBh8PALU8Eq8BqgTg/vePF8tpuPy9/NFaalSc273RizarYqfkswjifNMQ/TyTGMv4v87L+ks5gqDbc9OAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-recordStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAOVBMVEVHcEz///////////////////////////////////////////////////////////////////////99PJZNAAAAEnRSTlMAMPndsnZj1CSYPcmL6wsdoU80pOJLAAABu0lEQVRIx5VV26KEIAhMA++p9f8fezatFDPr8LSrjMxwiWlqzRuMYKW0ENH46c3WuGyVLXEduuO83UyK59fl1jX5EEUXD9DOaSh43XEP5zUIdZ4pAecTofVnWSt3ip4rx7N61vjnY1D30CpH4QQR8vsP+RA5Rs3KpjfMU/pMim/LgbvH7DF2F8sU0owqapKLqgnhuGWwImUagn2zhUX6WQQoYkXG9WxSAJd700/ygsCpAoliaDsPiG48GM1X5Ft/06sfp8DrDE+3DpekWjxM6366fgEcnklC+AIIWYQmPEeAaUmjFOnhCLDfxZRH+w1gU5b/DYjfNcyJ0p7dxX8B+FwxQVtvAGB5ig0d5gFA5KbzS91hI8CenvlHflfN/XvzJQnxbBEko1gbvVnPii+FadSVRUEaYylQfJtpLB+aRG4LY/80yKdUbCraM0lozGR4ewZ0Wtnj1iC7hjWKNnjYmR62W15cLlL3+2pyMR09jccyuyUrHKsvthc5xsY1iWJ0Xk3t+2XP7AnWwrAQmBH6asXubmL1Z5Lz6o992jWiu9lnMSiQsK27FS9NxhCumZgB2fTBPFsFolhZr5B/D3o9sJAI6skAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEwimP0imPwimP8imPwimP0imPsimP0imfsimPwimP0imPwimf8imPwimPwimPxLmg1rAAAAD3RSTlMA15sisGUvdz3szYwMT8H+hDJEAAABx0lEQVQ4y3WUO08CQRCADxBQchBiMDE24KswFlw0Wtig/oHzUWglJBZWio3GDjUxlhhrEzT+ABMrO2iptLLVRluDggI+xtmdXW73LkxxNzvfzuzszNwZhhDzdOxqaPGgYrgkOgFczh90ezAJQmpL2v6OHYnqk2aWxOTtAnu/O/Y5XNZXmTZjo3ot7aESwLdFeqAM0MoJkMf9ltwVQJ9PcQN0UFIJogvdJgLQVFMsAlxyBaPmVBDCE8W7qd+2SDsx0q4OwhSrCG134W54jDfKLjDNxaL8/9AAMM/solptRnoALBbwEPWYrOEzLnrZsTGoMW+fBHG2SiLPUNI6KMOH8QS/XsCMBYQekIEv7NGZF/Rht2yqmA4i3UG9O0iTqgMfhirDhRdU8XJZqqEO8tDAqje8IIt1r+I5HmBjfD9AxQ1MgJQRpc6GJRALHOAS1WRlhMs4VaSFzwIWzCUF3op71kdNsNs/FDCuA58YqCQl7IhN3WbDnlLtfjnuON515WM17c7w41QPOuBIzDT5wqi0T4ESGV3gjtTjkuPATwHoX9+cPRlmmvJ57YAir2qKy459QL/UhrS/uAu3xf8KiX3DI+b22t6jc9F/qfaum9E1pJ4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreen{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEzMzMzOzs7Pz8/MzMzMzMzNzc3MzMzMzMzMzMzMzMzMzMzNzc3MzMzMzMxdHBitAAAADnRSTlMA8AwGYt0aUcg+til5kgmZywUAAAGWSURBVDjL1VM9SwNBEB12IcGkMagxNktQSZFCYimIJAqKpZ3Vco3YBYs0NkKQgBg4ECtLFSFVCGgQrERBsLayPE0Ip7n5De73BdKLTrE3ezPvze6+GYDfsAQKy/Rz0i/OZJjY9XREuohTKulS+ZFGiADfyZXU5uHktI44VH5apDx554aXwJqloiIwiEsStAjCAsRNF1jCmGqa4Vc+BvS4JkjwzyPE6xiwzsxxeTbZxqjkANSWZFkoIj5bQBl4aBDfkPDNpeRRialB+SRAFz8UU1sAaEUjSCDoJ7iukZJ1V+c01bFczM1pWaa+a0Rp7MHn4V8Z1R9vLLCv9WjKdVFfk77JP+bZdz35YAfKXx6KhKp93abUYVbrj49g9aAYSuFCLbPUwzdCsYEWTloXgw1oGwQbENeuKwxzXhxwAADRMFd+zzRc6AAASY6RH8VjUHaXTrlOpDgCUP3gelc01e2d+f16cWbnQ46BGCRNVsWAWQJVw2xGfUXVv2k1OsLfazXqblzS99u1FwKFvBJioXBY2+r82U75Ab7O0ypVV0wKAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreen:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEz///////////////////////////////////////////////////////////////////+GUsxbAAAAEXRSTlMA3clDHfdfDQbsVG00u4Cqkr04dRsAAAGaSURBVEjH7VXLdsQgCPUBAROdjP//s1UTDUxsz3TRTc+wC94bHsLVmP9hkE8LIdvgupt2tFhcpy2CMZyVxNePEoqDp4hwEGz5PTqWoZNzLrmD9riltBEYzzpZQ8bweXy56Qy6Tivsp5JQYtawuMH3eJlSxIJtdSSa4xer4lMB89pK23mKrwjZVpsRzLq35vEE3+r26h6w5EKppcp3fP2lIpTPWJvoXoobeNI1sM3haHvx56tu2sdElJ54GbnPQ7RZ1sCpl8qPEMXBNQ8vN82jNbzLCPzGSDOZj/2Bqd19R1rELIEbDFrUJfKYdlALbDuDMko/hz7t8DqtCfr8h1Vt4rn7eh/6Ph37ch20aW8McsfGCOXzcr+GOlQG1rJ2HSHUDO/4Mu01qVAqTCpCJfgZ3phTS2pKm5aZOMUbs7Q6nk6L8UzRh6W78jH+gD/VRxHokPuNgUGTaPPR+zDR1mrlvcGgwkAVacSbeoN4Z0rb5/6XLrW/2GTLk2NhXHRKzrqAt9cD4rr4ddvae0NAYgOICdZyvPj4UYRf2BdfbB8iWvnTUwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAe4Fzh7MZbKPtN8gpX19xAAAA3klEQVQ4y8XUIQ7CQBAF0CWhKQHDGtQKQFcURUgqEARBED0Aoqp3IKnoATAEW8MNOACmhQYKcyi6uyjmr+aLqXj56bSbVoh/J3HBxcw0ZfA2c3FiQLGeQcWh1lOVDDJTAeCbCgAR6QqCDj0xCEU5Bl2BIALKMwhdKjGILRUYfCIOEynlvABANk64M5jabJxHfJY2I76yzYu/ZCc0s1WbNYAQ3jxqwMoGHoqWGHpUQajEgcYYcKWFtjLE4FGJQewoxODRDQOqKPPcHl9sfzSXa/0L349tEDsOsp/8+2/xAY+BZBY9KhM5AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-mute{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMztXryaAAAAD3RSTlMAHd4P7ztyiy1OnKhdx7uY2gyAAAAB8ElEQVQ4y72Uu0vDQBzHE45C3SJFaSGjUEiRpJRCBifXokkpSv0DfOBrEKxUUSoFH9ClFAUfU7c4OARRCs5WjThIsJuDlLo4ldvPe8SYxGyCt1zgw+dev+8vHPcvYybvfCR2OgUv2CoLdI62bUn3gq5UJxOomZofXPUNrIChJRklfcDSiKK2bYQ6PiCaREk0EQoYPFYa3F73F+DGsBJLmAjBAMBKakG15KAxqIhd2KuK5reRccBDNbqGJhfSlnNc/kBh4OY+vaoR5QrRC0afKgxMrKdXNKI8yxRENpyd+i0VA6wMm5IOBmORCwfAFjGwolofevbuPrvpGhRgpVaqiJflrLuUQQFRToS9l894EMDe7q6yL7/G5wMATc5mQCiAvQo3HAbwLtyYHQZgTxhohgGUa/CP12EA16W2/Ou4ZEj1dNG9oPMkZGiwJWQ8j+huPoJy9Z/XHTfUFSbAURveCtE5px5vs7hQDKS25FSDn2KR5Up1/lRmIHne7BvKd82LMRJbSjr5M40lmaYZ5/PRpiCpizjJyk+CwOGOzACLpSdz02QxkiuRhd8dNOwkV7zl2YX1mcySKJrQiPkXY9klSt6rkJPRwIlmzrcWSGyzHuTb11V/N0y/S6SdwdCR4m/47OIN7XOQCfwJwHGp8IcfyRdBLEZK4Uxp6wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-mute:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAP1BMVEVHcEz///////////////////////////////////////////////////////////////////////////////9KjZoYAAAAFHRSTlMAbk2o8o0P5TsGnVojFi/XHcV9urLaq0oAAAIQSURBVEjH3ZZZkqswDEXxLM8T+1/rkw0BuwM0f131+IvDyZVk6SrL8p88QCHp8UAnWmoWoG8AwQRN4/vOiqwUuwWqiob646MMhEW+KnMLMIXffgiZoODBusb7kCzjByF7OOszkOyp4amJ7fWVPwCN6BpyWRypvANPCvi7u4aTXe13YI+KkYA5bMRTSMlLnSyGwisSH40B0FJOrKVB6iAw2U7sGgPgQ/DTPQjitCOZT4Q6gWCtGwGFbSM34ENUNSpAKTACmC31rnRgJwjDdkFAJpfkAsZcAJvCSVQB2FaWWKdB/ATMAHwIUYL21lRBZRDiC5AnsBHBUqxEyaraFMoz0AnvHNa6xDWS34FGgNf6PYAEZoCt+BroUWFVbeb5HbCqSvB2cToyca+Adjlycdawt0C/HeyScl1W/w3gsU3aAd7JF8AuAN6isr7NAogXAFeq59Ec7ifAm49hF8wCMWfVNXAeCAkjEGuBr6R5ZGJzBrl4gGniBME+w8aMMyCsNZtfaemnmYaAQ6I3Rz0fnDhHJxc93Vrr7sHWjP3XRtTba2L3EkdFVaPC6YmXxKI9DGF1YPLdiwfD2r37cL5nDVw+uKzU5K27hsXCXPtyC2uyyl0D0p2TY7VaIvFYWU0Dm8TdOXmrVp52HG4lU4K/N38PpS/Kw70dbmb/sC0WCcQwNNzzjrzUj7veUyIIyL/4m/EP8V829O8zh5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptz{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzNzc3MzMzNzc3MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxDm1AzAAAAEXRSTlMAHqw+E8It/gjxc03jhGDTlgAjE2kAAAI6SURBVEjHpVbZkoQgDBwg3Of/f+12gtfMbK1Yy4NampCju4Ov1y8ruNyyo9fyCibVlNW6vUu29GpWQwTVdPTernqwffHex0WP4Nro3k+PrMKCvew/PcZ95aoNsY9yua+cGxTZsnf2K7ch4CAdGnWwYx/5LgKZCgxGdrhH3BeqNmnwviFXPZbQJmcM25HJ5n7/Pczr2QqksMJfO7BJOHLKLWFdMiL1QXYRwFagMklb4GB1zS7s8Le3fqH7Q28tVLkKdIzeaOJB2OKtY8KfTQCUa4++dNsLbrqpTR7xguHGt8hfg8P+seuaEkNdBjahzOD7g1cHP21SL2LtMNBKMdTRJjffTX1wVgrsEb1ITJU6QknwYJAcQky2cE02NbzPp70KyKggtpu9xM7Ik+CBIqY+8FrYyRUkrs+MEm1TG6tG9LZxNDNFGDue63TYGgIHqUUcuNhvhyZtn5LnlDq3Juxa4noCuX0scErOpNMDCrVcHPCS5rFGuQR9KZpxnB6CQ0ZO+AIBcTPk3UdbTx1L7jLEEHsMW7ZYm8NlIFyxn8+xdL7MURYEhzd5k2N2TabxIAORwC2r00QQfNSgrnqTJfh7cDmDu9ggtV0EZFr7kGu4KAxtNDln406TLwF9iZCIwn9EfjPuncRHYm5x3NfK3cFAS5kWxljSnTFlPHBAUFg5HsCCVOd9cdwXq+027un2QJlMjqISJutCDceRtTTuT4+1Q3HWHR8cu0fh9sGvADTYH9iLah/9nPz5+/MDJnQfoIVoAnQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptz:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEVHcEz////////////////////////////////////////////////////////////////////////////////////1bZCPAAAAFXRSTlMAeVoYDS1pBiPv4/g6lkzO2qSxvoixscijAAACi0lEQVRIx51W2ZLcIAwcLnPf+P9/NS2wp5xkq0ziF3ZRC3R0i/l8fvi04oxx89n+RBi1sqB38TKw7lw7lNzDa3U0e57bHhJ4d567HlqGC08eLAj9Gv8XD4/OwtsdhlfCW2s9LfWtuNrMhG1uLWP17Xh14LF4m8dx1OJ9jkm85YCYch5JzDVy81on3MFYkpTNYGmHHloYI+aqlNhlh5ZSvmH1AyBUwPcMX+u/clW3XYvA2YgRGXyZIZX6PXv0l3GlV9Jp9FKcK7mytJIg8xEeBdaBtV4P8tAixexnp73tY7ZBkrk9WEL8t7ZUDqtIA3jXa8sODSeUVqw5aztT+g4QeNAgM0PGTA0+EmfVeUvU0CEW4hX+lt/zseE7jJKDSmi0EUKBhr7EAMKPvNjOA9Fz4Yk/CFgcGRSdkYOHCLRxQfzKRN5SB/b5Ot8SzzQiKqcb6ipFdCfi1JI84OBdxzarhJ8RkpxHOQszl7bpn0GpmnXq6R4OfTkwwlyUWzeQg7rSLNhNUzEUEqJF3DMHeeXgqRIaYwHimLKipK8hMZOYVfJ5oKtIFSgXk5z4KcNx3GOIPGYfPigh9YGHBNQKVKbZhxMnqq+OHfWBHARZfWm1dnfSXfJuXInplse8wy39zkisdQ5kuLY+Bpc5hwGiH8Mx1rE24DFaLqXkfrNVkjk+8JPTPF0bUw+R9MCVuA8ks/xDyF/9orMqpBQeiob5RbIbmv7/TxvoX1Oqa914TsYg7QUWx8Y7R89JQY8mY6Dat1G5GARuMOgYHY9cbL1vNvc++fk67olLk4nrQSl7457OPqdeKn+vEwm4LPzW87DyXvqIyei9znHS+cZz9SxV+Qf8nNbjn37NkDx4+PmCXzHOLUMtjgmUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptzActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEwgmv8imPwimPwhmP8imP8imPwimPwmmf8imPwimPwhmP0imPwimPwimPwimPsimP0imPoLqfILAAAAEnRSTlMADprCJBnU/gXwh3LiUKxAXjJ/ELXKAAACbklEQVRIx5VW2bbjIAwLa1jM9v8/O7Iht+09MwPlpS2VwLZkJ9f1lxVG1joPdZ0u1ZIxurhv8DH6dMpQI5t439GAEc7xYPgTRnAtV7plReRhd5kDP8+fd+wzt70yPhIJzWT7/6DCJCAYLReZPMIuJC4pClSktHqbNpJO1aTmmAme3cvtWs9NSfq52CPhnJNjlbVHwgmWSWGHeQHcKFjj7fygwidf2fa4mbVOuladcnsoDn9/CKKAWf6HEtpANiJvUp9Fgr0SvocPP/sqjOCK9ktpyCAo4Kt/d4n4/6baseNKAt5XrauPN1A4ZLAd30RUI4kNfELVx+yd3lrXYIg1Bp/B/dGs5N8mPsJoVyiwkofQSlm+K9aiwmoQMDoI4wefoK/rhkESrSuV+BR2i6HZH9juLzxCtBmn6rFmB66gNJQwBOSxncT/N3FAlxAoLQfJDy2+6rMLI3aznl9fhOcGSdZzoNhex2K3TXJEVe3M4Zb6QhHuJc5BWakYIqqietcPw6FK+EHofUHRqtLEQ5X8dKVENXXgEpLOpcjwkFI30YFVHE8fyx2ShZJ/ydTKlZwZ4BCOv/af9uMi0DILe4kieynScgPbhai+DRDckTT6N6zJpI3HMghM3BMg+q9pHmwrbR0Q0D5wc0JHPy0E5Ur7Nf3Rk68LnR0NHfO28/T5P4cNr+uLFR7eEdiNxvMRbd5Onlqsis4iIVdme4di3akWOz+3T0aUnFWHa8QZrO51NO69MeLPafrNuBenxel/3d21j8k/jyxf+75OQabFxOtuT94G3Lpjzb0zBn2Dl0ep/waPidQ/p/XB60Dp7e8F/QO7WSJg4zEzdwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptzActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcExru/9ru/9qu/9ru/9ru/9ru/9ru/9svP9ruv9ru/9ru/9ru/9ru/9ru/9ru/9ru/9ru/+3uxEqAAAAEnRSTlMA5q0cR/PC/ggSKtN5OIhaa5izIOiAAAACV0lEQVRIx5VW2ZLjMAiMToNu/f/PboNsJ5PaKWv8kKRkWkDTQF6v/zyUfO+JX9sP1dKKd/v2acQcm992kbo1R4il7iHIif0BRNtCUOozH4cikAdt2YfjRLTnzN15/8I85wFCI2xDzlnyMLO7R0aFoTzbFGB+jIkYLkyePvmW8d2fs2ZfZuv8It9s6zvV5uSr2LmKb9oVh37QvpjYOcf8fcO3Cb1jGqOU0SvTTd6X2KUBLgKdLzaiDtE2n+isTh8/+AX7E6/Vh/NNSyfVm10RXIe1nxXRapmsDQB7SMnkmE0IxgqvUn0jteEf1T2CHXgr0gjZllGk1HoJL7lD7fRpD20CgJcwQ6EdSh3lLK0zVfuqz2WvPlPJh7HqnCQ4MysxoAYQE0vHub/toRuqzRy5pEUvbg62MzlJQn1MHBe1x7WSAddpNDSN1c9wRMhKfi2jrICwAIsQvHkD7Al41bOrBNC1Y7QdmSg15LDokGETJB/imxYJKfmFMDqI3FjUkDS3NSEDjBaxknRYSb+4nj4kC43W2OKrkqGB8jV2Fq03YiWbhHQTpUV1mMHXWYf8HlNX7ZUQRC6iwBAIK0r0ILr1UxqKsPattAkhwSIiMl76bT/Ft/TbTy2jHQoM7Cz9isHVMb6GILl0H4DGivbw7xNc8rAtiJn3O/qvD6JT/wgs7Y370ZSdWmbZWEKiG1lXImldW7Q1jGMbZW9tUVKZmGjjGvf+EXAqzWiX5OfFSHVp/zjbfGPc3whdcbTF67V2N1e79qYMru2/AnzVYFsdWFt/+nOypv8vQvoHou4gOtSrG5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performance{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTM7OzszMzM3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzW8hQDoAAAAMdFJOUwC/gO8ra6tUQNmVEKtAA1gAAAE4SURBVDjLzZMhT8RAEIWnpS3tXcWdQ6wgOJIKfFdUICv6AyruB5w4EuSJCwRXgUBWkGArLsEi6JVuaZkfxawguSWz/p7azLdtdt97C3ASagp+PpeXPDjHVx7McMWDCBc8qPCZB4m44YFIeOBh+ckCf9z+sCCYqi8WvA/5Nwu26cfA+JRBs4h7WmX/tr9AXcQHAPdgzEPZh5idTQBOZ3zyiModISKQGxZ7dd85E0SKfMGjM7vXeI/5AE5LvrwpcK9IOrQYB5BlCsFIvjzgrkaSjsBZbmC9XsGsAxfn8gKXpL9sSlnQFBwFTTuaKWXgI5Ar+sfHTrW6DUDO+2jEEtCNQ9wL6gNujMvvdFS3eugxGT51fBXxTvF1wLLngbT0BGphKalAy0MQ3Z4Ha2V7UoMFJKkFVAWcvH4B0OJfd9YsTl0AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performance:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwD2qdfrViyAwW2XORBGtSCsD6SyAAABN0lEQVRIx+2VzQ7DIAyDYfxToH7/p10CbQ+T2s33Rb1MijM3/qDG/EurolD9zSNRggBU0hFelMABmenfADhGkJDhGUFGgiX6I1AAQlDgZK/td8ELtQORiTmIq42I2bYdCD8NjzPmYQxO+rbn2S5qzEUF6YjkgcJude56X3s0SoL7LRAeylyaVPiFq0Jyx230mpeXmXVOHssRbhackhCq25Sny++xcBW1n6Snqw6BTgrqRP6kzfDcgmRLGonDWSf2OecwB491dOrEVZpNsxiyiHzWJ0Z+BbBwzaoWVb49HrqVfSkxHen7WNznLhzl8xpQlT3E9oHUtYaufB+7NY9g9ctbjFfj/h1DwXUrzDltMn1Ql9M814EQWPLmEBg4R7JSzpFQxTmSBMkLvJKOhFHfKEEnv3L/+qw3DuMPzAFH9pIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performanceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAtUExURUdwTBGW2xKV2hKW3BKW2xGW3BKW2xGW3BGW2xKW2xKV3RGW2xGW2xGW3BKW2+P2IvgAAAAOdFJOUwC/gCvzq1RAleURc9VmrA9rXAAAAT9JREFUOMvNkzFLw1AUhU+SxtTahnZyC+IsIeAenDuE/oJQcS/FTYTi6hKcHYpDZ/EXBME95BeURpM0Me39Db4Mgk/u23umcL8kvHfOucBBKEr5eW95xoMjeuBBlyY86NOQBwt654HrPPHAca/YuUHrDQsG9eybBWa1+GLBqvS3LJiNX0vGJw/R0N6LJ+/f6x9I3uwG0D+luRU0FnmdCtBy6ZM7KvQdjgXwJYuNZVNrFfqF8IX+nFm/oBvyS2iZ8OWxgH4u1IZmU4kgfoa5E77c0jwhoTYCbTRFGE7QrXFCveCURkK/2cRBCp2gFYiyWk7Jw4AgXOmQZMAqa9uAeCP+JsViihtb9OKIPtBUuvy8jeqyHRpMhvc5X0W6Lvg60HrPg0DREySOoqQJKRbByRWbExaqlSoVwB0rwCLFwesHquttxhcsa64AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performanceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTH3G63zE6n3G7H3F633G7H3F633G633F7H3F7HvG7H3G7H3F6xOzy+EAAAAMdFJOUwC/hKbvK0BT2XURZct0z00AAAE3SURBVDjLzZMhU8NAEIX3LiSUNqI1qBMMChFRgYxAd07E4CI6HQwzEUXgKjC4CH5ABAKJyA+oaHqBJO3+KPaYYSZh9nyfyuyXu7l77x3ASSgu+flYX/HgHOc8kC4wwikPMnzhQaTueKAiHvi43bFg0m4OLPBM9sWCjyb9ZsHm8NkwPiUQT8MjfSX/fn+F/C3syJf9YB7oLsDkjIaiHix5QCNbGBmAFPve+3lXi/0viLB3ZnmDz5g2ICry5daAvCbZhSE2oIsFeC35ssJljiQbgZitIY7nIGu4wLG+xBnpL5tClxQhCANR1Q5TSmCCQK7YjftOVbYNUOxot0EsHl0uwHdFfcD14PJLG9W9HfpMho81X0V8MnwdcHvkgS4cBcqVo6QKHQ9B1a6XY1zAcSiIFg6QlXDy+gEd714RcAqEowAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-face{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTL+/v76+vsDAwL+/v7+/v7+/v8DAwL+/v7+/v96T4QgAAAAJdFJOUwBAgSCbs9hZap+hQJoAAADvSURBVDjLY2AYRkAJCAygbEZBQUEBKJtpJhDAOJpA9kSYxESgKphuIaBuhASqyYzESjC2hDRilQBZ64BFgm2qMLPYNCwSkQpAwlMBWYIRzJsKYrKCxZSRncKSDFYzBSNY2MD2MqRhSFgqgClPAwwJBxwSbAk4jGKZDCKZp2JIsEOcOx0ztjQDYL5ENwsYJKrTsMSvGSgepzVg2pE5qSikPRPT8sopBuDod0ATZ54JsbZyBrJgAVAp1Ax2oPXMykjxYQaLA2CMoERUZQDMrgBUCc8CKIdzAvHJhyQJpLQLSu0TCaV2lPwBSu0KQy+LAwBuJj5UbruNggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-object{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA51JREFUaEPtmT1oFEEUx9/bnRALGxE70btkZjcR7QMiRisRbCzEQvxCLGyEhCDRBC/RoNaWFgYLFUSwUBAUDKKFFqIQ3OzNJpfCyspS8HaejNyG87J7t7N3l03gttydefP/vbcz8+YNwhZ/cIvrhx5A3hFMjEAQBDwMwzOmAi3LWhBCLDTr5/t+ycSubdtLnPOncX1iAfQAlmXdNBmkru2RVgBSSspg+5kQ4lRjv1iAIAgqRFTIMIju0i2AWNvrAKSUowDwLqP4tACm9rWmbABCiFxXKimlhu0BtPFHtdc19wj4vn/Wtu3XnPOfWVByA5BSngCAuwCwryb8Hud8EhGNltANB/B9/5BlWXcA4GCMx/8g4jjn/H7aaGwYgOd5BxhjcwCgPd/0QcRVAJhM2l3rO3cdQEq5GxFvEdH5VsLX7aKIH8MwLLmu+zapb9cAFhcXt/f3988AwJip8Jj2L2zbLg0MDHxr/NY1gCAIpohIJ2V2BwC0iUd9fX2lQqFQ6cQvtJbICSGOxHhlVOdKjuPMl8vlqzrxI6IdWUAQ8Um1Wp0ZGhryiYghYrUtgDQionxJT0al1IwGkVJeBAANvieNDQB4joglzvmilHIXAIwrpX67rmuUamfKcxoTvnoQ3/dP27Z9g4j2J4C81KBCiC9LS0suY2yMiC7rttoZuQBEQhsiopfT6wAwUvv+hjE2XSwWP0kpRxBxgohO1kPmDhAHEgTBUaVU1XGc98vLy8eVUhoqbpPLPwIx6/wqEV2ovX8AALzZ/Ng0EWgQGa1iLQ8xPYCUyx8YHjt7EWjm2I7sAy0it7ERqNWEDkeiklIJg8pFWwC1ZC6SM9NYc1oXgcaiVlxVYmVlZW8YhlMAcCnFvOkEQPqqRBqASLTneTsZY3pjapZSpwF4Y1nW7ODg4Ie202kTgGiwSqWyrVqtXgOA6Zj0OhGAiF4R0azrup87dqDJAlA/eLlcnkDESQCI0us4gOdEdNtxnK+tfkHjA027AJEgKeUVANBROVd7p3fixwAwJ4T43kp4nR2zylynAOoE/JuAiPiDcx6kFb5pAEwF5zKJ2xXZrH9uc6BTUD0AAGh639Xo6bjUI+G/NglS+p3Y87wCY+y/2ozJSGkuRDLekQFjbEexWPxVryfpjuxhllKhNtwtAESc55xHx9M1hsR0WlcOlFLHTLyv26Ypi5hesyql5oeHh3VBeN2T6TxgCtXN9j2Abno3je0tH4G/KbtRT7VUKs8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-object:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwdJREFUaEPtmTuIFTEUhv8fLSxsFrET3UIQRHtBRNdKBBsLsRBfiIWNoIisD1xfqLWlhYuFCiJYKAgKLqKFFqIgoiBoYWVlKbjwy4HMJXs3M5Nk7tzZCzfdvZPk/F9OHicnxIgXjrh+jAG69mCpByStB3AgQ+AcybmqdpJmEvv9SvJhqE0QwBm4lGikqD4VAaCMvh+R3NffrgzgB4DJDCPWpC2AYN+LACTtAPAqU3wsQGr/pikPgGSnO5Ukgx0DNJhRzZp27gFJBwE8J/k7B6UzAEl7ANwEsNEJvwVgmmTSFjp0AEnbANwAsDUw4v8AnCZ5O9YbQwOQtBnAdQA28nXlp/NG8HT1G7cOIGkNgKsADtepDnx/C2CG5Muytq0BSFoJ4DKAUxnC+5s8cSCf+j+0CXDBjAJYNgAA6+Keg7AwpldyAXqBHMmpwKjYyThJclbSSQBWfyIT5IF5kuQ3SctJzjcCiBHhxUu2GM24gRx1IGtj+gDw2I34Z0mrbXcC8JdkUqidFecEAj4fZD+A8wA2lYA8NVCSHyRtcGvouKtrg9EJQKHVB7Ht9ByALe7jCwAXSb6TZP+dAbC3D7JzgBDITgDzJF9L2u2gQoectV0yAD7IEffjDgC7plaVJQdgYotdLOYSMwaI2gETr51jD1SN6qDOgSobw/WAywltLxRVhBIxi7LxInaxUCHHFvmCpFkorWInoR8LheqsA2DB3LGIRdPIAznBXC1AIVrSKncwVYXUMQB2Sl8h+SYQOCanVaIBPJAVAM5aqBAIr6sAnjnh78s82aoHQkYlWYwz7YXXIQCLRK+R/Fg3BYcO4HnlhPPKIfefTYX7dm8m+aVOuNdP+1OoSow79KzKL5LfY4UvGYBUwZ0s4qYiazzY7RRqCtfZIm4qfGBrAEDle1e/0FDoUTKvUxiT3gfsaWlBbibFUsyDiKSkBK9nf4LkH19P2RvZ3cxUIVoEmCVZXE97DFXPrJY52JUy+lY3Ji2S8cxq4i3jsahk3QdSodqsPwZoc3Rj+h55D/wH5CHfQHNA9EUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-objectActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA9JJREFUaEPtmU+IE1ccx7+/N7O0BwUn24UeRKOd7LalvS+I6HoSwYsH8SCtLf1jEqWoyLJVMfEP6nlNIgi6eFChCB4UChaU0h7aQ1GQrnFSdw9e/JNs9LTFzPvJZI27m8xk5k02m13I3sK+33vfz/u9N+/7fo+wzP9ometHF6DTGfTMQF+mYNqwd6sKlFLcK++P3WsWF8nkUyr9stAeTcXN624xrgDVAUgcVxmk1lbaGPIFyFocou9fSonYzvo4d4BsYQLgaIhB0EYA174bAFaNWpuFhrthxDsxQQCMrKXUPwGbvfr2BSglYh39UjmwXYCwy2kh4jqegd5M/itdaL8+i5vPwwB1DMDIWNuJcBbA545wAs4V4+YIiJQ+oYsOYGTzGwniDIANLjP+hkCHiglzNGg2Fg3AGB3/Ugj9NBO2+4ujSSaMeJ2uc+PbDhC5aK1GhU6CeY+/8IZz9E+CnSomBn7zim0bQF/m4QqbPkgDOKgufH4EAzdZaKny3vUP6vtqG0BvtnCUwY4p01oFcOIZuCJ7elKvvo9OtLyESMN7IzeViA3VC3TshiY4Wkz2j0Uyj3+aMX5shAIhuia4kn6Z+DSPu6xjiCotAQQRMeuXaJJYpqsgOetbcBV8TZA+ANxgotRU3Hz48SWr7800DjHL6VJyQMlqh/I5jYZvFsTI5XcRa0cA/sLDv98iieMv98X++Sj7aEBCPwjwD9W2LNMdAqhJnQMyc5D9DGBwRhzukK4fK/647q9I1hoE6DDAO+ZBdh6gEaQ3V9hi27JS3tf/u3Hhv20kpQPldsgthQw0fOcnpc3fVK2EhosEmE33x9LJwKxM54Lj/Ap0SeoCBPz+qVw7uxnwmdQFOge8R1n0DDg1ISaxqSbJy0oE2pTvqhStbOK5FQy2ka6vOTVkoL6o5VaVWHX+yVoh7KMAvvPbNq1mQNmNBgGoiV55fry3R+jOweRpqQMBMO4wxImp5Cd/tGynVQBqg0UvT3z4eroyDMaxenvdHIBvE/GJYnzgb69MtjUDboMa2ceHCTQCoGqvPQBuSOZT5WT/fb8luOgANUFGxkoQYVja+Lq2iQm4ygKnS3tj//oJf9+PamUuzBJqJsY59Jz/9wh6+iJpFoIKXzIAqoI7solbFdksvmN7YKGgugAMNH3vqp9pN+vhtq5VMqT2PpAbjwrW59VmVAYL8iASCfdGBvm/bpQPrCvP1eP+RpYrXA5XKgTaBkA0Voqb1eupL4DToFo5YLlVZfadtkHKIqrPrFLIsXL8s0k3LaHuA6pQ7WzfBWjn7Abpe9ln4C11Qo9Pmb2aMgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-objectActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA8hJREFUaEPtmU1oU1kUx//nvthx4cJqX3RgGLsQBNG1tq8Z7axkwM0sxIX4hbhwIygibfPMeyapunY5iymzGAURZjEDAwoVm8SPhSiIKAjtQtAmiooLiyb3yEtNm76+5L37kjQp5C2Te879/+65H+eeS1jlH61y/egCtDuCNSOQyH3cWirNHVIXKO6kYvqdenbxqVlLxS8J8Txp6Ne9bDwBnA5IiIRKJ5W2LDHsB2BmC6zqmxk3UkP6AbedJ4CZfTsNcL9qJ077VgHU8r0MID5V2EsCk2HEBwbIFdT8M/aGBkgaelt3KtOB7QKEnU9NsGt7BMyp2cOa4P8tY3M+DE/bAC7cK+xnxmUwtjvCCXzFHtRHiEhpC11xADOTjwG4BCLDY8S/MvhsyoheDRqNFQMwc292QmppEPb7i6MZgEdqna7V9i0HSNx/95MscRLgo/7CXS0IWS6VrFRs8+1ati0DSEzm18kesgGcURa+3OAfSGklY5ueuP9qGYCZzceZySKC1gQAgPkvXtNjpXatn258CmlYSOSSg/qwW+B8usH9SSM6Ec/lTxM7iR/3hgEh4Jpk2Kkh/UVikiP2MBUbAggiYjFfchajtB0QM/fuOFg64D8H8QHQTQ3CsowNT8cffdLnPn8+KyXPpWKb1FLtYJ0tbbU84asCyRYOEmiMwTtq+P63JJAYH9AfxTOFbUTlNXRyPlmTdpsAKlIXQZyDDJJGGbx7/l++BSHM5EDfg7HMm91CRM6B+fdqyA4AWA5iZd/++hWymDaid+OZ/G8EGgXB65DrhAi4Jw3NsORj5VRC4A8AW+tN2Q6KwKJM54b2HcD3EtMFCLojqVw7uxHwGdVQ992OjkC5JqSJPRXw2qlEsMpFo1OonMx9/7gE211z8iirLC1qeVUlxrLvtwgU4wBO+K2bpgCoVSX8ASqiRx682hgp/jBaL6UOBsC3pMTFdCyaaUI6HRyg0llicnptqWfdeTBMd3pdH4D/kyQupgf7HtaKZIj7gDpAdefxzOw5IjECoJxeewEQ6CZBpmwj+thvCq44QEWQmZ09BYjzLHFk4SQm/C2KIm3/svGZn/AFP+qVucYi4BbmbLnOb5rGr+zB6MugwjsGQFVwWxZxoyLr2bdtDTQLqgsAQt33LvdIe6UenvNaJUQqJ3Hi3ut+KSNLajMqfQV5EAnzRuZoEF8ivfZw74dqPbXeyP4MVSoE0DoAmkgafeXrqS+A08CpHBDTPpXRd9oGKYuoPrNqETlhD/w446Ul1H1AFaqV7bsArRzdIL5XfQS+AaeCtE+rbksUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACCVJREFUaEO9Wn2MXFUVP+e96X5oa9UoYpUszrzzZlqLKDYhgAFaaKU2+M2W9Q8TNUQSQEsiRUjFVaHGNmoBMTUmaPwD2iIhqKR8WEBFGkLFUjbtzDtvpjYrVhpCXAtm1867x5zxvnXm9c28mR13b7LpdO65557fveeez0GYp1Gr1d4VRdF7lL3rui/n8/lX5mMr/H8wDcPwIgC4QkQuAwAVWv9eA4BJy/8sAHg7ALysf4i4DwAe9Tzvj/3uP2cA5XL5CsdxNiLi5QBwUkQeQcRHrNB/JaKZZuGYeRAA3gsAZ4nIBkTcAABLROS3xpjdpVLp0bmA6RlApVI5FxE3OY4zGkXRdkTc6/v+c3PZPAiC80Vkveu6Nxlj9ojIjmKx+GIvvLoGcODAgTctXbp0CwBsEpGHEXEbEf25l83a0TLzh0RkMyJ+AgB2TE1N3b5q1ap/dcO7KwC6AQDsRMQhAPiu53m7umHeK00YhlcDwC0iMg0A13ZzQJkAlKmI3A8ADyDi9Z7nnehVsF7owzA8Q0R+BABXIeJY1mF1BMDM3wSAcRHZ5Pv+nb0I0i9tEARfRcQdxphvFYvF8Xb82gJg5gsA4FkiyrylfoQVEScIgttyudxLhULhwSQvZhYAuJCI9qftkyrckSNHzs7lckdFZJ3v+0/0I2CntRMTEwNDQ0P3i8inAeCUPmLP8/Y2rwmCYC0iPl6v19+3fPnyvyT5nQZAmQ4ODv5aRF70fX/zfAk/OTk5PD09rcbg4/EeiPgPEfkUET2dALENEc+dmZm5cuXKlf9unjsNADNvBYD1AHAJEf1zPgCUy+UljuPsQsSPpfD/m95Is29h5rcAwO8AYC8R3doWgDopx3H2I+IXs17/XIEdOnTobcPDw3ry6zrwCKMo+kypVDoU01hreK8x5oJmZ9dyA0EQ/AwAhnzfH5urgJ3WVSqVd7iuu8vGTB23SLM+QRCoOZ/2ff8Ls2oXf9DYJpfLPSgiH+nGgfQKcGJi4szBwUE9+Uuy1orIQREZKxaL5WZadaiI+Ey9XtfbacROszfAzL8wxtQ62dysjdvNM7MGcSq8Rq1ZY/+pU6fGVqxYcSyNsFKpjDuOkyeizycBHBeRjb7v/z5rh17ma7XaSBRFuwHg/C7WPYWIV3fy9kEQXIyIu4no3bMAqtXqZcaYnUREXWzSNQkzFwBAhf9wF4v2RlG0sVQqncyiZWZ2HOfaQqGwr6FCYRhuE5E3E9F1WYuT83qluVzu74VCYWfzXLlcLuqDBYAPZvEUkYeIaBQR61m0Os/M9yDiG57nbW4AYOZnAeDWpAPJYsbMNwLAD5TOdd2L8/n8Hyy/FfbkV2bxaKgB4s89z5u1LFlrmPlSANhKRBfGAPTBrCGiatbieN7GSpoaDut3IvLa4sWLi8uWLXvVbvBUFi+NchFR00/V6+16ollr7AGpaj5JRCMxAL06VaGWNLATM2ZW4dc00yDinZ7nbdLvrLXQaDZ1iMi9vu9/ySb/BwHgTAC4kYh2ZIGw6ekbRJRDy+AlIjoja2E8X6vVilEUtdhoOzdBROdY4fcYY0Ydx0kDcQ8RXd90m+qVH9P/qwPTf9WcK5+YJmnemfmE67rnIDOfBwA/JaJuLEWDHzNrAPZwGmCNGnO53HYAWA4Aoykgvk9EX0uuDcPwBhG5KwahAjOzqqHqewNYMwhm/hMAXDMnAEEQaP76vTY39v4oiiZd1/0VALyzGYSI3OH7vubVqYOZ9fE3NEENin1LDdqkgZkFMBcVqlarG4wxv0mR4nUiWqLfHz58eGTRokXfdl33tnw+n+pVu1XZNLpZFbIq0fKIm6yIOhX10K8g4t1E9IDSa84wMDBwHBG1WNU8NIObDReY+RYA0EqDhhJqbQ4SkRYI+hotj9gCaDGj1Wp1lTHm+ZRdvk5EDdVh5h9qiaWZBhHXe57XCLKYWVXoygSPk0SksX1fw3r4FjPa4shsVqanP5DcyRhzebFY3Hf06NG31ut1fWQNT4uIWzzPu0M/d3gjTxPR6r6k/+/htDqyMAy/Y4zRPOCmmLn1zprYJ8eriLja87yJSqXyScdxHtKSi4YCVvgxRLyvjZCpFqhXQEEQbHccZ9rzvG/EsdBFIqKmVK1AYzQJl8Z/NH4PzHxV/NkCuAsRb0hb1C4x7xUAMx9GxGu0ONycD0yKyGcTuegLAJD26K4joh+nbczMe7QolZwTkZt939/Wq7BJeq2nIuIviUgr3v9LaDSdFJFjKR7vtMcYOxXVRWPMpY7jCBE1PGiz84k3F5G7fd//Sr/CW80YR8SROK2cvYFOKSUzr0PED2hGZYw5ISLHrafUx9QI2uICmFY1RORsx3FmEPE5EXne8zz1mn2Pjiml1d+ekvrmqHO+K3hWvvZJvb2ensoqCwmgq7KK1eGttnuyNqsSvVAAtGINAE9oF6hjYUsB2EaG6vWx2La3U96FAmAt28jU1NTqZOMjtbhrGxovZJXVFwJAXGYHgPPS6lVtS+dxY6PT41wIAFpe79To6Fj7j9PCdmX2TvF6vzYzLqtrgyX2MWk8M5sXcaNDRLQjeft8Vaxj4bQSLSJbEFHjsraNjZg+E4AS2obHTzRb0kxsvirXVm1vBoAT9Xr9y2kNjeQtdAVAF9kQW5PseW+zzszMjCcbGe1UsmsAMYOURveTc62nap1TRNYsSKM7eQIaO7mu+zkAWAsArwPA45oXdPNTAxutaillsTqoKIruW7CfGqRdpRaHReSj2lvo8scezyDiY1qc7dda9axC3W64UD+3+Q/fZENVhTDr2gAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABphJREFUaEO9WmnIVVUUXSuiuahopOLLIqTBBgtCC01Ty8JmS/sRVESBNgiVJVZaaag0WBlGYNEPrSyiQdTKskEjpNKSCBqlzAqJSAsbYMV67vt13/3uffe+93pvw+Mb7rn77HXOPntY5xEdEkkHAjgk1G8k+VMnpuL/oVTSaQDOBnBmGG3DfwHwXeg/DMC+ADbGZwWAZSRXtTt/ywAk2eDLAIwAsAXAkvjY6O9J/pk2TtLOAA4FYDDnxmdPAG8AeJbkslbANA1A0gkAbgJwKYA5AJaS/KCVySWdCmA0gFsAPAfgIZLrmtFVGYCk3QBMDeNfAjCb5MfNTFY0VtJJAG4FcL5BALiX5B9VdFcCEBPMB7ALgPtIPlNFebNjJI0DcDuAbQCuq7JApQBC6SIAiwFMJPlzs4Y1M17SAQAeBTAWwPiyxWoIQNJdAKbZbUjObcaQdsdKujHcaTpJ25ArhQAkDQKwmmTpLrVjrKQdANwJ4FOSL2R1SRKAwSTfz5sn1zhJhwP4BsAokq+3Y2CjdyXtBMDueRGAv32ISS7NhN+RAF4D0I/kt1l9fQCE0lcArCPpyNARkbQrAAeD81IT/ArgQpIrMyBmA3D4HkPyr/SzPAAzIzYPJflbJ6yX5ARm48/J0f+DdySdWyTtBeDtyDlTCgFEkrKvXVV2+lsFJmmfMH5UAx1fAriY5CfJmIiGCwAMSie7uh2Q9KRjPcnxrRpY4vP7hfGumcqkT/SR5POyjeSVycu9AKK2cRQ4vUoCKZs9J5ocFMYPrfDu2sgBn2fOgjP2e7E7tdopDeBpAF83irkVJs4dIslFnH3eVWuZ2IWdwDbkDZTknHAEySuyADa5uiT5TtkMzTyX1ONqE4ALtzJ5C8C4Rtle0pCoXg/uBSDJPjmf5FFlMzTzXNKRYfzJFd5z/PcCujRvKJK+iFppRc2FJDnO7k5yQtnLOb7tLf2RpIu9XpHUP9zmxAo6X3R5TvKfCmNt7zwAvztPJQBWA5iSTSBlyiRNAvBAjBtC8t1YkGNi5Y8r0xHPn0pHlrJ3JJ0BYCbJwQkAH5jhJL8qezl5HrWSW0NnVItbyP4kN8cE9ucycVh0+2m/nlM184drvkmyJwHgrbML1bWBjWaXZOOHZ8bMJeluzdts13I1WyQLSF4dzb/DpsPsJJJuaBpKtKd2oR0ZClwJug6vJOHfdTE6XlxPckAY7xbRbWceiHkkJ6Z201l5efw93T8dzkNP7d/Z8C7JfckAAxgI4AmSVSJFTZkkF2BuK/OkX/TKRweALIj7Sd6cfVHS9QAeTkAEALuh/d1Sl5klfQjgmlYBuEqdVQDg2KBTXgawfwbEDJLuq3NFkg9/zRMcUOIsJTuQrVB7AZiAataFTIu8mmPFVpKuNL1LTmB3u1kpyqqV/LUY7HYXisnqDnEqijipOEObVXuEpPtiG+dGxP83WZUWd3C95YIkN+hmGlxKONqsJel6pi2pO8RhUF0YlXQKgDU5s9xGsuY6kh4MiiU9bHRCUEmyC43J6NhC0rV9W5IXRusSWaywV98rnZURJFdI2huAD1mSaaeSnBHgis7ISpLD2rJ+++L1SWT3RB9ghqwmkgzKjX1WNgMYRnK9pAsAuAxYTNLRxu+5l1hYYGRuBGoWkCQzgu4L7kjOgP3WodRRIAGQGJen33VLch7GJr8HAIdCh8Q8yW3MWwDwWS2EkqvS/YBJ2UsyvehHAPIO3QSSj+VNLMkJzKRUViaTdNHYlgSf+jxJk8R1DY3byQ05GS/vMNaSSvii/VEkaxlUUjr5JMY6gt3QluX/eYZLlJ6k+KvUUkpyqj8+OirH300pALWiLSHAJJnVMK/kusqs9RqSTjptS3C0+S1lrF5TTX266uw0gxf2FTf1McDkUWVapZsAKtEqAcIu4FJhZBkT3S0AwVib4lxCspjYCgC+yLBf+0DXYnuRdBGAI5trK+efuouPInLXodMhtCGt3g0AKZp9YB5f1Yhe923JokaHs0sATK8XXnSUXXAkbWEuzd6oXm83ZkpKaPVpSY7J01l6eZFcdESX5cu3jjDWiXHBRLvpcV1WeLGRjC8FEAfbienx6JZmdZC5tttOBuBkeW3ehUZ2FyoBCBAurWv3ZdEPd/Ka1W5Td5FR5JKVAaS2OHvRbX6mJT41eE5TM52/6M6uQNDxlzvhAdga91gusat81cDVquurPQA4QS3s2lcN8rYyyOGzfLdQ8cseLsiWu7NrN1o17UJVJ+zW123+BfogD+TkdLQFAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACItJREFUaEO9Wn+MVNUV/s59+wOqyM7bFaxAsDBvFqnWak0MYhBQUEqUVssi/aNJawg7bxaKScFqqKyt0gip4sK8XUKqjX/IL43RlqBSxLZWYqwWdWNh3oIlFClkebMUaXfZefc0983MMjv7Zt7MLrvvn93MPec753v33HPuPfcRhukZt+3YeCndCQpeCO3kmWVTTg+HKbocoKHWjpnEuBfMd4GgnJ7ADAcCJzx8iUlE0AGcBOMkiPYz4c1kNPzXodofNAE9fvheQCyBoLvBOA/wHunSHq7CiXM9+BdWGj39nGuxq8dWYyJdxCSh8UKAFoIwBpL/CMidTmzam4MhUzaBmpYjNwmNVoFEA9jdSEx7zzZFPhiM8dotiduYeAFIWw2Wu6TLm7pW1n9SDlbJBK7d+rev/c8du5aAVQC/Lok2dEWNv5djrJBsTat9s2BeA9AiBjaN1s499eXyW/9bCnZJBNIG0AbQKCb8OhkN7ygFvFyZUGvHQ8R4DOBuSWgs5QUFEkiD8nYAuyuJmk5Hw2fKdawc+fGtHeN6mbcAWMxES4NeVlECequ9DoxmMK9yYpHny3FkqLJ6PPFTEG0CyyedWH1zIbyCBPQ2ewYk3ndMI3CWhuTsOhb6uMQTEBWfOdGpr+Zj6ZbNELjdaTQO+tnxda6m9R/XCa74AoLnO42RfUNysJjyuvYqffyo7QA/AKCXQYuSZnhvrorelpgHSW9LSn2jK3r9P/PhBhLY1V6ld1b/HuBPHDOyZricn/jsidEXRnXvIOD+SzaoS7r8/a4Vxrv9SFiJDQDd5NT13IeGGy7mjg0gELLs9QQsQAp3OiuN/wwHgbrfHh4ju8UOEH3XB/9LkvxAbm3RW+yrUIE/MbA3aRqPFyTgFakKcZCJfhK0+gdLbKz1aUjDaJWG5xfCYKADcB9MmtM+zcpksuELMiVn5Ba7fjOgxxMvgjDKMSNLB+tgMb0xW4/UVUpth7dnCnp8so9uJbaD0e3EIj/OqvcR8PY2VPGqJL6jlAISZD9//Op4+zWSqncwcGewLh8il5eeXVF/OFc2XVDpPXDqwezeqY9AyLJfIpbHiuXcYMP+EnqLPREVUGEzMxCDcFC6vUu7mqYf95PV40eamcSUpGn8SI1fmgHLPiUFL+lqjPw50EgZAjVbjk0Wwt0J4LYgNQYOVBE9VKza17QlZglJOx3T+Hofgdq2o3dJKduSpmEEGSlnfOxWe6pwsZOA75Sgt1dUu0s6H552Pkg2ZNm2EKLxbOPU/d4M6FbHBma+IhkzYkHK+ePpKa34d9Kc2pY7VmcdrpfQVNh8OxCT+TVnutGAOZQKlAUQittxIrrgmOE1aQJx+30p8Xh+AQkC01vtR8B4VskxtFlJc8pfPLw2ezokVNjcEIThjRP9zomG+zJLkE7NZnu2EFjvxIzbMzNgH3c1zD233DgapJwd17fYM0DYD8Lo9G/s9GpX1p9ffm2nZ0DDgUAstcsVNAGMWQBtVG80UAeACk3NxTuOaUzOEkg5KVwx4BhYBE237P0A5vYTIXreiYZXpWf1SDNIrCsIwfyCE4s8rA7/qV73EIBrADzimMamQBItdrVegQuOaVSQAui96H6WjBnjAhUzAnXWsXoJt1+Ozgy1O6Zxo+e8JnbBlQ1+JBiIJ02jqW824/Z8EN5KT6R8Uv1R6dzDyTz56T0Ut89UVmk3Ut1W+xZXYlsyapSSKTy4Osu+XwKv+xFWu0aBio1gXA+BhgEkGL9xYsbP8nVrrY4VDG7JklAOhyz7AAGzc3/L6oVa7Y80gWWDIhCKJ9YQ0TO+MybwTVHpnnB7tDcIuDqXBDM/nYxF1haaabX4ZS+8SFAJRa2lrGx+gukjMJgQCllHFxLkH3wc+coxjTHq95otn08mUflLltoTXU1TfKtqqSHrJ9cXQt6Cs+x+izgni6iicgrg0wBtdkxjtwfmHUSqTgGkmlW5jzrB9W0Xai37MQYWAZioml0ADjmmcfNQHPd0cxdxhkC/NFrXdvRWKeWH+YYY+HnSNLzQ0S37OXgtlpyHaYETC3sNqlrLfoOB+/IwzjumcdVQCQxMo/mFzHvD1ertV+UbIynvPttUv7/muS9qRHVK5Xqv0hLT2rOx8NPq/0JrhIF3k6YxZ6gEfApZx68Aqc4Bq7PgqjqDMMPHWCcTzUlGw+211pHvMcRrquXimEZDxvmlRPSyr5MFMlC5hHQrsREQ3Y4Z/oVXyNLNWd7mmMb0LFiOc374Ddn1oFv24r61obCsRAuBVvgpFTqYl0/A/pyJlqnm8KXtdKt9glz+Qe5ZtNayP2ZgwKJjRiwZMyw/w7pl71JNqQHrh/nRZCyyoVxn8+W9fqpGrzhRY5IXupdCJvEiwMfzK57vYswc99KxKGdDCHaihldB+xWfDDiDNyfNyMqhOu8lD6860+TssbKkI6WuSj3oW0yYSZBnwHxKEc3dtGUbYF5Xg/k6CNHDTB9o4A87zfBHl8P5okfKNLvyDvV+BC6Ho4Uwih7qlVK5bZWRJFBSWyUTw+sJtLCSMC+oEz1SBNIda+xj8J6ijS1FQF1kdLtjVYE6ns3thaZ0pAhkMtvkUdq5OfkXHwWau96FxsdBbfWRIJBts0vCLX79qoKt8+zFRrH2+ogQsGwudtFR/IIjeyws0GYvtl8fajbKttVBaM7WGD/MwMuL7EUHwBuRoqeGq2PdV1C9TjSvBWh1sYuNrHwgAS+9pi88tgIYx0TPDFfnOhO2jwI4Iym13O9CI38WSiLgKe1qrwp1VjePxDVrsq6nOf8io1BIlk4gg5B/0S01emew/VSvz+ny3BG56M5/A6odz6T9kIB5DHwFxtsssbuUTw1IYDEI8wm4koF9xO7LI/apgd9UquYwS74HzHeU+LHHeyToLdWcHWq2KjuESjU4Up/b/B9u0kgtWdqPkwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACJpJREFUaEO9WntsW9UZ/33HaZJCX7S5TmhalQ1NaAzGYJUgvk7pe5QKusGa0v0xaZvQkKBbK60BWl/b8XWKaLWtUJg6IcG0P+hrCMHWlcdK2OLrFPFYGdU0ac+q9BHfFPoC2sQ+33SufVPXvfa1kyaWolg+3+t3zznfd87vu4Qx+nQfONc8yF+0KvP1NPHoxjsm9Y+FK7oSRo2+fh0I3AUpFwHUyoxWIv6EiI4o+8w8m5mmE+EowEchxH4g95rZ1myN1v+IAUR6M3eRwCqAFgM4C8ZeZuyFmHDk9OmpH2+7my4UB7fmj9wwderpWZBDs4mwHOoPmAzwn1hiV7I9+NpIwNQMwOjtvwWC1gLUwVJuIfA+s73lnZE4N3pP3M6gZSTEeoB3Q/JWs735w1psVQ0g/t6xq+T5uogkrCXQKyDebIaCf63FWTlZI525FUydDF4hGFtFYzYZnzvz82psVwVAOSCI7QA3MuMJU9d2VmO8VhnDsh8gwuMAnWfIh6p5QL4AlFEAO5ixp45yj8T1lkytgdUiH7dOBLMceIYIKwGs9ntYFQFELDtGQJyJ1yZDwadqCWS0spF05qfEtJWl7Eq2N8fL2SsLwLBOtgEybeqa7yyNJthYjEVucSYqRN1HCX3GS6W2DMtmQIRMfUaflx/P4GJ9x6+Tsu6/xGJpIjzjzdEEWEk3tvtQvZzVsgPM9zEwJJhXJMLBfcU60dTJJUzyDSGyX+pqu/Z/pfYuAxA7xPXytP17YvowEdY6xyr4dekjEydxo0oG9170QadY8neS7drbl4KwNzPxLWKqdk/XTTRYPHYZgGgqs0kSLQsExJ1dd8w4MxYAOlP25AaCCv5uD/vHIHP3FdeW2IGTU3I5+WfBvC8RDm4oC0AVKRbUR6Af+u3+kQJ7rPfwNXVi4k4CLS1vg/+Vy/H9m+Y1/82VUdmQwc+T5LbiYnfJDBhW5gWAGk1dWz3SACvpxd8705QbHNwJ5kV+9r2yj2HZOwA+b+rBH7j6wwDyZxt6CcThagqIXwCl47GeTIusJ7Vs7vTTZfDBHGVXPxGa+Y9i2ULFTrHk+92z00UAlv1bSPmfSjnXz3G58c6ej2c1TGjYCYLub4P6JAZXd+szD3vJRnr74xDiy0ld+74aHwZgpOzjknhVtx78i7+T6iU2Wp/OEZzdBcLtVWj1BJB7oFK132hl5gmmXWZYu3YYQDQ9sIiZt5u69pUqnFQtErH6rycWKvhv+ioR9l2QWLU5rJ31kzUs+59E9FAi1LTfmYFo2t7MzFebevBhP+XScTWlVCdOmG3a9uKxSMq+QRB2MvANX5vML4shraNrAWV9ZQEYVuZZIvosEdI6HQCGlUmzpA2lBcTPWLTPXscSv3DkmOeZ4WCv+ho7cPLGXC63i0A3+dnIj9NvTL1pOLP46UR67fkkeJOpB0MFAPZhxoSFSX3av/2U3XHD6m9j0H4CTSz89kmgoeGG+NwpA3kH6PGzxcAOAbQyMI8IW9QT9dNR4xHr1PWEobdMXZvjAIik7OzpM01Xl14DKxkzLHs/gIXFMgR6KqE3rXVsqqUlRKy8DX7e1IM/2nCgvzmQFQdBaAFjnRnWtvqBcK6nUwY+S4a1OlLswfnc5x+ZejDop+iOq/VNhEtytLOKwIeSevBmFXxgQt3u3FC2wwsEMT+bCAcfGbZn9S8liNcdG1J2qf8qnTsps/ApTe+Glck0Bq66mWJ99m3MeC4R0vwzRcFYpM++lyRe8QKsTo1STtgC4KsiQB2lIAj4eULXflaqG7UG1jD4aReECthI2z1gzC/+zdWLpu33ifDgiAAYVn8nIJ70BBAQX/siK480CLwKJq0YBIG7E3owUm6mnc0/JJ2VoBKK2ksXZ6DkhOoCGMkSilr2cgb+4BHIOVPXJqvfN1rH5giqT0gORLv1azyrarVL1ktueAl5beKiLKL4nuMg9BPxtkQouEfJOxeR1ubjAKaXbOJ0Qm8aPi5E0gOPE7ACzLMAtBJwMKFrt44mcKV7ySZWPxjWpWk0lrLnSsK7pY4Y9FhSb3KWjpG2fwmGk3HcD5NYlgzNcAgqI22/CsY9JTbOmro2ZbQALkujpYWs8IRVSa8vdUa53OLEvJb9sZ5Pp3F9tsettAyKJPWm7vwDKbNHCG+bIW3BqAFcVsj6BkzkuNEMa+td4woUQG0ezgYCCCyI69MPRdL93yYWLyvKJRnWOpy1n7ZXC8aLXkGWy0C1AjJS9hYE6LzZ1mTkK7EiZ6V4ztS1G11jbnCegRB3uPshms6sdL87+8nKPE2gNV565S7mNQOw7L9DyAcVOXzxOG3ZRyBz3y2+ixqW/QEAj01HD5t606+8HEdS9u4CKVUyLB819ebNtQZbKq/4VIjA70xdm63GigBkXmDJhy+reB6b0b3u5fO0nA8hOKlrTgUtLj7Dmxu8LakHfzLa4J0Zdo4oNMe9VlZ1pYyoUk/i62DSAc6wlMfzpf7ioc0lwAqsxnUEugDB7yCLd8127f0rEXzFK2U+e9R2qfcCcCUCLWej4qXeAVAjrTKeAKqiVRQItQQgaLng3BI/Jnq8ACjGWlLgTUjeW5HYUgCcRsZgfY9UG7qQ28tN6XgBUJlNCJoj6gcXlDY+PMndwmb5wI9WHw8ALs0O4tu8+KoK9Hq+sVGJXh8PAHl6vXyjo3KDo3AtLEezVzqvjzYbubQ6A3G3xpQ5nlR25TY6iLGF6kRyrBhrNwrFRHNWRpiwvlJjw5WvqvuSb3gEfs2gIAFPjhVznU+VeJTAGSFyP/ZqaJQ+7qoAKCXV+OBTdnw82qw0TYuXNjLKrZOqAbgGShvdLOitkfKpiuckyQvHpdFd+gQUHQ9B3yPGEhDOAfwGS9pT1asGgldCNTgYk5igCtSL4/aqgddUKnIY4G8xc7ialz2IKAXQ64qcHW22qnkJVetwvF63+T9nAHfjRfzL0gAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-logSave{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA1RJREFUaEPtmT1oFEEUx9/bFLFKJzG2WiknZObFxlO8RtFC8SuFWlrYGBtRRNCghV9YmFQWgoVaaAS1ULRRRKvbmYBBQezVYBOIGFMkT0ZuYXPufOxdspuDO7jibmfe/H/z3sy8eYvQ4R/scP3QBSjbg8EemJyc3La4uHgUETcx82YAWNum+N8A8IWZrxLR41ZtBQForUeY+Xarg/j6MfMVIrroa5f13AuglOJWDLfQ56aU8mzefk4ApdR9ADiW12ir7RFxXAgxkqe/FUBrvYeZXzQbY+bh3t7ed5VKZTrPQM2eNHYQ8VGGjTtSypOhtq0AcRyPIeKptCEppTfkbAM3AxhbcRwfyYJg5nEiCvKEVZBS6hUA7EoEIeJ+IcTz0JlpbpcFYNrYIBDxlhDijG88lwd+IGJ/YoCZ1xPRd5/BUA/Mzc31VavVWRcEM18jovOuMV0eWLL7tBM+RoBS6isAbEzERFFUHRwc/JD8dnjishDikg2iSIAJADiU8uhdIjqRFuZYEweI6Gmuc8AWs6EhVK/XR3t6eg4zMyKiEQ/MvOSwQsS3iHhhZmbmY61W++UIp/dSyu2FAmit3zDzTjMoItaFEFuVUt8AYCB0ElLtZqWUfYUCZHlQKXUQAJ60AAC2Nbhia8AWglprAoB7jYQwmGXVACSKzRqJomgLAJjvBh/JqgPwCQ7dRAoPIZ/w5HkXIHQGQlOHvCd56PjdEOpoD6TShT/MfD19OXeFQCPnOYeIaxYWFiaGhoZGQ9Pv5nZthVA6XWjkOsMJRGj+b/IhIURtVQCkIUJvYKUCONLf/+67tjuw+T+rLlTYLmSDCDmwbOIbF6CgC1Vba8B3m3JBuMQXDuC4iGQy+MSXAhAKESK+NAAfRKj4UgFsEHnElw5gBGit9wFAUqy9kbco1vY2Gsfxsha2QrbV1K42gIimAPDvw8zTRLQuy0ZhpcU8AMZ7zPws1ee1lHJ3LoDlLu7mAcioZFuLvYWV130AU1NT/fPz8zuyqtWIuFcI8TKXBxo7QaEvOCyQD6SUx20T4K33F/iKKVOj7yrqBWhsiSv6ki8zNBBPCyHGfKEXBGCMrMBr1mZtPxHxEzN/jqLoYbr07oIIBvDNRFnPuwBlzXwybsd74C95KWhPrxIhsgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-logSave:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAthJREFUaEPtmTuMTUEYx3//TrWdeLRUJCrReISGUBCvLVAqNGiEiASh8IoClUKyBQqPBAWhsREqnYRE9NgoV0T3yci5m9mzc2bmnHvvOXuTO8ktbs7MN//ffPP45hsx4kUjrp8xQNcezPaAmW0EDgFrgLXA0j7F/wG+AlckPW5qKwvAzE4At5p2ktHusqTzGfUWVEkCmJk1MdygzQ1Jp+u2iwKY2X3gcF2jfdS/I8l5O7tUApjZTuBlwNIk8E7STHYvQMCTzs6jgI27ko7l2o4B3AaO+4YkJadcVcdlAGfLzA5WQGR7IgbwGtjuCdoj6UXuyJTrhQBcnQjETUmnUv3FAH4CyzwDKyX9SBnM9QAwIWk2AXFV0tlYnzGAebtPP9OnEPkNWO2J2STpQ+9/xBOXJF2ogmgT4Amw3xNyT9JRX1gEYq+kZyGIoQGY2UXgAPyPt5x4V8qH1TRwDvgk6XdkOr2XtLltgLfA1qLTj5I2mNl3YEWDdTQraaJtgAVryMz2AU8bAFC1Boc5hYKbgJmtB6aKgDCbZdEAeLuOWyPrit+qFMmiA0gJrjr4yu1an0Ip4Z6Hss6hMUBu6FD3JB9PodwRGGkPeOHCX+CafzmPDUAR85wBlrgwQ5LbUueV3AHsaxGbmR8uOAGTPYga8f+0pG2LBWAOosYNrFOAqith6L5bdQee81optG7nHIjE8DlnVlB8EVa3AxCJ4VMAleJbB2gAERXfCUANiKT4zgAyILLEdwoQgcgW3zlAIWA30EvWXq+bFBvESTzQxFZqSyqdAe7i7xIAvTIjaXnIRmupxZoAznvPvTZvJO2oCzDQ5G5NgPKbRGWyt7X0egrAzFwedktFtnqXpFe1PFAsxLYfOEIaH0g6UjUAyXx/i09MQY2pq2gSoPDEsB/5QuJPSnLrMFqyAAqIQT+zloX9Aj4DX4CHfuo9RpANkBqJrr6PAboa+V6/I++Bf0in3kCazcMZAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoom{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAkUExURUdwTMDAwL+/v7+/v7+/v76+vr+/v7+/v7+/v7+/v7+/v7+/vxtcv/AAAAALdFJOUwBVdZCpGdZE7C3B0wnY6AAAAV9JREFUOMt1lDtPwzAQx20ghGwVsHVJhQRDlsywWKqEULsw8FhRJ2iWiglGGJvFCw8xIVVCSEwkKU25L4ftpOHs2Cclsu7v370smxCLecRh+xOH8Ja5kGEs/6dtYf1XONcWZurbwwRCQjYZ9l7uHAPAOBHpI1QC/QSY9g84ldmnAn7Z3htwsfZnvSe54eJd5hlcC7gccxTwSETZEr5+714vLRdfkFraVNtetXLpR7ha+mkHCV1Y/q8ZOW8AgDkecsIaAEIcGbIGyLUq4KcBYl0o7QAB4FZACBMrQKpaJOCZQqyAIhgayYEpgD1DZghXCvBTNJFKmCvgzmhcCEsBwMjSRx6BslYftRX0JLYKrAsLqzDC54EFMwvy58QhMM8hFNq0UpwET+sLC9/4BmEBTytyRCIbDoAEiR1Qp1dbRxfoyv9g3ogaKVuXhVZZbtqX6Ez6H23PxG4CM259QDwt/h8ABfK8nDqSAAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoom:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwCCyreU7KZVRCDaZnETLwj6WaYVAAABUUlEQVRIx5WV2Q6EIAxFoVBWxf7/184AOnGUsvTBqDmXrqRCzNou1kwGtyZIQNuiD0P6evWTURFUMtIoPO+iVoGIZPkMqkdKA0jZgoJ6suQc2EoiGBldOoQ9HSDk5+GTs1Fqo9IlcEpvNv3qv0MBhSalIFSv3+MCJCY8fUaCxasycrMu9dp5VTUhubXZ6CqsAvn66ZAsx+e8fON37oT3bZ4aiRU0kDlavGSrQI95HPBZACt8FuCL16IruBVkzBeBW+CLYHvyfiDQd96IpHpOMqP++fAq9VMQ7rwrM5+6gjwG/3y/D/m8ylPYpvpAeqO7DfvwMPO9D6jnBabG56YFZx77fEjD+9AyLdYEhp8nxoNh5wmJtfY8AS+wzIZZrJNcC4h3wV8IH1p87Iyfnc6XVaAd7ICHAsebw97zgDSxZ/yvViiPuYUfTe650knM2+7Ywz9yOCklzohLOwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoomStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwDjmTC6Y0KBVakX8s8iC3JYR1wyAAABVUlEQVRIx62V2baFIAiGcwJRS97/aU/Zbtht0VzrcJOuvl/AAabpXy1RF0F/m2h2PX5mzucEuO9gMon1MY7KlG8w4LImC1XFQmxDGVkm1DYpXi0qS1gXTEGzKoqNS1ajAxPqJDikFLcFS+aukYJffRfXnAj9kYUXFVi86wzzPjuCFRXBwS3KaC/Pt02Ww7uf1jz3BVYtX/OsyDQFDn7yswPXb+Ovs39eJJWwxrOXV4thgC+//QBf/uMAXwAa4AuRBvgdWR58CB2B+eaRG5e8QO7Jn2sIAvzhbdsDnXzev8q0BengGXv8EciH3y1CY5++yI/BRNx82g/La7lc7b0Am/tUC6n3HoZ4SbDyy5BgzSNivV6wbPXeIPOpHlOU+CjkTQKvQOpXdRdJvn+5xttWQa4EZUOzluonT6+q72X6Zb0+T/lNhQd7hg9vm8LWUhW5gT4iN7c/0ZUo8Q3AttYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTP///////////////////////////////////8kBMKEAAAAJdFJOUwCt0igUwJdJePGbgLgAAADcSURBVDjL1ZMxEoIwFESTCaOWFDapqeicnAALTiANnaWlnVewDTMW/7b+aCAb8jkAVIHN2/lsNkrt73lf8M08nnF1pAYFR/dFmAAx7SIoi4iDbRrWDMAuQFzmmxAGbjjJgjj6dCjMCAND/o8RWQMzUgIRKYE/wsC5TJIRR74rBUZaqqXwLZEXT0WTDGwLW1aavJWQir9qadw++NgykWoMNtcykh8Q5EECgr5C+jjpGjHjPGhPU5eVzyfPJitfnUyhPg6ywMKZ7BygcYcsPCj1Kc8uXYPqpeSLs6PnC4w8S+8OJ9MLAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-narrow{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABm1JREFUaEPVWWuIVVUUXmvfYRosHzUZUUqKjkSXSe5Z+5qJhfawLELCR5ohPhKjjB4EWgkpkopRSWEPS1Mqy7Gkd0iPGaKy6ey9Z3z0opwEQytSMiS5NZ4Ve7j3dubMOfecO96buf/cx17rW+vba52919oH4RQfeIr7DxUjoLW+BhHHAsAAZh5gPwGghpl/TKVSHZ7n7T9+/Ph+ANg/atQo+1mRcUIEtNYzAWAiM09ExLPK8KgNADYw8wYp5Z9l6PUQ7RWBvON3AMClJ2Kcmb9DxAKR33qDVRYBrfUNzLwQESf0xliUDjPvR8T1RLSsXNzEBIwxc5l5fYSBnxGxxfO8bQCwN5VKHc7lcofr6+tzR44cGcTMg4UQgxDRfp8IAJdH4KwlooXlkEhEQGv9EAAsDQF+GwDWEdE75Rg1xlwFADcx83QAOCOg29SvX79ZDQ0NuSSYsQS01h8BwBUBsF45HnTIGHMBM9uFmR2Ya0bEWxzHORBHoiQBY8xmZp4RAFlNRIvigMuZN8asYOb7Azq7hBCTMpnMvlJYkQSMMUuYeblf2fO8ZdlsNiyVyvE3VNZ13XFCiGb/JCK+6DjOrLIJ2N0GAN4KKG4hIpuzVRtKqf6I+HvAwAIiWhdlNDQCSqntga3yUyK6rGqe+4Db2tqu8zzv3cJfiPiLfQYdx/k6zH4PAvlD6iWf8B7P8yZls9mO/4KAtaG1fhgAHvCReN1xnClJCXweOGFLhrAapJqamlLDhg372H9eMPNMKeXmoL1uEVBKTUXEJp+QJiJZDSfjMIOZgIibHMcJbrfdq1Gt9WMAcI8P/D9f/YJtpVQfW7n6isSDRHReyQhorXcCwMV5oWN1dXWD0un04bjVqta81to+i7bi7RpCiAmZTOYDv71iCu3cuXNQZ2env07fRkSTq+VcEtyQ7XwNEfkz5N8Ucl13khDiDR/b+ZlM5vkkhqopo5Q65Euj74loRGgElFJ3IuIThUnP8xqz2eyeajqXBFtrvR0AiuU7EXXbeIo/tNaPAMB9BVBmrpVS/l3KiDFmBjNPKbMbK0A+6zjOq3EktNavAUAxlUsR2AIA0ywgM3dIKYfFgRtjmph5apxc2Dwz/ySlHBynq7V+wV+tliLwPgBcmwdsJaLRceDGmD3MnI6Ti5j/g4j6x+lqrZ8EgGKTE0nAGPM0M9+Wj8BhKWV9HLjrukuFEPMBoMf+HKdrm3oimhcnFyy1IwkopRYj4soCYF1dXf3JPAMKfiilNiFisaSOJOC67nQhxCu+h3i0lLI1boWqPW+M6WDmoXk7+4io8L3rr+IuZIwZycztPocWEdHqajtYCl8pdSEifuOT2UhEc/w63fZUrfWvADCwixlii+M4408mAa31AgB4xufDHCLaGElAKbUZEf09cAMR/XCySGit7TXO3IJ9IcTQYI8cLKfvQsQ1BYVq9sBxi9La2jqipqbmMwA4Oy8bWtoHCTiIaBua0/JKB5hZSikPxhms9LxSah0i2i26MHoUct0eYt+2tRIRF5/MKGit7YFqD9auYU9tRBwfls49emJjzEBm3gEAxVKCmadJKbdWepWj8LTWHwLAlb75hUS0Nkw+6lbidkTspoCI6aibgUoSU0otR8QlBUxE3Oo4TleNlpiAFQwWUfa/XC7XZ8yYMccq6bAfS2v9OADcHUidqUT0RdkE8iS+BIBsQHkkEe2qNAml1HOIeGsA914isqQiR5LL3aMAcHoAYTIR2av0Ex7t7e3ne563mplvDoIh4le2xC+VurEE8pGwh1m3/sBec3ie96iUcndvWLS3t4/o7OycK4SYw8znRKZIDIlEBPIk7IrfGDB01JIAgJZsNtuShIjruplUKmWdtidsMLK2lFmFiPP8fUapSCQmYJ2L6cDsNfh7iLiXme1VjG3GOwFguOd5DYg4HAAa7O/Q3QTRXiavchxnhzHmIgCw3V6xWYoiURYBa9h13atTqdTssJxNEoEImQeJaIV/LimJsgkUjCilLrGXToho33mFrmoMod2I+LLneW9KKb8Nk01CotcE/AaVUmOFENcz8zgAGAIA54Y4dAgADiCifejtjcQnSSIWRgIAniIi+5q3cm/q/c40NzfX9e3bd4gQ4kxEPFhbW3sgnU7/lcThJJHwV8kViUBvHStHz0aCme2qe7W1tasbGxu7rkFPGQKR50Q5q/B/lP0HjgOoT/ydvaYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-narrow:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABS1JREFUaEPVmgmoVVUUhr+fosKC5ogGSsqIpKQwMqjIBpsICdMGQ7ISo4wGApugJCoxLClssElpNEuaI5okKjOI5onKhEQrSiKiaKA/Vu3zOu+8c88593qvj7fgcO99e6/h33udtdda+4khThri9tM1ALaPAQ4Btso9GwNfAyuBb7JHUnzvCq0XANuTgePSs00bFr0L3BuPpF/b4BswtSMAyfDzgYPXRznweQ7ID53IaguA7ROBGcC4TpRV8IRL3SNpVrtyGwOwfVYoaaHgW2AZsBT4CliXnt+BXYBd02d8D5c7rIWc+ZJigRpTIwC2rwauKZH6NLBA0jONNQK2jwJOAU4FtijwPgpMkRTga6kWgO2XgSMKkjoyvGiN7d3SwpxZGHsVOEPSmjoElQBsPwScVhAyR9LMOsHtjNu+Hri8wPMBMF7SqipZLQHYvgq4tsA8S1KZK7Vjb+lc24cDsfJ5ul/SlLYBpGjzVIFxsaTw2Z6R7S2BnwoKpkta0Epp6Q7YfqEQKl+XdGjPLM8Jtn088GzuT9/FOyjpkzL9AwCkQ+qB3OSPki9GOrBByPZ1wBU5ZY9LOrkpgDcLJ2zlFvYCke2NgFcK58VkSRFU+lG/HbA9EYg4nNE7kkb3wsg6mSWesEhSMdz2z0Zt3wRcnBO+wVc/0217WMpesyRxraSd6nbgfWC/NOm3OP4lRVowKGQ73sXIeDMaJ+nFvDF9LmQ78pR8nr5U0oRBsTwpLQnn8yTlPeR/F7I9HngiZ/A0SXcPJoDQbftHIHOjLyTt1WoHLgBuyQ3uKylC6KBS8UyS1C/w5F3oRuDSnLWbSPqzynrbkSdFfG6nGstE3inpkbrVsf0Y0OfKVQAWA5OSwJWS9mggPEJuhN5OaLWkqBMqyfZ9QF/4rALwPHBskrZC0pgGwsPFRtbNazH+s6TIfeoA3JqqwH/nVQG4HTg3SVsnadsGwiMznQYMiM91vKmgP7tuXjHVrgJwGXBDTuC2g3kGZHbYXhQVWva7CkCkyg/nAIyRtKJuhXo9bjuSyOFJzypJ2ff/XCqHdBTwXs6gmZLm9NrAKvm29wY+zc1ZKGlqnqeYzH0PbJ8mLJM0dpABTAfuyNkwVdLCKgDFGniEpC8HC4TtaONEOyej4cUaubgDFwLzcgw9q4HrFsV2pAxvANuluaWpfRHAAUAUNJsmpmhrjJa0tk5ht8dtRx0cITqjAYlcv5c49zJHKI2QmtEG3wXbcaDGwZrRamBsmTuX1cTxEi8H8qnEJElLur3KreTZfgk4Mjc+Q9L8svmtuhLnAUWGka06A90EZjt6UdGTymiJpCxHG6CqqrHVL4lKnMMkRaXWE7J9M3BRwXUmSnqrlcK61uLbwIEF5lGSou3XVbJ9F3BOQeglkgJUS2rS3P0F2LwgYYKkaKWvN9neGYgT//QSYR9Hil/lurUAQqjtOMyK9UEkWXMlfdgJihTn45CK1GCHChmVIBoBSCBixU8qKIrdmRuXG5LigqOWbO+fjA7jizsbqcxsINLsfJ3REkRjAAlEVQUWbfDncjc0UYz/BewJjCh8lgGNZvJsSctt75MabLUg2gKQQBydSrwyn63dgRYTrpQUdwR91BRE2wAyDbYPSk2nuPOKVW6X4t15EHhS0mdlzE1AdAygsFpxwX0CEJcUuwM7lhgULhW5VRgeHYnXmiBuAeI2SXHN272b+gKgzRKQrYFIBNdI+qOJwQ13oi8/68oOdGpYO3xpJ2LV/45zI/t3hSEDoBXYIQ/gH99H3EBePlczAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-expand{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABvJJREFUaEPVWWmIXEUQrnqzZseYxGM9QBNF4hrJEDfzqieuAY/gFRXPyMYbzUHwQBQUzx+KeBAJKhrRqEhEQWMU75AYXREPlunu3bjxIDGraIwiuJpFkL26pMK84eXtm3lvZieGFAzsTtf1VVd3V9Ug7OOE+7j/0BAAnZ2d2UmTJl2cyWTaAOBA+TDzgYjYDAB/y4eZ5fNjc3Pze7NmzfqlUYEbFwBr7TUAcAEzXwAA2bROIeKnzrkNALBeKWXTysXx1QXAGHMVANwEACePxzgzjyLi057nrczn81vr0VUTAGOMRPtmRDy7HmOVZBDxL+fcyr6+vgc7OjqGatGdGoC19hZmfrKC8t9LafEWAGzLZDL9g4OD/S0tLYM7d+6cyszTPM+biojy97kAcGoFPV8ODw8vbG9v354WRCoAxpiXAUDyPUrvAcAqIno/rUHhs9aeCQALmflyAJgUlkXEf5xzp6U9G4kAjDHcKMejeqy1xzDz/QBwXYyNViL6ISkwVQEYY74AgLkRJcuJ6M4kxbWsW2sfZua7ozJNTU1HtLW1/VFNV0UAxpjlAHBHWNg590ChUJCINZyKxeLpnud1RhSvmzJlyiWtra2DFS+AuAW5bQDg3cja60QkObvHSGstj588fGVi5heVUktqAqC1Xh+5Kj8nolP2mOchxd3d3ec55z6I2JpPROvj7I9JodIj9UqIebNz7qJCodD3fwAQG8aYhwDgnpC99UQ0Py2ALyMv7DIiWvV/OS921qxZk5k+ffon4fcCEZf4vv9i1I/ddkBrfSUivhpiMkSkanXeWnsFAFwCADNHR0fX1nPwYzJhAxGdkwTgJUQM38l1Rd8Y8yYAXFoytoOIjqo1CFrriQDwCyIeEsh6nndsPp//KayrvANbt25tHhgY+AsA9i8x/JvNZqfmcrn+Wo1bazuZ+fRAjogSH8w4G8YYOYtSOAZ0GxE9EQvAGCMRk8gF9BYRLajVeeFvIIDdrnOpt3zfnxcLwFr7CDPfFdqupfl8/oW9CUBsa63/DKXRz0R0TCUAzzDzDcGic25WoVDYvLcBGGPk/i+X7wMDA/vNmzdvJPCrnJvW2leZ+cpggZknKKWGqwGw1l7IzOcg4swoX/gMyNbH6HnO9/3XkgJkjFkLAOVUzmQyM2bPnr1lDABjjJTE58sCM/cppaanUK4BgJL44taZebtSalqSrDHmpXC1ysynKKU+j9uBj5hZ6nShLiJqT1Jurd3MzLkkvgrrfxPRwUmyxpinAODmSqkdTqE3mPmy0g70K6VakpQXi8X7Pc9bCgBHJvHGrEsjtCxJLlpqDw8PTwt3bGEAzzNzuerLZrMt9bwB4lCjrtHSLbQaEa8NgGaz2cm5XO6fuDPwGADcHjrE7UqprqQIxa03EoC1to+Zjy3ZGZN25R3QWt+IiCtDDt1JRNLU1EyNAqC1PgERvws58DYRSY1VpjKA3t7eaUNDQz+Xtybm1UuLpFEAjDFyRp4N2a1cSsTlLgCkaqyjwBoIQMrnRYH+0dHR/Jw5c3pid6B0YO5GxIdDV1ZdPbC19nLn3GOIOAUA1hLR4rS7F/B1dXUd39TUJEOFQ+U7RNzo+/5ZUT3RfsBHRGloZCgrtIOZlVLqt1odGC+/1noVIsoVHdAiIpJHbTcaU+ZqrR9BxHJRtycnEZVAGmOkfVwXOo9bJk+efGLcdGIMAGvtYcz8FQCUSwlm7lBKvTHeqKaVN8ZsBIAz0qRybKMRc6VKDuZ83/82rRP18mmtH0TE+0LyHxNRUOKMUVuxU7LWlkuLQGpwcHDi3Llz/63XuSQ5Y8zjAHBrwMfM/cy8oFAoxFWzu9iSRou/xtQ5bUT0dZIzta5rrZ+XyUNYDhFv931/RTVdVQF0d3e3OufKtXdI0QIiklH6uKmnp+co59zycC8SOrzfAEBHtdRNbLaLxeIMz/O+H3N9Ia52zq1QSvXWg6Knp+f4kZGRRZ7nXc/Mh1fSgYhVQSQCEMW9vb1HDA0NyS0UHS/KLF+2+NNqeRp2rlgs5jOZjDgtL+wBEcdlEv0oIi4O9xnVQKQCIEZkTuN53uqgZ4iJmMxrPkTEbXL4AECaceldj3POtSLicVKayP9x0UZEGSY/6vv+V9ZaaVHXpAGRGkBgtFgsnpXJZK6Ly9l6Uqkkcy8RlUsY+S4tiJoBBE5qrU9CxKvlZ1YA2G3UkRJIr4wxnXPvKKXGnLG0IOoGEHZSnn5EvIiZTwKAowEgrh39U2orRJRDLxOJz9IAjdsJAHiGiORn3sb8Uh91ZNOmTQeMjIwcjYgHIeJvEyZM2JHL5Wr6+TSsMwoCEVf4vr+re2zIDqSJ5Hh5BAQzS9R/IiJpf3fRPgOg4jsx3sjsbfn/AH37LF5g3/BiAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-expand:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABYZJREFUaEPVmXmoVVUUxn8f0WRzVkJlIWVGUmIJWWADTVaUldFclCnSQBQYNv1RSCWGVFRSlkRh0GBS2YBmJWGJUBHNNJiYWQSZfwTRxBfrce5jv/3Ovefc++4z3oKLD/fea61v7bXXdMQQJw1x/ekKANs7AOcA44Ddkt/2wJbk9z2wTNIP3TLcgADYvhw4q/gFiLq0ClgBLJf0Ud1DZfs6AmD7UuA64JiBCAf+BR4GHpH0TSe82gJgO6x9PXBqJ8JanPktQABzJP3VDu/aAGzfADzYhPnPQLjFUuA7YHPx+xPYHxhZ/Bt/nw4c14TP+8CFkjbWBVELgO2ngfD3nJYBCyW9Wldg7LN9cigKXATsnJ39HTi+7tuoBGDb3VI852P7QOBO4MoSGaMlfVtlmJYAbL8HHJsxmSdpdhXjdtZt3wPcWnJmhKRfWvFqCsD2PODm7PBdksJiXSfbJwDvZIzfAM6VFG+plEoBFNHmlezEc5LCZweNbEcSjMSX0iJJ09sFsDwLlaslTRo0zRPGts8AXstkTZYUOvWjfjdQJKnFyc7PgCmS1m0NACHD9t3AbYm8yNiT6wKIWJxm2JmSFm4t5QsA2wBvZ/liuqRFuR59bsD2JcAzyaYPJU1oV3nbF8fjAw4DlnTy8Es8YYWk06oAPJnF5I6sb/tF4LxC2CZJ+3VghGFAVK17JmdHSVqf8uq9AdtR+kZNsmOx4Y9I/5KiLGiLbEc4jLDYQ5IqE2aZANvxFqNwbNBNkh5oBiAsFpZr0FJJU9vSvNjcRQBRPKbhfJWkE5sBuBe4JVmcIemJ/xNAyLb9a+JGGyRF+dFLqQstAK5J1g6XFCG0berWDRQA8py0raR/et2z8YftiD4RhRq0naS/W2lv+2wgIkNEm5x630BRaufrj0l6tso6tpcAqSuPkfR1GYAoic8sFtZJOqgG8w+Ao6r2NVnfKCn6hJZkO4+MkyStLgPwJhB1etBaSRNrMA8XG1u1r8n6Fkl7VJ21/VDRBTa29nHt9A28AJxf7NosaXgN5lGZzgD2rdpbsh6N0MyqcyWl9si0Y0sBPA6kVd/wTnJAKNTlR/wUcEUCdBdJ0bX1UArgPmBWsnGipLVVFipb7zKAKCJHFXL6uV0K4NpiMtDQabakaGrapm4BsH0o8GWiwEuSosbqpRRARIQNyVq/rFcXSRcBxBt5NJHbvJQo812gVmOdA+sigCifpyX8x0v6uPQGCgDRWEeD3aCOemDb0XrGm9q1KKevrnt7jX22DwFiqLBX8X8rJZ2S88n7gSOBaGiiMg3aBEyQ9FO7Cgx0v+1ooiJEN2iapEhqfaispcyLuo5uYSAAbEf7GBOJBkXpcETZdKIMwN7AGiAtJS6QFIluq5DtlcBJdVy52VglD6nBa6ykLwYbge05wB2JnLckNUqcfuJbDbbS0qJxcJik6NQGhWzfD9yYMI9ucKqkGByXUtVo8ceSOmecpE+6jcB2XsqEiFmS5reSVQVgNNBbeyeMwioxSh8w2Y6GPzJ+2os0+H4OxPtr6rqVzbbtMcBXJZpGkTVf0qedoCjifCSpq4B9WvBoCaISQDC2PQKIN5GPF6MqjCuOsqOpn6bK2R5fKB3K75QpHpPouUAkvrTPaAqiFoACRMxpwuqNniE3WsxrXk++0EQzHr3rwVGSZP+WGTymD3MlrbEdLerzdUDUBtCQaDvSeXyQKPPZTrwpztwuKS1h4tZrgWgbQALkaOCy4hNrn1FHTRTxdmKQ8LKksjdWC0THADK/jtQ/BQhQBwBl7Wi4VNRWoXhMJN6tA7TJTSyQFJ95u/OlPlfEdjzOALI7EIVgzEfb+nyaGSh3p4h+Pd1jV26gjiUHuqe4ibD6eklRqvfQkAHQzABDHsB/7aMVT352GH8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.jb-pro-container .jb-pro-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.jb-pro-container .jb-pro-menu-list,.jb-pro-container .jb-pro-quality-menu-list,.jb-pro-container .jb-pro-scale-menu-list,.jb-pro-container .jb-pro-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;overflow:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.jb-pro-container .jb-pro-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-speed-menu-shown{visibility:visible;opacity:1}.jb-pro-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jb-pro-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container .jb-pro-quality-menu{padding:8px 0}.jb-pro-container .jb-pro-menu-item,.jb-pro-container .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-speed-menu-item{display:block;height:25px;line-height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jb-pro-container .jb-pro-menu-item:hover,.jb-pro-container .jb-pro-quality-menu-item:hover,.jb-pro-container .jb-pro-scale-menu-item:hover,.jb-pro-container .jb-pro-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-menu-item:focus,.jb-pro-container .jb-pro-quality-menu-item:focus,.jb-pro-container .jb-pro-scale-menu-item:focus,.jb-pro-container .jb-pro-speed-menu-item:focus{outline:none}.jb-pro-container .jb-pro-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-speed-menu-item-active{color:#2298fc}.jb-pro-container .jb-pro-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-wrap.jb-pro-volume-panel-wrap-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jb-pro-container .jb-pro-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:before{bottom:-54px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-volume-panel-handle:after,.jb-pro-container .jb-pro-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-controls,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-controls{width:100vh}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-play-big:after,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading{flex-direction:row}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading-text,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading-text{transform:rotate(270deg)}.jb-pro-container .jb-pro-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;left:10px;top:10px;min-width:200px;padding:5px 0;background-color:rgba(0,0,0,.9);border-radius:3px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu{cursor:pointer;font-size:12px;display:block;color:#fff;padding:10px 15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 2px rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu a{color:#fff;text-decoration:none}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span{display:inline-block;padding:0 7px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span.art-current,.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span:hover{color:var(--theme)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:last-child{border-bottom:none}.jb-pro-container.jb-pro-contextmenus-show .jb-pro-contextmenus{display:flex}.jb-pro-container .jb-pro-extend-dom{display:block;position:relative;width:100%;height:100%;display:none}.jb-pro-container-playback .jb-pro-controls{height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time-text{position:absolute;box-sizing:border-box;padding:0 5px;width:60px;left:-25px;top:15px;border:1px solid red;height:15px;line-height:15px;cursor:move;background-color:#fff;color:#000;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-hour{width:1440px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.half-hour{width:2880px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.ten-min{width:8640px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.five-min{width:17280px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-min{width:86400px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-day{height:100%;overflow:hidden}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-one-wrap{height:8px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-wrap{height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-btns{display:flex;align-items:center}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.active,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.active{background-color:orange;cursor:pointer}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.start,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.start{background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one:hover .jb-pro-playback-time-title-tips,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one:hover .jb-pro-playback-time-title-tips{visibility:visible;opacity:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips{pointer-events:none;position:absolute;left:0;top:100%;visibility:hidden;opacity:0;transform:translateX(13%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:#000;border-radius:4px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips.jb-pro-playback-time-title-tips-left{transform:translateX(-100%)}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips .jb-pro-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute{float:left;position:relative;width:60px;box-sizing:border-box;border-top:1px solid #999;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:left;height:25px;line-height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child{border-left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child .jb-pro-playback-time-hour-text{left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:after,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-text{position:absolute;left:-13px}.jb-pro-container-playback .jb-pro-playback-expand.disabled .jb-pro-icon-expand,.jb-pro-container-playback .jb-pro-playback-narrow.disabled .jb-pro-icon-narrow{cursor:no-drop}.jb-pro-container-playback .jb-pro-control-progress-simple{position:absolute;box-sizing:border-box;left:0;top:-2px;width:100%;display:flex;flex-direction:row;align-items:center;height:8px;cursor:pointer}.jb-pro-container-playback .jb-pro-control-progress-simple:hover{top:0;align-items:flex-start}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner{height:100%}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner .jb-pro-progress-indicator{transform:scale(1);visibility:visible}.jb-pro-container-playback .jb-pro-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.jb-pro-container-playback .jb-pro-progress-hover{display:none;width:0}.jb-pro-container-playback .jb-pro-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.jb-pro-container-playback .jb-pro-progress-indicator{visibility:hidden;align-items:center;justify-content:center;position:absolute;z-index:40;border-radius:50%;transform:scale(.1);transition:transform .1s ease-in-out}.jb-pro-container-playback .jb-pro-progress-indicator .jb-pro-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-progress-indicator:hover{transform:scale(1.2)!important}.jb-pro-container-playback .jb-pro-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700;white-space:nowrap}.jb-pro-container-playback.jb-pro-fullscreen-web .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-playback-time-inner{overflow-y:auto}.jb-pro-zoom-control{cursor:-webkit-grab;cursor:grab}.jb-pro-performance-panel{position:absolute;box-sizing:border-box;z-index:10000;left:0;top:0;padding:5px;font-size:10px;background:rgba(0,0,0,.2);color:#fff;max-height:100%;overflow-y:auto;display:none}.jb-pro-performance-panel .jb-pro-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.jb-pro-performance-panel .jb-pro-performance-item-block{height:10px}.jb-pro-tips-message{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));overflow:auto;box-sizing:content-box;display:none}.jb-pro-tips-message:before{color:hsla(0,0%,100%,.3);content:"X";font-family:Arial,Helvetica,sans-serif;font-size:40px;left:0;line-height:1;margin-top:-20px;position:absolute;text-shadow:2em 2em 4em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.jb-pro-tips-message .jb-pro-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.jb-pro-tips-message .jb-pro-tips-message-close .jb-pro-tips-message-close-icon{width:20px;height:20px;border-radius:10px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-color:#fff;background-size:100% 100%}.jb-pro-tips-message .jb-pro-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%;z-index:99999}.jb-pro-tips-message .jb-pro-tips-message-content .jb-pro-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class pc{constructor(e){var t;this.player=e,this.TAG_NAME="Control",this.extendBtnList=[],((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jb-pro-controls-show-auto-hide"):e.$container.classList.add("jb-pro-controls-show");const i=e._opt,s=i.operateBtns,r=`\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          00:00:00
          \n
          \n
          \n
          \n
          \n ${i.playbackConfig.showPrecisionBtn?`\n
          \n
          ${Qh.narrow}
          \n
          ${Qh.expand}
          \n
          \n `:""}\n
          \n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
          `:""}\n
          \n \n
          \n ${i.loadingIcon?`\n
          \n ${Qh.loading}\n
          ${i.loadingText}
          \n
          \n `:""}\n ${i.hasControl&&s.play?'
          ':""}\n ${i.hasControl&&s.ptz?`\n
          \n
          \n
          \n
          \n
          \n
          \n ${i.ptzMoreArrowShow?'\n
          \n
          \n
          \n
          \n ':""}\n
          \n
          \n ${i.ptzZoomShow?'\n
          \n
          \n \n \n 缩放+\n \n
          \n
          \n \n \n 缩放-\n \n
          \n
          \n ':""}\n ${i.ptzApertureShow?'\n
          \n
          \n \n \n 光圈+\n \n
          \n
          \n \n \n 光圈-\n \n
          \n
          \n ':""}\n ${i.ptzFocusShow?'\n
          \n
          \n \n \n 聚焦+\n \n
          \n
          \n \n \n 聚焦-\n \n
          \n
          \n ':""}\n ${i.ptzCruiseShow?'\n
          \n
          \n \n \n 巡航开\n \n
          \n
          \n \n \n 巡航关\n \n
          \n
          \n ':""}\n ${i.ptzFogShow?'\n
          \n
          \n \n \n 透雾开\n \n
          \n
          \n \n \n 透雾关\n \n
          \n
          \n ':""}\n\n ${i.ptzWiperShow?'\n
          \n
          \n \n \n 雨刷开\n \n
          \n
          \n \n \n 雨刷关\n \n
          \n
          \n ':""}\n
          \n
          \n `:""}\n ${i.hasVideo?`\n
          \n
          ${Qh.narrow}
          \n
          电子放大
          \n
          ${Qh.expand}
          \n
          ${Qh.zoomStop}
          \n
          \n
          \n
          \n
          00:00:00
          \n
          ${Qh.recordStop}
          \n
          \n `:""}\n\n ${i.hasControl?`\n
          \n
          \n
          \n ${i.showBandwidth?'
          ':""}\n
          \n
          ${i.controlHtml}
          \n
          \n ${i.playType===w&&i.playbackConfig.showControl&&i.playbackConfig.controlType===X.normal?r:""}\n ${i.playType===w&&i.playbackConfig.showControl&&i.playbackConfig.controlType===X.simple?'\n
          \n
          \n
          \n
          \n
          \n
          00:00
          \n
          \n
          \n ':""}\n
          \n ${i.playType===w&&i.playbackConfig.showRateBtn?'\n
          \n
          \n
          \n
          \n
          \n
          \n ':""}\n ${s.close?`
          ${Qh.close}
          `:""}\n ${s.logSave?`
          ${Qh.logSave}
          `:""}\n ${s.performance?`
          ${Qh.performance}
          ${Qh.performanceActive}
          `:""}\n ${s.aiFace?`
          ${Qh.face}
          ${Qh.faceActive}
          `:""}\n ${s.aiObject?`
          ${Qh.object}
          ${Qh.objectActive}
          `:""}\n ${s.aiOcclusion?`
          ${Qh.occlusion}
          ${Qh.occlusionActive}
          `:""}\n ${s.quality?'\n
          \n
          \n
          \n
          \n
          \n
          \n ':""}\n ${s.scale?'\n
          \n
          \n
          \n
          \n
          \n
          \n ':""}\n ${s.audio?`\n
          \n
          \n ${Qh.audio}\n ${Qh.mute}\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n `:""}\n ${s.play?`
          ${Qh.play}
          ${Qh.pause}
          `:""}\n ${s.screenshot?`
          ${Qh.screenshot}
          `:""}\n ${s.record?`
          ${Qh.record}
          ${Qh.recordStop}
          `:""}\n ${s.ptz?`
          ${Qh.ptz}
          ${Qh.ptzActive}
          `:""}\n ${s.zoom?`
          ${Qh.zoom}
          ${Qh.zoomStop}
          `:""}\n ${s.fullscreen?`
          ${Qh.fullscreen}
          ${Qh.fullscreenExit}
          `:""}\n
          \n
          \n
          \n `:""}\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jb-pro-poster"),configurable:!0}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".jb-pro-loading-bg"),configurable:!0}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".jb-pro-loading-bg-image"),configurable:!0}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jb-pro-loading"),configurable:!0}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".jb-pro-loading-text"),configurable:!0}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jb-pro-play"),configurable:!0}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jb-pro-play-big"),configurable:!0}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jb-pro-recording"),configurable:!0}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jb-pro-recording-time"),configurable:!0}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jb-pro-recording-stop"),configurable:!0}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jb-pro-pause"),configurable:!0}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jb-pro-controls"),configurable:!0}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jb-pro-controls-bottom"),configurable:!0}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jb-pro-controls-left"),configurable:!0}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jb-pro-controls-right"),configurable:!0}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jb-pro-volume"),configurable:!0}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jb-pro-volume-panel-wrap"),configurable:!0}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jb-pro-volume-panel-text"),configurable:!0}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jb-pro-volume-panel"),configurable:!0}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jb-pro-volume-panel-handle"),configurable:!0}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jb-pro-icon-audio"),configurable:!0}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jb-pro-icon-mute"),configurable:!0}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jb-pro-fullscreen"),configurable:!0}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jb-pro-fullscreen-exit"),configurable:!0}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jb-pro-record"),configurable:!0}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jb-pro-record-stop"),configurable:!0}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jb-pro-screenshot"),configurable:!0}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jb-pro-speed"),configurable:!0}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".jb-pro-controls-item-html"),configurable:!0}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jb-pro-controls-playback-time"),configurable:!0}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jb-pro-controls-playback-time-inner"),configurable:!0}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jb-pro-controls-playback-time-scroll"),configurable:!0}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jb-pro-controls-playback-time-list"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jb-pro-playback-time-one-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jb-pro-playback-time-second-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time-text"),configurable:!0}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jb-pro-controls-playback-btns"),configurable:!0}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jb-pro-playback-narrow"),configurable:!0}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jb-pro-playback-expand"),configurable:!0}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".jb-pro-ptz"),configurable:!0}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".jb-pro-ptz-active"),configurable:!0}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".jb-pro-ptz-controls"),configurable:!0}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".jb-pro-ptz-bg-active"),configurable:!0}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".jb-pro-ptz-control"),configurable:!0}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".jb-pro-ptz-arrow"),configurable:!0}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".jb-pro-ptz-expand"),configurable:!0}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".jb-pro-ptz-narrow"),configurable:!0}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".jb-pro-ptz-aperture-far"),configurable:!0}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".jb-pro-ptz-aperture-near"),configurable:!0}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".jb-pro-ptz-focus-far"),configurable:!0}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".jb-pro-ptz-focus-near"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePlay",{value:e.$container.querySelector(".jb-pro-ptz-cruise-play"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePause",{value:e.$container.querySelector(".jb-pro-ptz-cruise-pause"),configurable:!0}),Object.defineProperty(t,"$ptzFogOpen",{value:e.$container.querySelector(".jb-pro-ptz-fog-open"),configurable:!0}),Object.defineProperty(t,"$ptzFogClose",{value:e.$container.querySelector(".jb-pro-ptz-fog-close"),configurable:!0}),Object.defineProperty(t,"$ptzWiperOpen",{value:e.$container.querySelector(".jb-pro-ptz-wiper-open"),configurable:!0}),Object.defineProperty(t,"$ptzWiperClose",{value:e.$container.querySelector(".jb-pro-ptz-wiper-close"),configurable:!0}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".jb-pro-quality-icon-text"),configurable:!0}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".jb-pro-quality-menu"),configurable:!0}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".jb-pro-quality-menu-list"),configurable:!0}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".jb-pro-scale-icon-text"),configurable:!0}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".jb-pro-scale-menu"),configurable:!0}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".jb-pro-scale-menu-list"),configurable:!0}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".jb-pro-zoom"),configurable:!0}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".jb-pro-zoom-stop"),configurable:!0}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".jb-pro-zoom-narrow"),configurable:!0}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".jb-pro-zoom-expand"),configurable:!0}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".jb-pro-zoom-stop2"),configurable:!0}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".jb-pro-close"),configurable:!0}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".jb-pro-zoom-controls"),configurable:!0}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".jb-pro-performance-panel"),configurable:!0}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".jb-pro-performance"),configurable:!0}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".jb-pro-performance-active"),configurable:!0}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".jb-pro-face"),configurable:!0}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".jb-pro-face-active"),configurable:!0}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".jb-pro-object"),configurable:!0}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".jb-pro-object-active"),configurable:!0}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".jb-pro-occlusion"),configurable:!0}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".jb-pro-occlusion-active"),configurable:!0}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".jb-pro-contextmenus"),configurable:!0}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".jb-pro-speed-icon-text"),configurable:!0}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".jb-pro-speed-menu"),configurable:!0}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".jb-pro-speed-menu-list"),configurable:!0}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".jb-pro-logSave"),configurable:!0}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".jb-pro-control-progress-simple"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".jb-pro-progress-tip"),configurable:!0}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".jb-pro-progress-hover"),configurable:!0}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".jb-pro-progress-played"),configurable:!0}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".jb-pro-progress-indicator"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".jb-pro-playback-control-time"),configurable:!0}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".jb-pro-tips-message"),configurable:!0}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".jb-pro-tips-message-close"),configurable:!0}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".jb-pro-tips-message-content"),configurable:!0})})(e,this),e._opt.extendOperateBtns.length>0&&e._opt.extendOperateBtns.forEach((e=>{this.addExtendBtn(e)})),e._opt.extendDomConfig&&e._opt.extendDomConfig.html&&this.addExtendDom(e._opt.extendDomConfig),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls&&t.$controls.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner&&t.$controlsInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft&&t.$controlsLeft.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight&&t.$controlsRight.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0},configurable:!0}),cc(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e,r=e._opt,o=r.operateBtns;function a(e){const{bottom:i,height:s}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return ro(i-e.y-r/2,0,s-r/2)/(s-r)}if(fo()&&i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(t.$controls,"click",(e=>{e.stopPropagation()})),o.play&&(i(t.$pause,"click",(t=>{r.playType===w&&r.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:Zo(o.pauseFn)?o.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{r.playType===w&&e.playbackPause?e.playbackPause=!1:Zo(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))}))),i(t.$playBig,"click",(t=>{r.playType===w&&e.playbackPause?e.playbackPause=!1:Zo(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),o.screenshot&&i(t.$screenshot,"click",(t=>{t.stopPropagation(),Zo(o.screenshotFn)?o.screenshotFn():e.video.screenshot()})),o.audio&&(fo()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jb-pro-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jb-pro-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=a(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=a(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),oo(t.$volumeOn,"display","none"),oo(t.$volumeOff,"display","block");const s=e.volume;e.volume=0,e._lastVolume=fo()?s:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),oo(t.$volumeOn,"display","block"),oo(t.$volumeOff,"display","none"),e.volume=fo()?e.lastVolume||.5:1}))),o.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),Zo(o.recordFn)?o.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),Zo(o.recordStopFn)?o.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),Zo(o.recordStopFn)?o.recordStopFn():e.recording=!1})),o.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),Zo(o.fullscreenFn)?o.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),Zo(o.fullscreenExitFn)?o.fullscreenExitFn():e.fullscreen=!1}))),o.ptz){i(t.$ptz,"click",(e=>{e.stopPropagation(),oo(t.$ptzActive,"display","flex"),oo(t.$ptz,"display","none"),t.$ptzControl.classList.add("jb-pro-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),oo(t.$ptz,"display","flex"),oo(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")}));const n=xa();if(t.$ptzArrows.forEach((s=>{if(r.ptzClickType===Y)i(s,"click",(i=>{i.stopPropagation();const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(ot.ptz,va(s)),setTimeout((()=>{t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Di.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(ot.ptz,Li)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let r=!1;i(s,n.down,(i=>{i.stopPropagation(),r=!0;const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(ot.ptz,va(s))}));const o=()=>{r=!1,t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Di.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(ot.ptz,Li)};i(s,n.up,(e=>{e.stopPropagation(),r&&o()})),i(window,n.up,(e=>{e.stopPropagation(),r&&o()}))}})),r.ptzZoomShow)if(r.ptzClickType===Y)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Ii),setTimeout((()=>{e.emit(ot.ptz,Li)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Pi),setTimeout((()=>{e.emit(ot.ptz,Li)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let l=!1,d=!1;i(t.$ptzExpand,n.down,(t=>{t.stopPropagation(),l=!0,e.emit(ot.ptz,Ii)})),i(t.$ptzNarrow,n.down,(t=>{t.stopPropagation(),d=!0,e.emit(ot.ptz,Pi)}));const h=()=>{l=!1,d=!1,e.emit(ot.ptz,Li)};i(t.$ptzExpand,n.up,(e=>{e.stopPropagation(),l&&h()})),i(t.$ptzNarrow,n.up,(e=>{e.stopPropagation(),d&&h()})),i(window,n.up,(e=>{e.stopPropagation(),(l||d)&&h()}))}if(r.ptzApertureShow)if(r.ptzClickType===Y)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Bi),setTimeout((()=>{e.emit(ot.ptz,Ri)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Mi),setTimeout((()=>{e.emit(ot.ptz,Ri)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let c=!1,u=!1;i(t.$ptzApertureFar,n.down,(t=>{t.stopPropagation(),c=!0,e.emit(ot.ptz,Bi)})),i(t.$ptzApertureNear,n.down,(t=>{t.stopPropagation(),u=!0,e.emit(ot.ptz,Mi)}));const p=()=>{c=!1,u=!1,e.emit(ot.ptz,Ri)};i(t.$ptzApertureFar,n.up,(e=>{e.stopPropagation(),c&&p()})),i(t.$ptzApertureNear,n.up,(e=>{e.stopPropagation(),u&&p()})),i(window,n.up,(e=>{e.stopPropagation(),(c||u)&&p()}))}if(r.ptzFocusShow)if(r.ptzClickType===Y)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Fi),setTimeout((()=>{e.emit(ot.ptz,Ri)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Ui),setTimeout((()=>{e.emit(ot.ptz,Ri)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let f=!1,m=!1;i(t.$ptzFocusFar,n.down,(t=>{t.stopPropagation(),f=!0,e.emit(ot.ptz,Fi)})),i(t.$ptzFocusNear,n.down,(t=>{t.stopPropagation(),m=!0,e.emit(ot.ptz,Ui)}));const g=()=>{f=!1,m=!1,e.emit(ot.ptz,Ri)};i(t.$ptzFocusFar,n.up,(e=>{e.stopPropagation(),f&&g()})),i(t.$ptzFocusNear,n.up,(e=>{e.stopPropagation(),m&&g()})),i(window,n.up,(e=>{e.stopPropagation(),(f||m)&&g()}))}if(r.ptzCruiseShow&&(i(t.$ptzCruisePlay,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Oi)})),i(t.$ptzCruisePause,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Ni)}))),r.ptzFogShow&&(i(t.$ptzFogOpen,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,ji)})),i(t.$ptzFogClose,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Gi)}))),r.ptzWiperShow&&(i(t.$ptzWiperOpen,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,zi)})),i(t.$ptzWiperClose,"click",(t=>{t.stopPropagation(),e.emit(ot.ptz,Wi)}))),r.ptzSupportDraggable){function y(){t.isPtzControlDroging&&(t.isPtzControlDroging=!1,t.$ptzControl.style.cursor="grab",t.tempPtzPosition={x:0,y:0})}t.isPtzControlDroging=!1,t.tempPtzPosition={x:0,y:0},i(t.$ptzControl,n.down,(e=>{e.stopPropagation(),t.isPtzControlDroging=!0,t.$ptzControl.style.cursor="grabbing";const{posX:i,posY:s}=ea(e);t.tempPtzPosition={x:i,y:s}})),i(t.$ptzControl,n.move,(e=>{if(t.isPtzControlDroging){e.stopPropagation();const{posX:i,posY:s}=ea(e),r=t.tempPtzPosition.x-i,o=t.tempPtzPosition.y-s;t.$ptzControl.style.left=t.$ptzControl.offsetLeft-r+"px",t.$ptzControl.style.top=t.$ptzControl.offsetTop-o+"px",t.tempPtzPosition={x:i,y:s}}})),i(t.$ptzControl,n.up,(e=>{e.stopPropagation(),y()})),i(window,n.up,(e=>{e.stopPropagation(),y()}))}}if(o.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),o.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),o.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),o.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),o.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)}))),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(oo(t.$controls,"display","block"),b())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(oo(t.$controls,"display","block"),b()))})),i(e.$container,"mouseout",(()=>{v(),oo(t.$controls,"display","none")}));let A=null;const b=()=>{v(),A=setTimeout((()=>{oo(t.$controls,"display","none")}),1e3*e._opt.controlAutoHideDelayTime)},v=()=>{A&&(clearTimeout(A),A=null)}}if(e._opt.playType===w){let _=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("jb-pro-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("jb-pro-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=Qo(t);if(i.matches("div.jb-pro-speed-menu-item")){const t=i.dataset;e.emit(ot.playbackPreRateChange,t.speed)}}))),_===X.normal?(i(t.$playbackNarrow,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.narrowPrecision()})),i(t.$playbackExpand,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.expandPrecision()})),i(t.$playbackTimeList,"click",(t=>{const i=Qo(t);i.matches("div.jb-pro-playback-time-minute-one")&&e.playback&&e.playback.seek(i.dataset)})),e._opt.playbackConfig.supportWheel&&i(t.$playbackTimeInner,"wheel",(t=>{t.preventDefault(),(t.wheelDelta?t.wheelDelta/120:-(t.detail||0)/3)>0?e.playback&&e.playback.expandPrecision():e.playback&&e.playback.narrowPrecision()}))):_===X.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let s=0,r=0;if(e.isInWebFullscreen())s=i.touches[0].clientY/e.height,r=s*e.playback.totalDuration;else{const o=oc(t,e.playback.totalDuration,i);s=o.percentage,r=o.second}e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mousemove",(i=>{oo(t.$playbackProgressTip,"display","block");const{width:s,time:r}=oc(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=r;const o=t.$playbackProgressTip.clientWidth;s<=o/2?oo(t.$playbackProgressTip,"left",0):s>t.$playbackProgress.clientWidth-o/2?oo(t.$playbackProgressTip,"left",t.$playbackProgress-o+"px"):oo(t.$playbackProgressTip,"left",s-o/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{oo(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:s,percentage:r}=oc(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}o.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("jb-pro-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("jb-pro-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=Qo(t);if(i.matches("div.jb-pro-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),o.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("jb-pro-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("jb-pro-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=Qo(t);if(i.matches("div.jb-pro-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),o.zoom&&(i(t.$zoom,"click",(t=>{t.stopPropagation(),e.zooming=!0})),i(t.$zoomStop,"click",(t=>{t.stopPropagation(),e.zooming=!1}))),i(t.$zoomExpand,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.expandPrecision()})),i(t.$zoomNarrow,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.narrowPrecision()})),i(t.$zoomStop2,"click",(t=>{t.stopPropagation(),e.zooming=!1})),o.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",oo(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e;let s={};function r(e,t){s[e]?s[e].push(t):s[e]=[t]}t.keys=s,r(vi,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(_i,(()=>{e.volume+=.05})),r(wi,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=s[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),Jo(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),Jo(e._opt.ptzPositionConfig)&&this.updatePtzPosition(e._opt.ptzPositionConfig),this.kbpsShow="0 KB/s",this.player.debug.log("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!hc(this.$performancePanel)){const e=this.player.$container.querySelector(".jb-pro-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$performancePanel}if(this.$poster){if(!hc(this.$poster)){const e=this.player.$container.querySelector(".jb-pro-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$poster}if(this.$loading){if(!hc(this.$loading)){const e=this.player.$container.querySelector(".jb-pro-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loading}if(this.$loadingBg){if(!hc(this.$loadingBg)){const e=this.player.$container.querySelector(".jb-pro-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loadingBg}if(this.$controls){if(!hc(this.$controls)){const e=this.player.$container.querySelector(".jb-pro-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$controls}if(this.$playBig){if(!hc(this.$playBig)){const e=this.player.$container.querySelector(".jb-pro-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$playBig}if(this.$recording){if(!hc(this.$recording)){const e=this.player.$container.querySelector(".jb-pro-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$recording}if(this.$ptzControl){if(!hc(this.$ptzControl)){const e=this.player.$container.querySelector(".jb-pro-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$ptzControl}if(this.$zoomControls){if(!hc(this.$zoomControls)){const e=this.player.$container.querySelector(".jb-pro-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$zoomControls}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!hc(this.$contextmenus)){const e=this.player.$container.querySelector(".jb-pro-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$contextmenus}if(this.$tipsMessage){if(!hc(this.$tipsMessage)){const e=this.player.$container.querySelector(".jb-pro-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$tipsMessage}if(this.$extendDom){if(!hc(this.$extendDom)){const e=this.player.$container.querySelector(".jb-pro-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$extendDom}try{delete this.$tipsMessageContent,delete this.$tipsMessageClose,delete this.$playbackProgressTime,delete this.$playbackProgressIndicator,delete this.$playbackProgressPlayed,delete this.$playbackProgressHover,delete this.$$playbackProgressTip,delete this.$playbackProgress,delete this.$logSave,delete this.$speedMenuList,delete this.$speedMenu,delete this.$speedText,delete this.$contextmenus,delete this.$occlusionDetectActive,delete this.$occlusionDetect,delete this.$objectDetectActive,delete this.$objectDetect,delete this.$faceDetectActive,delete this.$faceDetect,delete this.$performanceActive,delete this.$performance,delete this.$performancePanel,delete this.$zoomControls,delete this.$close,delete this.$zoomStop2,delete this.$zoomExpand,delete this.$zoomNarrow,delete this.$zoomStop,delete this.$zoom,delete this.$scaleMenuList,delete this.$scaleMenu,delete this.$scaleText,delete this.$qualityMenuList,delete this.$qualityMenu,delete this.$qualityText,delete this.$ptzWiperClose,delete this.$ptzWiperOpen,delete this.$ptzFogClose,delete this.$ptzFogOpen,delete this.$ptzCruisePause,delete this.$ptzCruisePlay,delete this.$ptzFocusNear,delete this.$ptzFocusFar,delete this.$ptzApertureNear,delete this.$ptzApertureFar,delete this.$ptzNarrow,delete this.$ptzExpand,delete this.$ptzArrows,delete this.$ptzControlCircular,delete this.$ptzBgActive,delete this.$ptzControl,delete this.$ptzActive,delete this.$ptz,delete this.$playbackExpand,delete this.$playbackNarrow,delete this.$controlsPlaybackBtns,delete this.$playbackCurrentTimeText,delete this.$playbackCurrentTime,delete this.$playbackTimeListSecond,delete this.$playbackTimeListOne,delete this.$playbackTimeList,delete this.$playbackTimeScroll,delete this.$playbackTimeInner,delete this.$playbackTime,delete this.$controlHtml,delete this.$speed,delete this.$screenshot,delete this.$recordStop,delete this.$record,delete this.$fullscreenExit,delete this.$fullscreen,delete this.$volumeOff,delete this.$volumeOn,delete this.$volumeHandle,delete this.$volumePanel,delete this.$volumePanelText,delete this.$volumePanelWrap,delete this.$volume,delete this.$controlsRight,delete this.$controlsLeft,delete this.$controlsInner,delete this.$controls,delete this.$pause,delete this.$recordingStop,delete this.$recordingTime,delete this.$recording,delete this.$playBig,delete this.$play,delete this.$loadingText,delete this.$loading,delete this.$loadingBgImage,delete this.$loadingBg,delete this.$poster,delete this.$extendDom,delete this.controlsRect,delete this.controlsInnerRect,delete this.controlsLeftRect,delete this.controlsRightRect,delete this.controlsPlaybackTimeInner,delete this.controlsPlaybackBtnsRect}catch(e){}this.keys=null,this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("jb-pro-controls-show-auto-hide"),this.player.$container.classList.remove("jb-pro-controls-show")),this.player.debug.log("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,s=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(s>r){const s=(t-i*r)/2;e.$container.style.padding=`0 ${s}px`}else{const s=(i-t/r)/2;e.$container.style.padding=`${s}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debug.log("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||uo()?(e.getRenderType()===H||e.getRenderType()===J)&&this._initLoadingBackground():this._initLoadingBackgroundForRatio(),lc(this.$loadingBg,"display","block"),e._opt.loadingBackground="",e._opt.loadingBackgroundWidth=0,e._opt.loadingBackgroundHeight=0)}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".jb-pro-icon-loading");t&&(e.width&&lc(t,"width",`${e.width}px`),e.height&&lc(t,"height",`${e.height}px`),e.background&&lc(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(lc(t,"animationName","none"),lc(t,"animationDuration",0),lc(t,"animationTimingFunction","ease"),lc(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const s=this.player._opt;let r=0;this.player.isControlBarShow()&&(r=s.playType===w?Qt:Yt,i-=r);const o=this.player._opt.loadingBackgroundWidth,a=this.player._opt.loadingBackgroundHeight,n=o/a,l=e[0]/e[1];if(this.$loadingBgImage.src=this.player._opt.loadingBackground,n>l){const e=l*a/o;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${r}px)`,this.$loadingBgImage.style.padding=`0 ${(t-t*e)/2}px`}else{const e=o/l/a;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${r}px)`,this.$loadingBgImage.style.padding=(i-i*e)/2+"px 0"}}_initLoadingBackground(){const e=this.player;let t=e.height;const i=e._opt;if(this.player.isControlBarShow()){t-=i.playType===w?Qt:Yt}let s=e.width,r=t;const o=i.rotate;270!==o&&90!==o||(s=t,r=e.width),this.$loadingBgImage.width=s,this.$loadingBgImage.height=r,this.$loadingBgImage.src=e._opt.loadingBackground;let a=(e.width-s)/2,n=(t-r)/2,l="contain";i.isResize||(l="fill"),i.isFullResize&&(l="none");let d="";"none"===i.mirrorRotate&&o&&(d+=" rotate("+o+"deg)"),"level"===i.mirrorRotate?d+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(d+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=l),this.$loadingBgImage.style.transform=d,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=a+"px",this.$loadingBgImage.style.top=n+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debug.warn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debug.warn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debug.warn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=ua(ws);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",s=this.$controlsRight,r=e.createdMoment||Cr,o=e.activeIcon&&e.activeClick,a=`\n
          \n ${e.icon?`
          \n \n ${e.iconTitle?`\n ${e.iconTitle}\n `:""}\n
          `:""}\n ${e.activeIcon?`
          \n \n ${e.activeIconTitle?`\n ${e.activeIconTitle}\n `:""}\n
          `:""}\n
          \n `,n=Array.from(s.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):nc(s,a);const l=s.querySelector(`.jb-pro-controls-item-wrap-${i}`),d=e.icon?s.querySelector(`.jb-pro-icon-extend-${i}`):null,h=e.icon?s.querySelector(`.jb-pro-control-extend-${i}`):null,c=e.activeIcon?s.querySelector(`.jb-pro-icon-extend-${i}-active`):null,u=e.activeIcon?s.querySelector(`.jb-pro-control-extend-${i}-active`):null,{events:{proxy:p},debug:f}=this.player;e.icon&&(lc(d,"background",`url(${e.icon}) no-repeat center`),lc(d,"background-size","100% 100%"),lc(h,"display",r===Tr?"flex":"none"),e.iconHover&&(p(d,"mouseover",(()=>{lc(d,"background",`url(${e.iconHover}) no-repeat center`),lc(d,"background-size","100% 100%")})),p(d,"mouseout",(()=>{lc(d,"background",`url(${e.icon}) no-repeat center`),lc(d,"background-size","100% 100%")})))),e.activeIcon&&(lc(c,"background",`url(${e.activeIcon}) no-repeat center`),lc(c,"background-size","100% 100%"),lc(u,"display","none"),e.activeIconHover&&(p(c,"mouseover",(()=>{lc(c,"background",`url(${e.activeIconHover}) no-repeat center`),lc(c,"background-size","100% 100%")})),p(c,"mouseout",(()=>{lc(c,"background",`url(${e.activeIcon}) no-repeat center`),lc(c,"background-size","100% 100%")})))),e.click&&d&&p(d,"click",(t=>{t.preventDefault(),o&&(lc(h,"display","none"),lc(u,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&c&&p(c,"click",(t=>{t.preventDefault(),lc(h,"display","flex"),lc(u,"display","none"),this.player.isInMulti()?e.activeClick.call(this.player,t,this.player._opt.multiIndex):e.activeClick.call(this.player,t)})),this.extendBtnList.push({name:i,createdMoment:r,$iconContainer:l,$iconWrap:h,$activeIconWrap:u})}toggleExtendBtn(e,t){const i=this.extendBtnList.find((t=>t.name===e));i&&i.$activeIconWrap&&i.$iconWrap&&(Po(t)||(t="none"===ao(i.$activeIconWrap,"display",!1)),t?(lc(i.$iconWrap,"display","none"),lc(i.$activeIconWrap,"display","flex")):(lc(i.$iconWrap,"display","flex"),lc(i.$activeIconWrap,"display","none")))}getExtendBtnActive(e){const t=this.extendBtnList.find((t=>t.name===e));let i=!1;return t&&t.$activeIconWrap&&(i="none"!==ao(t.$activeIconWrap,"display",!1)),i}addExtendDom(e){if(this.player.debug.log(this.TAG_NAME,"addExtendDom"),e.html){const t=`\n
          \n ${e.html}\n
          \n `;this.player.$container.insertAdjacentHTML("beforeend",t),Object.defineProperty(this,"$extendDom",{value:this.player.$container.querySelector(".jb-pro-extend-dom"),configurable:!0}),e.showBeforePlay&&lc(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(Po(e)||(e="none"===ao(this.$extendDom,"display",!1)),lc(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.player.debug.log(this.TAG_NAME,"updateExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML=e)}removeExtendDom(){this.player.debug.log(this.TAG_NAME,"removeExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML="")}updateLoadingText(e){this.$loadingText&&(this.$loadingText.innerText=e)}getExtendBtnList(){return this.extendBtnList}showTipsMessage(e,t){const i=this.$tipsMessage,s=this.$tipsMessageContent;if(i){const r=`\n
          ${e}
          \n ${t?`
          Error Type:${t}
          `:""}\n `;s.innerHTML=r,lc(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage,t=this.$tipsMessageContent;e&&(t.innerHTML="",lc(e,"display","none"))}updatePtzPosition(e){const t=this.$ptzControl;if(Jo(e)&&t){let i="auto";e.left&&(i=Number(e.left)===e.left?e.left+"px":e.left),lc(t,"left",i);let s="auto";e.top&&(s=Number(e.top)===e.top?e.top+"px":e.top),lc(t,"top",s);let r="auto";e.bottom&&(r=Number(e.bottom)===e.bottom?e.bottom+"px":e.bottom),lc(t,"bottom",r);let o="auto";e.right&&(o=Number(e.right)===e.right?e.right+"px":e.right),lc(t,"right",o)}}showPlayBtn(){lc(this.$playBig,"display","block")}toggleBar(e){this.$controls&&(Po(e)||(e="none"===ao(this.$controls,"display",!1)),lc(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==ao(this.$controls,"display",!1)),e}}uc(".jb-pro-container{position:relative;width:100%;height:100%;overflow:hidden}.jb-pro-container.jb-pro-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}.jb-pro-container .jb-pro-loading-bg-for-ios{position:absolute;z-index:100;left:0;top:0;right:0;bottom:0;height:100%;width:100%;opacity:0;visibility:hidden;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-loading-bg-for-ios.show{opacity:1;visibility:visible}");var fc=e=>{const{_opt:t,debug:i,events:{proxy:s}}=e;if(t.supportDblclickFullscreen&&s(e.$container,"dblclick",(t=>{const i=Qo(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),s(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,i.log("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(i.log("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),fo()&&s(document,["click","contextmenu"],(t=>{dc(t,e.$container)?(ga(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(ot.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(ot.blur))})),t.isCheckInView){const t=Eo((()=>{e.emit(ot.inView,function(e){const t=e.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight,s=window.innerWidth||document.documentElement.clientWidth,r=t.top<=i&&t.top+t.height>=0,o=t.left<=s&&t.left+t.width>=0;return r&&o}(e.$container))}),200);s(window,"scroll",(()=>t()))}if(t.autoResize){const t=Eo((()=>{e.resize()}),500);s(window,["resize","orientationchange"],(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&s(screen.orientation,"change",(()=>{t()}))}};class mc{static init(){mc.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in mc.types)mc.types.hasOwnProperty(e)&&(mc.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mc.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,s=Array.prototype.slice.call(arguments,1),r=s.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let o=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return mc.box(mc.types.trak,mc.tkhd(e),mc.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return mc.box(mc.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return mc.box(mc.types.mdia,mc.mdhd(e),mc.hdlr(e),mc.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return mc.box(mc.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?mc.constants.HDLR_AUDIO:mc.constants.HDLR_VIDEO,mc.box(mc.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mc.box(mc.types.smhd,mc.constants.SMHD):mc.box(mc.types.vmhd,mc.constants.VMHD),mc.box(mc.types.minf,t,mc.dinf(),mc.stbl(e))}static dinf(){return mc.box(mc.types.dinf,mc.box(mc.types.dref,mc.constants.DREF))}static stbl(e){return mc.box(mc.types.stbl,mc.stsd(e),mc.box(mc.types.stts,mc.constants.STTS),mc.box(mc.types.stsc,mc.constants.STSC),mc.box(mc.types.stsz,mc.constants.STSZ),mc.box(mc.types.stco,mc.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?mc.box(mc.types.stsd,mc.constants.STSD_PREFIX,mc.mp3(e)):mc.box(mc.types.stsd,mc.constants.STSD_PREFIX,mc.mp4a(e)):"avc"===e.videoType?mc.box(mc.types.stsd,mc.constants.STSD_PREFIX,mc.avc1(e)):mc.box(mc.types.stsd,mc.constants.STSD_PREFIX,mc.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return mc.box(mc.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return mc.box(mc.types.mp4a,s,mc.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return mc.box(mc.types.esds,s)}static avc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return mc.box(mc.types.avc1,r,mc.box(mc.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return mc.box(mc.types.hvc1,r,mc.box(mc.types.hvcC,t))}static mvex(e){return mc.box(mc.types.mvex,mc.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return mc.box(mc.types.trex,i)}static moof(e,t){return mc.box(mc.types.moof,mc.mfhd(e.sequenceNumber),mc.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return mc.box(mc.types.mfhd,t)}static traf(e,t){let i=e.id,s=mc.box(mc.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=mc.box(mc.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=mc.sdtp(e),a=mc.trun(e,o.byteLength+16+16+8+16+8+8);return mc.box(mc.types.traf,s,r,a,o)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,mc.box(mc.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let s=e.duration,r=e.size,o=e.flags,a=e.cts;return i.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),mc.box(mc.types.trun,i)}static mdat(e){return mc.box(mc.types.mdat,e)}}mc.init();class gc extends o{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this.mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource,this.isDecodeFirstIIframe=!!ya(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=window.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=Ta(),this.canvasRenderInterval=null,e._opt.mseUseCanvasRender?(this.$videoElement=document.createElement("video"),this._useManagedMediaSource?(this.$videoElement.disableRemotePlayback=!0,this.$videoElement.srcObject=this.mediaSource):this.$videoElement.src=this.mediaSourceObjectURL,this.initVideoEvents()):(this._useManagedMediaSource?(this.player.video.$videoElement.disableRemotePlayback=!0,this.player.video.$videoElement.srcObject=this.mediaSource):this.player.video.$videoElement.src=this.mediaSourceObjectURL,this.$videoElement=this.player.video.$videoElement),this._bindMediaSourceEvents(),this.audioSourceBufferCheckTimeout=null,this.audioSourceNoDataCheckTimeout=null,this.hasPendingEos=!1,this.player.isPlayback()&&this.player.on(ot.playbackPause,(t=>{ya(t)?(ga(e._opt.checkFirstIFrame)&&(this.player.debug.log(this.TAG_NAME,"playbackPause is false and _opt.checkFirstIFrame is true so set isDecodeFirstIIframe = false"),this.isDecodeFirstIIframe=!1),this.clearUpAllSourceBuffer(),this.$videoElement.play()):(this.$videoElement.pause(),this.cacheTrack={})})),this._useManagedMediaSource?this.player.debug.log(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.stop(),this._clearAudioSourceBufferCheckTimeout(),this._clearAudioNoDataCheckTimeout(),this._stopCanvasRender(),this.eventListenList.length&&(this.eventListenList.forEach((e=>e())),this.eventListenList=[]),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.$videoElement&&(this.player._opt.mseUseCanvasRender&&(this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"))),this.$videoElement=null),this.mediaSourceObjectURL&&(window.URL.revokeObjectURL(this.mediaSourceObjectURL),this.mediaSourceObjectURL=null),this._resetInIt(),this.mediaSource=null,this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}needInitAudio(){return this.player._opt.hasAudio&&this.player._opt.mseDecodeAudio}_resetInIt(){this.isAvc=null,this.isAAC=null,this.videoMeta={},this.audioMeta={},this.sourceBuffer=null,this.audioSourceBuffer=null,this.hasInit=!1,this.hasAudioInit=!1,this.isInitInfo=!1,this.isAudioInitInfo=!1,this.audioMimeType="",this.videoMimeType="",this.cacheTrack={},this.cacheAudioTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0,this.firstRenderTime=null,this.firstAudioTime=null,this.$videoElement=null,this.mediaSourceAppendBufferFull=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAddSourceBufferError=!1,this.mediaSourceBufferError=!1,this.mediaSourceError=!1,this.prevTimestamp=null,this.decodeDiffTimestamp=null,this.prevDts=null,this.prevAudioDts=null,this.prevPayloadBufferSize=0,this.isWidthOrHeightChanged=!1,this.prevTs=null,this.prevAudioTs=null,this.eventListenList=[],this.pendingRemoveRanges=[],this.pendingSegments=[],this.pendingAudioRemoveRanges=[],this.pendingAudioSegments=[],this.supportVideoFrameCallbackHandle=null}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===Ai}get isStateClosed(){return this.state===bi}get isStateEnded(){return this.state===yi}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{debug:e,events:{proxy:t}}=this.player,i=t(this.mediaSource,Hi,(()=>{this.player.debug.log(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(ot.mseSourceOpen)})),s=t(this.mediaSource,Vi,(()=>{this.player.debug.log(this.TAG_NAME,"sourceClose"),this.player.emit(ot.mseSourceClose)})),r=t(this.mediaSource,Ji,(()=>{this.player.debug.log(this.TAG_NAME,"sourceended"),this.player.emit(ot.mseSourceended)}));this.eventListenList.push(i,s,r);const o=t(this.$videoElement,Zi,(e=>{if(ya(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debug.log(this.TAG_NAME,`mseUseCanvasRender is ${this.player._opt.mseUseCanvasRender} and\n $videoElement ts is ${t}, but not in render and vbps is ${this.player._stats.vbps} and fps is ${this.player._stats.fps}`)}}));if(this.eventListenList.push(o),this._useManagedMediaSource){const e=t(this.mediaSource,qi,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(ot.mseSourceStartStreaming)})),i=t(this.mediaSource,Ki,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(ot.mseSourceEndStreaming)})),s=t(this.mediaSource,Yi,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(e,i,s)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events;this.player.on(ot.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getMseBufferMaxDelayTime()&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300)}));const t=e(this.$videoElement,Qi,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(ot.removeLoadingBgImage),Ta()?this.supportVideoFrameCallbackHandle||(this.player.debug.log(this.TAG_NAME,"video canplay and requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.isUseHls265()&&(this.player.debug.log(this.TAG_NAME,"video canplay and use canvas render and fps is 25"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debug.log(this.TAG_NAME,"video play")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"video play error ",e),this.player.emitError(lt.mediaSourceUseCanvasRenderPlayFailed,`code is ${e.code} and message is ${e.message}`)}))})),i=e(this.$videoElement,Xi,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,Zi,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,es,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&this.player.debug.warn(this.TAG_NAME,"ratechange and video is paused")}));this.eventListenList.push(t,i,s,r)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"));const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.handleRender(),this.player.video.render({$video:this.$videoElement,ts:i}),this.player.isUseHls265()&&this.player.updateStats({fps:!0,ts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}decodeVideo(e,t,i,s){const r=this.player;if(r)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===yt){i=Mn(e.slice(5))}else t===At&&(i=Jn(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(lt.mseWidthOrHeightChange,`width ${s.width}->${i.codecWidth}, height ${s.height}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(ma(e))return void this.player.debug.log(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t,this.player.debug.log(this.TAG_NAME,`firstRenderTime is ${this.firstRenderTime}`)),r=t-this.firstRenderTime,r<0&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevTs},\n firstRenderTime is ${this.firstRenderTime} and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration}`),r=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.player.emitError(lt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&r<=this.prevDts){if(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${this.prevDts} ,\n and now ts is ${t} and prev ts is ${this.prevTs} ,\n and diff is ${t-this.prevTs} and firstRenderTime is ${this.firstRenderTime} and isIframe is ${i},\n and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration},\n and prevPayloadBufferSize is ${this.prevPayloadBufferSize} and payload size is ${e.byteLength}`),r===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(r=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.emit(lt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,r,i,s,t):this.player.isPlayback()&&ya(this.player.playbackPause)&&(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,r,i,s,t)),this.prevDts=r,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debug.log(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===ys){const s=15&e[0];if(r.video.updateVideoInfo({encTypeCode:s}),s===At&&ya(Co()))return void this.player.emitError(lt.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=so()),this.hasInit=this._decodeConfigurationRecord(e,t,i,s)}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(ya(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(Ur(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.isDecodeFirstIIframe){if(this.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,this.player.debug.log(this.TAG_NAME,`firstAudioTime is ${this.firstAudioTime}`)),i=t-this.firstAudioTime,i<0&&(this.player.debug.warn(this.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevAudioTs},\n firstAudioTime is ${this.firstAudioTime}`),i=null===this.prevAudioDts?0:this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration,this._checkAudioTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeAudio is max diff , ts is ${t} and prevTs is ${this.prevAudioDts}, diff is ${this.prevAudioDts-t} and emit replay`),void this.player.emitError(lt.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debug.warn(this.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${i} and prev dts is ${this.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${this.prevAudioTs} ,\n and diff is ${t-this.prevAudioTs}`),i=this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration)}(this.player.isPlayer()||this.player.isPlayback()&&ya(this.player.playbackPause))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}else this.player.debug.log(this.TAG_NAME,"decodeAudio first frame is not iFrame")}}_checkTsIsMaxDiff(e){return this.prevTs>0&&eZ}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&eZ}_decodeConfigurationRecord(e,t,i,s){let r=e.slice(5),o={};if(s===yt?o=Mn(r):s===At&&(o=qn(r)),Ho(o)||0===o.codecWidth&&0===o.codecHeight){this.player.debug.warn(this.TAG_NAME,"_decodeConfigurationRecord",o);let e="";return e=Ho(o)?"config is empty object":`config is not empty object and codecWidth is ${o.codecWidth} and codecHeight is ${o.codecHeight}`,this.player.emitError(lt.mediaSourceDecoderConfigurationError,e),!1}this.isInitInfo||(this.player.debug.log(this.TAG_NAME,`updateVideoInfo: ${o.codecWidth},${o.codecHeight}`),this.player.video.updateVideoInfo({width:o.codecWidth,height:o.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,s);const a={id:rr,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},n=mc.generateInitSegment(a);this.isAvc=s===yt;let l=o.codec;return this.videoMimeType=l?`video/mp4; codecs="${o.codec}"`:this.isAvc?ci:ui,this._initSourceBuffer(),this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack={},!0}_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,s=e[0]>>1&1,r=i===St,o=i===_t;let a="";if(a=o?s?16:8:0===s?8:16,ya(o||r))return this.player.debug.warn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(lt.mediaSourceAudioG711NotSupport),!1;const n={id:or,type:"audio",timescale:1e3};let l={};if(Ur(e)){if(l=zr(e.slice(2)),!l)return!1;n.audioSampleRate=l.sampleRate,n.channelCount=l.channelCount,n.config=l.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!r)return!1;if(l=qh(e),!l)return!1;n.audioSampleRate=l.samplingRate,n.channelCount=l.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=l.codec,n.duration=0;let d="mp4",h=l.codec,c=null;r&&ya(go())?(d="mpeg",h="",c=new Uint8Array):c=mc.generateInitSegment(n);let u=`${n.type}/${d}`;return h&&h.length>0&&(u+=`;codecs=${h}`),ya(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:n.channelCount,sampleRate:n.audioSampleRate,depth:a}),this.isAudioInitInfo=!0),this.audioMimeType=u,this.isAAC=o,this._initAudioSourceBuffer(),this.appendAudioBuffer(c.buffer),!0}_initSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),e.log(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(t){return e.error(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(lt.mseAddSourceBufferError,`code is ${t.code} and message is ${t.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const i=t(this.sourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",t),this.player.emitError(lt.mseSourceBufferError,t.toString())})),s=t(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debug.log(this.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(i,s)}}else e.log(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),e.log(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(t){return e.error(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(lt.mseAddSourceBufferError,`code is ${t.code} and message is ${t.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const i=t(this.audioSourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",t),this.player.emitError(lt.mseSourceBufferError,t.toString())})),s=t(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debug.log(this.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(i,s),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(lt.mediaSourceAudioNoDataTimeout)}),1e3))}}else e.log(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,s,r){const o=this.player;let a=e.slice(5),n=a.byteLength;if(0===n)return void o.debug.warn(this.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let l=(new Date).getTime(),d=!1;this.prevTimestamp||(this.prevTimestamp=l,d=!0);const h=l-this.prevTimestamp;this.decodeDiffTimestamp=h,h>1e3&&!d&&this.player.isPlayer()&&o.debug.log(this.TAG_NAME,`_decodeVideo now time is ${l} and prev time is ${this.prevTimestamp}, diff time is ${h} ms`);const c=this.$videoElement;if(this.cacheTrack.id&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(mc.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let s=mc.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let a=new Uint8Array(s.byteLength+i.byteLength);a.set(s,0),a.set(i,s.byteLength),this.appendBuffer(a.buffer),o.emit(ot.timeUpdate,r),o.isPlayer()?o.isUseHls265()?o.updateStats({dfps:!0,mseTs:t}):o.updateStats({fps:!0,dfps:!0,ts:r,mseTs:t}):o.isPlayback()&&o.playback.updateStats({ts:r}),o._times.videoStart||(o._times.videoStart=so(),o.handlePlayToRenderTimes())}else o.debug.log(this.TAG_NAME,`cacheTrack = {} now dts is ${t}, and ts is ${r} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=rr,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=n,this.cacheTrack.dts=t,this.cacheTrack.cts=s,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=a,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},o._opt.mseUseCanvasRender&&ya(this.isSupportVideoFrameCallback)&&ya(o.isUseHls265())&&o.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){const s=this.player;let r=this.isAAC?e.slice(2):e.slice(1),o=r.byteLength;if(this.cacheAudioTrack.id&&t>=this.cacheAudioTrack.dts){let e=8+this.cacheAudioTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(mc.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts;let s=mc.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendAudioBuffer(r.buffer)}else s.debug.log(this.TAG_NAME,`cacheAudioTrack = {} now dts is ${t} cacheAudioTrack dts is ${this.cacheAudioTrack&&this.cacheAudioTrack.dts}`),this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=or,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=o,this.cacheAudioTrack.dts=t,this.cacheAudioTrack.cts=0,this.cacheAudioTrack.data=r,this.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}appendBuffer(e){if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.warn(this.TAG_NAME,"appendBuffer() player is destroyed"));const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceBufferError is true"):(this.pendingSegments.push(e),this.sourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&(this._handleUpdateBufferDelayTime(),this._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ya(this.getSourceBufferUpdating())&&this.isStateOpen&&ya(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is end")))}appendAudioBuffer(e){if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.warn(this.TAG_NAME,"appendAudioBuffer() player is destroyed"));const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceBufferError is true"):(this.pendingAudioSegments.push(e),this.audioSourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&(this._handleUpdateBufferDelayTime(),this._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ya(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&ya(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is end")))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debug.warn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=Xo();if(this.player.debug.log(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&ya(i)){if(ya(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(ya(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)if(this.getSourceBufferUpdating()||this.getAudioSourceBufferUpdating())this.hasPendingEos=!0;else{this.hasPendingEos=!1;try{this.player.debug.log(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debug.warn(this.TAG_NAME,"endOfStream() error",e)}}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer){try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}ya(this.getSourceBufferUpdating())&&this._doRemoveRanges()}if(this.audioSourceBuffer){try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}ya(this.getAudioSourceBufferUpdating())&&this._doRemoveRanges()}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.error(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debug.error(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer error",e)}}}_hasPendingSegments(){return this.pendingSegments.length>0||this.pendingAudioSegments.length>0}getPendingSegmentsLength(){return this.pendingSegments.length}_handleUpdatePlaybackRate(){if(!this.$videoElement)return;const e=this.$videoElement;this.player._opt.videoBuffer,this.player._opt.videoBufferDelay;const t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getMseBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(lt.mediaSourceBufferedIsZeroError,"video.buffered is empty");const a=this._getPlaybackRate(i-s);e.playbackRate!==a&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${a} `),e.playbackRate=a)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_checkVideoPlayCurrentTime(){const e=this.checkSourceBufferStore();if(e<0){const t=this.getVideoBufferStartTime();this.player.debug.warn(this.TAG_NAME,`checkVideoPlayCurrentTime store is ${e} < 0 and set currentTime ${this.$videoElement.currentTime} to ${t}`),this.$videoElement.currentTime=t}}_doAppendSegments(){if(this.isStateClosed||this.isStateEnded)this.player.debug.log(this.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==this.sourceBuffer){if(this.needInitAudio()&&null===this.audioSourceBuffer)return this.player.debug.log(this.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===this.audioSourceBufferCheckTimeout&&(this.audioSourceBufferCheckTimeout=setTimeout((()=>{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(lt.mediaSourceAudioInitTimeout)}),1e3)));if(ya(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(lt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(lt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(ot.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}if(ya(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(lt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(lt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(ot.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}}else this.player.debug.log(this.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")}_doCleanUpSourceBuffer(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime;if(this.sourceBuffer){const t=this.sourceBuffer.buffered;let i=!1;for(let s=0;s=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:r,end:t})}}else o=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:r,end:t})}}else o0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&ya(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&ya(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&ya(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&ya(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}_needCleanupSourceBuffer(){if(ya(this.player._opt.mseAutoCleanupSourceBuffer)||!this.$videoElement)return!1;const e=this.$videoElement,t=e.buffered,i=e.currentTime;return t.length>=1&&i-t.start(0)>=this.player._opt.mseAutoCleanupMaxBackwardDuration}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getVideoBufferStartTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.start(0):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getMimeType(){return{video:this.videoMimeType,audio:this.audioMimeType}}getMseBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}isVideoPlaying(){return this.$videoElement&&ya(this.$videoElement.paused)&&ya(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}}const yc=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&ya(Ao());class Ac{constructor(e){this.player=e,this.enabled=!1,yc()?(this.player.debug.log("NoSleep","Native Wake Lock API supported."),this._wakeLock=null,this.handleVisibilityChange=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()},document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("fullscreenchange",this.handleVisibilityChange)):(this.player.debug.log("NoSleep","Native Wake Lock API not supported. so use video element."),this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQRChYECGFOAZwEAAAAAABLfEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHYTbuMU6uEElTDZ1OsggGXTbuMU6uEHFO7a1OsghLJ7AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmsirXsYMPQkBNgI1MYXZmNTguNDUuMTAwV0GNTGF2ZjU4LjQ1LjEwMESJiECzmgAAAAAAFlSua0C5rgEAAAAAAABO14EBc8WI9UhIq9EDJPCcgQAitZyDdW5khoVWX1ZQOIOBASPjg4QF9eEA4AEAAAAAAAAbsIIBQLqB8FSwggElVLqB8FWwiFW3gQFVuIECrgEAAAAAAABZ14ECc8WIUEWPA9J/iJ6cgQAitZyDdW5khoZBX09QVVNWqoNjLqBWu4QExLQAg4EC4ZGfgQG1iEDncAAAAAAAYmSBIGOik09wdXNIZWFkAQE4AYC7AAAAAAASVMNnQcJzcwEAAAAAAACXY8CAZ8gBAAAAAAAAFUWji01BSk9SX0JSQU5ERIeEaXNvbWfIAQAAAAAAABZFo41NSU5PUl9WRVJTSU9ORIeDNTEyZ8gBAAAAAAAAJ0WjkUNPTVBBVElCTEVfQlJBTkRTRIeQaXNvbWlzbzJhdmMxbXA0MWfIAQAAAAAAABpFo4dFTkNPREVSRIeNTGF2ZjU4LjQ1LjEwMHNzAQAAAAAAAIZjwItjxYj1SEir0QMk8GfIAQAAAAAAAB5Fo4xIQU5ETEVSX05BTUVEh4xWaWRlb0hhbmRsZXJnyAEAAAAAAAAhRaOHRU5DT0RFUkSHlExhdmM1OC45MS4xMDAgbGlidnB4Z8iiRaOIRFVSQVRJT05Eh5QwMDowMDowNS4wMDcwMDAwMDAAAHNzAQAAAAAAAIdjwItjxYhQRY8D0n+InmfIAQAAAAAAAB5Fo4xIQU5ETEVSX05BTUVEh4xTb3VuZEhhbmRsZXJnyAEAAAAAAAAiRaOHRU5DT0RFUkSHlUxhdmM1OC45MS4xMDAgbGlib3B1c2fIokWjiERVUkFUSU9ORIeUMDA6MDA6MDUuMDE4MDAwMDAwAAAfQ7Z1T2TngQCjh4IAAID4//6jQKSBAAeAMBIAnQEqQAHwAABHCIWFiIWEiAICAAYWBPcGgWSfa9ubJzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh7Jzh69AD+/6tQgKOHggAVgPj//qOHggApgPj//qOHggA9gPj//qOHggBRgPj//qOHggBlgPj//qOegQBrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCAHmA+P/+o4eCAI2A+P/+o4eCAKGA+P/+o4eCALWA+P/+o4eCAMmA+P/+o56BAM8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IA3YD4//6jh4IA8YD4//6jh4IBBYD4//6jh4IBGYD4//6jh4IBLYD4//6jnoEBMwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggFBgPj//qOHggFVgPj//qOHggFpgPj//qOHggF9gPj//qOHggGRgPj//qOegQGXANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCAaWA+P/+o4eCAbmA+P/+o4eCAc2A+P/+o4eCAeGA+P/+o4eCAfWA+P/+o56BAfsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ICCYD4//6jh4ICHYD4//6jh4ICMYD4//6jh4ICRYD4//6jh4ICWYD4//6jnoECXwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggJtgPj//qOHggKBgPj//qOHggKVgPj//qOHggKpgPj//qOHggK9gPj//qOegQLDANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCAtGA+P/+o4eCAuWA+P/+o4eCAvmA+P/+o4eCAw2A+P/+o4eCAyGA+P/+o56BAycA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IDNYD4//6jh4IDSYD4//6jh4IDXYD4//6jh4IDcYD4//6jh4IDhYD4//6jnoEDiwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggOZgPj//qOHggOtgPj//qOHggPBgPj//qOHggPVgPj//qOHggPpgPj//qOegQPvANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCA/2A+P/+o4eCBBGA+P/+o4eCBCWA+P/+o4eCBDmA+P/+o4eCBE2A+P/+o56BBFMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IEiID4//6jh4IEnID4//6jh4IEsID4//6jnoEEtwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggTEgPj//qOHggTYgPj//qOHggTsgPj//qOHggUAgPj//qOHggUUgPj//qOegQUbANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBSiA+P/+o4eCBTyA+P/+o4eCBVCA+P/+o4eCBWSA+P/+o4eCBXiA+P/+o56BBX8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IFjID4//6jh4IFoID4//6jh4IFtID4//6jh4IFyID4//6jh4IF3ID4//6jnoEF4wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggXwgPj//qOHggYEgPj//qOHggYYgPj//qOHggYsgPj//qOHggZAgPj//qOegQZHANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBlSA+P/+o4eCBmiA+P/+o4eCBnyA+P/+o4eCBpCA+P/+o4eCBqSA+P/+o56BBqsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IGuID4//6jh4IGzID4//6jh4IG4ID4//6jh4IG9ID4//6jh4IHCID4//6jnoEHDwDRAgAFEBAUYABhYL/QACIAEM1+tck+ccwAAKOHggccgPj//qOHggcwgPj//qOHggdEgPj//qOHggdYgPj//qOHggdsgPj//qOegQdzANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCB4CA+P/+o4eCB5SA+P/+o4eCB6iA+P/+o4eCB7yA+P/+o4eCB9CA+P/+o56BB9cA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IH5ID4//6jh4IH+ID4//6jh4IIDID4//6jh4IIIID4//6jh4IINID4//6jnoEIOwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgghIgPj//qOHgghcgPj//qOHgghwgPj//qOHggiEgPj//qOegQifANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCMCA+P/+o4eCCNSA+P/+o4eCCOiA+P/+o4eCCPyA+P/+o56BCQMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IJEID4//6jh4IJJID4//6jh4IJOID4//6jh4IJTID4//6jh4IJYID4//6jnoEJZwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggl0gPj//qOHggmIgPj//qOHggmcgPj//qOHggmwgPj//qOHggnEgPj//qOegQnLANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCdiA+P/+o4eCCeyA+P/+o4eCCgCA+P/+o4eCChSA+P/+o4eCCiiA+P/+o56BCi8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IKPID4//6jh4IKUID4//6jh4IKZID4//6jh4IKeID4//6jh4IKjID4//6jnoEKkwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggqggPj//qOHggq0gPj//qOHggrIgPj//qOHggrcgPj//qOHggrwgPj//qOegQr3ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCwSA+P/+o4eCCxiA+P/+o4eCCyyA+P/+o4eCC0CA+P/+o4eCC1SA+P/+o56BC1sA0QIABRAQFGAAYWC/0AAiABDNfrXJPnHMAACjh4ILaID4//6jh4ILfID4//6jh4ILkID4//6jh4ILpID4//6jh4ILuID4//6jnoELvwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggvMgPj//qOHggvggPj//qOHggv0gPj//qOHggwIgPj//qOHggwcgPj//qOegQwjANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDDCA+P/+o4eCDESA+P/+o4eCDFiA+P/+o4eCDGyA+P/+o4eCDICA+P/+o56BDIcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IMlID4//6jh4IMqID4//6jh4IMvID4//6jh4IM0ID4//6jnoEM6wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg0MgPj//qOHgg0ggPj//qOHgg00gPj//qOHgg1IgPj//qOegQ1PANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDVyA+P/+o4eCDXCA+P/+o4eCDYSA+P/+o4eCDZiA+P/+o4eCDayA+P/+o56BDbMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4INwID4//6jh4IN1ID4//6jh4IN6ID4//6jh4IN/ID4//6jh4IOEID4//6jnoEOFwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg4kgPj//qOHgg44gPj//qOHgg5MgPj//qOHgg5ggPj//qOHgg50gPj//qOegQ57ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDoiA+P/+o4eCDpyA+P/+o4eCDrCA+P/+o4eCDsSA+P/+o4eCDtiA+P/+o56BDt8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IO7ID4//6jh4IPAID4//6jh4IPFID4//6jh4IPKID4//6jh4IPPID4//6jnoEPQwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg9QgPj//qOHgg9kgPj//qOHgg94gPj//qOHgg+MgPj//qOHgg+ggPj//qOegQ+nANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCD7SA+P/+o4eCD8iA+P/+o4eCD9yA+P/+o4eCD/CA+P/+o4eCEASA+P/+o56BEAsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IQGID4//6jh4IQLID4//6jh4IQQID4//6jh4IQVID4//6jh4IQaID4//6jnoEQbwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghB8gPj//qOHghCQgPj//qOHghCkgPj//qOHghC4gPj//qOHghDMgPj//qOegRDTANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEOCA+P/+o4eCEPSA+P/+o4eCEQiA+P/+o56BETcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IRQ4D4//6jh4IRV4D4//6jh4IRa4D4//6jh4IRf4D4//6jh4IRk4D4//6jnoERmwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghGngPj//qOHghG7gPj//qOHghHPgPj//qOHghHjgPj//qOHghH3gPj//qOegRH/ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEguA+P/+o4eCEh+A+P/+o4eCEjOA+P/+o4eCEkeA+P/+o4eCEluA+P/+o56BEmMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ISb4D4//6jh4ISg4D4//6jh4ISl4D4//6jh4ISq4D4//6jh4ISv4D4//6jnoESxwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghLTgPj//qOHghLngPj//qOHghL7gPj//qOHghMPgPj//qOHghMjgPj//qOegRMrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEzeA+P/+o4eCE0uA+P/+o4eCE1+A+P/+o4eCE3OA+P/+oAEAAAAAAAAPoYeCE4cA+P/+daKDB/KBHFO7a5G7j7OBB7eK94EB8YIDX/CBDA=="),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACORtZGF03gIATGF2YzU4LjM1LjEwMAACMEAOAAACcQYF//9t3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MSByMzAyNyA0MTIxMjc3IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTAgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTcgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0wIHdlaWdodHA9MCBrZXlpbnQ9MjUwIGtleWludF9taW49MTAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAADvZYiED/JigADD7JycnJycnJycnJycnJycnJycnJ11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111114BGCAHARggBwEYIAcBGCAHARggBwAAAAdBmjgf4BLYARggBwEYIAcBGCAHARggBwAAAAdBmlQH+AS2ARggBwEYIAcBGCAHARggBwAAAAdBmmA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZrAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0Ga4D/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbAD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbID/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm0A/wCWwARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwEYIAcAAAAHQZuAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0Gb4D/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmiA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmkA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZpgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmwA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtgP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbgD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm+A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcAAAAHQZogP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaQD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GaYD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GagD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmqA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwAAAAdBm4A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBm6A/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZvAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZvgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZoAO8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaIDfAJbABGCAHARggBwEYIAcBGCAHAAAMxm1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAABOgAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAPLdHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAABOIAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAElVVUA8AAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAATiAAAAAAAAQAAAAADQ21kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAKAAAAMgAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAu5taW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAKuc3RibAAAAKpzdHNkAAAAAAAAAAEAAACaYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAFAAPAASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADRhdmNDAULAC//hABxnQsAL2QFB+/8ACwAMEAAAAwAQAAADAUDxQqSAAQAFaMuDyyAAAAAQcGFzcAAAAAsAAAAMAAAAGHN0dHMAAAAAAAAAAQAAADIAAAQAAAAAFHN0c3MAAAAAAAAAAQAAAAEAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAA3HN0c3oAAAAAAAAAAAAAADIAAANoAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAANhzdGNvAAAAAAAAADIAAABFAAADwQAAA9wAAAP3AAAEFgAABDEAAARMAAAEawAABIYAAAShAAAEwAAABNcAAATuAAAFDQAABSgAAAVDAAAFYgAABX0AAAWYAAAFtwAABdIAAAXtAAAGBAAABh8AAAY6AAAGWQAABnQAAAaPAAAGrgAABskAAAbkAAAHAwAABx4AAAcxAAAHUAAAB2sAAAeGAAAHpQAAB8AAAAfbAAAH+gAACBUAAAgwAAAITwAACGIAAAh9AAAInAAACLcAAAjSAAAI8QAACCV0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAAE6AAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAABOIAAAEAAABAAAAAAedbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAACsRAADYVRVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAAHSG1pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAHDHN0YmwAAABqc3RzZAAAAAAAAAABAAAAWm1wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAACsRAAAAAAANmVzZHMAAAAAA4CAgCUAAgAEgICAF0AVAAAAAAENiAAABVQFgICABRIIVuUABoCAgAECAAAAYHN0dHMAAAAAAAAACgAAAC8AAAQAAAAAAQAACtUAAAAsAAAEAAAAAAEAAArWAAAALAAABAAAAAABAAAK1QAAACwAAAQAAAAAAQAACtUAAAAaAAAEAAAAAAEAAAH/AAABzHN0c2MAAAAAAAAAJQAAAAEAAAABAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAEAAAAAQAAAAUAAAAFAAAAAQAAAAYAAAAEAAAAAQAAAAgAAAAFAAAAAQAAAAkAAAAEAAAAAQAAAAsAAAAFAAAAAQAAAAwAAAADAAAAAQAAAA4AAAAFAAAAAQAAAA8AAAAEAAAAAQAAABEAAAAFAAAAAQAAABIAAAAEAAAAAQAAABQAAAAFAAAAAQAAABUAAAAEAAAAAQAAABcAAAADAAAAAQAAABgAAAAEAAAAAQAAABoAAAAFAAAAAQAAABsAAAAEAAAAAQAAAB0AAAAFAAAAAQAAAB4AAAAEAAAAAQAAACAAAAAFAAAAAQAAACEAAAAEAAAAAQAAACIAAAACAAAAAQAAACMAAAAFAAAAAQAAACQAAAAEAAAAAQAAACYAAAAFAAAAAQAAACcAAAAEAAAAAQAAACkAAAAFAAAAAQAAACoAAAAEAAAAAQAAACwAAAAFAAAAAQAAAC0AAAACAAAAAQAAAC4AAAAEAAAAAQAAAC8AAAAFAAAAAQAAADAAAAAEAAAAAQAAADIAAAAFAAAAAQAAADMAAAAEAAAAAQAAA1xzdHN6AAAAAAAAAAAAAADSAAAAFQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA3HN0Y28AAAAAAAAAMwAAADAAAAOtAAADzAAAA+cAAAQCAAAEIQAABDwAAARXAAAEdgAABJEAAASsAAAEywAABOIAAAT5AAAFGAAABTMAAAVOAAAFbQAABYgAAAWjAAAFwgAABd0AAAX4AAAGDwAABioAAAZFAAAGZAAABn8AAAaaAAAGuQAABtQAAAbvAAAHDgAABykAAAc8AAAHWwAAB3YAAAeRAAAHsAAAB8sAAAfmAAAIBQAACCAAAAg7AAAIWgAACG0AAAiIAAAIpwAACMIAAAjdAAAI/AAAABpzZ3BkAQAAAHJvbGwAAAACAAAAAf//AAAAHHNiZ3AAAAAAcm9sbAAAAAEAAADSAAAAAQAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTguMjAuMTAw"),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),document.querySelector("body").append(this.noSleepVideo),this.handleNoSleepVideoTimeUpdate=()=>{this.noSleepVideo&&this.noSleepVideo.currentTime>4&&(this.noSleepVideo.currentTime=1)},this.noSleepVideo.addEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate))}destroy(){if(this._wakeLock&&(this._wakeLock.release(),this._wakeLock=null),this.noSleepVideo){this.handleNoSleepVideoTimeUpdate&&this.noSleepVideo.removeEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate);try{this.noSleepVideo.parentNode&&this.noSleepVideo.parentNode.removeChild(this.noSleepVideo)}catch(e){this.player.debug.warn("NoSleep","Failed to remove noSleepVideo element.")}this.noSleepVideo=null}this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("fullscreenchange",this.handleVisibilityChange))}_addSourceToVideo(e,t,i){var s=document.createElement("source");s.src=i,s.type=`video/${t}`,e.appendChild(s)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(yc())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.warn("wakeLock",`${t.name}, ${t.message}`),t}));return this.noSleepVideo.play().then((t=>(e.log("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,t))).catch((t=>{throw e.warn("wakeLock",`noSleepVideo ${t.name}, ${t.message}`),this.enabled=!1,t}))}disable(){yc()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debug.log("wakeLock","Disabling wake lock.")}}function bc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var vc={exports:{}};!function(e,t){var i,s,r,o,a;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,s=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var r=a.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=a.normalizePath(r.path),a.buildURLFromParts(r)}var o=a.parseURL(t);if(!o)throw new Error("Error trying to parse relative URL.");if(o.scheme)return i.alwaysNormalize?(o.path=a.normalizePath(o.path),a.buildURLFromParts(o)):t;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");if(!n.netLoc&&n.path&&"/"!==n.path[0]){var l=s.exec(n.path);n.netLoc=l[1],n.path=l[2]}n.netLoc&&!n.path&&(n.path="/");var d={scheme:n.scheme,netLoc:o.netLoc,path:null,params:o.params,query:o.query,fragment:o.fragment};if(!o.netLoc&&(d.netLoc=n.netLoc,"/"!==o.path[0]))if(o.path){var h=n.path,c=h.substring(0,h.lastIndexOf("/")+1)+o.path;d.path=a.normalizePath(c)}else d.path=n.path,o.params||(d.params=n.params,o.query||(d.query=n.query));return null===d.path&&(d.path=i.alwaysNormalize?a.normalizePath(o.path):o.path),a.buildURLFromParts(d)},parseURL:function(e){var t=i.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(r,"");e.length!==(e=e.replace(o,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}(vc);var _c=vc.exports;function wc(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function Sc(e){for(var t=1;t`):Pc}(t)}))}const Uc=Mc,Oc=/^(\d+)x(\d+)$/,Nc=/(.+?)=(".*?"|.*?)(?:,|$)/g;class jc{constructor(e){"string"==typeof e&&(e=jc.parseAttrList(e)),kc(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=Oc.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(Nc.lastIndex=0;null!==(t=Nc.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function Gc(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class zc{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){Uc.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=kc(new jc({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);Cc(e.getTime())&&(this._endDate=e)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(Cc(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&Cc(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class Wc{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}}var $c="audio",Vc="video",Hc="audiovideo";class Jc{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[$c]:null,[Vc]:null,[Hc]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let s;s=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[s,parseInt(i[0])+s]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=_c.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class qc extends Jc{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new Wc,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!Cc(this.programDateTime))return null;const e=Cc(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,s,r,o=!1){const{elementaryStreams:a}=this,n=a[e];n?(n.startPTS=Math.min(n.startPTS,t),n.endPTS=Math.max(n.endPTS,i),n.startDTS=Math.min(n.startDTS,s),n.endDTS=Math.max(n.endDTS,r)):a[e]={startPTS:t,endPTS:i,startDTS:s,endDTS:r,partial:o}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[$c]=null,e[Vc]=null,e[Hc]=null}}class Kc extends Jc{constructor(e,t,i,s,r){super(i),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new Wc,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=s;const o=e.enumeratedString("BYTERANGE");o&&this.setByteRange(o,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class Yc{constructor(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);const t=this.lastPartSn-e.lastPartSn,i=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!i||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||0===t&&i>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&Cc(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function Qc(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function Xc(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),s=e[e.length-1].split(",");if(2===s.length){const t="base64"===s[0],r=s[1];t?(e.splice(-1,1),i=Qc(r)):i=function(e){const t=Zc(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(r)}}return i}function Zc(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const eu="undefined"!=typeof self?self:void 0;var tu={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},iu="org.w3.clearkey",su="com.apple.streamingkeydelivery",ru="com.microsoft.playready",ou="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function au(e){switch(e){case su:return tu.FAIRPLAY;case ru:return tu.PLAYREADY;case ou:return tu.WIDEVINE;case iu:return tu.CLEARKEY}}var nu="edef8ba979d64acea3c827dcd51d21ed";function lu(e){switch(e){case tu.FAIRPLAY:return su;case tu.PLAYREADY:return ru;case tu.WIDEVINE:return ou;case tu.CLEARKEY:return iu}}function du(e){const{drmSystems:t,widevineLicenseUrl:i}=e,s=t?[tu.FAIRPLAY,tu.WIDEVINE,tu.PLAYREADY,tu.CLEARKEY].filter((e=>!!t[e])):[];return!s[tu.WIDEVINE]&&i&&s.push(tu.WIDEVINE),s}const hu=null!=eu&&null!=(cu=eu.navigator)&&cu.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var cu;function uu(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const pu=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,fu=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,mu=(e,t)=>{const i=t;let s=0;for(;pu(e,t);){s+=10;s+=gu(e,t+6),fu(e,t+10)&&(s+=10),t+=s}if(s>0)return e.subarray(i,i+s)},gu=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},yu=(e,t)=>pu(e,t)&&gu(e,t+6)+10<=e.length-t,Au=e=>{const t=_u(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,vu=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=gu(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},_u=e=>{let t=0;const i=[];for(;pu(e,t);){const s=gu(e,t+6);t+=10;const r=t+s;for(;t+8"PRIV"===e.type?Su(e):"W"===e.type[0]?Tu(e):Eu(e),Su=e=>{if(e.size<2)return;const t=Cu(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},Eu=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=Cu(e.data.subarray(t),!0);t+=i.length+1;const s=Cu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=Cu(e.data.subarray(1));return{key:e.type,data:t}},Tu=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=Cu(e.data.subarray(t),!0);t+=i.length+1;const s=Cu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=Cu(e.data);return{key:e.type,data:t}},ku=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let s=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return s/=45,i&&(s+=47721858.84),Math.round(s)}},Cu=(e,t=!1)=>{const i=Du();if(i){const s=i.decode(e);if(t){const e=s.indexOf("\0");return-1!==e?s.substring(0,e):s}return s.replace(/\0/g,"")}const s=e.length;let r,o,a,n="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(r);break;case 12:case 13:o=e[l++],n+=String.fromCharCode((31&r)<<6|63&o);break;case 14:o=e[l++],a=e[l++],n+=String.fromCharCode((15&r)<<12|(63&o)<<6|(63&a)<<0)}}return n};let xu;function Du(){if(!navigator.userAgent.includes("PlayStation 4"))return xu||void 0===self.TextDecoder||(xu=new self.TextDecoder("utf-8")),xu}const Lu=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function ju(e,t){const i=[];if(!t.length)return i;const s=e.byteLength;for(let r=0;r1?r+o:s;if(Bu(e.subarray(r+4,r+8))===t[0])if(1===t.length)i.push(e.subarray(r+8,a));else{const s=ju(e.subarray(r+8,a),t.slice(1));s.length&&Iu.apply(i,s)}r=a}return i}function Gu(e){const t=[],i=e[0];let s=8;const r=Fu(e,s);s+=4;let o=0,a=0;0===i?(o=Fu(e,s),a=Fu(e,s+4),s+=8):(o=Uu(e,s),a=Uu(e,s+8),s+=16),s+=2;let n=e.length+a;const l=Mu(e,s);s+=2;for(let i=0;i>>31)return Uc.warn("SIDX has hierarchical references (not supported)"),null;const l=Fu(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:n,end:n+a-1}}),n+=a,i+=4,s=i}return{earliestPresentationTime:o,timescale:r,version:i,referencesCount:l,references:t}}function zu(e){const t=[],i=ju(e,["moov","trak"]);for(let e=0;e{const i=Fu(e,4),s=t[i];s&&(s.default={duration:Fu(e,12),flags:Fu(e,20)})})),t}function Wu(e){const t=e.subarray(8),i=t.subarray(86),s=Bu(t.subarray(4,8));let r=s;const o="enca"===s||"encv"===s;if(o){const e=ju(t,[s])[0];ju(e.subarray("enca"===s?28:78),["sinf"]).forEach((e=>{const t=ju(e,["schm"])[0];if(t){const i=Bu(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=ju(e,["frma"])[0];t&&(r=Bu(t))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const e=ju(i,["avcC"])[0];r+="."+Vu(e[1])+Vu(e[2])+Vu(e[3]);break}case"mp4a":{const e=ju(t,[s])[0],i=ju(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=$u(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=$u(i,e);const s=i[e++];if(64!==s)break;if(r+="."+Vu(s),e+=12,5!==i[e++])break;e=$u(i,e);const o=i[e++];let a=(248&o)>>3;31===a&&(a+=1+((7&o)<<3)+((224&i[e])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const e=ju(i,["hvcC"])[0],t=e[1],s=["","A","B","C"][t>>6],o=31&t,a=Fu(e,2),n=(32&t)>>5?"H":"L",l=e[12],d=e.subarray(6,12);r+="."+s+o,r+="."+a.toString(16).toUpperCase(),r+="."+n+l;let h="";for(let e=d.length;e--;){const t=d[e];if(t||h){h="."+t.toString(16).toUpperCase()+h}}r+=h;break}case"dvh1":case"dvhe":{const e=ju(i,["dvcC"])[0],t=e[2]>>1&127,s=e[2]<<5&32|e[3]>>3&31;r+="."+Hu(t)+"."+Hu(s);break}case"vp09":{const e=ju(i,["vpcC"])[0],t=e[4],s=e[5],o=e[6]>>4&15;r+="."+Hu(t)+"."+Hu(s)+"."+Hu(o);break}case"av01":{const e=ju(i,["av1C"])[0],t=e[1]>>>5,s=31&e[1],o=e[2]>>>7?"H":"M",a=(64&e[2])>>6,n=(32&e[2])>>5,l=2===t&&a?n?12:10:a?10:8,d=(16&e[2])>>4,h=(8&e[2])>>3,c=(4&e[2])>>2,u=3&e[2],p=1,f=1,m=1,g=0;r+="."+t+"."+Hu(s)+o+"."+Hu(l)+"."+d+"."+h+c+u+"."+Hu(p)+"."+Hu(f)+"."+Hu(m)+"."+g;break}}return{codec:r,encrypted:o}}function $u(e,t){const i=t+5;for(;128&e[t++]&&t{const l=n.byteOffset-8;ju(n,["traf"]).map((n=>{const d=ju(n,["tfdt"]).map((e=>{const t=e[0];let i=Fu(e,4);return 1===t&&(i*=Math.pow(2,32),i+=Fu(e,8)),i/r}))[0];return void 0!==d&&(e=d),ju(n,["tfhd"]).map((d=>{const h=Fu(d,4),c=16777215&Fu(d,0);let u=0;const p=0!=(16&c);let f=0;const m=0!=(32&c);let g=8;h===o&&(0!=(1&c)&&(g+=8),0!=(2&c)&&(g+=4),0!=(8&c)&&(u=Fu(d,g),g+=4),p&&(f=Fu(d,g),g+=4),m&&(g+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),ju(n,["trun"]).map((o=>{const n=o[0],d=16777215&Fu(o,0),h=0!=(1&d);let c=0;const p=0!=(4&d),m=0!=(256&d);let g=0;const y=0!=(512&d);let A=0;const b=0!=(1024&d),v=0!=(2048&d);let _=0;const w=Fu(o,4);let S=8;h&&(c=Fu(o,S),S+=4),p&&(S+=4);let E=c+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function Xu(e,t,i,s){const r=Zu(e);let o=0;o+=t;let a=0,n=0,l=0;for(;o=r.length)break;l=r[o++],a+=l}while(255===l);n=0;do{if(o>=r.length)break;l=r[o++],n+=l}while(255===l);const e=r.length-o;let t=o;if(ne){Uc.error(`Malformed SEI payload. ${n} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===r[t++]){const e=Mu(r,t);if(t+=2,49===e){const e=Fu(r,t);if(t+=4,1195456820===e){const e=r[t++];if(3===e){const o=r[t++],n=31&o,l=64&o,d=l?2+3*n:0,h=new Uint8Array(d);if(l){h[0]=o;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const s=r[t++].toString(16);e.push(1==s.length?"0"+s:s),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const o=n-16,l=new Uint8Array(o);for(let e=0;e0?(o=new Uint8Array(4),t.length>0&&new DataView(o.buffer).setUint32(0,t.length,!1)):o=new Uint8Array;const a=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let s=8,r=i;for(;r--;)s+=t[r].byteLength;const o=new Uint8Array(s);for(o[0]=s>>24&255,o[1]=s>>16&255,o[2]=s>>8&255,o[3]=255&s,o.set(e,4),r=0,s=8;r>8*(15-i)&255;return t}(e);return new ip(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=Xc(this.uri);if(t)switch(this.keyFormat){case ou:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case ru:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=ep(e,null,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),s=String.fromCharCode.apply(null,Array.from(i)),r=s.substring(s.indexOf("<"),s.length),o=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(o){const e=o.childNodes[0]?o.childNodes[0].nodeValue:o.getAttribute("VALUE");if(e){const t=Qc(e).subarray(0,16);!function(e){const t=function(e,t,i){const s=e[t];e[t]=e[i],e[i]=s};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=tp[this.uri];if(!e){const t=Object.keys(tp).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),tp[this.uri]=e}this.keyId=e}return this}}const sp=/\{\$([a-zA-Z0-9-_]+)\}/g;function rp(e){return sp.test(e)}function op(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let s=i.length;s--;){const r=i[s],o=t[r];o&&(t[r]=ap(e,o))}}function ap(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(sp,(t=>{const s=t.substring(2,t.length-1),r=null==i?void 0:i[s];return void 0===r?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${s}"`)),t):r}))}return t}function np(e,t,i){let s,r,o=e.variableList;if(o||(e.variableList=o={}),"QUERYPARAM"in t){s=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(s))throw new Error(`"${s}" does not match any query parameter in URI: "${i}"`);r=e.get(s)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else s=t.NAME,r=t.VALUE;s in o?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${s}"`)):o[s]=r||""}function lp(e,t,i){const s=t.IMPORT;if(i&&s in i){let t=e.variableList;t||(e.variableList=t={}),t[s]=i[s]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}function dp(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const hp={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function cp(e,t,i=!0){return!e.split(",").some((e=>!up(e,t,i)))}function up(e,t,i=!0){var s;const r=dp(i);return null!=(s=null==r?void 0:r.isTypeSupported(pp(e,t)))&&s}function pp(e,t){return`${t}/mp4;codecs="${e}"`}function fp(e){if(e){const t=e.substring(0,4);return hp.video[t]}return 2}function mp(e){return e.split(",").reduce(((e,t)=>{const i=hp.video[t];return i?(2*i+e)/(e?3:2):(hp.audio[t]+e)/(e?2:1)}),0)}const gp={};const yp=/flac|opus/i;function Ap(e,t=!0){return e.replace(yp,(e=>function(e,t=!0){if(gp[e])return gp[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let s=0;s0&&s.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:o.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let n=0;for(_p.lastIndex=0;null!==(s=_p.exec(e));){const e=new jc(s[1]),o=e.TYPE;if(o){const s=a[o],l=r[o]||[];r[o]=l,op(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const d=e.LANGUAGE,h=e["ASSOC-LANGUAGE"],c=e.CHANNELS,u=e.CHARACTERISTICS,p=e["INSTREAM-ID"],f={attrs:e,bitrate:0,id:n++,groupId:e["GROUP-ID"]||"",name:e.NAME||d||"",type:o,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:d,url:e.URI?Tp.resolve(e.URI,t):""};if(h&&(f.assocLang=h),c&&(f.channels=c),u&&(f.characteristics=u),p&&(f.instreamId=p),null!=s&&s.length){const e=Tp.findGroup(s,f.groupId)||s[0];Dp(f,e,"audioCodec"),Dp(f,e,"textCodec")}l.push(f)}}return r}static parseLevelPlaylist(e,t,i,s,r,o){const a=new Yc(t),n=a.fragments;let l,d,h,c=null,u=0,p=0,f=0,m=0,g=null,y=new qc(s,t),A=-1,b=!1,v=null;for(Sp.lastIndex=0,a.m3u8=e,a.hasVariableRefs=rp(e);null!==(l=Sp.exec(e));){b&&(b=!1,y=new qc(s,t),y.start=f,y.sn=u,y.cc=m,y.level=i,c&&(y.initSegment=c,y.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,v&&(y.setByteRange(v),v=null)));const e=l[1];if(e){y.duration=parseFloat(e);const t=(" "+l[2]).slice(1);y.title=t||null,y.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(Cc(y.duration)){y.start=f,h&&Ip(y,h,a),y.sn=u,y.level=i,y.cc=m,n.push(y);const e=(" "+l[3]).slice(1);y.relurl=ap(a,e),Lp(y,g),g=y,f+=y.duration,u++,p=0,b=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);g?y.setByteRange(e,g):y.setByteRange(e)}else if(l[5])y.rawProgramDateTime=(" "+l[5]).slice(1),y.tagList.push(["PROGRAM-DATE-TIME",y.rawProgramDateTime]),-1===A&&(A=n.length);else{if(l=l[0].match(Ep),!l){Uc.warn("No matches on slow regex match for level playlist!");continue}for(d=1;d0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new jc(r);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=p>0?e[e.length-1]:void 0,s=p++,o=new jc(r);op(a,o,["BYTERANGE","URI"]);const n=new Kc(o,y,t,s,i);e.push(n),y.duration+=n.duration;break}case"PRELOAD-HINT":{const e=new jc(r);op(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new jc(r);op(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:Uc.warn(`line parsed but not handled: ${l}`)}}}g&&!g.relurl?(n.pop(),f-=g.duration,a.partList&&(a.fragmentHint=g)):a.partList&&(Lp(y,g),y.cc=m,a.fragmentHint=y,h&&Ip(y,h,a));const _=n.length,w=n[0],S=n[_-1];if(f+=a.skippedSegments*a.targetduration,f>0&&_&&S){a.averagetargetduration=f/_;const e=S.sn;a.endSN="initSegment"!==e?e:0,a.live||(S.endList=!0),w&&(a.startCC=w.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(f+=a.fragmentHint.duration),a.totalduration=f,a.endCC=m,A>0&&function(e,t){let i=e[t];for(let s=t;s--;){const t=e[s];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(n,A),a}}function kp(e,t,i){var s,r;const o=new jc(e);op(i,o,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(s=o.METHOD)?s:"",n=o.URI,l=o.hexadecimalInteger("IV"),d=o.KEYFORMATVERSIONS,h=null!=(r=o.KEYFORMAT)?r:"identity";n&&o.IV&&!l&&Uc.error(`Invalid IV: ${o.IV}`);const c=n?Tp.resolve(n,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new ip(a,c,h,u,l)}function Cp(e){const t=new jc(e).decimalFloatingPoint("TIME-OFFSET");return Cc(t)?t:null}function xp(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const s=i.filter((t=>function(e,t){const i=hp[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));s.length&&(t[`${e}Codec`]=s.join(","),i=i.filter((e=>-1===s.indexOf(e))))})),t.unknownCodecs=i}function Dp(e,t,i){const s=t[i];s&&(e[i]=s)}function Lp(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Cc(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function Rp(e,t,i,s){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",s&&(e.levelkeys=s),e.initSegment=null}function Ip(e,t,i){e.levelkeys=t;const{encryptedFragments:s}=i;s.length&&s[s.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||s.push(e)}var Pp="manifest",Bp="level",Mp="audioTrack",Fp="subtitleTrack",Up="main",Op="audio",Np="subtitle";function jp(e){const{type:t}=e;switch(t){case Mp:return Op;case Fp:return Np;default:return Up}}function Gp(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class zp{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Lc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(Lc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Lc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(Lc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,s=t.loader,r=new(i||s)(t);return this.loaders[e.type]=r,r}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Pp,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:s,pathwayId:r,url:o,deliveryDirectives:a}=t;this.load({id:i,level:s,pathwayId:r,responseType:"text",type:Bp,url:o,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Mp,url:r,deliveryDirectives:o})}onSubtitleTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Fp,url:r,deliveryDirectives:o})}load(e){var t;const i=this.hls.config;let s,r=this.getInternalLoader(e);if(r){const t=r.context;if(t&&t.url===e.url&&t.level===e.level)return void Uc.trace("[playlist-loader]: playlist request ongoing");Uc.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),r.abort()}if(s=e.type===Pp?i.manifestLoadPolicy.default:kc({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(e),Cc(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===Bp&&null!==e.level?t=this.hls.levels[e.level].details:e.type===Mp&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===Fp&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);s=kc({},s,{maxTimeToFirstByteMs:Math.min(t,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,s.maxTimeToFirstByteMs)})}}}const o=s.errorRetry||s.timeoutRetry||{},a={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0},n={onSuccess:(e,t,i,s)=>{const r=this.getInternalLoader(i);this.resetInternalLoader(i.type);const o=e.data;0===o.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Tp.isMediaPlaylist(o)?this.handleTrackOrLevelPlaylist(e,t,i,s||null,r):this.handleMasterPlaylist(e,t,i,s)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),s||null,t)},onError:(e,t,i,s)=>{this.handleNetworkError(t,i,!1,e,s)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};r.load(e,a,n)}handleMasterPlaylist(e,t,i,s){const r=this.hls,o=e.data,a=Gp(e,i),n=Tp.parseMasterPlaylist(o,a);if(n.playlistParsingError)return void this.handleManifestParsingError(e,i,n.playlistParsingError,s,t);const{contentSteering:l,levels:d,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p}=n;this.variableList=p;const{AUDIO:f=[],SUBTITLES:m,"CLOSED-CAPTIONS":g}=Tp.parseMasterPlaylistMedia(o,a,n);if(f.length){f.some((e=>!e.url))||!d[0].audioCodec||d[0].attrs.AUDIO||(Uc.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new jc({}),bitrate:0,url:""}))}r.trigger(Lc.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:m,captions:g,contentSteering:l,url:a,stats:t,networkDetails:s,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}handleTrackOrLevelPlaylist(e,t,i,s,r){const o=this.hls,{id:a,level:n,type:l}=i,d=Gp(e,i),h=Cc(n)?n:Cc(a)?a:0,c=jp(i),u=Tp.parseLevelPlaylist(e.data,d,h,c,0,this.variableList);if(l===Pp){const e={attrs:new jc({}),bitrate:0,details:u,name:"",url:d};o.trigger(Lc.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:d,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,s,r)}handleManifestParsingError(e,t,i,s,r){this.hls.trigger(Lc.ERROR,{type:Rc.NETWORK_ERROR,details:Ic.MANIFEST_PARSING_ERROR,fatal:t.type===Pp,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:r})}handleNetworkError(e,t,i=!1,s,r){let o=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===Bp?o+=`: ${e.level} id: ${e.id}`:e.type!==Mp&&e.type!==Fp||(o+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(o);Uc.warn(`[playlist-loader]: ${o}`);let n=Ic.UNKNOWN,l=!1;const d=this.getInternalLoader(e);switch(e.type){case Pp:n=i?Ic.MANIFEST_LOAD_TIMEOUT:Ic.MANIFEST_LOAD_ERROR,l=!0;break;case Bp:n=i?Ic.LEVEL_LOAD_TIMEOUT:Ic.LEVEL_LOAD_ERROR,l=!1;break;case Mp:n=i?Ic.AUDIO_TRACK_LOAD_TIMEOUT:Ic.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case Fp:n=i?Ic.SUBTITLE_TRACK_LOAD_TIMEOUT:Ic.SUBTITLE_LOAD_ERROR,l=!1}d&&this.resetInternalLoader(e.type);const h={type:Rc.NETWORK_ERROR,details:n,fatal:l,url:e.url,loader:d,context:e,error:a,networkDetails:t,stats:r};if(s){const i=(null==t?void 0:t.url)||e.url;h.response=Sc({url:i,data:void 0},s)}this.hls.trigger(Lc.ERROR,h)}handlePlaylistLoaded(e,t,i,s,r,o){const a=this.hls,{type:n,level:l,id:d,groupId:h,deliveryDirectives:c}=s,u=Gp(t,s),p=jp(s),f="number"==typeof s.level&&p===Up?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(Lc.ERROR,{type:Rc.NETWORK_ERROR,details:Ic.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(Lc.ERROR,{type:Rc.NETWORK_ERROR,details:Ic.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i});else switch(e.live&&o&&(o.getCacheAge&&(e.ageHeader=o.getCacheAge()||0),o.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),n){case Pp:case Bp:a.trigger(Lc.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:r,deliveryDirectives:c});break;case Mp:a.trigger(Lc.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c});break;case Fp:a.trigger(Lc.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c})}}}function Wp(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function $p(e,t){const i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error(`addCue is failed for: ${t}`)}catch(i){Uc.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){Uc.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function Vp(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function Hp(e,t,i,s){const r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&e.cues.length>0){const r=function(e,t,i){const s=[],r=function(e,t){if(te[i].endTime)return-1;let s=0,r=i;for(;s<=r;){const o=Math.floor((r+s)/2);if(te[o].startTime&&s-1)for(let o=r,a=e.length;o=t&&r.endTime<=i)s.push(r);else if(r.startTime>i)return s}return s}(e.cues,t,i);for(let t=0;t{const e=Qp();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function ef(e,t){return e.getTime()/1e3-t}class tf{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:e}=this;e.on(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Lc.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Lc.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(Vp(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tZp&&(s=Zp);s-i<=0&&(s=i+.25);for(let e=0;ee.type===qp&&n:"video"===s?e=>e.type===Yp&&a:e=>e.type===qp&&n||e.type===Yp&&a,Hp(r,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:s}=this,{dateRanges:r}=t,o=Object.keys(r);if(s){const e=Object.keys(i).filter((e=>!o.includes(e)));for(let t=e.length;t--;){const r=e[t];Object.keys(i[r].cues).forEach((e=>{s.removeCue(i[r].cues[e])})),delete i[r]}}const a=t.fragments[t.fragments.length-1];if(0===o.length||!Cc(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const n=a.programDateTime/1e3-a.start,l=Qp();for(let e=0;e{if(t!==s.id){const i=r[t];if(i.class===s.class&&i.startDate>s.startDate&&(!e||s.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:s}=e,{liveSyncDuration:r,liveSyncDurationCount:o,lowLatencyMode:a}=this.config,n=this.hls.userConfig;let l=a&&i||t;(n.liveSyncDuration||n.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:o*s);const d=s;return l+Math.min(1*this.stallCount,d)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const s=i.edge,r=e-t-this.edgeStalled,o=s-i.totalduration,a=s-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(o,r),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Lc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(Lc.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Lc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(Lc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var i;t.details===Ic.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&Uc.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:s,maxLiveSyncPlaybackRate:r}=this.config;if(!s||1===r||!t.live)return;const o=this.targetLatency;if(null===o)return;const a=i-o;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,r)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const rf=["NONE","TYPE-0","TYPE-1",null];const of=["SDR","PQ","HLG"];var af="",nf="YES",lf="v2";class df{constructor(e,t,i){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=i}addDirectives(e){const t=new self.URL(e);return void 0!==this.msn&&t.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.href}}class hf{constructor(e){this._attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.url=void 0,this.frameRate=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.supportedPromise=void 0,this.supportedResult=void 0,this._avgBitrate=0,this._audioGroups=void 0,this._subtitleGroups=void 0,this._urlId=0,this.url=[e.url],this._attrs=[e.attrs],this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.frameRate=e.attrs.optionalFloat("FRAME-RATE",0),this._avgBitrate=e.attrs.decimalInteger("AVERAGE-BANDWIDTH"),this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.codecSet=[e.videoCodec,e.audioCodec].filter((e=>!!e)).map((e=>e.substring(0,4))).join(","),this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return cf(this._audioGroups,e)}hasSubtitleGroup(e){return cf(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.push(t)}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function cf(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function uf(e,t){const i=t.startPTS;if(Cc(i)){let s,r=0;t.sn>e.sn?(r=i-e.start,s=e):(r=e.start-i,s=t),s.duration!==r&&(s.duration=r)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function pf(e,t,i,s,r,o){s-i<=0&&(Uc.warn("Fragment should have a positive duration",t),s=i+t.duration,o=r+t.duration);let a=i,n=s;const l=t.startPTS,d=t.endPTS;if(Cc(l)){const e=Math.abs(l-i);Cc(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),r=Math.min(r,t.startDTS),n=Math.min(s,d),s=Math.max(s,d),o=Math.max(o,t.endDTS)}const h=i-t.start;0!==t.start&&(t.start=i),t.duration=s-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=r,t.endPTS=s,t.minEndPTS=n,t.endDTS=o;const c=t.sn;if(!e||ce.endSN)return 0;let u;const p=c-e.startSN,f=e.fragments;for(f[p]=t,u=p;u>0;u--)uf(f[u],f[u-1]);for(u=p;u=0;e--){const t=s[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let r,o=0;if(function(e,t,i){const s=t.skippedSegments,r=Math.max(e.startSN,t.startSN)-t.startSN,o=(e.fragmentHint?1:0)+(s?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,n=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=r;e<=o;e++){const r=l[a+e];let o=n[e];s&&!o&&e{e.relurl&&(o=e.cc-s.cc),Cc(e.startPTS)&&Cc(e.endPTS)&&(s.start=s.startPTS=e.startPTS,s.startDTS=e.startDTS,s.maxStartPTS=e.maxStartPTS,s.endPTS=e.endPTS,s.endDTS=e.endDTS,s.minEndPTS=e.minEndPTS,s.duration=e.endPTS-e.startPTS,s.duration&&(r=s),t.PTSKnown=t.alignedSliding=!0),s.elementaryStreams=e.elementaryStreams,s.loader=e.loader,s.stats=e.stats,e.initSegment&&(s.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){Uc.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const s=kc({},e);i&&i.forEach((e=>{delete s[e]}));return Object.keys(t).forEach((e=>{const i=new zc(t[e].attr,s[e]);i.isValid?s[e]=i:Uc.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),s}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(o){Uc.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),r?pf(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):mf(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const n=t.advancedDateTime;if(t.advanced&&n){const e=t.edge;t.driftStart||(t.driftStartTime=n,t.driftStart=e),t.driftEndTime=n,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function mf(e,t){const i=t.startSN+t.skippedSegments-e.startSN,s=e.fragments;i<0||i>=s.length||gf(t,s[i].start)}function gf(e,t){if(t){const i=e.fragments;for(let s=e.skippedSegments;s{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function vf(e){switch(e.details){case Ic.FRAG_LOAD_TIMEOUT:case Ic.KEY_LOAD_TIMEOUT:case Ic.LEVEL_LOAD_TIMEOUT:case Ic.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function _f(e,t){const i=vf(t);return e.default[(i?"timeout":"error")+"Retry"]}function wf(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function Sf(e){return Sc(Sc({},e),{errorRetry:null,timeoutRetry:null})}function Ef(e,t,i,s){if(!e)return!1;const r=null==s?void 0:s.code,o=t499)}(r)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,s,o):o}const Tf=function(e,t){let i=0,s=e.length-1,r=null,o=null;for(;i<=s;){r=(i+s)/2|0,o=e[r];const a=t(o);if(a>0)i=r+1;else{if(!(a<0))return o;s=r-1}}return null};function kf(e,t,i=0,s=0){let r=null;if(e){r=t[e.sn-t[0].sn+1]||null;const s=e.endDTS-i;s>0&&s<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(r=t[0]);if(r&&(!e||e.level===r.level)&&0===Cf(i,s,r))return r;const o=Tf(t,Cf.bind(null,i,s));return!o||o===e&&r?r:o}function Cf(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const s=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-s<=e?1:i.start-s>e&&i.start?-1:0}function xf(e,t,i){const s=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-s>e}var Df=0,Lf=2,Rf=3,If=5,Pf=0,Bf=1,Mf=2;class Ff{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=Uc.log.bind(Uc,`${t}:`),this.warn=Uc.warn.bind(Uc,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t){const i=null==t?void 0:t.renditionReports;if(i){let s=-1;for(let r=0;r=0&&e>t.partTarget&&(o+=1)}return new df(r,o>=0?o:void 0,af)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:s,stats:r}=t,o=self.performance.now(),a=r.loading.first?Math.max(0,o-r.loading.first):0;if(s.advancedDateTime=Date.now()-a,s.live||null!=i&&i.live){if(s.reloaded(i),i&&this.log(`live playlist ${e} ${s.advanced?"REFRESHED "+s.lastPartSn+"-"+s.lastPartIndex:s.updated?"UPDATED":"MISSED"}`),i&&s.fragments.length>0&&ff(i,s),!this.canLoad||!s.live)return;let a,n,l;if(s.canBlockReload&&s.endSN&&s.advanced){const e=this.hls.config.lowLatencyMode,r=s.lastPartSn,o=s.endSN,d=s.lastPartIndex,h=r===o,c=e?0:d;-1!==d?(n=h?o+1:r,l=h?c:d+1):n=o+1;const u=s.age,p=u+s.ageHeader;let f=Math.min(p-s.partTarget,1.5*s.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${s.age}`),f=0;else{const e=Math.floor(f/s.targetduration);if(n+=e,void 0!==l){l+=Math.round(f%s.targetduration/s.partTarget)}this.log(`CDN Tune-in age: ${s.ageHeader}s last advanced ${u.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}s.tuneInGoal=f}if(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l),e||!h)return void this.loadPlaylist(a)}else(s.canBlockReload||s.canSkipUntil)&&(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l));const d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,c=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const s=e.fragments,r=4;if(s.length&&i*r>t){const e=1e3*s[s.length-1].duration;ethis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==n&&s.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,s){let r=function(e,t){const{canSkipUntil:i,canSkipDateRanges:s,endSN:r}=e;return i&&(void 0!==t?t-r:0)=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=wf(a,o);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,s.resolved=!0}return n}}class Uf{constructor(e,t=0,i=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=i}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class Of{constructor(e,t,i,s=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=i,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new Uf(e),this.fast_=new Uf(t),this.defaultTTFB_=s,this.ttfb_=new Uf(e)}update(e,t){const{slow_:i,fast_:s,ttfb_:r}=this;i.halfLife!==e&&(this.slow_=new Uf(e,i.getEstimate(),i.getTotalWeight())),s.halfLife!==t&&(this.fast_=new Uf(t,s.getEstimate(),s.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new Uf(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,s=8*t/i;this.fast_.sample(i,s),this.slow_.sample(i,s)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const Nf={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},jf={};function Gf(e,t,i,s,r,o){const a=e.audioCodec?e.audioGroups:null,n=null==o?void 0:o.audioCodec,l=null==o?void 0:o.channels,d=l?parseInt(l):n?1/0:2;let h=null;if(null!=a&&a.length)try{h=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const s=t.groups[i];if(!s)throw new Error(`Audio track group ${i} not found`);Object.keys(s.channels).forEach((t=>{e[t]=(e[t]||0)+s.channels[t]}))}return e}),{2:0})}catch(e){return!0}return void 0!==e.videoCodec&&(e.width>1920&&e.height>1088||e.height>1920&&e.width>1088||e.frameRate>Math.max(s,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(r,8e6))||!!h&&Cc(d)&&Object.keys(h).some((e=>parseInt(e)>d))}function zf(e,t,i){const s=e.videoCodec,r=e.audioCodec;if(!s||!r||!i)return Promise.resolve(Nf);const o={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(o.transferFunction=a.toLowerCase());const n=s.split(",").map((e=>({type:"media-source",video:Sc(Sc({},o),{},{contentType:pp(e,"video")})})));return r&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);Cc(i)&&i>2&&n.push.apply(n,r.split(",").map((e=>({type:"media-source",audio:{contentType:pp(e,"audio"),channels:""+i}}))))}})))})),Promise.all(n.map((e=>{const t=function(e){const{audio:t,video:i}=e,s=i||t;if(s){const e=s.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return jf[t]||(jf[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:n,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:n,decodingInfoResults:[],error:e})))}function Wf(e,t){let i=!1,s=[];return e&&(i="SDR"!==e,s=[e]),t&&(s=t.allowedVideoRanges||of.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),s=i?s.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:s}}function $f(e,t){Uc.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function Vf(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let s=0;s-1===s.indexOf(e)))}(n,t.characteristics))&&(void 0===i||i(e,t))}function Jf(e,t){const{audioCodec:i,channels:s}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==s&&s!==(t.channels||"2"))}function qf(e,t,i){for(let s=t;s;s--)if(i(e[s]))return s;for(let s=t+1;s{const o=this.fragments[s];if(!o)return;if(r>=o.body.sn)return;if(!o.buffered&&!o.loaded)return void(o.body.type===i&&this.removeFragment(o.body));const a=o.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(o.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:s}=e;if(!t||"initSegment"===i.sn)return;const r=tm(i),o=this.fragments[r];if(!o||o.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const r=i.elementaryStreams[e];if(!r)return;const n=t[e],l=a||!0===r.partial;o.range[e]=this.getBufferedTimes(i,s,l,n)})),o.loaded=null,Object.keys(o.range).length){o.buffered=!0;(o.body.endList=i.endList||o.body.endList)&&(this.endListFragments[o.body.type]=o),em(o)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(o.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=tm(e);let s=this.fragments[i];!s&&t&&(s=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),s&&(s.loaded=null,s.buffered=!0)}getBufferedTimes(e,t,i,s){const r={time:[],partial:i},o=e.start,a=e.end,n=e.minEndPTS||a,l=e.maxStartPTS||o;for(let e=0;e=t&&n<=i){r.time.push({startPTS:Math.max(o,s.start(e)),endPTS:Math.min(a,s.end(e))});break}if(ot){const t=Math.max(o,s.start(e)),i=Math.min(a,s.end(e));i>t&&(r.partial=!0,r.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return r}getPartialFragment(e){let t,i,s,r=null,o=0;const{bufferPadding:a,fragments:n}=this;return Object.keys(n).forEach((l=>{const d=n[l];d&&em(d)&&(i=d.body.start-a,s=d.body.end+a,e>=i&&e<=s&&(t=Math.min(e-i,s-e),o<=t&&(r=d.body,o=t)))})),r}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||em(t))}getState(e){const t=tm(e),i=this.fragments[t];return i?i.buffered?em(i)?Qf:Xf:Yf:Kf}isTimeBuffered(e,t,i){let s,r;for(let o=0;o=s&&t<=r)return!0;if(t<=s)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:s}=t;if("initSegment"===i.sn||i.bitrateTest)return;const r=s?null:t,o=tm(i);this.fragments[o]={body:i,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:s,timeRanges:r}=t;if("initSegment"===i.sn)return;const o=i.type;if(s){let e=this.activePartLists[o];e||(this.activePartLists[o]=e=[]),e.push(s)}this.timeRanges=r,Object.keys(r).forEach((e=>{const t=r[e];this.detectEvictedFragments(e,t,o,s)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=tm(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,s,r){s&&!this.hasGaps||Object.keys(this.fragments).forEach((o=>{const a=this.fragments[o];if(!a)return;const n=a.body;n.type!==i||s&&!n.gap||n.starte&&(a.buffered||r)&&this.removeFragment(n)}))}removeFragment(e){const t=tm(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function em(e){var t,i,s;return e.buffered&&(e.body.gap||(null==(t=e.range.video)?void 0:t.partial)||(null==(i=e.range.audio)?void 0:i.partial)||(null==(s=e.range.audiovideo)?void 0:s.partial))}function tm(e){return`${e.type}_${e.level}_${e.sn}`}const im={length:0,start:()=>0,end:()=>0};class sm{static isBuffered(e,t){try{if(e){const i=sm.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const s=sm.getBuffered(e),r=[];let o;for(o=0;oo&&(s[r-1].end=e[t].end):s.push(e[t])}else s.push(e[t])}else s=e;let r,o=0,a=t,n=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void n(pm(e));e.gap=!1}const l=this.loader=e.loader=r?new r(s):new o(s),d=um(e),h=Sf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:hm};e.stats=l.stats,l.load(d,c,{onSuccess:(t,i,s,r)=>{this.resetLoader(e,l);let o=t.data;s.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(o.slice(0,16)),o=o.slice(16)),a({frag:e,part:null,payload:o,networkDetails:r})},onError:(t,s,r,o)=>{this.resetLoader(e,l),n(new fm({type:Rc.NETWORK_ERROR,details:Ic.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:Sc({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:r,stats:o}))},onAbort:(t,i,s)=>{this.resetLoader(e,l),n(new fm({type:Rc.NETWORK_ERROR,details:Ic.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:s,stats:t}))},onTimeout:(t,i,s)=>{this.resetLoader(e,l),n(new fm({type:Rc.NETWORK_ERROR,details:Ic.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:s,stats:t}))},onProgress:(i,s,r,o)=>{t&&t({frag:e,part:null,payload:r,networkDetails:o})}})}))}loadPart(e,t,i){this.abort();const s=this.config,r=s.fLoader,o=s.loader;return new Promise(((a,n)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void n(pm(e,t));const l=this.loader=e.loader=r?new r(s):new o(s),d=um(e,t),h=Sf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:hm};t.stats=l.stats,l.load(d,c,{onSuccess:(s,r,o,n)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const d={frag:e,part:t,payload:s.data,networkDetails:n};i(d),a(d)},onError:(i,s,r,o)=>{this.resetLoader(e,l),n(new fm({type:Rc.NETWORK_ERROR,details:Ic.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:Sc({url:d.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:r,stats:o}))},onAbort:(i,s,r)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),n(new fm({type:Rc.NETWORK_ERROR,details:Ic.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:r,stats:i}))},onTimeout:(i,s,r)=>{this.resetLoader(e,l),n(new fm({type:Rc.NETWORK_ERROR,details:Ic.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,s=t.stats,r=s.total;if(i.loaded+=s.loaded,r){const s=Math.round(e.duration/t.duration),o=Math.min(Math.round(i.loaded/r),s),a=(s-o)*Math.round(i.loaded/o);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const o=i.loading,a=s.loading;o.start?o.first+=a.first-a.start:(o.start=a.start,o.first=a.first),o.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function um(e,t=null){const i=t||e,s={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},r=i.byteRangeStartOffset,o=i.byteRangeEndOffset;if(Cc(r)&&Cc(o)){var a;let t=r,i=o;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=o-r;e%16&&(i=o+(16-e%16)),0!==r&&(s.resetIV=!0,t=r-16)}s.rangeStart=t,s.rangeEnd=i}return s}function pm(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),s={type:Rc.MEDIA_ERROR,details:Ic.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(s.part=t),(t||e).stats.aborted=!0,new fm(s)}class fm extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class mm{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}class gm{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class ym{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,s=i[0],r=i[1],o=i[2],a=i[3],n=this.invSubMix,l=n[0],d=n[1],h=n[2],c=n[3],u=new Uint32Array(256);let p=0,f=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=f^f<<1^f<<2^f<<3^f<<4;i=i>>>8^255&i^99,e[p]=i,t[i]=p;const n=u[p],m=u[n],g=u[m];let y=257*u[i]^16843008*i;s[p]=y<<24|y>>>8,r[p]=y<<16|y>>>16,o[p]=y<<8|y>>>24,a[p]=y,y=16843009*g^65537*m^257*n^16843008*p,l[i]=y<<24|y>>>8,d[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,c[i]=y,p?(p=n^u[u[u[g^n]]],f^=u[u[f]]):p=f=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,s=0;for(;s{if(!s)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new mm(s,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((s=>(Uc.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const s=this.flush();if(s)return s.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=uu(e,0,i),this.remainderData=uu(e,i)),t}logOnce(e){this.logEnabled&&(Uc.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const bm=function(e){let t="";const i=e.length;for(let s=0;s1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}{constructor(e,t,i,s,r){super(),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=vm,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=0,this.startTimeOffset=null,this.loadedmetadata=!1,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.onvseeking=null,this.onvended=null,this.logPrefix="",this.log=void 0,this.warn=void 0,this.playlistType=r,this.logPrefix=s,this.log=Uc.log.bind(Uc,`${s}:`),this.warn=Uc.warn.bind(Uc,`${s}:`),this.hls=e,this.fragmentLoader=new cm(e.config),this.keyLoader=i,this.fragmentTracker=t,this.config=e.config,this.decrypter=new Am(e.config),e.on(Lc.MANIFEST_LOADED,this.onManifestLoaded,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;null!=e&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=vm}_streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;const i=t.partList;if(null!=i&&i.length){const e=i[i.length-1];return sm.isBuffered(this.media,e.start+e.duration/2)}const s=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(s)}getLevelDetails(){var e;if(this.levels&&null!==this.levelLastLoaded)return null==(e=this.levelLastLoaded)?void 0:e.details}onMediaAttached(e,t){const i=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),i.addEventListener("seeking",this.onvseeking),i.addEventListener("ended",this.onvended);const s=this.config;this.levels&&s.autoStartLoad&&this.state===vm&&this.startLoad(s.startPosition)}onMediaDetaching(){const e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}onMediaSeeking(){const{config:e,fragCurrent:t,media:i,mediaBuffer:s,state:r}=this,o=i?i.currentTime:0,a=sm.bufferInfo(s||i,o,e.maxBufferHole);if(this.log(`media seeking to ${Cc(o)?o.toFixed(3):o}, state: ${r}`),this.state===xm)this.resetLoadingState();else if(t){const i=e.maxFragLookUpTolerance,s=t.start-i,r=t.start+t.duration+i;if(!a.len||ra.end){const e=o>r;(o{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===Sm||!this.fragCurrent&&i===km)&&(this.fragmentTracker.removeFragment(e),this.state=_m):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(Lc.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==vm&&this.state!==Dm&&(this.warn(t),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===Yf){const t=e.type,s=this.getFwdBufferInfo(this.mediaBuffer,t),r=Math.max(e.duration,s?s.len:this.config.maxBufferLength);this.reduceMaxBufferLength(r)&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===Qf&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const s={startOffset:e,endOffset:t,type:i};this.hls.trigger(Lc.BUFFER_FLUSHING,s)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:s}=t,r=e.decryptdata;if(s&&s.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const o=self.performance.now();return this.decrypter.decrypt(new Uint8Array(s),r.key.buffer,r.iv.buffer).catch((t=>{throw i.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const r=self.performance.now();return i.trigger(Lc.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:o,tdecrypt:r}}),t.payload=s,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==vm&&this.state!==Dm&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=_m,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,s,r,o;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===Up?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(s=e.endPTS)?s:NaN).toFixed(3)}] > buffer:${a?bm(sm.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var n;if(e.type!==Np){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=_m)}const t=null==(n=this.levels)?void 0:n[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=_m,a&&(!this.loadedmetadata&&e.type==Up&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(o=this.fragPrevious)?void 0:o.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:s,partsLoaded:r}=e,o=!r||0===r.length||r.some((e=>!e)),a=new rm(i.level,i.sn,i.stats.chunkCount+1,0,s?s.index:-1,!o);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,s){var r;const o=null==t?void 0:t.details;if(!this.levels||!o)throw new Error(`frag load aborted, missing level${o?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(r=e.decryptdata)&&r.key?!e.encrypted&&o.encryptedFragments.length&&this.keyLoader.loadClear(e,o.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${o.startSN}-${o.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=wm,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(Lc.KEY_LOADED,e),this.state===wm&&(this.state=_m),e})),this.hls.trigger(Lc.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const r=o.partList;if(r&&s){i>e.end&&o.fragmentHint&&(e=o.fragmentHint);const n=this.getNextPart(r,e,i);if(n>-1){const l=r[n];let d;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${o.startSN}-${o.endSN}] parts [0-${n}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=Sm,d=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,s))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,s).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Lc.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):d}if(!e.url||this.loadedEndOfParts(r,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${o?"of ["+o.startSN+"-"+o.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),Cc(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Sm;const n=this.config.progressive;let l;return l=n&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,s))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,n?s:void 0),a]).then((([e])=>(!n&&e&&s&&s(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Lc.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,s){return new Promise(((r,o)=>{var a;const n=[],l=null==(a=i.details)?void 0:a.partList,d=t=>{this.fragmentLoader.loadPart(e,t,s).then((s=>{n[t.index]=s;const o=s.part;this.hls.trigger(Lc.FRAG_LOADED,s);const a=yf(i,e.sn,t.index+1)||Af(l,e.sn,t.index+1);if(!a)return r({frag:e,part:o,partsLoaded:n});d(a)})).catch(o)};d(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===Ic.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(Lc.ERROR,t)}else this.hls.trigger(Lc.ERROR,{type:Rc.OTHER_ERROR,details:Ic.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==km)return void(this.fragCurrent||this.state===vm||this.state===Dm||(this.state=_m));const{frag:i,part:s,level:r}=t,o=self.performance.now();i.stats.parsing.end=o,s&&(s.stats.parsing.end=o),this.updateLevelTiming(i,s,r,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:s,sn:r,part:o}=e;if(null==t||!t[s])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${s}. The current chunk will not be buffered.`),null;const a=t[s],n=o>-1?yf(a,r,o):null,l=n?n.fragment:function(e,t,i){if(null==e||!e.details)return null;const s=e.details;let r=s.fragments[t-s.startSN];return r||(r=s.fragmentHint,r&&r.sn===t?r:to&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return Cc(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:s}}=this,r=sm.bufferInfo(e,t,s);if(0===r.len&&void 0!==r.nextStart){const o=this.fragmentTracker.getBufferedFrag(t,i);if(o&&r.nextStart=i&&(t.maxMaxBufferLength/=2,this.warn(`Reduce max buffer length to ${t.maxMaxBufferLength}s`),!0)}getAppendedFrag(e,t=Up){const i=this.fragmentTracker.getAppendedFrag(e,Up);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,s=i.length;if(!s)return null;const{config:r}=this,o=i[0].start;let a;if(t.live){const n=r.initialLiveManifestSize;if(st}getNextFragmentLoopLoading(e,t,i,s,r){const o=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,o&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,s);if(null!==t&&i.len+t.len>=r)return this.log(`buffer full after gaps in "${s}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let s=-1,r=!1,o=!0;for(let a=0,n=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let s=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),s=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!Cc(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;i=i||0;for(let s=0;s=e.startSN&&r<=e.endSN){const o=t[r-e.startSN];i.cc===o.cc&&(s=o,this.log(`Live playlist, switching playlist, load frag with next SN: ${s.sn}`))}s||(s=function(e,t){return Tf(e,(e=>e.cct?-1:0))}(t,i.cc),s&&this.log(`Live playlist, switching playlist, load frag with same CC: ${s.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(s=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return s}getFragmentAtPosition(e,t,i){const{config:s}=this;let{fragPrevious:r}=this,{fragments:o,endSN:a}=i;const{fragmentHint:n}=i,l=s.maxFragLookUpTolerance,d=i.partList,h=!!(s.lowLatencyMode&&null!=d&&d.length&&n);let c;if(h&&n&&!this.bitrateTest&&(o=o.concat(n),a=n.sn),et-l?0:l)}else c=o[o.length-1];if(c){const e=c.sn-i.startSN,t=this.fragmentTracker.getState(c);if((t===Xf||t===Qf&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!h||d[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const t=o[e+1];c=c.sn=o-t.maxFragLookUpTolerance&&r<=a;if(null!==s&&i.duration>s&&(r${e.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${s}`),o}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(s=this.fragCurrent)?void 0:s.url}`);const r=t.details===Ic.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction,{action:a,retryCount:n=0,retryConfig:l}=o||{};if(o&&a===If&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const s=wf(l,n);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${n+1}/${l.maxNumRetry} in ${s}ms`),o.resolved=!0,this.retryDate=self.performance.now()+s,this.state=Em}else if(l&&o){if(this.resetFragmentErrors(e),!(n.5;s&&this.reduceMaxBufferLength(i.len);const r=!s;return r&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${t} buffer`),e.frag&&(this.fragmentTracker.removeFragment(e.frag),this.nextLoadPosition=e.frag.start),this.resetLoadingState(),r}return!1}resetFragmentErrors(e){e===Op&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==vm&&(this.state=_m)}afterBufferFlushed(e,t,i){if(!e)return;const s=sm.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,s,i),this.state===xm&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=_m}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(e){this.warn(`The loading context changed while buffering fragment ${e.sn} of level ${e.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,i,s){var r;const o=i.details;if(!o)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,r)=>{const a=e.elementaryStreams[r];if(a){const n=a.endPTS-a.startPTS;if(n<=0)return this.warn(`Could not parse fragment ${e.sn} ${r} duration reliably (${n})`),t||!1;const l=s?0:pf(o,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(Lc.LEVEL_PTS_UPDATED,{details:o,level:i,drift:l,type:r,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const t=new Error(`Found no media in fragment ${e.sn} of level ${e.level} resetting transmuxer to fallback to playlist timing`);if(0===i.fragmentError&&(i.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(t.message),this.hls.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=Cm,this.hls.trigger(Lc.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class Pm{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let s=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:qp,duration:Number.POSITIVE_INFINITY});r{if(Cc(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function Um(e,t){return 255===e[t]&&240==(246&e[t+1])}function Om(e,t){return 1&e[t+1]?7:9}function Nm(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function jm(e,t){return t+1=e.length)return!1;const s=Nm(e,t);if(s<=i)return!1;const r=t+s;return r===e.length||jm(e,r)}return!1}function zm(e,t,i,s,r){if(!e.samplerate){const o=function(e,t,i,s){let r,o,a,n;const l=navigator.userAgent.toLowerCase(),d=s,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&t[i+2])>>>6);const c=(60&t[i+2])>>>2;if(!(c>h.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,Uc.log(`manifest codec:${s}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,n=new Array(4),o=c-3):(r=2,n=new Array(2),o=c):-1!==l.indexOf("android")?(r=2,n=new Array(2),o=c):(r=5,n=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&c>=6?o=c-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!s&&1===a)&&(r=2,n=new Array(2)),o=c)),n[0]=r<<3,n[0]|=(14&c)>>1,n[1]|=(1&c)<<7,n[1]|=a<<3,5===r&&(n[1]|=(14&o)>>1,n[2]=(1&o)<<7,n[2]|=8,n[3]=0),{config:n,samplerate:h[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:d};{const t=new Error(`invalid ADTS sampling index:${c}`);e.emit(Lc.ERROR,Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,s,r);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,Uc.log(`parsed codec:${e.codec}, rate:${o.samplerate}, channels:${o.channelCount}`)}}function Wm(e){return 9216e4/e}function $m(e,t,i,s,r){const o=s+r*Wm(e.samplerate),a=function(e,t){const i=Om(e,t);if(t+i<=e.length){const s=Nm(e,t)-i;if(s>0)return{headerLength:i,frameLength:s}}}(t,i);let n;if(a){const{frameLength:s,headerLength:r}=a,l=r+s,d=Math.max(0,i+l-t.length);d?(n=new Uint8Array(l-r),n.set(t.subarray(i+r,t.length),0)):n=t.subarray(i+r,i+l);const h={unit:n,pts:o};return d||e.samples.push(h),{sample:h,length:l,missing:d}}const l=t.length-i;n=new Uint8Array(l),n.set(t.subarray(i,t.length),0);return{sample:{unit:n,pts:o},length:l,missing:-1}}let Vm=null;const Hm=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Jm=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],qm=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Km=[0,1,1,4];function Ym(e,t,i,s,r){if(i+24>t.length)return;const o=Qm(t,i);if(o&&i+o.frameLength<=t.length){const a=s+r*(9e4*o.samplesPerFrame/o.sampleRate),n={unit:t.subarray(i,i+o.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=o.channelCount,e.samplerate=o.sampleRate,e.samples.push(n),{sample:n,length:o.frameLength,missing:0}}}function Qm(e,t){const i=e[t+1]>>3&3,s=e[t+1]>>1&3,r=e[t+2]>>4&15,o=e[t+2]>>2&3;if(1!==i&&0!==r&&15!==r&&3!==o){const a=e[t+2]>>1&1,n=e[t+3]>>6,l=1e3*Hm[14*(3===i?3-s:3===s?3:4)+r-1],d=Jm[3*(3===i?0:2===i?1:2)+o],h=3===n?1:2,c=qm[i][s],u=Km[s],p=8*c*u,f=Math.floor(c*l/d+a)*u;if(null===Vm){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Vm=e?parseInt(e[1]):0}return!!Vm&&Vm<=87&&2===s&&l>=224e3&&0===n&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function Xm(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function Zm(e,t){return t+1{let i=0,s=5;t+=s;const r=new Uint32Array(1),o=new Uint32Array(1),a=new Uint8Array(1);for(;s>0;){a[0]=e[t];const n=Math.min(s,8),l=8-n;o[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const o=t[i+4]>>6;if(o>=3)return-1;const a=[48e3,44100,32e3][o],n=63&t[i+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*n+o];if(i+l>t.length)return-1;const d=t[i+6]>>5;let h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));const c=(t[i+6]<<8|t[i+7])>>12-h&1,u=[2,1,2,3,3,4,4,5][d]+c,p=t[i+5]>>3,f=7&t[i+5],m=new Uint8Array([o<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|n>>4,n<<4&224]),g=s+r*(1536/a*9e4),y=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:y,pts:g}),l}class og{constructor(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,s=new Uint8Array(4),r=Math.min(4,t);if(0===r)throw new Error("no bytes available");s.set(e.subarray(i,i+r)),this.word=new DataView(s.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&Uc.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return t=e-t,t>0&&this.bitsAvailable?i<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,s=8;for(let r=0;r{var o;switch(s.type){case 1:{let t=!1;a=!0;const r=s.data;if(l&&r.length>4){const e=new og(r).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var d;if(t)null!=(d=n)&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null);n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.frame=!0,n.key=t;break}case 5:a=!0,null!=(o=n)&&o.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.key=!0,n.frame=!0;break;case 6:a=!0,Xu(s.data,1,i.pts,t.samples);break;case 7:{var h,c;a=!0,l=!0;const t=s.data,i=new og(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(h=e.pixelRatio)?void 0:h[0])!==i.pixelRatio[0]||(null==(c=e.pixelRatio)?void 0:c[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=r;const s=t.subarray(1,4);let o="avc1.";for(let e=0;e<3;e++){let t=s[e].toString(16);t.length<2&&(t="0"+t),o+=t}e.codec=o}break}case 8:a=!0,e.pps=[s.data];break;case 9:a=!0,e.audFound=!0,n&&this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,n&&(n.debug+="unknown NAL "+s.type+" ")}if(n&&a){n.units.push(s)}})),s&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let s=e.naluState||0;const r=s,o=[];let a,n,l,d=0,h=-1,c=0;for(-1===s&&(h=0,c=31&t[0],s=0,d=1);d=0){const e={data:t.subarray(h,n),type:c};o.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(r&&d<=4-r&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-r)),n>0&&(i.data=Ku(i.data,t.subarray(0,n)),i.state=0))}d=0&&s>=0){const e={data:t.subarray(h,i),type:c,state:s};o.push(e)}if(0===o.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=Ku(i.data,t))}return e.naluState=s,o}}class ng{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new Am(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const s=e[t].unit;if(s.length<=16)return;const r=s.subarray(16,s.length-s.length%16),o=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(o).then((r=>{const o=new Uint8Array(r);s.set(o,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(e,t,i){for(;;t++){if(t>=e.length)return void i();if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,i),!this.decrypter.isSync()))return}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let s=0;for(let t=32;t{r.data=this.getAvcDecryptedUnit(o,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,s)}))}decryptAvcSamples(e,t,i,s){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void s();const r=e[t].units;for(;!(i>=r.length);i++){const o=r[i];if(!(o.data.length<=48||1!==o.type&&5!==o.type||(this.decryptAvcSample(e,t,i,s,o),this.decrypter.isSync())))return}}}}const lg=188;class dg{constructor(e,t,i){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.videoParser=new ag}static probe(e){const t=dg.syncOffset(e);return t>0&&Uc.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-lg)+1,s=0;for(;s1&&(0===o&&a>2||n+lg>i))return o}s++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:Pu[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=dg.createTrack("video"),this._audioTrack=dg.createTrack("audio",s),this._id3Track=dg.createTrack("id3"),this._txtTrack=dg.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,s=!1){let r;i||(this.sampleAes=null);const o=this._videoTrack,a=this._audioTrack,n=this._id3Track,l=this._txtTrack;let d=o.pid,h=o.pesData,c=a.pid,u=n.pid,p=a.pesData,f=n.pesData,m=null,g=this.pmtParsed,y=this._pmtId,A=e.length;if(this.remainderData&&(A=(e=Ku(this.remainderData,e)).length,this.remainderData=null),A>4>1){if(v=t+5+e[t+4],v===t+lg)continue}else v=t+4;switch(A){case d:s&&(h&&(r=fg(h))&&this.videoParser.parseAVCPES(o,l,r,!1,this._duration),h={data:[],size:0}),h&&(h.data.push(e.subarray(v,t+lg)),h.size+=t+lg-v);break;case c:if(s){if(p&&(r=fg(p)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}p={data:[],size:0}}p&&(p.data.push(e.subarray(v,t+lg)),p.size+=t+lg-v);break;case u:s&&(f&&(r=fg(f))&&this.parseID3PES(n,r),f={data:[],size:0}),f&&(f.data.push(e.subarray(v,t+lg)),f.size+=t+lg-v);break;case 0:s&&(v+=e[v]+1),y=this._pmtId=cg(e,v);break;case y:{s&&(v+=e[v]+1);const r=ug(e,v,this.typeSupported,i);d=r.videoPid,d>0&&(o.pid=d,o.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(n.pid=u),null===m||g||(Uc.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${b} to parse all TS packets.`),m=null,t=b-188),g=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=A}}else v++;if(v>0){const e=new Error(`Found ${v} TS packet/s that do not start with 0x47`);this.observer.emit(Lc.ERROR,Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message})}o.pesData=h,a.pesData=p,n.pesData=f;const _={audioTrack:a,videoTrack:o,id3Track:n,textTrack:l};return s&&this.extractRemainingSamples(_),_}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:s,textTrack:r}=e,o=i.pesData,a=t.pesData,n=s.pesData;let l;if(o&&(l=fg(o))?(this.videoParser.parseAVCPES(i,r,l,!0,this._duration),i.pesData=null):i.pesData=o,a&&(l=fg(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&Uc.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;n&&(l=fg(n))?(this.parseID3PES(s,l),s.pesData=null):s.pesData=n}demuxSampleAes(e,t,i){const s=this.demux(e,i,!0,!this.config.progressive),r=this.sampleAes=new ng(this.observer,this.config,t);return this.decrypt(s,r)}decrypt(e,t){return new Promise((i=>{const{audioTrack:s,videoTrack:r}=e;s.samples&&"aac"===s.segmentCodec?t.decryptAacSamples(s.samples,0,(()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)})):i(e)})):r.samples&&t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const s=this.aacOverFlow;let r,o,a,n=t.data;if(s){this.aacOverFlow=null;const t=s.missing,r=s.sample.unit.byteLength;if(-1===t)n=Ku(s.sample.unit,n);else{const o=r-t;s.sample.unit.set(n.subarray(0,t),o),e.samples.push(s.sample),i=s.missing}}for(r=i,o=n.length;r0;)n+=o}}parseID3PES(e,t){if(void 0===t.pts)return void Uc.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=kc({},t,{type:this._videoTrack?Yp:qp,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function hg(e,t){return((31&e[t+1])<<8)+e[t+2]}function cg(e,t){return(31&e[t+10])<<8|e[t+11]}function ug(e,t,i,s){const r={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},o=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t0){let s=t+5,n=a;for(;n>2;){if(106===e[s])!0!==i.ac3?Uc.log("AC-3 audio found, not supported in this browser for now"):(r.audioPid=o,r.segmentAudioCodec="ac3");const t=e[s+1]+2;s+=t,n-=t}}break;case 194:case 135:Uc.warn("Unsupported EC-3 in M2TS found");break;case 36:Uc.warn("Unsupported HEVC in M2TS found")}t+=a+5}return r}function pg(e){Uc.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function fg(e){let t,i,s,r,o,a=0;const n=e.data;if(!e||0===e.size)return null;for(;n[0].length<19&&n.length>1;)n[0]=Ku(n[0],n[1]),n.splice(1,1);t=n[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(o=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,r-o>54e5&&(Uc.warn(`${Math.round((r-o)/9e4)}s delta between PTS and DTS, align them`),r=o)):o=r),s=t[8];let d=s+9;if(e.size<=d)return null;e.size-=d;const h=new Uint8Array(e.size);for(let e=0,i=n.length;ei){d-=i;continue}t=t.subarray(d),i-=d,d=0}h.set(t,a),a+=i}return i&&(i-=s+3),{data:h,pts:r,dts:o,len:i}}return null}class mg{static getSilentFrame(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}const gg=Math.pow(2,32)-1;class yg{static init(){let e;for(e in yg.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},yg.types)yg.types.hasOwnProperty(e)&&(yg.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);yg.HDLR_TYPES={video:t,audio:i};const s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);yg.STTS=yg.STSC=yg.STCO=r,yg.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),yg.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),yg.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),yg.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const o=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),n=new Uint8Array([0,0,0,1]);yg.FTYP=yg.box(yg.types.ftyp,o,n,o,a),yg.DINF=yg.box(yg.types.dinf,yg.box(yg.types.dref,s))}static box(e,...t){let i=8,s=t.length;const r=s;for(;s--;)i+=t[s].byteLength;const o=new Uint8Array(i);for(o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4),s=0,i=8;s>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))}static mdia(e){return yg.box(yg.types.mdia,yg.mdhd(e.timescale,e.duration),yg.hdlr(e.type),yg.minf(e))}static mfhd(e){return yg.box(yg.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?yg.box(yg.types.minf,yg.box(yg.types.smhd,yg.SMHD),yg.DINF,yg.stbl(e)):yg.box(yg.types.minf,yg.box(yg.types.vmhd,yg.VMHD),yg.DINF,yg.stbl(e))}static moof(e,t,i){return yg.box(yg.types.moof,yg.mfhd(e),yg.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=yg.trak(e[t]);return yg.box.apply(null,[yg.types.moov,yg.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(yg.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=yg.trex(e[t]);return yg.box.apply(null,[yg.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(gg+1)),s=Math.floor(t%(gg+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return yg.box(yg.types.mvhd,r)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let s,r;for(s=0;s>>8&255),r.push(255&s),r=r.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),o.push(255&s),o=o.concat(Array.prototype.slice.call(i));const a=yg.box(yg.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(o))),n=e.width,l=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return yg.box(yg.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,n>>8&255,255&n,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),a,yg.box(yg.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),yg.box(yg.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))}static esds(e){const t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))}static audioStsd(e){const t=e.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,255&t,0,0])}static mp4a(e){return yg.box(yg.types.mp4a,yg.audioStsd(e),yg.box(yg.types.esds,yg.esds(e)))}static mp3(e){return yg.box(yg.types[".mp3"],yg.audioStsd(e))}static ac3(e){return yg.box(yg.types["ac-3"],yg.audioStsd(e),yg.box(yg.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?yg.box(yg.types.stsd,yg.STSD,yg.mp3(e)):"ac3"===e.segmentCodec?yg.box(yg.types.stsd,yg.STSD,yg.ac3(e)):yg.box(yg.types.stsd,yg.STSD,yg.mp4a(e)):yg.box(yg.types.stsd,yg.STSD,yg.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,s=e.width,r=e.height,o=Math.floor(i/(gg+1)),a=Math.floor(i%(gg+1));return yg.box(yg.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>8&255,255&s,0,0,r>>8&255,255&r,0,0]))}static traf(e,t){const i=yg.sdtp(e),s=e.id,r=Math.floor(t/(gg+1)),o=Math.floor(t%(gg+1));return yg.box(yg.types.traf,yg.box(yg.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),yg.box(yg.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o])),yg.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,yg.box(yg.types.trak,yg.tkhd(e),yg.mdia(e))}static trex(e){const t=e.id;return yg.box(yg.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],s=i.length,r=12+16*s,o=new Uint8Array(r);let a,n,l,d,h,c;for(t+=8+r,o.set(["video"===e.type?1:0,0,15,1,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,d>>>24&255,d>>>16&255,d>>>8&255,255&d,h.isLeading<<2|h.dependsOn,h.isDependedOn<<6|h.hasRedundancy<<4|h.paddingValue<<1|h.isNonSync,61440&h.degradPrio,15&h.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return yg.box(yg.types.trun,o)}static initSegment(e){yg.types||yg.init();const t=yg.moov(e);return Ku(yg.FTYP,t)}}yg.types=void 0,yg.HDLR_TYPES=void 0,yg.STTS=void 0,yg.STSC=void 0,yg.STCO=void 0,yg.STSZ=void 0,yg.VMHD=void 0,yg.SMHD=void 0,yg.STSD=void 0,yg.FTYP=void 0,yg.DINF=void 0;function Ag(e,t,i=1,s=!1){const r=e*t*i;return s?Math.round(r):r}function bg(e,t=!1){return Ag(e,1e3,1/9e4,t)}let vg,_g=null,wg=null;class Sg{constructor(e,t,i,s=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.ISGenerated=!1,null===_g){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);_g=e?parseInt(e[1]):0}if(null===wg){const e=navigator.userAgent.match(/Safari\/(\d+)/i);wg=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){Uc.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){Uc.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){Uc.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const s=i.pts-e;return s<-4294967296?(t=!0,Eg(e,i.pts)):s>0?e:i.pts}),e[0].pts);return t&&Uc.debug("PTS rollover detected"),i}remux(e,t,i,s,r,o,a,n){let l,d,h,c,u,p,f=r,m=r;const g=e.pid>-1,y=t.pid>-1,A=t.samples.length,b=e.samples.length>0,v=a&&A>0||A>1;if((!g||b)&&(!y||v)||this.ISGenerated||a){if(this.ISGenerated){var _,w,S,E;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(w=e.pixelRatio)?void 0:w[0])&&(null==(S=t.pixelRatio)?void 0:S[1])===(null==(E=e.pixelRatio)?void 0:E[1])||this.resetInitSegment()}else h=this.generateIS(e,t,r,o);const i=this.isVideoContiguous;let s,a=-1;if(v&&(a=function(e){for(let t=0;t0){Uc.warn(`[mp4-remuxer]: Dropped ${a} out of ${A} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,s=m}else-1===a&&(Uc.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),p=!1);if(this.ISGenerated){if(b&&v){const i=this.getVideoStartPts(t.samples),s=(Eg(e.samples[0].pts,i)-i)/t.inputTimeScale;f+=Math.max(0,s),m+=Math.max(0,-s)}if(b){if(e.samplerate||(Uc.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,r,o)),d=this.remuxAudio(e,f,this.isAudioContiguous,o,y||v||n===Op?m:void 0),v){const s=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(Uc.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,r,o)),l=this.remuxVideo(t,m,i,s)}}else v&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=s)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=Tg(i,r,this._initPTS,this._initDTS)),s.samples.length&&(c=kg(s,r,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}}generateIS(e,t,i,s){const r=e.samples,o=t.samples,a=this.typeSupported,n={},l=this._initPTS;let d,h,c,u=!l||s,p="audio/mp4";if(u&&(d=h=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(p="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}n.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):yg.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(c=e.inputTimeScale,l&&c===l.timescale?u=!1:d=h=r[0].pts-Math.round(c*i))}if(t.sps&&t.pps&&o.length){if(t.timescale=t.inputTimeScale,n.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:yg.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(c=t.inputTimeScale,l&&c===l.timescale)u=!1;else{const e=this.getVideoStartPts(o),t=Math.round(c*i);h=Math.min(h,Eg(o[0].dts,e)-t),d=Math.min(d,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(n).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:d,timescale:c},this._initDTS={baseTime:h,timescale:c}):d=c=void 0,{tracks:n,initPTS:d,timescale:c}}remuxVideo(e,t,i,s){const r=e.inputTimeScale,o=e.samples,a=[],n=o.length,l=this._initPTS;let d,h,c=this.nextAvcDts,u=8,p=this.videoSampleDuration,f=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===c){const e=t*r,s=o[0].pts-Eg(o[0].dts,o[0].pts);_g&&null!==c&&Math.abs(e-s-c)<15e3?i=!0:c=e-s}const y=l.baseTime*r/l.timescale;for(let e=0;e0?e-1:e].dts&&(g=!0)}g&&o.sort((function(e,t){const i=e.dts-t.dts,s=e.pts-t.pts;return i||s})),d=o[0].dts,h=o[o.length-1].dts;const A=h-d,b=A?Math.round(A/(n-1)):p||e.inputTimeScale/30;if(i){const e=d-c,i=e>b,s=e<-1;if((i||s)&&(i?Uc.warn(`AVC: ${bg(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):Uc.warn(`AVC: ${bg(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!s||c>=o[0].pts||_g)){d=c;const t=o[0].pts-e;if(i)o[0].dts=d,o[0].pts=t;else for(let i=0;it);i++)o[i].dts-=e,o[i].pts-=e;Uc.log(`Video: Initial PTS/DTS adjusted: ${bg(t,!0)}/${bg(d,!0)}, delta: ${bg(e,!0)} ms`)}}d=Math.max(0,d);let v=0,_=0,w=d;for(let e=0;e0?t.dts-o[e-1].dts:b;if(l=e>0?t.pts-o[e-1].pts:b,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*r),o=(s?f+s*r:this.nextAudioPts)-t.pts;o>e?(p=o-a,p<0?p=a:k=!0,Uc.log(`[mp4-remuxer]: It is approximately ${o/90} ms to the next segment; using duration ${p/90} ms for the last video frame.`)):p=a}else p=a}const h=Math.round(t.pts-t.dts);C=Math.min(C,p),D=Math.max(D,p),x=Math.min(x,l),L=Math.max(L,l),a.push(new Cg(t.key,p,d,h))}if(a.length)if(_g){if(_g<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(wg&&L-x0&&(s&&Math.abs(g-m)<9e3||Math.abs(Eg(p[0].pts-y,g)-m)<20*l),p.forEach((function(e){e.pts=Eg(e.pts-y,g)})),!i||m<0){if(p=p.filter((e=>e.pts>=0)),!p.length)return;m=0===r?0:s&&!u?Math.max(0,g):p[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,s=m;i=t*l&&d<1e4&&u){let t=Math.round(n/l);s=a-t*l,s<0&&(t--,s+=l),0===i&&(this.nextAudioPts=m=s),Uc.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(s/o).toFixed(3)}s due to ${Math.round(1e3*n/o)} ms gap.`);for(let o=0;o0))return;_+=f;try{A=new Uint8Array(_)}catch(e){return void this.observer.emit(Lc.ERROR,Lc.ERROR,{type:Rc.MUX_ERROR,details:Ic.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:_,reason:`fail allocating audio mdat ${_}`})}if(!h){new DataView(A.buffer).setUint32(0,_),A.set(yg.types.mdat,4)}}A.set(r,f);const l=r.byteLength;f+=l,c.push(new Cg(!0,n,l,0)),v=o}const S=c.length;if(!S)return;const E=c[c.length-1];this.nextAudioPts=m=v+a*E.duration;const T=h?new Uint8Array(0):yg.moof(e.sequenceNumber++,b/a,kc({},e,{samples:c}));e.samples=[];const k=b/o,C=m/o,x={data1:T,data2:A,startPTS:k,endPTS:C,startDTS:k,endDTS:C,type:"audio",hasAudio:!0,hasVideo:!1,nb:S};return this.isAudioContiguous=!0,x}remuxEmptyAudio(e,t,i,s){const r=e.inputTimeScale,o=r/(e.samplerate?e.samplerate:r),a=this.nextAudioPts,n=this._initDTS,l=9e4*n.baseTime/n.timescale,d=(null!==a?a:s.startDTS*r)+l,h=s.endDTS*r+l,c=1024*o,u=Math.ceil((h-d)/c),p=mg.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(Uc.warn("[mp4-remuxer]: remux empty Audio"),!p)return void Uc.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const f=[];for(let e=0;e4294967296;)e+=i;return e}function Tg(e,t,i,s){const r=e.samples.length;if(!r)return;const o=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const o=e.samples;return e.samples=[],{samples:o}}class Cg{constructor(e,t,i,s){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=s,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function xg(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===$c){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return Ap(i,!1)}const e="mp4a.40.5";return Uc.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return Uc.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{vg=self.performance.now.bind(self.performance)}catch(e){Uc.debug("Unable to use Performance API on this environment"),vg=null==eu?void 0:eu.Date.now}const Dg=[{demux:class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,i,s){const r=this.videoTrack=Bm("video",1),o=this.audioTrack=Bm("audio",1),a=this.txtTrack=Bm("text",1);if(this.id3Track=Bm("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const n=zu(e);if(n.video){const{id:e,timescale:t,codec:i}=n.video;r.id=e,r.timescale=a.timescale=t,r.codec=i}if(n.audio){const{id:e,timescale:t,codec:i}=n.audio;o.id=e,o.timescale=t,o.codec=i}a.id=Pu.text,r.sampleDuration=0,r.duration=o.duration=s}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=s>1?i+s:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const s=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=Ku(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=ju(e,["moof"]);if(i.length<2)return t.remainder=e,t;const s=i[i.length-1];return t.valid=uu(e,0,s.byteOffset-8),t.remainder=uu(e,s.byteOffset-8),t}(i);this.remainderData=t.remainder,s.samples=t.valid||new Uint8Array}else s.samples=i;const o=this.extractID3Track(s,t);return r.samples=Yu(t,s),{videoTrack:s,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const s=this.extractID3Track(t,this.timeOffset);return i.samples=Yu(e,t),{videoTrack:t,audioTrack:Bm(),id3Track:s,textTrack:Bm()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const s=ju(e.samples,["emsg"]);s&&s.forEach((e=>{const s=function(e){const t=e[0];let i="",s="",r=0,o=0,a=0,n=0,l=0,d=0;if(0===t){for(;"\0"!==Bu(e.subarray(d,d+1));)i+=Bu(e.subarray(d,d+1)),d+=1;for(i+=Bu(e.subarray(d,d+1)),d+=1;"\0"!==Bu(e.subarray(d,d+1));)s+=Bu(e.subarray(d,d+1)),d+=1;s+=Bu(e.subarray(d,d+1)),d+=1,r=Fu(e,12),o=Fu(e,16),n=Fu(e,20),l=Fu(e,24),d=28}else if(1===t){d+=4,r=Fu(e,d),d+=4;const t=Fu(e,d);d+=4;const o=Fu(e,d);for(d+=4,a=2**32*t+o,xc(a)||(a=Number.MAX_SAFE_INTEGER,Uc.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),n=Fu(e,d),d+=4,l=Fu(e,d),d+=4;"\0"!==Bu(e.subarray(d,d+1));)i+=Bu(e.subarray(d,d+1)),d+=1;for(i+=Bu(e.subarray(d,d+1)),d+=1;"\0"!==Bu(e.subarray(d,d+1));)s+=Bu(e.subarray(d,d+1)),d+=1;s+=Bu(e.subarray(d,d+1)),d+=1}return{schemeIdUri:i,value:s,timeScale:r,presentationTime:a,presentationTimeDelta:o,eventDuration:n,id:l,payload:e.subarray(d,e.byteLength)}}(e);if(tg.test(s.schemeIdUri)){const e=Cc(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale;let r=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const o=s.payload;i.samples.push({data:o,len:o.byteLength,dts:e,pts:e,type:Yp,duration:r})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,i,s){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&ju(e,["moov","trak"]).forEach((e=>{const t=ju(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let s=ju(t,["enca"]);const r=s.length>0;r||(s=ju(t,["encv"])),s.forEach((e=>{ju(r?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=Ju(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(Uc.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Lu(e)} -> ${Lu(i)}`),t.set(i,8))}}))}))}));return e}(e,s)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const s=this.initData=zu(e);s.audio&&(t=xg(s.audio,$c)),s.video&&(i=xg(s.video,Vc));const r={};s.audio&&s.video?r.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:s.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:s.video?r.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:Uc.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,i,s,r,o){var a,n;let{initPTS:l,lastEndTime:d}=this;const h={audio:void 0,video:void 0,text:s,id3:i,initSegment:void 0};Cc(d)||(d=this.lastEndTime=r||0);const c=t.samples;if(null==c||!c.length)return h;const u={initPTS:void 0,timescale:1};let p=this.initData;if(null!=(a=p)&&a.length||(this.generateInitSegment(c),p=this.initData),null==(n=p)||!n.length)return Uc.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const f=function(e,t){let i=0,s=0,r=0;const o=ju(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+o.earliestPresentationTime/o.timescale),s=i-t}}if(s&&Cc(s))return s}return s||r}(c,p),m=function(e,t){return ju(t,["moof","traf"]).reduce(((t,i)=>{const s=ju(i,["tfdt"])[0],r=s[0],o=ju(i,["tfhd"]).reduce(((t,i)=>{const o=Fu(i,4),a=e[o];if(a){let e=Fu(s,4);if(1===r){if(e===Ru)return Uc.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=Ru+1,e+=Fu(s,8)}const i=e/(a.timescale||9e4);if(Cc(i)&&(null===t||ir}(l,g,r,f)||u.timescale!==l.timescale&&o)&&(u.initPTS=g-r,l&&1===l.timescale&&Uc.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=e?g-l.baseTime/l.timescale:d,A=y+f;!function(e,t,i){ju(t,["moof","traf"]).forEach((t=>{ju(t,["tfhd"]).forEach((s=>{const r=Fu(s,4),o=e[r];if(!o)return;const a=o.timescale||9e4;ju(t,["tfdt"]).forEach((e=>{const t=e[0],s=i*a;if(s){let i=Fu(e,4);if(0===t)i-=s,i=Math.max(i,0),Nu(e,4,i);else{i*=Math.pow(2,32),i+=Fu(e,8),i-=s,i=Math.max(i,0);const t=Math.floor(i/(Ru+1)),r=Math.floor(i%(Ru+1));Nu(e,4,t),Nu(e,8,r)}}}))}))}))}(p,c,l.baseTime/l.timescale),f>0?this.lastEndTime=A:(Uc.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const b=!!p.audio,v=!!p.video;let _="";b&&(_+="audio"),v&&(_+="video");const w={data1:c,startPTS:y,startDTS:y,endPTS:A,endDTS:A,type:_,hasAudio:b,hasVideo:v,nb:1,dropped:0};return h.audio="audio"===w.type?w:void 0,h.video="audio"!==w.type?w:void 0,h.initSegment=u,h.id3=Tg(i,r,l,l),s.samples.length&&(h.text=kg(s,r,l)),h}}},{demux:dg,remux:Sg},{demux:class extends Mm{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,s){super.resetInitSegment(e,t,i,s),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:s,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=mu(e,0);let i=(null==t?void 0:t.length)||0;if(eg(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(o,t);if(b&&"AES-128"===b.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(o,b.key.buffer,b.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(o,b.key.buffer,b.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return r.executeEnd=vg(),Rg(i);o=new Uint8Array(t)}}const v=this.needsProbing(d,h);if(v){const e=this.configureTransmuxer(o);if(e)return Uc.warn(`[transmuxer] ${e.message}`),this.observer.emit(Lc.ERROR,Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),r.executeEnd=vg(),Rg(i)}(d||h||p||v)&&this.resetInitSegment(A,f,m,y,t),(d||p||v)&&this.resetInitialTimestamp(g),l||this.resetContiguity();const _=this.transmux(o,b,u,c,i),w=this.currentTransmuxState;return w.contiguous=!0,w.discontinuity=!1,w.trackSwitch=!1,r.executeEnd=vg(),_}flush(e){const t=e.transmuxing;t.executeStart=vg();const{decrypter:i,currentTransmuxState:s,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(e)));const o=[],{timeOffset:a}=s;if(i){const t=i.flush();t&&o.push(this.push(t,null,e))}const{demuxer:n,remuxer:l}=this;if(!n||!l)return t.executeEnd=vg(),[Rg(e)];const d=n.flush(a);return Ig(d)?d.then((t=>(this.flushRemux(o,t,e),o))):(this.flushRemux(o,d,e),o)}flushRemux(e,t,i){const{audioTrack:s,videoTrack:r,id3Track:o,textTrack:a}=t,{accurateTimeOffset:n,timeOffset:l}=this.currentTransmuxState;Uc.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const d=this.remuxer.remux(s,r,o,a,l,n,!0,this.id);e.push({remuxResult:d,chunkMeta:i}),i.transmuxing.executeEnd=vg()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,s,r){const{demuxer:o,remuxer:a}=this;o&&a&&(o.resetInitSegment(e,t,i,s),a.resetInitSegment(e,t,i,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,s,r){let o;return o=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,s,r):this.transmuxUnencrypted(e,i,s,r),o}transmuxUnencrypted(e,t,i,s){const{audioTrack:r,videoTrack:o,id3Track:a,textTrack:n}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,o,a,n,t,i,!1,this.id),chunkMeta:s}}transmuxSampleAes(e,t,i,s,r){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,s,!1,this.id),chunkMeta:r})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:s,vendor:r}=this;let o;for(let t=0,i=Dg.length;t({remuxResult:{},chunkMeta:e});function Ig(e){return"then"in e&&e.then instanceof Function}class Pg{constructor(e,t,i,s,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=i,this.duration=s,this.defaultInitPts=r||null}}class Bg{constructor(e,t,i,s,r,o){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=i,this.trackSwitch=s,this.timeOffset=r,this.initSegmentChange=o}}var Mg={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,s,o,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var n=new r(s,o||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],n]:e._events[l].push(n):(e._events[l]=n,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function n(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),n.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},n.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,o=s.length,a=new Array(o);r{(t=t||{}).frag=this.frag,t.id=this.id,e===Lc.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new Fg,this.observer.on(Lc.FRAG_DECRYPTED,o),this.observer.on(Lc.ERROR,o);const a=dp(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},n={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')},l=navigator.vendor;if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(Uc.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(r.workerPath)):(Uc.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);r.enableWorker=!1,Uc.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(Lc.ERROR,{type:Rc.OTHER_ERROR,details:Ic.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:n,vendor:l,id:t,config:JSON.stringify(r)})}catch(e){Uc.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new Lg(this.observer,n,r,l,t)}return}}this.transmuxer=new Lg(this.observer,n,r,l,t)}resetWorker(){if(this.workerContext){const{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,s,r,o,a,n,l,d){var h,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,p=o?o.start:r.start,f=r.decryptdata,m=this.frag,g=!(m&&r.cc===m.cc),y=!(m&&l.level===m.level),A=m?l.sn-m.sn:-1,b=this.part?l.part-this.part.index:-1,v=0===A&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),_=!y&&(1===A||0===A&&(1===b||v&&b<=0)),w=self.performance.now();(y||A||0===r.stats.parsing.start)&&(r.stats.parsing.start=w),!o||!b&&_||(o.stats.parsing.start=w);const S=!(m&&(null==(h=r.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),E=new Bg(g,_,n,y,p,S);if(!_||g||S){Uc.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${g}\n trackSwitch: ${y}\n contiguous: ${_}\n accurateTimeOffset: ${n}\n timeOffset: ${p}\n initSegmentChange: ${S}`);const e=new Pg(i,s,t,a,d);this.configureTransmuxer(e)}if(this.frag=r,this.part=o,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:f,chunkMeta:l,state:E},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,f,l,E);Ig(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);Ig(i)||t.async?(Ig(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.FRAG_PARSING_ERROR,chunkMeta:t,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data,i=this.hls;switch(t.event){case"init":{var s;const e=null==(s=this.workerContext)?void 0:s.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":Uc[t.data.logType]&&Uc[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,i.trigger(t.event,t.data)}}configureTransmuxer(e){const{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}function Og(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function jg(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class Gg{constructor(e){this.buffered=void 0;const t=(t,i,s)=>{if((i>>>=0)>s-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${s})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class zg{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const s=this.queues[t];s.push(e),1!==s.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),s={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(s,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){Uc.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const s=this.buffers[e];null!=s&&s.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const Wg=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function $g(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))}const Vg={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Hg=function(e){let t=e;return Vg.hasOwnProperty(e)&&(t=Vg[e]),String.fromCharCode(t)},Jg=15,qg=100,Kg={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Yg={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Qg={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Xg={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Zg=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class ey{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;Uc.log(`${this.time} [${e}] ${i}`)}}}const ty=function(e){const t=[];for(let i=0;iqg&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=qg)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Hg(e);this.pos>=qg?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",s=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class ay{constructor(e,t,i){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new oy(i),this.nonDisplayedMemory=new oy(i),this.lastOutputScreen=new oy(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(()=>"MODE="+e)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class ny{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const s=this.logger=new ey;this.channels=[null,new ay(e,t,s),new ay(e+1,i,s)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){let i,s,r,o=!1;this.logger.time=e;for(let e=0;e ("+ty([s,r])+")"),i=this.parseCmd(s,r),i||(i=this.parseMidrow(s,r)),i||(i=this.parsePAC(s,r)),i||(i=this.parseBackgroundAttributes(s,r)),!i&&(o=this.parseChars(s,r),o)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(o)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}i||o||this.logger.log(2,"Couldn't parse cleaned data "+ty([s,r])+" orig: "+ty([t[e],t[e+1]]))}}parseCmd(e,t){const{cmdHistory:i}=this;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;if(dy(e,t,i))return ly(null,null,i),this.logger.log(3,"Repeated command ("+ty([e,t])+") is dropped"),!0;const s=20===e||21===e||23===e?1:2,r=this.channels[s];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),ly(e,t,i),this.currentChannel=s,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const s=this.channels[i];return!!s&&(s.ccMIDROW(t),this.logger.log(3,"MIDROW ("+ty([e,t])+")"),!0)}return!1}parsePAC(e,t){let i;const s=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;if(dy(e,t,s))return ly(null,null,s),!0;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Kg[e]:Qg[e]:1===r?Yg[e]:Xg[e];const o=this.channels[r];return!!o&&(o.setPAC(this.interpretPAC(i,t)),ly(e,t,s),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const s={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,s.underline=1==(1&i),i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=4*Math.floor((i-16)/2),s}parseChars(e,t){let i,s=null,r=null;if(e>=25?(i=2,r=e-8):(i=1,r=e),r>=17&&r<=19){let e;e=17===r?t+80:18===r?t+112:t+144,this.logger.log(2,"Special char '"+Hg(e)+"' in channel "+i),s=[e]}else e>=32&&e<=127&&(s=0===t?[e]:[e,t]);if(s){const i=ty(s);this.logger.log(3,"Char codes = "+i.join(",")),ly(e,t,this.cmdHistory)}return s}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const s={};16===e||24===e?(i=Math.floor((t-32)/2),s.background=Zg[i],t%2==1&&(s.background=s.background+"_semi")):45===t?s.background="transparent":(s.foreground="black",47===t&&(s.underline=!0));const r=e<=23?1:2;return this.channels[r].setBkgData(s),ly(e,t,this.cmdHistory),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var cy=function(){if(null!=eu&&eu.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function s(e){return i(t,e)}function r(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",r({},l,{get:function(){return v},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",r({},l,{get:function(){return _},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");_=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",r({},l,{get:function(){return w},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");w=t,this.hasBeenReset=!0}})),n.displayState=void 0}return o.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},o}();class uy{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function py(e){function t(e,t,i,s){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(s||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class fy{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let s=0;s=0&&i<=100)return this.set(e,i),!0}return!1}}function my(e,t,i,s){const r=s?e.split(s):[e];for(const e in r){if("string"!=typeof r[e])continue;const s=r[e].split(i);if(2!==s.length)continue;t(s[0],s[1])}}const gy=new cy(0,0,""),yy="middle"===gy.align?"middle":"center";function Ay(e,t,i){const s=e;function r(){const t=py(e);if(null===t)throw new Error("Malformed timestamp: "+s);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function o(){e=e.replace(/^\s+/,"")}if(o(),t.startTime=r(),o(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+s);e=e.slice(3),o(),t.endTime=r(),o(),function(e,t){const s=new fy;my(e,(function(e,t){let r;switch(e){case"region":for(let r=i.length-1;r>=0;r--)if(i[r].id===t){s.set(e,i[r].region);break}break;case"vertical":s.alt(e,t,["rl","lr"]);break;case"line":r=t.split(","),s.integer(e,r[0]),s.percent(e,r[0])&&s.set("snapToLines",!1),s.alt(e,r[0],["auto"]),2===r.length&&s.alt("lineAlign",r[1],["start",yy,"end"]);break;case"position":r=t.split(","),s.percent(e,r[0]),2===r.length&&s.alt("positionAlign",r[1],["start",yy,"end","line-left","line-right","auto"]);break;case"size":s.percent(e,t);break;case"align":s.alt(e,t,["start",yy,"end","left","right"])}}),/:/,/\s/),t.region=s.get("region",null),t.vertical=s.get("vertical","");let r=s.get("line","auto");"auto"===r&&-1===gy.line&&(r=-1),t.line=r,t.lineAlign=s.get("lineAlign","start"),t.snapToLines=s.get("snapToLines",!0),t.size=s.get("size",100),t.align=s.get("align",yy);let o=s.get("position","auto");"auto"===o&&50===gy.position&&(o="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=o}(e,t)}function by(e){return e.replace(//gi,"\n")}class vy{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new uy,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=by(e);i>>0).toString()};function Ey(e,t,i){return Sy(e.toString())+Sy(t.toString())+Sy(i)}function Ty(e,t,i,s,r,o,a){const n=new vy,l=Cu(new Uint8Array(e)).trim().replace(_y,"\n").split("\n"),d=[],h=t?function(e,t=1){return Ag(e,9e4,1/t)}(t.baseTime,t.timescale):0;let c,u="00:00.000",p=0,f=0,m=!0;n.oncue=function(e){const o=i[s];let a=i.ccOffset;const n=(p-h)/9e4;if(null!=o&&o.new&&(void 0!==f?a=i.ccOffset=o.start:function(e,t,i){let s=e[t],r=e[s.prevCC];if(!r||!r.new&&s.new)return e.ccOffset=e.presentationOffset=s.start,void(s.new=!1);for(;null!=(o=r)&&o.new;){var o;e.ccOffset+=s.start-r.start,s.new=!1,s=r,r=e[s.prevCC]}e.presentationOffset=i}(i,s,n)),n){if(!t)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=n-i.presentationOffset}const l=e.endTime-e.startTime,u=Eg(9e4*(e.startTime+a-f),9e4*r)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=Ey(e.startTime,e.endTime,m)),e.endTime>0&&d.push(e)},n.onparsingerror=function(e){c=e},n.onflush=function(){c?a(c):o(d)},l.forEach((e=>{if(m){if(wy(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{wy(e,"LOCAL:")?u=e.slice(6):wy(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),s=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Cc(t)&&Cc(i)&&Cc(s)&&Cc(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*s,t+=36e5*r,t}(u)/1e3}catch(e){c=e}return}""===e&&(m=!1)}n.parse(e+"\n")})),n.flush()}const ky="stpp.ttml.im1t",Cy=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,xy=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Dy={left:"start",center:"center",right:"end",start:"start",end:"end"};function Ly(e,t,i,s){const r=ju(new Uint8Array(e),["mdat"]);if(0===r.length)return void s(new Error("Could not parse IMSC1 mdat"));const o=r.map((e=>Cu(e))),a=function(e,t,i=1,s=!1){return Ag(e,t,1/i,s)}(t.baseTime,1,t.timescale);try{o.forEach((e=>i(function(e,t){const i=new DOMParser,s=i.parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},o=Object.keys(r).reduce(((e,t)=>(e[t]=s.getAttribute(`ttp:${t}`)||r[t],e)),{}),a="preserve"!==s.getAttribute("xml:space"),n=Iy(Ry(s,"styling","style")),l=Iy(Ry(s,"layout","region")),d=Ry(s,"body","[begin]");return[].map.call(d,(e=>{const i=Py(e,a);if(!i||!e.hasAttribute("begin"))return null;const s=Fy(e.getAttribute("begin"),o),r=Fy(e.getAttribute("dur"),o);let d=Fy(e.getAttribute("end"),o);if(null===s)throw My(e);if(null===d){if(null===r)throw My(e);d=s+r}const h=new cy(s-t,d-t,i);h.id=Ey(h.startTime,h.endTime,h.text);const c=function(e,t,i){const s="http://www.w3.org/ns/ttml#styling";let r=null;const o=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(r=i[a]);return o.reduce(((i,o)=>{const a=By(t,s,o)||By(e,s,o)||By(r,s,o);return a&&(i[o]=a),i}),{})}(l[e.getAttribute("region")],n[e.getAttribute("style")],n),{textAlign:u}=c;if(u){const e=Dy[u];e&&(h.lineAlign=e),h.align=u}return kc(h,c),h})).filter((e=>null!==e))}(e,a))))}catch(e){s(e)}}function Ry(e,t,i){const s=e.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(i)):[]}function Iy(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function Py(e,t){return[].slice.call(e.childNodes).reduce(((e,i,s)=>{var r;return"br"===i.nodeName&&s?e+"\n":null!=(r=i.childNodes)&&r.length?Py(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function By(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function My(e){return new Error(`Could not parse ttml timestamp ${e}`)}function Fy(e,t){if(!e)return null;let i=py(e);return null===i&&(Cy.test(e)?i=function(e,t){const i=Cy.exec(e),s=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+s/t.frameRate}(e,t):xy.test(e)&&(i=function(e,t){const i=xy.exec(e),s=Number(i[1]);switch(i[2]){case"h":return 3600*s;case"m":return 60*s;case"ms":return 1e3*s;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}(e,t))),i}function Uy(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function Oy(e,t){return!!e&&e.kind===Uy(t)&&jg(t,e)}class Ny{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(Lc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Lc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Lc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Lc.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(Lc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Lc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Lc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Lc.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Cc(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&Uc.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,Ny.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.top||e.height||0)}return this.clientRect=t,t}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let s=e.length-1;const r=Math.max(t,i);for(let t=0;t=r||i.height>=r)&&(o=i,!(a=e[t+1])||o.width!==a.width||o.height!==a.height)){s=t;break}}var o,a;return s}}const jy="[eme]";class Gy{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=Gy.CDMCleanupPromise?[Gy.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=Uc.debug.bind(Uc,jy),this.log=Uc.log.bind(Uc,jy),this.warn=Uc.warn.bind(Uc,jy),this.error=Uc.error.bind(Uc,jy),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Lc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Lc.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Lc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Lc.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,s=t[e];if(s)return s.licenseUrl;if(e===tu.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,s=t.map((e=>e.audioCodec)).filter(i),r=t.map((e=>e.videoCodec)).filter(i);return s.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((t,i)=>{const o=e=>{const a=e.shift();this.getMediaKeysPromise(a,s,r).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?o(e):i(t instanceof zy?t:new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};o(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===hu&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const s=function(e,t,i,s){let r;switch(e){case tu.FAIRPLAY:r=["cenc","sinf"];break;case tu.WIDEVINE:case tu.PLAYREADY:r=["cenc"];break;case tu.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,s){return[{initDataTypes:e,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null})))}]}(r,t,i,s)}(e,t,i,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e];let o=null==r?void 0:r.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(s)}`),o=this.requestMediaKeySystemAccess(e,s);const t=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),o.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const s=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),s.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return o.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${Lu(e.keyId||[])}`);const s=i.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:s,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),s=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[s]=this.generateRequestWithPreferredKeySession(i,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return Lu(e.keyId)}updateKeySession(e,t){var i;const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyID ${Lu((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),s.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const s=du(this.config),r=e.map(au).filter((e=>!!e&&-1!==s.indexOf(e)));return this.getKeySystemSelectionPromise(r).then((({keySystem:e})=>{const s=lu(e);s?t(s):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),s=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${s}`);let r=this.keyIdToKeySessionPromise[i];return r||(r=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${s}`),this.attemptSetMediaKeys(i,r).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:r,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),r.catch((e=>this.handleError(e)))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof zy?this.hls.trigger(Lc.ERROR,e.data):this.hls.trigger(Lc.ERROR,{type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=au(e.keyFormat),i=t?[t]:du(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=du(this.config)),0===e.length)throw new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let s,r;if("sinf"===t&&this.config.drmSystems[tu.FAIRPLAY]){const e=Bu(new Uint8Array(i));try{const t=Qc(JSON.parse(e).sinf),i=Ju(new Uint8Array(t));if(!i)return;s=i.subarray(8,24),r=tu.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),s=i.getUint32(0);if(e.byteLength!==s&&s>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=Lu(new Uint8Array(e,12,16));const r=i.getUint32(28);if(0===t.version){if(s-32this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-key-match")));break}}l||(l=a[o]=this.getKeySystemSelectionPromise([r]).then((({keySystem:e,mediaKeys:r})=>{var a;this.throwIfDestroyed();const n=new ip("ISO-23001-7",o,null!=(a=lu(e))?a:"");return n.pssh=new Uint8Array(i),n.keyId=s,this.attemptSetMediaKeys(e,r).then((()=>{this.throwIfDestroyed();const s=this.createMediaKeySessionContext({decryptdata:n,keySystem:e,mediaKeys:r});return this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const s=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(s),s.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(s),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,s){var r,o;const a=null==(r=this.config.drmSystems)||null==(o=r[e.keySystem])?void 0:o.generateRequest;if(a)try{const s=a.call(this.hls,t,i,e);if(!s)throw new Error("Invalid response from configured generateRequest filter");t=s.initDataType,i=e.decryptdata.pssh=s.initData?new Uint8Array(s.initData):null}catch(e){var n;if(this.warn(e.message),null!=(n=this.hls)&&n.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${s}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${s}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const d=new Fg,h=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void d.emit("error",new Error("invalid state"));const{messageType:s,message:r}=t;this.log(`"${s}" message event for session "${i.sessionId}" message size: ${r.byteLength}`),"license-request"===s||"license-renewal"===s?this.renewLicense(e,r).catch((e=>{this.handleError(e),d.emit("error",e)})):"license-release"===s?e.keySystem===tu.FAIRPLAY&&(this.updateKeySession(e,Zc("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${s}"`)},c=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void d.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;d.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",h),e.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((e,t)=>{d.on("error",t),d.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw d.removeAllListeners(),this.removeSession(e),t})).then((()=>(d.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${Lu("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${Lu(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),s=this.getServerCertificateUrl(e);return s?(this.log(`Fetching server certificate for "${e}"`),new Promise(((r,o)=>{const a={responseType:"arraybuffer",url:s},n=t.certLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{r(e.data)},onError:(t,i,r,n)=>{o(new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:Sc({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${s}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,r)=>{o(new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${s})`))},onAbort:(e,t,i)=>{o(new Error("aborted"))}};i.load(a,l,d)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((s,r)=>{e.setServerCertificate(i).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),s(e)})).catch((e=>{r(new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const s=(new DOMParser).parseFromString(i,"application/xml"),r=s.querySelectorAll("HttpHeader");if(r.length>0){let t;for(let i=0,s=r.length;i in key message");return Zc(atob(l))}setupLicenseXHR(e,t,i,s){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,i,s)})).catch((o=>{if(!i.decryptdata)throw o;return e.open("POST",t,!0),r.call(this.hls,e,t,i,s)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||s}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:s}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((s,r)=>{const o=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${o}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,o,e)}catch(e){this.error(e)}s(t)}else{const n=i.errorRetry,l=n?n.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new zy({type:Rc.KEY_SYSTEM_ERROR,details:Ic.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:o,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${o}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(s,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,o,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==tu.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},ip.clearKeyUriToKeyIdMap();const i=t.length;Gy.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}Gy.CDMCleanupPromise=void 0;class zy extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}var Wy,$y,Vy;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Wy||(Wy={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}($y||($y={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(Vy||(Vy={}));const Hy={[Vy.OBJECT]:["br","d","ot","tb"],[Vy.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[Vy.SESSION]:["cid","pr","sf","sid","st","v"],[Vy.STATUS]:["bs","rtp"]};class Jy{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof Jy?e:new Jy(e)))),this.value=e,this.params=t}}class qy{constructor(e){this.description=void 0,this.description=e}}function Ky(e,t,i,s){return new Error(`failed to ${e} "${r=t,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${i}`,{cause:s});var r}const Yy="Bare Item";const Qy=/[\x00-\x1f\x7f]+/;function Xy(e,t,i){return Ky("serialize",e,t,i)}function Zy(e){if(!1===ArrayBuffer.isView(e))throw Xy(e,"Byte Sequence");return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function eA(e){if(function(e){return e<-999999999999999||99999999999999912)throw Xy(e,"Decimal");const i=t.toString();return i.includes(".")?i:`${i}.0`}function sA(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Xy(t,"Token");return t}function rA(e){switch(typeof e){case"number":if(!Cc(e))throw Xy(e,Yy);return Number.isInteger(e)?eA(e):iA(e);case"string":return function(e){if(Qy.test(e))throw Xy(e,"String");return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return sA(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Xy(e,"Boolean");return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${eA(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Zy(e);if(e instanceof qy)return sA(e);default:throw Xy(e,Yy)}}function oA(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Xy(e,"Key");return e}function aA(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${oA(e)}`:`;${oA(e)}=${rA(t)}`)).join("")}function nA(e){return e instanceof Jy?`${rA(e.value)}${aA(e.params)}`:rA(e)}function lA(e,t={whitespace:!0}){if("object"!=typeof e)throw Xy(e,"Dict");const i=e instanceof Map?e.entries():Object.entries(e),s=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof Jy==!1&&(t=new Jy(t));let i=oA(e);var s;return!0===t.value?i+=aA(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(s=t).value.map(nA).join(" ")})${aA(s.params)}`:i+=nA(t)),i})).join(`,${s}`)}const dA=e=>Math.round(e),hA=e=>100*dA(e/100),cA={br:dA,d:dA,bl:hA,dl:hA,mtp:hA,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),s=new URL(t);if(i.origin!==s.origin)return e;const r=i.pathname.split("/").slice(1),o=s.pathname.split("/").slice(1,-1);for(;r[0]===o[0];)r.shift(),o.shift();for(;o.length;)o.shift(),r.unshift("..");return r.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:hA,tb:dA};function uA(e,t){const i={};if(null==e||"object"!=typeof e)return i;const s=Object.keys(e).sort(),r=kc({},cA,null==t?void 0:t.formatters),o=null==t?void 0:t.filter;return s.forEach((s=>{if(null!=o&&o(s))return;let a=e[s];const n=r[s];n&&(a=n(a,t)),"v"===s&&1===a||"pr"==s&&1===a||(e=>"number"==typeof e?Cc(e):null!=e&&""!==e&&!1!==e)(a)&&((e=>"ot"===e||"sf"===e||"st"===e)(s)&&"string"==typeof a&&(a=new qy(a)),i[s]=a)})),i}function pA(e,t={}){return e?function(e,t){return lA(e,t)}(uA(e,t),kc({whitespace:!1},t)):""}function fA(e,t,i){return kc(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),s=Object.entries(Hy).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),r=i.reduce(((e,t)=>{var i;const[r,o]=t,a=(null==(i=s.find((e=>e[1].includes(r))))?void 0:i[0])||Vy.REQUEST;return null!=e[a]||(e[a]={}),e[a][r]=o,e}),{});return Object.entries(r).reduce(((e,[i,s])=>(e[i]=pA(s,t),e)),{})}(t,i))}const mA=/CMCD=[^&#]+/;function gA(e,t,i){const s=function(e,t={}){if(!e)return"";const i=pA(e,t);return`CMCD=${encodeURIComponent(i)}`}(t,i);if(!s)return e;if(mA.test(e))return e.replace(mA,s);const r=e.includes("?")?"&":"?";return`${e}${r}${s}`}function yA(e,t,i,s){e&&Object.keys(t).forEach((r=>{const o=e.filter((e=>e.groupId===r)).map((e=>{const o=kc({},e);return o.details=void 0,o.attrs=new jc(o.attrs),o.url=o.attrs.URI=AA(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),o.groupId=o.attrs["GROUP-ID"]=t[r],o.attrs["PATHWAY-ID"]=s,o}));e.push(...o)}))}function AA(e,t,i,s){const{HOST:r,PARAMS:o,[i]:a}=s;let n;t&&(n=null==a?void 0:a[t],n&&(e=n));const l=new self.URL(e);return r&&!n&&(l.host=r),o&&Object.keys(o).sort().forEach((e=>{e&&l.searchParams.set(e,o[e])})),l.href}const bA=/^age:\s*[\d.]+\s*$/im;class vA{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new Wc,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null,this.stats=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(!this.stats.aborted)return r(i,t.url)})).catch((e=>(i.open("GET",t.url,!0),r(i,t.url)))).then((()=>{this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,s)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const s=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:o}=i.loadPolicy;if(s)for(const t in s)e.setRequestHeader(t,s[t]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=r&&Cc(r)?r:o,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const s=t.readyState,r=this.config;if(!i.aborted&&s>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===s)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const s=t.status,o="text"!==t.responseType;if(s>=200&&s<300&&(o&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const r=o?t.response:t.responseText,a="arraybuffer"===t.responseType?r.byteLength:r.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const n=this.callbacks.onProgress;if(n&&n(i,e,r,t),!this.callbacks)return;const l={url:t.responseURL,data:r,code:s};this.callbacks.onSuccess(l,i,e,t)}else{const o=r.loadPolicy.errorRetry;Ef(o,i.retry,!1,{url:e.url,data:void 0,code:s})?this.retry(o):(Uc.error(`${s} while loading ${e.url}`),this.callbacks.onError({code:s,text:t.statusText},e,t,i))}}}loadtimeout(){var e;const t=null==(e=this.config)?void 0:e.loadPolicy.timeoutRetry;if(Ef(t,this.stats.retry,!0))this.retry(t);else{var i;Uc.warn(`timeout while loading ${null==(i=this.context)?void 0:i.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=wf(e,i.retry),i.retry++,Uc.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&bA.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const _A=/(\d+)-(\d+)\/(\d+)/;class wA{constructor(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||SA,this.controller=new self.AbortController,this.stats=new Wc}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();const r=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(kc({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),o=i.onProgress,a="arraybuffer"===e.responseType,n=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:d}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=l&&Cc(l)?l:d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),t.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const n=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),d-(n-s.loading.start)),!r.ok){const{status:e,statusText:t}=r;throw new EA(t||"fetch, bad network response",e,r)}return s.loading.first=n,s.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=_A.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Cc(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(r.headers)||s.total,o&&Cc(t.highWaterMark)?this.loadProgressively(r,s,e,t.highWaterMark,o):a?r.arrayBuffer():"json"===e.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);const l=r[n];l&&(s.loaded=s.total=l);const d={url:a.url,data:r,code:a.status};o&&!Cc(t.highWaterMark)&&o(s,e,r,a),i.onSuccess(d,s,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),s.aborted)return;const r=t&&t.code||0,o=t?t.message:null;i.onError({code:r,text:o},e,t?t.details:null,s)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,r){const o=new Pm,a=e.body.getReader(),n=()=>a.read().then((a=>{if(a.done)return o.dataLength&&r(t,i,o.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,d=l.length;return t.loaded+=d,d=s&&r(t,i,o.flush(),e)):r(t,i,l,e),n()})).catch((()=>Promise.reject()));return n()}}function SA(e,t){return new self.Request(e.url,t)}class EA extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const TA=/\s/,kA={newCue(e,t,i,s){const r=[];let o,a,n,l,d;const h=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const s=by(d.trim()),p=Ey(t,i,s);null!=e&&null!=(c=e.cues)&&c.getCueById(p)||(a=new h(t,i,s),a.id=p,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return e&&r.length&&(r.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),r.forEach((t=>$p(e,t)))),r}},CA=Sc(Sc({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:vA,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:s,media:r}=i;if(!e||!r)return;const o=performance.now(),a=t?t.stats:e.stats,n=t?t.duration:e.duration,l=o-a.loading.start,d=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=d)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!s||r.paused||!r.playbackRate||!r.readyState)return;const h=i.mainForwardBufferInfo;if(null===h)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,n/(2*u)*1e3))return;const p=h.len/u,f=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&f>-1,g=this.getBwEstimate(),y=i.levels,A=y[e.level],b=a.total||Math.max(a.loaded,Math.round(n*A.averageBitrate/8));let v=m?l-f:l;v<1&&m&&(v=Math.min(l,8*a.loaded/g));const _=m?1e3*a.loaded/v:0,w=_?(b-a.loaded)/_:8*b/g+c/1e3;if(w<=p)return;const S=_?8*_:g;let E,T=Number.POSITIVE_INFINITY;for(E=e.level-1;E>d;E--){const e=y[E].maxBitrate;if(T=this.getTimeToLoadFrag(c/1e3,S,n*e,!y[E].details),T=w)return;if(T>10*n)return;i.nextLoadLevel=i.nextAutoLevel=E,m?this.bwEstimator.sample(l-Math.min(c,f),a.loaded):this.bwEstimator.sampleTTFB(l);const k=y[E].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>k&&this.resetEstimator(k),this.clearTimer(),Uc.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${p.toFixed(3)} s\n Estimated load time for current fragment: ${w.toFixed(3)} s\n Estimated load time for down switch fragment: ${T.toFixed(3)} s\n TTFB estimate: ${0|f} ms\n Current BW estimate: ${Cc(g)?0|g:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${E} @ ${0|k} bps`),i.trigger(Lc.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(Uc.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new Of(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.FRAG_LOADING,this.onFragLoading,this),e.on(Lc.FRAG_LOADED,this.onFragLoaded,this),e.on(Lc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Lc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Lc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Lc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Lc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(Lc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.FRAG_LOADING,this.onFragLoading,this),e.off(Lc.FRAG_LOADED,this.onFragLoaded,this),e.off(Lc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Lc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Lc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Lc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Lc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(Lc.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const i=t.frag;if(!this.ignoreFragment(i)){var s;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(s=t.part)?s:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case Ic.BUFFER_ADD_CODEC_ERROR:case Ic.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case Ic.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:s}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=s?s.stats:e.stats,r=t-i.loading.start,o=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&o>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(e,o),i.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(e,t,i,s){return e+i/t+(s?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:s}=t.stats,r=s.end-s.start;Cc(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const s=i?i.stats:t.stats;if(t.type===Up&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,r=this.hls.levels[t.level],o=(r.loaded?r.loaded.bytes:0)+s.loaded,a=(r.loaded?r.loaded.duration:0)+e;r.loaded={bytes:o,duration:a},r.realBitrate=Math.round(8*o/a)}if(t.bitrateTest){const e={stats:s,frag:t,part:i,id:t.type};this.onFragBuffered(Lc.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:s}=t,r=null!=s&&s.stats.loaded?s.stats:i.stats;if(r.aborted)return;if(this.ignoreFragment(i))return;const o=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(o,r.loaded),r.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=o/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==Up||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,r=this.findBestLevel(i,t,e,0,s,1,1);if(r>-1)return r;const o=this.hls.firstLevel,a=Math.min(Math.max(o,t),e);return Uc.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${o} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const s=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,s)&&t[e].loadError<=t[s].loadError)return e}return this._nextAutoLevel=s,this.nextAutoLevelKey=this.getAutoLevelKey(),s}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:s,config:r,minAutoLevel:o}=i,a=t?t.duration:e?e.duration:0,n=this.getBwEstimate(),l=this.getStarvationDelay();let d=r.abrBandWidthFactor,h=r.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(n,o,s,l,0,d,h);if(e>=0)return e}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-e,Uc.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),d=h=1}}const u=this.findBestLevel(n,o,s,l,c,d,h);if(Uc.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const p=i.levels[o],f=i.levels[i.loadLevel];return(null==p?void 0:p.bitrate)<(null==f?void 0:f.bitrate)?o:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,s=e.mainForwardBufferInfo;return(s?s.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,s,r,o,a){var n;const l=s+r,d=this.lastLoadedFragLevel,h=-1===d?this.hls.firstLevel:d,{fragCurrent:c,partCurrent:u}=this,{levels:p,allAudioTracks:f,loadLevel:m,config:g}=this.hls;if(1===p.length)return 0;const y=p[h],A=!(null==y||null==(n=y.details)||!n.live),b=-1===m||-1===d;let v,_="SDR",w=(null==y?void 0:y.frameRate)||0;const{audioPreference:S,videoPreference:E}=g,T=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const s=t.channels||"2";return i.channels[s]=(i.channels[s]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(f));if(b){if(-1!==this.firstSelection)return this.firstSelection;const s=this.codecTiers||(this.codecTiers=function(e,t,i,s){return e.slice(i,s+1).reduce(((e,i)=>{if(!i.codecSet)return e;const s=i.audioGroups;let r=e[i.codecSet];r||(e[i.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!s,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,i.bitrate);const o=Math.min(i.height,i.width);return r.minHeight=Math.min(r.minHeight,o),r.minFramerate=Math.min(r.minFramerate,i.frameRate),r.maxScore=Math.max(r.maxScore,i.score),r.fragmentError+=i.fragmentError,r.videoRanges[i.videoRange]=(r.videoRanges[i.videoRange]||0)+1,s&&s.forEach((e=>{if(!e)return;const i=t.groups[e];r.hasDefaultAudio=r.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{r.channels[e]=(r.channels[e]||0)+i.channels[e]}))})),e}),{})}(p,T,t,i)),r=function(e,t,i,s,r){const o=Object.keys(e),a=null==s?void 0:s.channels,n=null==s?void 0:s.audioCodec,l=a&&2===parseInt(a);let d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[];const{preferHDR:g,allowedVideoRanges:y}=Wf(t,r);for(let t=o.length;t--;){const i=e[o[t]];d=i.channels[2]>0,c=Math.min(c,i.minHeight),u=Math.min(u,i.minFramerate),p=Math.min(p,i.minBitrate);const s=y.filter((e=>i.videoRanges[e]>0));s.length>0&&(h=!0,m=s)}c=Cc(c)?c:0,u=Cc(u)?u:0;const A=Math.max(1080,c),b=Math.max(30,u);p=Cc(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);const v=o.reduce(((t,s)=>{const r=e[s];if(s===t)return t;if(r.minBitrate>i)return $f(s,`min bitrate of ${r.minBitrate} > current estimate of ${i}`),t;if(!r.hasDefaultAudio)return $f(s,"no renditions with default or auto-select sound found"),t;if(n&&s.indexOf(n.substring(0,4))%5!=0)return $f(s,`audio codec preference "${n}" not found`),t;if(a&&!l){if(!r.channels[a])return $f(s,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),t}else if((!n||l)&&d&&0===r.channels[2])return $f(s,"no renditions with stereo sound found"),t;return r.minHeight>A?($f(s,`min resolution of ${r.minHeight} > maximum of ${A}`),t):r.minFramerate>b?($f(s,`min framerate of ${r.minFramerate} > maximum of ${b}`),t):m.some((e=>r.videoRanges[e]>0))?r.maxScore=mp(t)||r.fragmentError>e[t].fragmentError)?t:(f=r.maxScore,s):($f(s,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0);return{codecSet:v,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}(s,_,e,S,E),{codecSet:o,videoRanges:a,minFramerate:n,minBitrate:l,preferHDR:d}=r;v=o,_=d?a[a.length-1]:a[0],w=n,e=Math.max(e,l),Uc.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else v=null==y?void 0:y.codecSet,_=null==y?void 0:y.videoRange;const k=u?u.duration:c?c.duration:0,C=this.bwEstimator.getEstimateTTFB()/1e3,x=[];for(let n=i;n>=t;n--){var D;const t=p[n],c=n>h;if(!t)continue;if(g.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&Gf(t,T,_,w,e,S)?(t.supportedPromise=zf(t,T,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,s=i.indexOf(t);e.error?Uc.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${s} ${JSON.stringify(e)}`):e.supported||(Uc.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${s} ${JSON.stringify(e)}`),s>-1&&i.length>1&&(Uc.log(`[abr] Removing unsupported level ${s}`),this.hls.removeLevel(s)))}))):t.supportedResult=Nf}if(v&&t.codecSet!==v||_&&t.videoRange!==_||c&&w>t.frameRate||!c&&w>0&&w=2*k&&0===r?p[n].averageBitrate:p[n].maxBitrate,I=this.getTimeToLoadFrag(C,L,R*E,void 0===f);if(L>=R&&(n===d||0===t.loadError&&0===t.fragmentError)&&(I<=C||!Cc(I)||A&&!this.bitrateTestDelay||I${n} adjustedbw(${Math.round(L)})-bitrate=${Math.round(L-R)} ttfb:${C.toFixed(1)} avgDuration:${E.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${b} codecSet:${v} videoRange:${_} hls.loadLevel:${m}`)),b&&(this.firstSelection=n),n}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,s=Math.min(Math.max(e,i),t);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}},bufferController:class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(Lc.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&Uc.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";this.appendSource=e.config.preferManagedMediaSource&&"undefined"!=typeof self&&self.ManagedMediaSource,this.log=Uc.log.bind(Uc,t),this.warn=Uc.warn.bind(Uc,t),this.error=Uc.error.bind(Uc,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:e}=this;e.on(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Lc.BUFFER_RESET,this.onBufferReset,this),e.on(Lc.BUFFER_APPENDING,this.onBufferAppending,this),e.on(Lc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Lc.BUFFER_EOS,this.onBufferEos,this),e.on(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Lc.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(Lc.FRAG_PARSED,this.onFragParsed,this),e.on(Lc.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Lc.BUFFER_RESET,this.onBufferReset,this),e.off(Lc.BUFFER_APPENDING,this.onBufferAppending,this),e.off(Lc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Lc.BUFFER_EOS,this.onBufferEos,this),e.off(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Lc.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(Lc.FRAG_PARSED,this.onFragParsed,this),e.off(Lc.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new zg(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,s=dp(this.appendSource);if(i&&s){var r;const e=this.mediaSource=new s;this.log(`created media source: ${null==(r=e.constructor)?void 0:r.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const s=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||s&&e instanceof s,$g(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.message} while calling endOfStream`)}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&$g(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(Lc.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var s;const{id:r,codec:o,levelCodec:a,container:n,metadata:l}=t[e],d=bp(i.codec,i.levelCodec),h=null==d?void 0:d.replace(Wg,"$1");let c=bp(o,a);const u=null==(s=c)?void 0:s.replace(Wg,"$1");if(c&&h!==u){"audio"===e.slice(0,5)&&(c=Ap(c,this.appendSource));const t=`${n};codecs=${c}`;this.appendChangeType(e,t),this.log(`switching codec ${d} to ${c}`),this.tracks[e]={buffer:i.buffer,codec:o,container:n,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[e]=t[e]})),i)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${s.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,s={execute:()=>{const s=this.sourceBuffer[e];s&&(this.log(`changing ${e} sourceBuffer type to ${t}`),s.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(s,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:s,tracks:r}=this,{data:o,type:a,frag:n,part:l,chunkMeta:d}=t,h=d.buffering[a],c=self.performance.now();h.start=c;const u=n.stats.buffering,p=l?l.stats.buffering:null;0===u.start&&(u.start=c),p&&0===p.start&&(p.start=c);const f=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==f?void 0:f.container)&&(m=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);const g=n.start,y={execute:()=>{if(h.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=g-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${g} (delta: ${t}) sn: ${n.sn})`),e.timestampOffset=g)}}this.appendExecutor(o,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();h.executeEnd=h.end=e,0===u.first&&(u.first=e),p&&0===p.first&&(p.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=sm.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(Lc.BUFFER_APPENDED,{type:a,frag:n,part:l,chunkMeta:d,parent:n.type,timeRanges:i})},onError:e=>{const t={type:Rc.MEDIA_ERROR,parent:n.type,details:Ic.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:n,part:l,chunkMeta:d,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=Ic.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=Ic.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(Lc.ERROR,t)}};s.append(y,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,s=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(Lc.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(s(e),e)}))}onFragParsed(e,t){const{frag:i,part:s}=t,r=[],o=s?s.elementaryStreams:i.elementaryStreams;o[Hc]?r.push("audiovideo"):(o[$c]&&r.push("audio"),o[Vc]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);const t=s?s.stats:i.stats;this.hls.trigger(Lc.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),r)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const s=this.sourceBuffer[i];return!s||t.type&&t.type!==i||(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const s=e.config,r=i.currentTime,o=t.levelTargetDuration,a=t.live&&null!==s.liveBackBufferLength?s.liveBackBufferLength:s.backBufferLength;if(Cc(a)&&a>0){const e=Math.max(a,o),t=Math.floor(r/o)*o-e;this.flushBackBuffer(r,o,t)}if(Cc(s.frontBufferFlushThreshold)&&s.frontBufferFlushThreshold>0){const e=Math.max(s.maxBufferLength,s.frontBufferFlushThreshold),t=Math.max(e,o),i=Math.floor(r/o)*o+t;this.flushFrontBuffer(r,o,i)}}flushBackBuffer(e,t,i){const{details:s,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((o=>{const a=r[o];if(a){const r=sm.getBuffered(a);if(r.length>0&&i>r.start(0)){if(this.hls.trigger(Lc.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)this.hls.trigger(Lc.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&r.end(r.length-1)-e<2*t)return void this.log(`Cannot flush ${o} back buffer while SourceBuffer is in ended state`);this.hls.trigger(Lc.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:o})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((r=>{const o=s[r];if(o){const s=sm.getBuffered(o),a=s.length;if(a<2)return;const n=s.start(a-1),l=s.end(a-1);if(i>n||e>=n&&e<=l)return;if(o.ended&&e-l<2*t)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(Lc.BUFFER_FLUSHING,{startOffset:n,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:s}=this,r=e.fragments[0].start+e.totalduration,o=i.duration,a=Cc(s.duration)?s.duration:0;e.live&&t.config.liveDurationInfinity?(s.duration=1/0,this.updateSeekableRange(e)):(r>a&&r>o||!Cc(o))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),s.duration=r)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const s=Math.max(0,i[0].start),r=Math.max(s,s+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${s}-${r}.`),t.setLiveSeekableRange(s,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,s=Object.keys(i).length;if(s&&(!e||2===s||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(Lc.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){const r=e[s];if(!r)throw Error(`source buffer exists for track ${s}, however track does not`);let o=r.levelCodec||r.codec;o&&"audio"===s.slice(0,5)&&(o=Ap(o,this.appendSource));const a=`${r.container};codecs=${o}`;this.log(`creating sourceBuffer(${a})`);try{const e=t[s]=i.addSourceBuffer(a),n=s;this.addBufferListener(n,"updatestart",this._onSBUpdateStart),this.addBufferListener(n,"updateend",this._onSBUpdateEnd),this.addBufferListener(n,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(n,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(Lc.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:o,container:r.container,levelCodec:r.levelCodec,metadata:r.metadata,id:r.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:a})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const s=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${s}`,t),this.hls.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:s,fatal:!1});const r=this.operationQueue.current(e);r&&r.onError(s)}removeExecutor(e,t,i){const{media:s,mediaSource:r,operationQueue:o,sourceBuffer:a}=this,n=a[e];if(!s||!r||!n)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void o.shiftAndExecuteNext(e);const l=Cc(s.duration)?s.duration:1/0,d=Cc(r.duration)?r.duration:1/0,h=Math.max(0,t),c=Math.min(i,l,d);c>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${c}] from the ${e} SourceBuffer`),n.remove(h,c)):o.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,s=t.map((e=>i.appendBlocker(e)));Promise.all(s).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const s=this.sourceBuffer[e];if(!s)return;const r=i.bind(this,e);this.listeners[e].push({event:t,listener:r}),s.addEventListener(t,r)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:Ny,errorController:class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=Uc.log.bind(Uc,"[info]:"),this.warn=Uc.warn.bind(Uc,"[warning]:"),this.error=Uc.error.bind(Uc,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Lc.ERROR,this.onError,this),e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Lc.ERROR,this.onError,this),e.off(Lc.ERROR,this.onErrorOut,this),e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===Up?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,s;if(t.fatal)return;const r=this.hls,o=t.context;switch(t.details){case Ic.FRAG_LOAD_ERROR:case Ic.FRAG_LOAD_TIMEOUT:case Ic.KEY_LOAD_ERROR:case Ic.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case Ic.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:Df,flags:Pf});case Ic.FRAG_GAP:case Ic.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=Lf);case Ic.LEVEL_EMPTY_ERROR:case Ic.LEVEL_PARSING_ERROR:{var a,n;const e=t.parent===Up?t.level:r.loadLevel;t.details===Ic.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(n=a.levelDetails)&&n.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case Ic.LEVEL_LOAD_ERROR:case Ic.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==o?void 0:o.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,o.level)));case Ic.AUDIO_TRACK_LOAD_ERROR:case Ic.AUDIO_TRACK_LOAD_TIMEOUT:case Ic.SUBTITLE_LOAD_ERROR:case Ic.SUBTITLE_TRACK_LOAD_TIMEOUT:if(o){const e=r.levels[r.loadLevel];if(e&&(o.type===Mp&&e.hasAudioGroup(o.groupId)||o.type===Fp&&e.hasSubtitleGroup(o.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=Lf,void(t.errorAction.flags=Bf)}return;case Ic.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=r.levels[r.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:Lf,flags:Mf,hdcpLevel:i}:this.keySystemError(t)}return;case Ic.BUFFER_ADD_CODEC_ERROR:case Ic.REMUX_ALLOC_ERROR:case Ic.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(s=t.level)?s:r.loadLevel));case Ic.INTERNAL_EXCEPTION:case Ic.BUFFER_APPENDING_ERROR:case Ic.BUFFER_FULL_ERROR:case Ic.LEVEL_SWITCH_ERROR:case Ic.BUFFER_STALLED_ERROR:case Ic.BUFFER_SEEK_OVER_HOLE:case Ic.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:Df,flags:Pf})}t.type===Rc.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=_f(this.hls.config.playlistLoadPolicy,e),s=this.playlistError++;if(Ef(i,s,vf(e),e.response))return{action:If,flags:Pf,retryConfig:i,retryCount:s};const r=this.getLevelSwitchAction(e,t);return i&&(r.retryConfig=i,r.retryCount=s),r}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),s=t.levels[i],{fragLoadPolicy:r,keyLoadPolicy:o}=t.config,a=_f(e.details.startsWith("key")?o:r,e),n=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(s){e.details!==Ic.FRAG_GAP&&s.fragmentError++;if(Ef(a,n,vf(e),e.response))return{action:If,flags:Pf,retryConfig:a,retryCount:n}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=n),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const s=this.hls.levels[t];if(s){var r,o;const t=e.details;s.loadError++,t===Ic.BUFFER_APPEND_ERROR&&s.fragmentError++;let l=-1;const{levels:d,loadLevel:h,minAutoLevel:c,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const p=null==(r=e.frag)?void 0:r.type,f=(p===Op&&t===Ic.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===Ic.BUFFER_ADD_CODEC_ERROR||t===Ic.BUFFER_APPEND_ERROR))&&d.some((({audioCodec:e})=>s.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===Ic.BUFFER_ADD_CODEC_ERROR||t===Ic.BUFFER_APPEND_ERROR)&&d.some((({codecSet:e,audioCodec:t})=>s.codecSet!==e&&s.audioCodec===t)),{type:g,groupId:y}=null!=(o=e.context)?o:{};for(let i=d.length;i--;){const r=(i+h)%d.length;if(r!==h&&r>=c&&r<=u&&0===d[r].loadError){var a,n;const i=d[r];if(t===Ic.FRAG_GAP&&e.frag){const t=d[r].details;if(t){const i=kf(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(g===Mp&&i.hasAudioGroup(y)||g===Fp&&i.hasSubtitleGroup(y))continue;if(p===Op&&null!=(a=s.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||p===Np&&null!=(n=s.subtitleGroups)&&n.some((e=>i.hasSubtitleGroup(e)))||f&&s.audioCodec===i.audioCodec||!f&&s.audioCodec!==i.audioCodec||m&&s.codecSet===i.codecSet)continue}l=r;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:Lf,flags:Pf,nextAutoLevel:l}}return{action:Lf,flags:Bf}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case Df:break;case Lf:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===Ic.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:s,hdcpLevel:r,nextAutoLevel:o}=i;switch(s){case Pf:this.switchLevel(e,o);break;case Mf:r&&(t.maxHdcpLevel=rf[rf.indexOf(r)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,o)}switchLevel(e,t){void 0!==t&&e.errorAction&&(this.warn(`switching to level ${t} after ${e.details}`),this.hls.nextAutoLevel=t,e.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},fpsController:class{constructor(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const s=performance.now();if(t){if(this.lastTime){const e=s-this.lastTime,r=i-this.lastDroppedFrames,o=t-this.lastDecodedFrames,a=1e3*r/e,n=this.hls;if(n.trigger(Lc.FPS_DROP,{currentDropped:r,currentDecoded:o,totalDroppedFrames:i}),a>0&&r>n.config.fpsDroppedMonitoringThreshold*o){let e=n.currentLevel;Uc.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===n.autoLevelCapping||n.autoLevelCapping>=e)&&(e-=1,n.trigger(Lc.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:n.currentLevel}),n.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:hu,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:kA,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Im{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",Np),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Lc.ERROR,this.onError,this),e.on(Lc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Lc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(Lc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Lc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Lc.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Lc.ERROR,this.onError,this),e.off(Lc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Lc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(Lc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Lc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Lc.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=_m,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:i,success:s}=t;if(this.fragPrevious=i,this.state=_m,!s)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let o;const a=i.start;for(let e=0;e=r[e].start&&a<=r[e].end){o=r[e];break}const n=i.start+i.duration;o?o.end=n:(o={start:a,end:n},r.push(o)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:s}=t;if(0===i&&s!==Number.POSITIVE_INFINITY){const e=s-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew hf(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new hf(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Np),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const s=this.levels[this.currentTrackId];null!=s&&s.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,s&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:s,levels:r}=this,{details:o,id:a}=t;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const n=r[s];if(a>=r.length||a!==s||!n)return;this.log(`Subtitle track ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""},duration:${o.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(o.live||null!=(i=n.details)&&i.live){const e=this.mainDetails;if(o.deltaUpdateFailed||!e)return;const t=e.fragments[0];var d;if(n.details)l=this.alignPlaylists(o,n.details,null==(d=this.levelLastLoaded)?void 0:d.details),0===l&&t&&(l=t.start,gf(o,l));else o.hasProgramDateTime&&e.hasProgramDateTime?(dm(o,e),l=o.fragments[0].start):t&&(l=t.start,gf(o,l))}if(n.details=o,this.levelLastLoaded=n,this.startFragRequested||!this.mainDetails&&o.live||this.setStartPosition(this.mainDetails||o,l),this.tick(),o.live&&!this.fragCurrent&&this.media&&this.state===_m){kf(null,o.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),n.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,s=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),s.key.buffer,s.iv.buffer).catch((e=>{throw r.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const s=performance.now();r.trigger(Lc.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:s}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=_m}))}}doTick(){if(this.media){if(this.state===_m){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:s}=this,r=this.getLoadPosition(),o=sm.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,s.maxBufferHole),{end:a,len:n}=o,l=this.getFwdBufferInfo(this.media,Up),d=i.details;if(n>this.getMaxBufferLength(null==l?void 0:l.len)+d.levelTargetDuration)return;const h=d.fragments,c=h.length,u=d.edge;let p=null;const f=this.fragPrevious;if(au-e?0:e;p=kf(f,h,Math.max(h[0].start,a),t),!p&&f&&f.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Jp(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Lc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Lc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Lc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Lc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Lc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Lc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Lc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Lc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);Jp(this.media.textTracks).forEach((e=>{Vp(e)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Subtitle track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!r&&t){this.selectDefaultTrack=!1;const i=Vf(t,e);if(i>-1)r=e[i];else{const e=Vf(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const o={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(Lc.SUBTITLE_TRACKS_UPDATED,o),-1!==s&&-1===this.trackId&&this.setSubtitleTrack(s)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s-1){const e=this.tracksInGroup[s];return this.setSubtitleTrack(s),e}if(i)return null;{const i=Vf(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,s=t.groupId;let r=t.url;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(Lc.SUBTITLE_TRACK_LOADING,{url:r,id:i,groupId:s,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Jp(e.textTracks),i=this.currentTrack;let s;if(i&&(s=t.filter((e=>jg(i,e)))[0],s||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==s&&(e.mode="disabled")})),s){const e=this.subtitleDisplay?"showing":"hidden";s.mode!==e&&(s.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Cc(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e]||null;if(this.trackId=e,this.currentTrack=s,this.toggleTrackModes(),!s)return void this.hls.trigger(Lc.SUBTITLE_TRACK_SWITCH,{id:e});const r=!!s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;this.log(`Switching to subtitle-track ${e}`+(s?` "${s.name}" lang:${s.lang} group:${s.groupId}`:""));const{id:o,groupId:a="",name:n,type:l,url:d}=s;this.hls.trigger(Lc.SUBTITLE_TRACK_SWITCH,{id:o,groupId:a,name:n,type:l,url:d});const h=this.switchParams(s.url,null==i?void 0:i.details);this.loadPlaylist(h)}},timelineController:class{constructor(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Lc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Lc.FRAG_LOADING,this.onFragLoading,this),e.on(Lc.FRAG_LOADED,this.onFragLoaded,this),e.on(Lc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(Lc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(Lc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(Lc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(Lc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Lc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Lc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Lc.FRAG_LOADING,this.onFragLoading,this),e.off(Lc.FRAG_LOADED,this.onFragLoaded,this),e.off(Lc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(Lc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(Lc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(Lc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(Lc.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const e=new hy(this,"textTrack1"),t=new hy(this,"textTrack2"),i=new hy(this,"textTrack3"),s=new hy(this,"textTrack4");this.cea608Parser1=new ny(1,e,t),this.cea608Parser2=new ny(3,i,s)}}addCues(e,t,i,s,r){let o=!1;for(let e=r.length;e--;){const s=r[e],h=(a=s[0],n=s[1],l=t,d=i,Math.min(n,d)-Math.max(a,l));if(h>=0&&(s[0]=Math.min(s[0],t),s[1]=Math.max(s[1],i),o=!0,h/(i-t)>.5))return}var a,n,l,d;if(o||r.push([t,i]),this.config.renderTextTracksNatively){const r=this.captionsTracks[e];this.Cues.newCue(r,t,i,s)}else{const r=this.Cues.newCue(null,t,i,s);this.hls.trigger(Lc.CUES_PARSED,{type:"captions",cues:r,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:s,timescale:r}){const{unparsedVttFrags:o}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:s,timescale:r}),o.length&&(this.unparsedVttFrags=[],o.forEach((e=>{this.onFragLoaded(Lc.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let s=0;s{Vp(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===ky));if(this.config.enableWebVTT||s&&this.config.enableIMSC1){if(Og(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Jp(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let s;if(t){let i=null;for(let s=0;snull!==e)).map((e=>e.label));e.length&&Uc.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(Lc.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,s=this.captionsProperties[i];s&&(s.label=e.name,e.lang&&(s.languageCode=e.lang),s.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s,lastCc:r,lastSn:o,lastPartIndex:a}=this;if(this.enabled&&i&&s&&t.frag.type===Up){var n,l;const{cc:e,sn:d}=t.frag,h=null!=(n=null==t||null==(l=t.part)?void 0:l.index)?n:-1;d===o+1||d===o&&h===a+1||e===r||(i.reset(),s.reset()),this.lastCc=e,this.lastSn=d,this.lastPartIndex=h}}onFragLoaded(e,t){const{frag:i,payload:s}=t;if(i.type===Np)if(s.byteLength){const e=i.decryptdata,r="stats"in t;if(null==e||!e.encrypted||r){const e=this.tracks[i.level],r=this.vttCCs;r[i.cc]||(r[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===ky?this._parseIMSC1(i,s):this._parseVTTs(t)}}else this.hls.trigger(Lc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;Ly(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(Lc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{Uc.log(`Failed to parse IMSC1: ${t}`),i.trigger(Lc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:s}=e,{initPTS:r,unparsedVttFrags:o}=this,a=r.length-1;if(!r[i.cc]&&-1===a)return void o.push(e);const n=this.hls;Ty(null!=(t=i.initSegment)&&t.data?Ku(i.initSegment.data,new Uint8Array(s)):s,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),n.trigger(Lc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const r="Missing initPTS for VTT MPEGTS"===t.message;r?o.push(e):this._fallbackToIMSC1(i,s),Uc.log(`Failed to parse VTT cue: ${t}`),r&&a>i.cc||n.trigger(Lc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||Ly(t,this.initPTS[e.cc],(()=>{i.textCodec=ky,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>$p(i,e)))}else{const s=this.tracks[t];if(!s)return;const r=s.default?"default":"subtitles"+t;i.trigger(Lc.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===Np&&this.onFragLoaded(Lc.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s}=this;if(!this.enabled||!i||!s)return;const{frag:r,samples:o}=t;if(r.type!==Up||"NONE"!==this.closedCaptionsForLevel(r))for(let e=0;eHp(e[s],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==s){const{textTracks:e}=this;Object.keys(e).forEach((i=>Hp(e[i],t,s)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let s=2;for(let r=0;r0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=_m):(this.loadedmetadata=!1,this.state=Tm),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case _m:this.doTickIdle();break;case Tm:{var e;const{levels:t,trackId:i}=this,s=null==t||null==(e=t[i])?void 0:e.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=Lm}break}case Em:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=_m}break}case Lm:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:s,complete:r}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Sm;const e={frag:t,part:i,payload:s.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),r&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=sm.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Cf(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=_m}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=_m)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:s}=this,r=e.config;if(!i&&(this.startFragRequested||!r.startFragPrefetch)||null==t||!t[s])return;const o=t[s],a=o.details;if(!a||a.live&&this.levelLastLoaded!==o||this.waitForCdnTuneIn(a))return void(this.state=Tm);const n=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&n&&(this.bufferFlushed=!1,this.afterBufferFlushed(n,$c,Op));const l=this.getFwdBufferInfo(n,Op);if(null===l)return;const{bufferedTrack:d,switchingTrack:h}=this;if(!h&&this._streamEnded(l,a))return e.trigger(Lc.BUFFER_EOS,{type:"audio"}),void(this.state=xm);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,Up),u=l.len,p=this.getMaxBufferLength(null==c?void 0:c.len),f=a.fragments,m=f[0].start;let g=this.flushing?this.getLoadPosition():l.end;if(h&&i){const e=this.getLoadPosition();d&&!Ng(h.attrs,d.attrs)&&(g=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=p&&!h&&gc.end+a.targetduration;if(b||(null==c||!c.len)&&l.len){const e=this.getAppendedFrag(y.start,Up);if(null===e)return;if(A||(A=!!e.gap||!!b&&0===c.len),b&&!A||A&&l.nextStart&&l.nextStartnew hf(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:s}=this;s&&(s.abortRequests(),this.removeUnbufferedFrags(s.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=_m,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=vm),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(Lc.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:s}=this,{details:r,id:o}=t;if(!s)return void this.warn(`Audio tracks were reset while loading level ${o}`);this.log(`Audio track ${o} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=s[o];let n=0;if(r.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(r);const e=this.mainDetails;if(r.deltaUpdateFailed||!e)return;var l;if(!a.details&&r.hasProgramDateTime&&e.hasProgramDateTime)dm(r,e),n=r.fragments[0].start;else n=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,n),this.state!==Tm||this.waitForCdnTuneIn(r)||(this.state=_m),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{config:o,trackId:a,levels:n}=this;if(!n)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=n[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const d=l.details;if(!d)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const h=o.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new Ug(this.hls,Op,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],p=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=s?s.index:-1,o=-1!==t,a=new rm(i.level,i.sn,i.stats.chunkCount,r.byteLength,t,o);c.push(r,p,h,"",i,s,d.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${d.startSN} ,${d.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:s,cache:new Pm,complete:!1};e.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=Lm}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i.type===Op)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(Lc.AUDIO_TRACK_SWITCHED,Sc({},e)))}this.fragBufferedComplete(i,s)}else if(!this.loadedmetadata&&i.type===Up){const e=this.videoBuffer||this.media;if(e){sm.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=Dm;else switch(t.details){case Ic.FRAG_GAP:case Ic.FRAG_PARSING_ERROR:case Ic.FRAG_DECRYPT_ERROR:case Ic.FRAG_LOAD_ERROR:case Ic.FRAG_LOAD_TIMEOUT:case Ic.KEY_LOAD_ERROR:case Ic.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Op,t);break;case Ic.AUDIO_TRACK_LOAD_ERROR:case Ic.AUDIO_TRACK_LOAD_TIMEOUT:case Ic.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Tm||(null==(i=t.context)?void 0:i.type)!==Mp||(this.state=_m);break;case Ic.BUFFER_APPEND_ERROR:case Ic.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===Ic.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case Ic.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==Vc&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==Vc){this.flushing=!1,this.bufferFlushed=!0,this.state===xm&&(this.state=_m);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,Op),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{details:h}=d,{audio:c,text:u,id3:p,initSegment:f}=r;if(!this.fragContextChanged(n)&&h){if(this.state=km,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=f&&f.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,f.tracks,e,o),s.trigger(Lc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}if(c){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=c;l&&(l.elementaryStreams[$c]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo($c,e,t,i,s),this.bufferFragmentData(c,n,l,o)}if(null!=p&&null!=(t=p.samples)&&t.length){const e=kc({id:i,frag:n,details:h},p);s.trigger(Lc.FRAG_PARSING_METADATA,e)}if(u){const e=kc({id:i,frag:n,details:h},u);s.trigger(Lc.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(n)}_bufferInitSegment(e,t,i,s){if(this.state!==km)return;t.video&&delete t.video;const r=t.audio;if(!r)return;r.id="audio";const o=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${o}/${r.codec}]`),o&&1===o.split(",").length&&(r.levelCodec=o),this.hls.trigger(Lc.BUFFER_CODECS,t);const a=r.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:s,parent:i.type,data:a};this.hls.trigger(Lc.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);var r;if(this.fragCurrent=e,this.switchingTrack||s===Kf||s===Qf)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(r=t.details)&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=Lm;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&dm(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,s=null==i?void 0:i.attrs,r=e.attrs;t&&s&&(s.CHANNELS!==r.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(Lc.AUDIO_TRACK_SWITCHED,Sc({},e))}},audioTrackController:class extends Ff{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Lc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Lc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Lc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(Lc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Lc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Lc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Lc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(Lc.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Audio track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Audio track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!r&&t){const i=Vf(t,e,Jf);if(i>-1)r=e[i];else{const e=Vf(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(Lc.AUDIO_TRACKS_UPDATED,a);const n=this.trackId;if(-1!==s&&-1===n)this.setAudioTrack(s);else if(e.length&&-1===n){var o;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(o=this.groupIds)?void 0:o.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==Mp||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const s=this.currentTrack;if(s&&Hf(e,s,Jf))return s;const r=Vf(e,this.tracksInGroup,Jf);if(r>-1){const e=this.tracksInGroup[r];return this.setAudioTrack(r),e}if(s){let s=t.loadLevel;-1===s&&(s=t.firstAutoLevel);const r=function(e,t,i,s,r){const o=t[s],a=t.reduce(((e,t,i)=>{const s=t.uri;return(e[s]||(e[s]=[])).push(i),e}),{})[o.uri];a.length>1&&(s=Math.max.apply(Math,a));const n=o.videoRange,l=o.frameRate,d=o.codecSet.substring(0,4),h=qf(t,s,(t=>{if(t.videoRange!==n||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return Vf(e,o,r)>-1}));return h>-1?h:qf(t,s,(t=>{const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return Vf(e,o,r)>-1}))}(e,t.levels,i,s,Jf);if(-1===r)return null;t.nextLoadLevel=r}if(e.channels||e.audioCodec){const t=Vf(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e],r=s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;if(this.log(`Switching to audio-track ${e} "${s.name}" lang:${s.lang} group:${s.groupId} channels:${s.channels}`),this.trackId=e,this.currentTrack=s,this.hls.trigger(Lc.AUDIO_TRACK_SWITCHING,Sc({},s)),r)return;const o=this.switchParams(s.url,null==i?void 0:i.details);this.loadPlaylist(o)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Wy.MANIFEST,su:!this.initialized})}catch(e){Uc.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],s=this.getObjectType(t),r={d:1e3*t.duration,ot:s};s!==Wy.VIDEO&&s!==Wy.AUDIO&&s!=Wy.MUXED||(r.br=i.bitrate/1e3,r.tb=this.getTopBandwidth(s)/1e3,r.bl=this.getBufferLength(s)),this.apply(e,r)}catch(e){Uc.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}))}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Lc.MEDIA_DETACHED,this.onMediaDetached,this),e.on(Lc.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(Lc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Lc.MEDIA_DETACHED,this.onMediaDetached,this),e.off(Lc.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var i,s;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(s=t.tracks.video)?void 0:s.buffer}createData(){var e;return{v:1,sf:$y.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){kc(t,this.createData());const i=t.ot===Wy.INIT||t.ot===Wy.VIDEO||t.ot===Wy.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:s}=this;s&&(t=Object.keys(t).reduce(((e,i)=>(s.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),fA(e.headers,t)):e.url=gA(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Wy.TIMED_TEXT:"initSegment"===e.sn?Wy.INIT:"audio"===t?Wy.AUDIO:"main"===t?this.hls.audioTracks.length?Wy.VIDEO:Wy.MUXED:void 0}getTopBandwidth(e){let t,i=0;const s=this.hls;if(e===Wy.AUDIO)t=s.audioTracks;else{const e=s.maxAutoLevel,i=e>-1?e+1:s.levels.length;t=s.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Wy.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*sm.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}},contentSteeringController:class{constructor(e){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.log=Uc.log.bind(Uc,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Lc.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Lc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Lc.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===Lf&&i.flags===Bf){const e=this.levels;let s=this.pathwayPriority,r=this.pathwayId;if(t.context){const{groupId:i,pathwayId:s,type:o}=t.context;i&&e?r=this.getPathwayForGroupId(i,o,r):s&&(r=s)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!s&&e&&(s=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==r),i.resolved||Uc.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${r} levels: ${e?e.length:e} priorities: ${JSON.stringify(s)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,s=performance.now();Object.keys(i).forEach((e=>{s-i[e]>3e5&&delete i[e]}));for(let s=0;s0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,bf(t),this.hls.trigger(Lc.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[o];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,i){const s=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:r,"BASE-ID":o,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===r)))return;const n=this.getLevelsForPathway(o).map((e=>{const t=new jc(e.attrs);t["PATHWAY-ID"]=r;const o=t.AUDIO&&`${t.AUDIO}_clone_${r}`,n=t.SUBTITLES&&`${t.SUBTITLES}_clone_${r}`;o&&(i[t.AUDIO]=o,t.AUDIO=o),n&&(s[t.SUBTITLES]=n,t.SUBTITLES=n);const l=AA(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),d=new hf({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${s}"`);const o=e.data;if(1!==o.VERSION)return void this.log(`Steering VERSION ${o.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=o.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":n,"PATHWAY-PRIORITY":l}=o;if(a)try{this.uri=new self.URL(a,s).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),n&&this.clonePathways(n);const d={steeringManifest:o,url:s.toString()};this.hls.trigger(Lc.STEERING_MANIFEST_LOADED,d),l&&this.updatePathwayPriority(l)},onError:(e,t,i,s)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,r);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(r=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${s}`),this.loader.load(r,n,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function xA(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(xA):Object.keys(e).reduce(((t,i)=>(t[i]=xA(e[i]),t)),{}):e}function DA(e){const t=e.loader;if(t!==wA&&t!==vA)Uc.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=wA,e.progressive=!0,e.enableSoftwareAES=!0,Uc.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let LA;class RA extends Ff{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Lc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Lc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Lc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Lc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Lc.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(Lc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Lc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Lc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Lc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Lc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Lc.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,s=[],r={},o={};let a=!1,n=!1,l=!1;t.levels.forEach((e=>{var t,d;const h=e.attrs;let{audioCodec:c,videoCodec:u}=e;-1!==(null==(t=c)?void 0:t.indexOf("mp4a.40.34"))&&(LA||(LA=/chrome|firefox/i.test(navigator.userAgent)),LA&&(e.audioCodec=c=void 0)),c&&(e.audioCodec=c=Ap(c,i)),0===(null==(d=u)?void 0:d.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:p,height:f,unknownCodecs:m}=e;if(a||(a=!(!p||!f)),n||(n=!!u),l||(l=!!c),null!=m&&m.length||c&&!cp(c,"audio",i)||u&&!cp(u,"video",i))return;const{CODECS:g,"FRAME-RATE":y,"HDCP-LEVEL":A,"PATHWAY-ID":b,RESOLUTION:v,"VIDEO-RANGE":_}=h,w=`${`${b||"."}-`}${e.bitrate}-${v}-${y}-${g}-${_}-${A}`;if(r[w])if(r[w].uri===e.url||e.attrs["PATHWAY-ID"])r[w].addGroupId("audio",h.AUDIO),r[w].addGroupId("text",h.SUBTITLES);else{const t=o[w]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new hf(e);r[w]=i,s.push(i)}else{const t=new hf(e);r[w]=t,o[w]=1,s.push(t)}})),this.filterAndSortMediaOptions(s,t,a,n,l)}filterAndSortMediaOptions(e,t,i,s,r){let o=[],a=[],n=e;if((i||s)&&r&&(n=n.filter((({videoCodec:e,videoRange:t,width:i,height:s})=>{return(!!e||!(!i||!s))&&(!!(r=t)&&of.indexOf(r)>-1);var r}))),0===n.length)return void Promise.resolve().then((()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;o=t.audioTracks.filter((t=>!t.audioCodec||cp(t.audioCodec,"audio",e))),IA(o)}t.subtitles&&(a=t.subtitles,IA(a));const l=n.slice(0);n.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return of.indexOf(e.videoRange)-of.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=fp(e.videoCodec),s=fp(t.videoCodec);if(i!==s)return s-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=mp(e.codecSet),s=mp(t.codecSet);if(i!==s)return s-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let d=l[0];if(this.steering&&(n=this.steering.filterParsedLevels(n),n.length!==l.length))for(let e=0;ei&&i===CA.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const c=r&&!s,u={levels:n,audioTracks:o,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:s,altAudio:!c&&o.some((e=>!!e.url))};this.hls.trigger(Lc.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),s=e<0;if(this.hls.trigger(Lc.ERROR,{type:Rc.OTHER_ERROR,details:Ic.LEVEL_SWITCH_ERROR,level:e,fatal:s,error:i,reason:i.message}),s)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,s=this.currentLevel,r=s?s.attrs["PATHWAY-ID"]:void 0,o=t[e],a=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,i===e&&o.details&&s&&r===a)return;this.log(`Switching to level ${e} (${o.height?o.height+"p ":""}${o.videoRange?o.videoRange+" ":""}${o.codecSet?o.codecSet+" ":""}@${o.bitrate})${a?" with Pathway "+a:""} from level ${i}${r?" with Pathway "+r:""}`);const n={level:e,attrs:o.attrs,details:o.details,bitrate:o.bitrate,averageBitrate:o.averageBitrate,maxBitrate:o.maxBitrate,realBitrate:o.realBitrate,width:o.width,height:o.height,codecSet:o.codecSet,audioCodec:o.audioCodec,videoCodec:o.videoCodec,audioGroups:o.audioGroups,subtitleGroups:o.subtitleGroups,loaded:o.loaded,loadError:o.loadError,fragmentError:o.fragmentError,name:o.name,id:o.id,uri:o.uri,url:o.url,urlId:0,audioGroupIds:o.audioGroupIds,textGroupIds:o.textGroupIds};this.hls.trigger(Lc.LEVEL_SWITCHING,n);const l=o.details;if(!l||l.live){const e=this.switchParams(o.uri,null==s?void 0:s.details);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===Bp&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===Up){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:s,details:r}=t,o=this._levels[s];var a;if(!o)return this.warn(`Invalid level index ${s}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));s===this.currentLevelIndex?(0===o.fragmentError&&(o.loadError=0),this.playlistLoaded(s,t,o.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let s=i.uri;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const r=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${s}`),this.clearTimer(),this.hls.trigger(Lc.LEVEL_LOADING,{url:s,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));bf(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(Lc.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(Lc.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function IA(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class PA{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const s=this.keyUriToKeyInfo[i].loader;if(s){var t;if(e&&e!==(null==(t=s.context)?void 0:t.frag.type))return;s.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=Ic.KEY_LOAD_ERROR,i,s,r){return new fm({type:Rc.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:i,networkDetails:s})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:s}=e;for(let e=0;e{r.setKeyFormat(e)}));break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((t=>this.loadInternal(e,t))):this.loadInternal(e)}loadInternal(e,t){var i,s;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const i=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,Ic.KEY_LOAD_ERROR,i))}const o=r.uri;if(!o)return Promise.reject(this.createKeyLoadError(e,Ic.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${o}"`)));let a=this.keyUriToKeyInfo[o];if(null!=(i=a)&&i.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var n;if(null!=(s=a)&&s.keyLoadPromise)switch(null==(n=a.mediaKeySessionContext)?void 0:n.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(r.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,Ic.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,s=new(0,i.loader)(i);return t.keyLoader=e.loader=s,e.keyLoadPromise=new Promise(((r,o)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},n=i.keyLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{const{frag:a,keyInfo:n,url:l}=i;if(!a.decryptdata||n!==this.keyUriToKeyInfo[l])return o(this.createKeyLoadError(a,Ic.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),s));n.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,n.loader=null,r({frag:a,keyInfo:n})},onError:(e,i,s,r)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Ic.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),s,Sc({url:a.url,data:void 0},e)))},onTimeout:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Ic.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),s))},onAbort:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Ic.INTERNAL_ABORTED,new Error("key loading aborted"),s))}};s.load(a,l,d)}))}resetLoader(e){const{frag:t,keyInfo:i,url:s}=e,r=i.loader;t.keyLoader===r&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[s],r&&r.destroy()}}function BA(){return self.SourceBuffer||self.WebKitSourceBuffer}function MA(){if(!dp())return!1;const e=BA();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class FA{constructor(e,t,i,s){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=i,this.hls=s}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:s,stalled:r}=this;if(null===s)return;const{currentTime:o,seeking:a}=s,n=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,o!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const e=self.performance.now()-r;Uc.warn(`playback not stuck anymore @${o}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||n)return void(this.stalled=null);if(s.paused&&!a||s.ended||0===s.playbackRate||!sm.getBuffered(s).length)return void(this.nudgeRetry=0);const d=sm.bufferInfo(s,o,0),h=d.nextStart||0;if(a){const e=d.len>2,i=!h||t&&t.start<=o||h-o>2&&!this.fragmentTracker.getPartialFragment(o);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(d.len>0)&&!h)return;const e=Math.max(h,d.start||0)-o,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(c=t.details)?void 0:c.live)?2*t.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(o);if(e>0&&(e<=i||r))return void(s.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const p=u-r;if(!a&&p>=250&&(this._reportStall(d),!this.media))return;const f=sm.bufferInfo(s,o,i.maxBufferHole);this._tryFixBufferStall(f,p)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:s,media:r}=this;if(null===r)return;const o=r.currentTime,a=s.getPartialFragment(o);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-o1e3*i.highBufferWatchdogPeriod&&(Uc.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:s}=this;if(!s&&i){this.stallReported=!0;const s=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);Uc.warn(s.message),t.trigger(Lc.ERROR,{type:Rc.MEDIA_ERROR,details:Ic.BUFFER_STALLED_ERROR,fatal:!1,error:s,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:s}=this;if(null===s)return 0;const r=s.currentTime,o=sm.bufferInfo(s,r,0),a=r0&&o.len<1&&s.readyState<3,d=a-r;if(d>0&&(n||l)){if(d>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===r){const e=t.getAppendedFrag(0,Up);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=_m,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=vm}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Rm:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],s=null==i?void 0:i.details;if(s&&(!s.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(s))break;this.state=_m;break}if(this.hls.nextLoadLevel!==this.level){this.state=_m;break}break}case Em:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=_m}}}this.state===_m&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(null===t||!s&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=e.nextLoadLevel;if(null==i||!i[r])return;const o=i[r],a=this.getMainFwdBufferInfo();if(null===a)return;const n=this.getLevelDetails();if(n&&this._streamEnded(a,n)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(Lc.BUFFER_EOS,e),void(this.state=xm)}e.loadLevel!==r&&-1===e.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=o.details;if(!l||this.state===Rm||l.live&&this.levelLastLoaded!==o)return this.level=r,void(this.state=Rm);const d=a.len,h=this.getMaxBufferLength(o.maxBitrate);if(d>=h)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Xf){var p;const e=(null!=(p=this.backtrackFragment)?p:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?$c:Vc,t=(e===Vc?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,Up)}u=this.getNextFragmentLoopLoading(u,l,a,Up,h)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,o,c))}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);this.fragCurrent=e,s===Kf||s===Qf?"initSegment"===e.sn?this._loadInitSegment(e,t):this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):(this.startFragRequested=!0,super.loadFragment(e,t,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,Up)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const s=this.getAppendedFrag(t.currentTime);s&&s.start>1&&this.flushMainBuffer(0,s.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*r.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],s=this.fragLastKbps;i=s&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*s)+1:0}else i=0;const o=this.getBufferedFrag(t.currentTime+i);if(o){const e=this.followingBufferedFrag(o);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,s=Math.max(o.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(s,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case wm:case Sm:case Em:case km:case Cm:this.state=_m}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new FA(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const e=this.media,t=e?e.currentTime:null;Cc(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(Lc.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(e,t){let i=!1,s=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),s=s||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&s&&!function(){var e;const t=BA();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1}onLevelLoading(e,t){const{levels:i}=this;if(!i||this.state!==_m)return;const s=i[t.level];(!s.details||s.details.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(s.details))&&(this.state=Rm)}onLevelLoaded(e,t){var i;const{levels:s}=this,r=t.level,o=t.details,a=o.totalduration;if(!s)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""}, cc [${o.startCC}, ${o.endCC}] duration:${a}`);const n=s[r],l=this.fragCurrent;!l||this.state!==Sm&&this.state!==Em||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let d=0;if(o.live||null!=(i=n.details)&&i.live){var h;if(this.checkLiveUpdate(o),o.deltaUpdateFailed)return;d=this.alignPlaylists(o,n.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(n.details=o,this.levelLastLoaded=n,this.hls.trigger(Lc.LEVEL_UPDATED,{details:o,level:r}),this.state===Rm){if(this.waitForCdnTuneIn(o))return;this.state=_m}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,d),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{levels:o}=this;if(!o)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=o[i.level],n=a.details;if(!n)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,d=n.PTSKnown||!n.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new Ug(this.hls,Up,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=s?s.index:-1,f=-1!==p,m=new rm(i.level,i.sn,i.stats.chunkCount,r.byteLength,p,f),g=this.initPTS[i.cc];u.push(r,h,c,l,i,s,n.totalduration,d,m,g)}onAudioTrackSwitching(e,t){const i=this.altAudio;if(!!!t.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(Lc.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(Lc.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,s=!!this.hls.audioTracks[i].url;if(s){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=s,this.tick()}onBufferCreated(e,t){const i=t.tracks;let s,r,o=!1;for(const e in i){const t=i[e];if("main"===t.id){if(r=e,s=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else o=!0}o&&s?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i&&i.type!==Up)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===Cm&&(this.state=_m));const r=s?s.stats:i.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,s)}onError(e,t){var i;if(t.fatal)this.state=Dm;else switch(t.details){case Ic.FRAG_GAP:case Ic.FRAG_PARSING_ERROR:case Ic.FRAG_DECRYPT_ERROR:case Ic.FRAG_LOAD_ERROR:case Ic.FRAG_LOAD_TIMEOUT:case Ic.KEY_LOAD_ERROR:case Ic.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Up,t);break;case Ic.LEVEL_LOAD_ERROR:case Ic.LEVEL_LOAD_TIMEOUT:case Ic.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Rm||(null==(i=t.context)?void 0:i.type)!==Bp||(this.state=_m);break;case Ic.BUFFER_APPEND_ERROR:case Ic.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===Ic.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case Ic.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!sm.getBuffered(e).length){const e=this.state!==_m?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=_m,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==$c||this.audioOnly&&!this.altAudio){const e=(t===Vc?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,Up),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(r{const{hls:s}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=_m,this.startFragRequested=!1,this.bitrateTest=!1;const r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),s.trigger(Lc.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{video:h,text:c,id3:u,initSegment:p}=r,{details:f}=d,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(n))this.fragmentTracker.removeFragment(n);else{if(this.state=km,p){if(null!=p&&p.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,p.tracks,e,o),s.trigger(Lc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:p.tracks})}const e=p.initPTS,t=p.timescale;Cc(e)&&(this.initPTS[n.cc]={baseTime:e,timescale:t},s.trigger(Lc.INIT_PTS_FOUND,{frag:n,id:i,initPTS:e,timescale:t}))}if(h&&f&&"initSegment"!==n.sn){const e=f.fragments[n.sn-1-f.startSN],t=n.sn===f.startSN,i=!e||n.cc>e.cc;if(!1!==r.independent){const{startPTS:e,endPTS:s,startDTS:r,endDTS:a}=h;if(l)l.elementaryStreams[h.type]={startPTS:e,endPTS:s,startDTS:r,endDTS:a};else if(h.firstKeyFrame&&h.independent&&1===o.id&&!i&&(this.couldBacktrack=!0),h.dropped&&h.independent){const r=this.getMainFwdBufferInfo(),o=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=h.firstKeyFramePTS?h.firstKeyFramePTS:e;if(!t&&o2&&(n.gap=!0);n.setElementaryStreamInfo(h.type,e,s,r,a),this.backtrackFragment&&(this.backtrackFragment=n),this.bufferFragmentData(h,n,l,o,t||i)}else{if(!t&&!i)return void this.backtrack(n);n.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=m;l&&(l.elementaryStreams[$c]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo($c,e,t,i,s),this.bufferFragmentData(m,n,l,o)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:n,details:f,samples:u.samples};s.trigger(Lc.FRAG_PARSING_METADATA,e)}if(f&&c){const e={id:i,frag:n,details:f,samples:c.samples};s.trigger(Lc.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,s){if(this.state!==km)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:r,video:o,audiovideo:a}=t;if(r){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==r.metadata.channelCount&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")),t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==r.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),r.levelCodec=t,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${r.codec}]`)}o&&(o.levelCodec=e.videoCodec,o.id="main",this.log(`Init video buffer, container:${o.container}, codecs[level/parsed]=[${e.videoCodec||""}/${o.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(Lc.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const r=t[e].initSegment;null!=r&&r.byteLength&&this.hls.trigger(Lc.BUFFER_APPENDING,{type:e,data:r,frag:i,part:null,chunkMeta:s,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,Up)}backtrack(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=_m}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(sm.isBuffered(e,i)?t=this.getAppendedFrag(i):sm.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(Lc.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(Lc.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Cc(t)&&Cc(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class OA{static get version(){return"1.5.7"}static isMSESupported(){return MA()}static isSupported(){return function(){if(!MA())return!1;const e=dp();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(pp(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(pp(t,"audio")))))}()}static getMediaSource(){return dp()}static get Events(){return Lc}static get ErrorTypes(){return Rc}static get ErrorDetails(){return Ic}static get DefaultConfig(){return OA.defaultConfig?OA.defaultConfig:CA}static set DefaultConfig(e){OA.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Fg,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){Fc(e,"debug","log","info","warn","error");try{Mc.log(`Debug logs enabled for "${t}" in hls.js version 1.5.7`)}catch(e){Mc=Bc}}else Mc=Bc}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=xA(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const r=`${"level"===e?"playlist":e}LoadPolicy`,o=void 0===t[r],a=[];s.forEach((s=>{const n=`${e}Loading${s}`,l=t[n];if(void 0!==l&&o){a.push(n);const e=i[r].default;switch(t[r]={default:e},s){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&Uc.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(t[r])}`)})),Sc(Sc({},i),t)}(OA.DefaultConfig,e);this.userConfig=e,t.progressive&&DA(t);const{abrController:i,bufferController:s,capLevelController:r,errorController:o,fpsController:a}=t,n=new o(this),l=this.abrController=new i(this),d=this.bufferController=new s(this),h=this.capLevelController=new r(this),c=new a(this),u=new zp(this),p=new tf(this),f=t.contentSteeringController,m=f?new f(this):null,g=this.levelController=new RA(this,m),y=new Zf(this),A=new PA(this.config),b=this.streamController=new UA(this,y,A);h.setStreamController(b),c.setStreamController(b);const v=[u,g,b];m&&v.splice(1,0,m),this.networkControllers=v;const _=[l,d,h,c,p,y];this.audioTrackController=this.createController(t.audioTrackController,v);const w=t.audioStreamController;w&&v.push(new w(this,y,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,v);const S=t.subtitleStreamController;S&&v.push(new S(this,y,A)),this.createController(t.timelineController,_),A.emeController=this.emeController=this.createController(t.emeController,_),this.cmcdController=this.createController(t.cmcdController,_),this.latencyController=this.createController(sf,_),this.coreComponents=_,v.push(n);const E=n.onErrorOut;"function"==typeof E&&this.on(Lc.ERROR,E,n)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(Uc.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===Lc.ERROR;this.trigger(Lc.ERROR,{type:Rc.OTHER_ERROR,details:Ic.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){Uc.log("destroy"),this.trigger(Lc.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){Uc.log("attachMedia"),this._media=e,this.trigger(Lc.MEDIA_ATTACHING,{media:e})}detachMedia(){Uc.log("detachMedia"),this.trigger(Lc.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,s=this.url=_c.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,Uc.log(`loadSource:${s}`),t&&i&&(i!==s||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(Lc.MANIFEST_LOADING,{url:e})}startLoad(e=-1){Uc.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){Uc.log("stopLoad"),this.started=!1,this.networkControllers.forEach((e=>{e.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.stopLoad()}))}swapAudioCodec(){Uc.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){Uc.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){Uc.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){Uc.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){Uc.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){Uc.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){Uc.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(Uc.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return rf.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let s=0;s=t)return s;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let s;if(s=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=s;t--;){const s=e[t].attrs["HDCP-LEVEL"];if(s&&s<=i)return t}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}OA.defaultConfig=void 0;class NA extends o{constructor(e){super(),this.player=e,this.TAG_NAME="HlsDecoder",e._opt,this.canVideoPlay=!1,this.$videoElement=null,this.canvasRenderInterval=null,this.bandwidthEstimateInterval=null,this.fpsInterval=null,this.hlsFps=0,this.hlsPrevFrams=0,this.isInitInfo=!1,this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.player.isHlsCanVideoPlay()?(this.$videoElement=this.player.video.$videoElement,this.canVideoPlay=!0):OA.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new OA({}),this._initHls(),this._bindEvents()):this.player.debug.error(this.TAG_NAME,"init hls error ,not support "),this.player.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{if(this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.hls&&(this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isInitInfo=!1,this._stopCanvasRender(),this._stopBandwidthEstimateInterval(),this._stopFpsInterval(),this.player._opt.useCanvasRender&&this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}this.$videoElement=null,this.hlsFps=0,this.player.debug.log(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,s=i.length?i.end(i.length-1):0;return t=s-e.currentTime,t<0&&(this.player.debug.warn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${s} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${s}`),e.currentTime=s,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){Ta()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void(this.player.debug&&this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"));const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.video.render({$video:this.$videoElement,ts:i}),this.player.handleRender(),this.player.updateStats({dts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{let e=0;this.hls.bandwidthEstimate&&(e=this.hls.bandwidthEstimate),this.player.emit(ot.kBps,(e/1024/8/10).toFixed(2))}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startFpsInterval(){this._stopCanvasRender(),this.fpsInterval=setInterval((()=>{if(this.$videoElement)if(Zo(this.$videoElement.getVideoPlaybackQuality)){const e=this.$videoElement.getVideoPlaybackQuality();this.hlsFps=e.totalVideoFrames-this.hlsPrevFrams,this.hlsPrevFrams=e.totalVideoFrames}else{const e=this.$videoElement.webkitDecodedFrameCount||0;this.hlsFps=e-this.hlsPrevFrams,this.hlsPrevFrams=e}}),1e3)}_stopFpsInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_initHls(){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.$videoElement.muted=!0,bo()&&(this.$videoElement.style.position="absolute"),this.initVideoEvents()),this.hls.attachMedia(this.$videoElement)}_bindEvents(){const e=this.player,{proxy:t}=this.player.events;this.hls;const i=this.$videoElement,s=Ta(),r=t(i,Zi,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&ya(s)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(r),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(OA.Events.ERROR,((e,t)=>{if(t.fatal)switch(t.type){case OA.ErrorTypes.NETWORK_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case OA.ErrorTypes.MEDIA_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}})),this.hls.on(OA.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(OA.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(OA.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(OA.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(OA.Events.BUFFER_RESET,(()=>{})),this.hls.on(OA.Events.BUFFER_CODECS,(()=>{})),this.hls.on(OA.Events.BUFFER_CREATED,(()=>{})),this.hls.on(OA.Events.BUFFER_APPENDING,((e,t)=>{this.player.debug.log(this.TAG_NAME,"BUFFER_APPENDING",t.type)})),this.hls.on(OA.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(OA.Events.BUFFER_EOS,(()=>{})),this.hls.on(OA.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(OA.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(OA.Events.MANIFEST_LOADING,(()=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_LOADING 开始加载playlist m3u8资源")})),this.hls.on(OA.Events.MANIFEST_LOADED,((e,t)=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_LOADED playlist m3u8文件加载完成",t.url)})),this.hls.on(OA.Events.MANIFEST_PARSED,(()=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_PARSED playlist m3u8解析完成"),e._times.demuxStart||(e._times.demuxStart=so())})),this.hls.on(OA.Events.LEVEL_LOADING,(()=>{})),this.hls.on(OA.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(OA.Events.FRAG_LOADING,(()=>{})),this.hls.on(OA.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=so())})),this.hls.on(OA.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=so(),e.handlePlayToRenderTimes())})),this.hls.on(OA.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(OA.Events.KEY_LOADING,(()=>{})),this.hls.on(OA.Events.KEY_LOADING,(()=>{})),this.hls.on(OA.Events.FPS_DROP,(e=>{})),this.hls.on(OA.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(OA.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{this.player.debug.log(this.TAG_NAME,"FRAG_PARSING_INIT_SEGMENT",t);const i=!!(t&&t.tracks&&t.tracks.audio),s=!!(t&&t.tracks&&t.tracks.video);if(i&&t.tracks.audio){let e=t.tracks.audio;const i=e.metadata&&e.metadata.channelCount?e.metadata.channelCount:0,s=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:s,channels:i,sampleRate:44100})}if(s&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?yt:At};e.metadata&&(i.width=e.metadata.width,i.height=e.metadata.height),this.player.video&&this.player.video.updateVideoInfo(i)}}))}initVideoPlay(e){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.initVideoEvents()),this.$videoElement.autoplay=!0,this.$videoElement.muted=!0,this.$videoElement.src=e}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,Qi,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Xi,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,Zi,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,es,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(OA.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const jA=2097152,GA="fetch",zA="xhr",WA="arraybuffer",$A="text",VA="json",HA="real_time_speed",JA=Object.prototype.toString;function qA(e){if("[object Object]"!==JA.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function KA(e){if(!e||null===e[0]||void 0===e[0]||0===e[0]&&(null===e[1]||void 0===e[1]))return;let t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}function YA(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function QA(e,t){if(!e)return;if(!t)return e;let i;const s=Object.keys(t).map((e=>{if(i=t[e],null!=i)return Array.isArray(i)?e+="[]":i=[i],i.map((t=>{var i;return i=t,"[object Date]"===JA.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${YA(e)}=${YA(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function XA(e,t,i,s,r,o,a,n,l,d,h){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,option:{range:l,vid:d,index:n,contentLength:s,age:r,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:h},response:i}}function ZA(e,t){return Math.round(8*e*1e3/t/1024)}class eb extends Error{constructor(e,t,i,s){super(s),uh(this,"retryCount",0),uh(this,"isTimeout",!1),uh(this,"loaderType",GA),uh(this,"startTime",0),uh(this,"endTime",0),uh(this,"options",{}),this.url=e,this.request=t,this.response=i}}class tb extends o{constructor(e){super(),uh(this,"_abortController",null),uh(this,"_timeoutTimer",null),uh(this,"_reader",null),uh(this,"_response",null),uh(this,"_aborted",!1),uh(this,"_index",-1),uh(this,"_range",null),uh(this,"_receivedLength",0),uh(this,"_running",!1),uh(this,"_logger",null),uh(this,"_vid",""),uh(this,"_onProcessMinLen",0),uh(this,"_onCancel",null),uh(this,"_priOptions",null),uh(this,"TAG_NAME","FetchLoader"),this.player=e}load(e){var t;let{url:i,vid:s,timeout:r,responseType:o,onProgress:a,index:n,onTimeout:l,onCancel:d,range:h,transformResponse:c,request:u,params:p,logger:f,method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:w,referrerPolicy:S,onProcessMinLen:E,priOptions:T}=e;this._aborted=!1,this._onProcessMinLen=E,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=h||[0,0],this._vid=s||i,this._priOptions=T||{};const k={method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:w,referrerPolicy:S,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal};let C=!1;clearTimeout(this._timeoutTimer),i=QA(i,p);const x=KA(h);x&&(g=u?u.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&g instanceof Headers?g.append("Range",x):g.Range=x),r&&(this._timeoutTimer=setTimeout((()=>{if(C=!0,this.cancel(),l){const e=new eb(i,k,null,"timeout");e.isTimeout=!0,l(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),r));const D=Date.now();return(Bo(n)||Bo(h))&&this.player.debug.log(this.TAG_NAME,"[fetch load start], index,",n,",range,",h),new Promise(((e,t)=>{fetch(u||i,u?void 0:k).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(c&&(s=c(s,i)||s),!s.ok)throw new eb(i,k,s,"bad network response");const r=Date.now();let l;if(o===$A)l=await s.text(),this._running=!1;else if(o===VA)l=await s.json(),this._running=!1;else{if(a)return this.resolve=e,this.reject=t,void this._loadChunk(s,a,D,r);{l=await s.arrayBuffer(),l=new Uint8Array(l),this._running=!1;const e=Date.now()-D,t=ZA(l.byteLength,e);this.emit(HA,{speed:t,len:l.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(Bo(n)||Bo(h))&&this.player.debug.log(this.TAG_NAME,"[fetch load end], index,",n,",range,",h),e(XA(l,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),D,r,n,h,this._vid,this._priOptions))})).catch((e=>{var s;clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!C||((e=e instanceof eb?e:new eb(i,k,null,null===(s=e)||void 0===s?void 0:s.message)).startTime=D,e.endTime=Date.now(),e.isTimeout=C,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},t(e))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(e){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(e,t,i,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new eb(e.url,"",e,"onProgress of bad response.body.getReader");return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(t)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(jA),this._writeIdx=0);const r=this._reader=e.body.getReader();let o,a,n;const l=async()=>{var d;a=Date.now();try{o=await r.read(),n=Date.now()}catch(e){return n=Date.now(),void(this._aborted||(this._running=!1,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(e)))}const h=(null===(d=this._range)||void 0===d?void 0:d.length)>0?this._range[0]:0,c=h+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=o.value?o.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",h+this._receivedLength,", done,",o.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||o.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(o.value,this._writeIdx),this._writeIdx=0,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",o.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const e=new Uint8Array(this._writeIdx+u+2048);this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(o.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=o.value;if((p&&p.byteLength>0||o.done)&&t(p,o.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e),o.done){const t=Date.now()-i,r=ZA(this._receivedLength,t);this.emit(HA,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debug.log(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",o.done),this.resolve(XA(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,this._index,this._range,this._vid,this._priOptions))}else l()};l()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}static isSupported(){return!("undefined"==typeof fetch)}}class ib{constructor(e,t,i){uh(this,"TAG_NAME","Task"),this.promise=function(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=function(){return i.used=!0,e(...arguments)},i.reject=function(){return i.used=!0,t(...arguments)},i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===GA&&window.fetch?new tb(i):new sb(i),this._config=t,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=t.retryCheckFunc}exec(){const{retry:e,retryDelay:t,onRetryError:i,transformError:s,...r}=this._config,o=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this.player.debug.log(this.TAG_NAME,"[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let n=a;s&&(n=s(n)||n),i&&this._retryCount>0&&i(n,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debug.log(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(o,t));this.promise.reject(n)}};return o(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}class sb extends o{constructor(e){super(),uh(this,"_xhr",null),uh(this,"_aborted",!1),uh(this,"_timeoutTimer",null),uh(this,"_range",null),uh(this,"_receivedLength",0),uh(this,"_url",null),uh(this,"_onProgress",null),uh(this,"_index",-1),uh(this,"_headers",null),uh(this,"_currentChunkSizeKB",384),uh(this,"_timeout",null),uh(this,"_xhr",null),uh(this,"_withCredentials",null),uh(this,"_startTime",-1),uh(this,"_loadCompleteResolve",null),uh(this,"_loadCompleteReject",null),uh(this,"_runing",!1),uh(this,"_logger",!1),uh(this,"_vid",""),uh(this,"_responseType",void 0),uh(this,"_credentials",void 0),uh(this,"_method",void 0),uh(this,"_transformResponse",void 0),uh(this,"_firstRtt",void 0),uh(this,"_onCancel",null),uh(this,"_priOptions",null),uh(this,"TAG_NAME","XhrLoader"),this.player=e}load(e){clearTimeout(this._timeoutTimer),this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this.player.debug.log(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=QA(e.url,e.params);const t=Date.now();return new Promise(((e,t)=>{this._loadCompleteResolve=e,this._loadCompleteReject=t,this._startLoad()})).catch((e=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(e=e instanceof eb?e:new eb(this._url,this._request)).startTime=t,e.endTime=Date.now(),e.options={index:this._index,vid:this._vid,priOptions:this._priOptions},e}))}_startLoad(){let e=null;if(this._responseType===WA&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debug.log(this.TAG_NAME,"[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}_internalOpen(e){try{this._startTime=Date.now();const t=this._xhr=new XMLHttpRequest;t.open(this._method||"GET",this._url,!0),t.responseType=this._responseType,this._timeout&&(t.timeout=this._timeout),t.withCredentials=this._withCredentials,t.onload=this._onLoad.bind(this),t.onreadystatechange=this._onReadyStatechange.bind(this),t.onerror=e=>{var t,i,s;this._running=!1;const r=new eb(this._url,this._request,null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(s=e.currentTarget)||void 0===s?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new eb(this._url,this._request,{status:408},"timeout");this._onTimeout&&(t.isTimeout=!0,this._onTimeout(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)};const i=this._headers||{},s=KA(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debug.log(this.TAG_NAME,"[xhr.send->] tast,",this._range,",load sub range, ",e),t.send(this._body)}catch(t){t.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}}_onReadyStatechange(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(e){var t;const i=e.target.status;if(i<200||i>299){const t=new eb(this._url,null,{...e.target.response,status:i},"bad response,status:"+i);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let s,r=null,o=!1;const a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===WA){var n;const t=new Uint8Array(e.target.response);if(s=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=ZA(this._receivedLength,e);this.emit(HA,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[s,a+this._receivedLength],priOptions:this._priOptions})}r=t,o=!((null===(n=this._range)||void 0===n?void 0:n.length)>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",s,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",o)}else o=!0,r=e.target.response;let l={ok:i>=200&&i<300,status:i,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(r,o,{index:this._index,vid:this._vid,range:[s,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),o?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(XA(this._onProgress?null:r,o,l,l.headers["content-length"],l.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}_getHeaders(e){const t=e.getAllResponseHeaders().trim().split("\r\n"),i={};for(const e of t){const t=e.split(": ");i[t[0].toLowerCase()]=t.slice(1).join(": ")}return i}}class rb extends o{constructor(e,t){super(),uh(this,"type",GA),uh(this,"_queue",[]),uh(this,"_alive",[]),uh(this,"_currentTask",null),uh(this,"_config",void 0),this.player=t,this._config=function(e){return{loaderType:GA,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:$A,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...e}}(e),this._config.loaderType!==zA&&tb.isSupported()||(this.type=zA)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===GA}static isFetchSupport(){return tb.isSupported()}load(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,t=Object.assign({},this._config,t),t.params&&(t.params=Object.assign({},t.params)),t.headers&&qA(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&qA(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new ib(this.type,t,this.player);return i.loader.on(HA,(e=>{this.emit(HA,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const e=this._queue.map((e=>e.cancel())).concat(this._alive.map((e=>e.cancel())));this._currentTask&&e.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(e),await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((t=>setTimeout(t,e)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const e=this._currentTask.exec().catch((e=>{}));e&&"function"==typeof e.finally&&e.finally((()=>{var e,t;null!==(e=this._currentTask)&&void 0!==e&&e.alive&&(null===(t=this._alive)||void 0===t?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const ob="network",ab="network_timeout",nb="other",lb="manifest",db="hls",hb="demux";class cb extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===ab?ob:e,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(e,t,i,s,r){return e instanceof cb?e:(e instanceof Error&&(i=e,e=""),e||(e=nb),new cb(e,t,i,s,r))}static network(e){var t;return new cb(null!=e&&e.isTimeout?ab:ob,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}const ub=/^#(EXT[^:]*)(?::(.*))?$/,pb=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,fb=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,mb=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function gb(e){const t=e.match(ub);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function yb(e){const t={};let i=pb.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=pb.exec(e);return t}function Ab(e,t){if(!t||!e||fb.test(e))return e;const i=mb.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const bb={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function vb(e,t){const i=bb[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class Rb{static parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;if(!e.includes("#EXTM3U"))throw new Error("Invalid m3u8 file");const i=function(e){return e.split(/[\r\n]/).map((e=>e.trim())).filter(Boolean)}(e);return Rb.isMediaPlaylist(e)?function(e,t){const i=new xb;i.url=t;let s,r=new Db,o=null,a=null,n=0,l=0,d=0,h=0,c=!1;for(;(s=e[h++])&&!c;){if("#"!==s[0]){r.sn=l,r.cc=d,r.url=Ab(s,t),a&&(r.key=a.clone(l)),o&&(r.initSegment=o),i.segments.push(r),r=new Db,l++;continue}const e=gb(s);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=null==u?void 0:u.toUpperCase();break;case"TARGETDURATION":i.targetDuration=parseFloat(u);break;case"ENDLIST":{const e=i.segments[i.segments.length-1];e&&(e.isLast=!0),i.live=!1,c=!0}break;case"MEDIA-SEQUENCE":l=i.startSN=parseInt(u);break;case"DISCONTINUITY-SEQUENCE":d=i.startCC=parseInt(u);break;case"DISCONTINUITY":d++;break;case"BYTERANGE":r.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");r.start=n,r.duration=parseFloat(e),n+=r.duration,r.title=t}break;case"KEY":{const e=yb(u);if("NONE"===e.METHOD){a=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(a=new Lb,a.method=e.METHOD,a.url=/^blob:/.test(e.URI)?e.URI:Ab(e.URI,t),a.keyFormat=e.KEYFORMAT||"identity",a.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,a.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),o.length&&(o.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=o.filter((t=>t.group===e.audioGroup)))}))),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=a.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class Ib{constructor(e){uh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Fs,{error:cb.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new rb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new rb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new rb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}async destroy(){await this.stopPoll(),this._audioLoader&&(this._audioLoader.destroy(),this._audioLoader=null),this._subtitleLoader&&(this._subtitleLoader.destroy(),this._subtitleLoader=null),this._loader&&(this._loader.destroy(),this._loader=null)}async load(e,t,i){this.player.debug.log(this.TAG_NAME,"load()",e,t,i);const s=[this._loader.load(e)];let r,o,a,n,l,d;t&&s.push(this._audioLoader.load(t)),i&&s.push(this._subtitleLoader.load(i));try{const[e,i,n]=await Promise.all(s);if(!e)return[];r=e.data,t?(o=null==i?void 0:i.data,a=null==n?void 0:n.data):a=null==i?void 0:i.data}catch(e){throw cb.network(e)}try{var h;if(n=Rb.parse(r,e),!1===(null===(h=n)||void 0===h?void 0:h.live)&&n.segments&&!n.segments.length)throw new Error("empty segments list");o&&(l=Rb.parse(o,t)),a&&(d=Rb.parse(a,i))}catch(e){throw new cb(lb,db,e)}return n&&(n.isMaster?this.hls.emit(Ls,{playlist:n}):this.hls.emit(Rs,{playlist:n})),[n,l,d]}poll(e,t,i,s,r,o){clearTimeout(this._timer),o=o||3e3;let a=this.hls.config.pollRetryCount;const n=async()=>{clearTimeout(this._timer);try{const r=await this.load(e,t,i);if(!r[0])return;a=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(e){a--,a<=0&&r(e)}this._timer=setTimeout(n,o)};this._timer=setTimeout(n,o)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}}class Pb{constructor(){uh(this,"_chunkSpeeds",[]),uh(this,"_speeds",[])}addRecord(e,t){e&&t&&(this._speeds.push(8e3*e/t),this._speeds=this._speeds.slice(-3))}addChunkRecord(e,t){e&&t&&(this._chunkSpeeds.push(8e3*e/t),this._chunkSpeeds=this._chunkSpeeds.slice(-100))}getAvgSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds.reduce(((e,t)=>e+t))/this._speeds.length:this._chunkSpeeds.reduce(((e,t)=>e+t))/this._chunkSpeeds.length:0}getLatestSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds[this._speeds.length-1]:this._chunkSpeeds[this._chunkSpeeds.length-1]:0}reset(){this._chunkSpeeds=[],this._speeds=[]}}class Bb{constructor(e){uh(this,"_emitOnLoaded",((e,t)=>{const{data:i,response:s,option:r}=e,{firstByteTime:o,startTime:a,endTime:n,contentLength:l}=r||{},d=n-a;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(Os,{time:d,byteLength:l,url:t}),this.hls.emit(Ns,{url:t,elapsed:d||0}),this.hls.emit(Ms,{url:t,responseUrl:s.url,elapsed:o-a}),this.hls.emit(js,{headers:s.headers})})),uh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Fs,{error:cb.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this._bandwidthService=new Pb;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new rb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new rb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new rb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}destroy(){this.reset(),this._keyLoader&&(this._keyLoader.destroy(),this._keyLoader=null),this._audioSegmentLoader&&(this._audioSegmentLoader.destroy(),this._audioSegmentLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null)}speedInfo(){return{speed:this._bandwidthService.getLatestSpeed(),avgSpeed:this._bandwidthService.getAvgSpeed()}}resetBandwidth(){this._bandwidthService.reset()}load(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return e&&(r[0]=this.loadVideoSegment(e,i)),t&&(r[1]=this.loadAudioSegment(t,s)),Promise.all(r)}loadVideoSegment(e,t){return this._loadSegment(this._segmentLoader,e,t)}loadAudioSegment(e,t){return this._loadSegment(this._audioSegmentLoader,e,t)}async _loadSegment(e,t,i){var s;let r,o,a,n,l;const d=[];if(this.hls.emit(Us,{url:t.url}),d[0]=e.load(t.url),i&&t.initSegment){var h;const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(Us,{url:i}),d[1]=e.load(i).then((e=>{if(e){Object.keys(this._mapCache)>30&&(this._mapCache={}),r=this._mapCache[i]=e.data,this._emitOnLoaded(e,i)}})));const s=null===(h=t.initSegment.key)||void 0===h?void 0:h.url;s&&(l=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(Us,{url:s}),d[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const c=null===(s=t.key)||void 0===s?void 0:s.url;c&&(a=t.key.iv,o=this._keyCache[c],o||(this.hls.emit(Us,{url:c}),d[3]=this._keyLoader.load(c).then((e=>{e&&(o=this._keyCache[c]=e.data,this._emitOnLoaded(e,c))}))));const[u]=await Promise.all(d);if(!u)return;const p=u.data;return this._emitOnLoaded(u,t.url),{data:p,map:r,key:o,mapKey:n,keyIv:a,mapKeyIv:l}}reset(){this.error=null,this._mapCache={},this._keyCache={},this._bandwidthService.reset()}async cancel(){await Promise.all([this._keyLoader.cancel(),this._segmentLoader.cancel(),this._audioSegmentLoader.cancel()])}}class Mb{constructor(e,t,i){this.live=void 0,this.id=0,this.bitrate=0,this.width=0,this.height=0,this.name="",this.url="",this.audioCodec="",this.videoCodec="",this.textCodec="",this.startCC=0,this.endCC=0,this.startSN=0,this.endSN=-1,this.totalDuration=0,this.targetDuration=0,this.snDiff=null,this.segments=[],this.audioStreams=[],this.subtitleStreams=[],this.closedCaptions=[],this.currentAudioStream=null,this.currentSubtitleStream=null,this.TAG_NAME="HlsStream",this.update(e,t,i)}get lastSegment(){return this.segments.length?this.segments[this.segments.length-1]:null}get segmentDuration(){var e;return this.targetDuration||(null===(e=this.segments[0])||void 0===e?void 0:e.duration)||0}get liveEdge(){return this.endTime}get endTime(){var e;return(null===(e=this.lastSegment)||void 0===e?void 0:e.end)||0}get currentSubtitleEndSn(){var e;return(null===(e=this.currentSubtitleStream)||void 0===e?void 0:e.endSN)||0}clearOldSegment(e,t){return this._clearSegments(e,t)}getAudioSegment(e){if(!e||!this.currentAudioStream)return;const t=e.sn-this.snDiff;return this.currentAudioStream.segments.find((e=>e.sn===t))}update(e,t){this.url=e.url,Array.isArray(e.segments)?(null!==this.live&&void 0!==this.live||(this.live=e.live),this._updateSegments(e,this),this.startCC=e.startCC,this.endCC=e.endCC,this.startSN=e.startSN,this.endSN=e.endSN||-1,this.totalDuration=e.totalDuration,this.targetDuration=e.targetDuration,this.live=e.live,t&&this.currentAudioStream&&Array.isArray(t.segments)&&(this._updateSegments(t,this.currentAudioStream),(null===this.snDiff||void 0===this.snDiff)&&e.segments.length&&t.segments.length&&(this.snDiff=e.segments[0].sn-t.segments[0].sn))):(this.id=e.id,this.bitrate=e.bitrate,this.width=e.width,this.height=e.height,this.name=e.name,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.textCodec=e.textCodec,this.audioStreams=e.audioStreams,this.subtitleStreams=e.subtitleStreams,!this.currentAudioStream&&this.audioStreams.length&&(this.currentAudioStream=this.audioStreams.find((e=>e.default))||this.audioStreams[0]),!this.currentSubtitleStream&&this.subtitleStreams.length&&(this.currentSubtitleStream=this.subtitleStreams.find((e=>e.default))||this.subtitleStreams[0]))}updateSubtitle(e){if(!(e&&this.currentSubtitleStream&&Array.isArray(e.segments)))return;const t=this._updateSegments(e,this.currentSubtitleStream),i=this.currentSubtitleStream.segments;return i.length>100&&(this.currentSubtitleStream.segments=i.slice(100)),t?t.map((e=>({sn:e.sn,url:e.url,duration:e.duration,start:e.start,end:e.end,lang:this.currentSubtitleStream.lang}))):void 0}switchSubtitle(e){const t=this.subtitleStreams.find((t=>t.lang===e)),i=this.currentSubtitleStream;t&&(this.currentSubtitleStream=t,i.segments=[])}_clearSegments(e,t){let i=0;const s=this.segments;for(let t=0,r=s.length;t=e){i=t;break}return i>t&&(i=t),i&&(this.segments=this.segments.slice(i),this.currentAudioStream&&(this.currentAudioStream.segments=this.currentAudioStream.segments.slice(i))),t-i}_updateSegments(e,t){const i=t.segments;if(this.live){const s=i[i.length-1],r=(null==s?void 0:s.sn)||-1;if(re.sn===r)),a=o<0?e.segments:e.segments.slice(o+1);if(i.length&&a.length){let e=s.end;a.forEach((t=>{t.start=e,e=t.end}));const t=(null==s?void 0:s.cc)||-1;t>a[0].cc&&a.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(a),a}}else t.segments=e.segments}}class Fb{constructor(e){this.hls=e,this.player=e.player,this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1,this.TAG_NAME="HlsPlaylist"}destroy(){this.reset()}get lastSegment(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.lastSegment}get currentSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer]}get nextSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer+1]}get currentSegments(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.segments}get currentSubtitleEndSn(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.currentSubtitleEndSn}get liveEdge(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.liveEdge}get totalDuration(){var e;return(null===(e=this.currentStream)||void 0===e?void 0:e.totalDuration)||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){var e;return!(null!==(e=this.currentSegments)&&void 0!==e&&e.length)}get isLive(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.live}get hasSubtitle(){var e;return!(null===(e=this.currentStream)||void 0===e||!e.currentSubtitleStream)}getAudioSegment(e){var t;return null===(t=this.currentStream)||void 0===t?void 0:t.getAudioSegment(e)}moveSegmentPointer(e){var t;null==e&&(e=this._segmentPointer+1),this._segmentPointer=ro(e,-1,null===(t=this.currentSegments)||void 0===t?void 0:t.length),this.player.debug.log(this.TAG_NAME,`moveSegmentPointer() and param pos is ${e} and clamp result is ${this._segmentPointer}`)}reset(){this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1}getSegmentByIndex(e){var t;return null===(t=this.currentSegments)||void 0===t?void 0:t[e]}setNextSegmentByIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=e-1,this.player.debug.log(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,s=0,r=t.length;s=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new Mb(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const s=this.currentStream;if(s){s.update(e,t,i);const r=s.updateSubtitle(i);r&&this.hls.emit(Ds,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new Mb(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){var t;null===(t=this.currentStream)||void 0===t||t.switchSubtitle(e)}clearOldSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=t.segments;if(s.length<=e)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${e}`);const r=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,r),this.player.debug.log(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debug.log(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==t&&s.hasAudio&&s.hasVideo)return s;if(s.end-e>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}class Ub{constructor(e,t){this.hls=e,this.player=t;const i=window.crypto||window.msCrypto;this.subtle=i&&(i.subtle||i.webkitSubtle),this.externalDecryptor=null}decrypt(e,t){if(!e&&!t)return;const i=[];return e&&(i[0]=this._decryptSegment(e)),t&&(i[1]=this._decryptSegment(t)),Promise.all(i)}async _decryptSegment(e){let t=e.data;return e.key&&(t=await this._decryptData(e.data,e.key,e.keyIv)),e.map?wh(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);if(this.subtle){const s=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]),r=await this.subtle.decrypt({name:"AES-CBC",iv:i},s,e);return new Uint8Array(r)}e=Td(e),t=Td(t),i=Td(i);return function(e){const{words:t}=e,{sigBytes:i}=e,s=new Uint8Array(i);for(let e=0;e>>2]>>>24-e%4*8&255;return s}(Sd.AES.decrypt({ciphertext:e},t,{iv:i,mode:Sd.mode.CBC}))}}class Ob extends th{constructor(e){super(e),this.player=e,this._pmtId=-1,this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[],this._gopId=0,this._videoPid=-1,this._audioPid=-1,this._codecType=yt,this._audioCodecType=_t,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this.videoTrack=Ob.initVideoTrack(),this.audioTrack=Ob.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._tempSampleTsList=[],this._hasAudio=!1,this._hasVideo=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this.tempSampleListInfo={},this._isUseWorker()&&this._initLoopWorker(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._hasCalcFps=!1,this._tempSampleTsList=[],this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}static initVideoTrack(){return{samples:[]}}static initAudioTrack(){return{samples:[]}}static probe(e){return!!e.length&&(71===e[0]&&71===e[188]&&71===e[376])}_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,o;const a=e[7];return 192&a&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&a?(o=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-o>54e5&&(r=o)):o=r),{data:e.subarray(9+t),pts:r,dts:o,originalPts:r,originalDts:o}}_demux(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t&&(this._pmtId=-1,this.videoTrack=Ob.initVideoTrack(),this.audioTrack=Ob.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=wh(this._remainingPacketData,e),this._remainingPacketData=null));let s=e.length;const r=s%188;r&&(this._remainingPacketData=e.subarray(s-r),s-=r);for(let t=0;t>4>1){if(r=t+5+e[t+4],r===t+188)continue}else r=t+4;switch(s){case 0:i&&(r+=e[r]+1),this._pmtId=(31&e[r+10])<<8|e[r+11];break;case this._pmtId:{i&&(r+=e[r]+1);const t=r+3+((15&e[r+1])<<8|e[r+2])-4;for(r+=12+((15&e[r+10])<<8|e[r+11]);r=t)return[];const r=[];for(;s{const t=s?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!s&&5!==t||s&&5===t)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==t||s&&6===t)break;return void function(e,t){const i=e.length;let s=t?2:1,r=0,o=0,a="";for(;255===e[s];)r+=255,s++;for(r+=e[s++];255===e[s];)o+=255,s++;if(o+=e[s++],5===r&&i>s+16)for(let t=0;t<16;t++)a+=e[s].toString(16),s++;e.subarray(s)}(function(e){const t=e.byteLength,i=[];let s=1;for(;s=i)return;const r=s,o=[],a=(60&e[s+2])>>>2,n=Pr[a];if(!n)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),d=(1&e[s+2])<<2|(192&e[s+3])>>>6;let h,c,u=0;const p=jr(n);for(;s+7>5,i-s=i?void 0:e.subarray(s),frames:o,samplingFrequencyIndex:a,sampleRate:n,objectType:l,channelCount:d,originCodec:`mp4a.40.${l}`}}(e.data,e.originalPts);if(t){if(this.audioTrack.codec=t.codec,this.audioTrack.sampleRate=t.sampleRate,this.audioTrack.channelCount=t.channelCount,!this._isSendAACSeqHeader){const e=Fr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debug.log(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,Ue,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,s=new Uint8Array(t.data.length+2);s.set([175,1],0),s.set(t.data,2);const r={type:Ue,pts:i,dts:i,payload:s};e.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debug.warn(this.TAG_NAME,"aac seq header not send")}else this.player.debug.warn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}else e&&"startPrefixError"===e.code&&(this._audioPesData=[])}_fix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=Math.round(9e4*e);const s=this.videoTrack,r=this.audioTrack,o=s.samples,a=r.samples;if(!o.length&&!a.length)return;const n=o[0],l=a[0];let d=0;if(o.length&&a.length&&(d=n.dts-l.pts),this._baseDtsInited||this._calculateBaseDts(),t&&(this._calculateBaseDts(),this._baseDts-=e),!i){this._videoNextDts=d>0?e+d:e,this._audioNextPts=d>0?e:e-d;const t=n?n.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>yr&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let h=s.samples.concat(r.samples);h=h.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),h.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this._isUseWorker()?this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer]):e.type===Oe?this._doDecodeVideo({...e,payload:t}):e.type===Ue&&this._doDecodeAudio({...e,payload:t})})),ya(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(h))}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,s=t.samples;if(!i.length&&!s.length)return!1;let r=1/0,o=1/0;i.length&&(e.baseDts=r=i[0].pts),s.length&&(t.baseDts=o=s[0].dts),this._baseDts=Math.min(r,o);const a=o-r;return Number.isFinite(a)&&Math.abs(a)>45e3&&this.player.debug.warn(this.TAG_NAME,`large av first frame gap,\n video pts: ${o},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${a}`),this._baseDtsInited=!0,!0}_resetBaseDtsWhenStreamBreaked(){if(this._baseDtsInited&&this._videoTimestampBreak&&this._audioTimestampBreak){if(!this._calculateBaseDts(this.audioTrack,this.videoTrack))return;this._baseDts-=Math.min(this._audioNextPts,this._videoNextDts),this._audioLastSample=null,this._videoLastSample=null,this._videoTimestampBreak=!1,this._audioTimestampBreak=!1}}_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=this._baseDts,e.dts=e.pts})),this._doFixAudioInternal(e,t,9e4))}_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=this._baseDts,e.pts-=this._baseDts})),void 0===this._videoNextDts){const e=t[0];this._videoNextDts=e.dts}const i=t.length;let s=0;const r=t[0],o=t[1],a=this._videoNextDts-r.dts;let n;Math.abs(a)>45e3&&(r.dts+=a,r.pts+=a,this.player.debug.warn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${o.dts},\n duration is ${a}`),o&&Math.abs(o.dts-r.dts)>yr&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const l=e.samples[0],d=e.samples[i-1];n=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let r=0;ryr||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?n:Math.max(s,2700);const i=this._audioNextPts||0;a&&a.dts>i&&(s=n),this.player.debug.warn(this.TAG_NAME,`large video gap between frames,\n time is ${o/e.timescale},\n dts is ${o},\n origin dts is ${t[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${n}`)}t[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=jr(e.timescale,i));const s=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*s&&a<=mr&&!bo()){Nr(e.codec,e.channelCount)||t[0].data.subarray();const n=Math.floor(a/s);Math.abs(o.pts-this._lastAudioExceptionGapDot)>gr&&(this._lastAudioExceptionGapDot=o.pts),this.player.debug.warn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${n},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let e=0;e=-9e4?(Math.abs(o.pts-this._lastAudioExceptionOverlapDot)>gr&&(this._lastAudioExceptionOverlapDot=o.pts,this.player.debug.warn(this.TAG_NAME,`audio overlap detected,\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),t.splice(i,1),i--):(Math.abs(a)>=mr&&(this._audioTimestampBreak=!0,Math.abs(o.pts-this._lastAudioExceptionLargeGapDot)>gr&&(this._lastAudioExceptionLargeGapDot=o.pts,this.player.debug.warn(this.TAG_NAME,`large audio gap detected,\n time is ${o.pts/1e3}\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n sample duration is ${a}\n ref sample duration is ${s}`))),o.dts=o.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=la(this._tempSampleTsList,Oe);if(i)this._tempSampleTsList=[],this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debug.log(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=Ea(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`JbPro:[TsLoader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=Math.round(s.duration/90))):s.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie),s.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByHls(i,Ue,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Qn(t,e.isIFrame):Un(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Oe,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}function Nb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function jb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Gb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return jb(e,t)*i+jb(e,t+4)}const zb="aac",Wb="g7110a",$b="g7110m",Vb="avc",Hb="hevc";class Jb{static getFrameDuration(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}static getRateIndexByRate(e){return Jb.FREQ.indexOf(e)}}function qb(e,t,i,s,r,o){const a=[],n=null==r?void 0:r.entries,l=t.entries,d=s.entries,h=i.entrySizes,c=null==o?void 0:o.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),n&&(p=[],n.forEach((e=>{let{count:t,offset:i}=e;for(let e=0;e{let{count:t,delta:s}=e;for(let e=0;e=w&&(b++,w=l[b+1]?l[b+1].firstChunk-1:1/0),_+=l[b].samplesPerChunk)})),a}function Kb(e,t){return e.dataReferenceIndex=Nb(t,6),e.width=Nb(t,24),e.height=Nb(t,26),e.horizresolution=jb(t,28),e.vertresolution=jb(t,32),e.frameCount=Nb(t,40),e.depth=Nb(t,74),78}function Yb(e,t){return e.dataReferenceIndex=Nb(t,6),e.channelCount=Nb(t,16),e.sampleSize=Nb(t,18),e.sampleRate=jb(t,24)/65536,28}function Qb(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}uh(Jb,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);const Xb=function(e,t,i){const s=String(i),r=t>>0;let o=Math.ceil(r/s.length);const a=[],n=String(e);for(;o--;)a.push(s);return a.join("").substring(0,r-n.length)+n},Zb=function(){const e=[];for(var t=arguments.length,i=new Array(t),s=0;s{e.push(Xb(Number(t).toString(16),2,0))})),e[0]};class ev{static probe(e){return!!ev.findBox(e,["ftyp"])}static findBox(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!e)return s;let r=0,o="",a=0;for(;e.length>7;){if(r=jb(e),o=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=Gb(e,8),a+=8):r||(r=e.length),!t[0]||o===t[0]){const n=e.subarray(0,r);if(!(t.length<2))return ev.findBox(n.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:o,data:n})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return Qb(e,!0,((e,t)=>{e.trackId=jb(t);let i=4;const s=1&e.flags,r=2&e.flags,o=8&e.flags,a=16&e.flags,n=32&e.flags;s&&(i+=4,e.baseDataOffset=jb(t,i),i+=4),r&&(e.sampleDescriptionIndex=jb(t,i),i+=4),o&&(e.defaultSampleDuration=jb(t,i),i+=4),a&&(e.defaultSampleSize=jb(t,i),i+=4),n&&(e.defaultSampleFlags=jb(t,i))}))}static sidx(e){return Qb(e,!0,((e,t)=>{let i=0;e.reference_ID=jb(t,i),i+=4,e.timescale=jb(t,i),i+=4,0===e.version?(e.earliest_presentation_time=jb(t,i),i+=4,e.first_offset=jb(t,i),i+=4):(e.earliest_presentation_time=Gb(t,i),i+=8,e.first_offset=Gb(t,i),i+=8),i+=2,e.references=[];const s=Nb(t,i);i+=2;for(let r=0;r>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=jb(t,i),i+=4,r=jb(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return Qb(e,!1,((e,t,i)=>{e.mvhd=ev.mvhd(ev.findBox(t,["mvhd"],i)[0]),e.trak=ev.findBox(t,["trak"],i).map((e=>ev.trak(e))),e.pssh=ev.pssh(ev.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return Qb(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=jb(t,16),e.duration=Gb(t,20),i+=28):(e.timescale=jb(t,8),e.duration=jb(t,12),i+=16),e.nextTrackId=jb(t,i+76)}))}static trak(e){return Qb(e,!1,((e,t,i)=>{e.tkhd=ev.tkhd(ev.findBox(t,["tkhd"],i)[0]),e.mdia=ev.mdia(ev.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return Qb(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=jb(t,16),e.duration=Gb(t,24),i+=32):(e.trackId=jb(t,8),e.duration=jb(t,16),i+=20),e.width=jb(t,i+52),e.height=jb(t,i+56)}))}static mdia(e){return Qb(e,!1,((e,t,i)=>{e.mdhd=ev.mdhd(ev.findBox(t,["mdhd"],i)[0]),e.hdlr=ev.hdlr(ev.findBox(t,["hdlr"],i)[0]),e.minf=ev.minf(ev.findBox(t,["minf"],i)[0])}))}static mdhd(e){return Qb(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=jb(t,16),e.duration=Gb(t,20),i+=28):(e.timescale=jb(t,8),e.duration=jb(t,12),i+=16);const s=Nb(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return Qb(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return Qb(e,!1,((e,t,i)=>{e.vmhd=ev.vmhd(ev.findBox(t,["vmhd"],i)[0]),e.smhd=ev.smhd(ev.findBox(t,["smhd"],i)[0]),e.stbl=ev.stbl(ev.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return Qb(e,!0,((e,t)=>{e.graphicsmode=Nb(t),e.opcolor=[Nb(t,2),Nb(t,4),Nb(t,6)]}))}static smhd(e){return Qb(e,!0,((e,t)=>{e.balance=Nb(t)}))}static stbl(e){return Qb(e,!1,((e,t,i)=>{var s,r,o;e.stsd=ev.stsd(ev.findBox(t,["stsd"],i)[0]),e.stts=ev.stts(ev.findBox(t,["stts"],i)[0]),e.ctts=ev.ctts(ev.findBox(t,["ctts"],i)[0]),e.stsc=ev.stsc(ev.findBox(t,["stsc"],i)[0]),e.stsz=ev.stsz(ev.findBox(t,["stsz"],i)[0]),e.stco=ev.stco(ev.findBox(t,["stco"],i)[0]),e.stco||(e.co64=ev.co64(ev.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null===(s=e.stsd.entries[0])||void 0===s||null===(r=s.sinf)||void 0===r||null===(o=r.schi)||void 0===o?void 0:o.tenc.default_IV_size;e.stss=ev.stss(ev.findBox(t,["stss"],i)[0]),e.senc=ev.senc(ev.findBox(t,["senc"],i)[0],a)}))}static senc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return Qb(e,!0,((e,i)=>{let s=0;const r=jb(i,s);s+=4,e.samples=[];for(let o=0;o{const i=[],s=[];let r=0;for(let e=0;e<16;e++)s.push(Zb(t[r+e]));if(r+=16,e.version>0){const e=jb(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(Zb(e))}}const o=jb(t,r);e.data_size=o,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return Qb(e,!0,((e,t,i)=>{e.entryCount=jb(t),e.entries=ev.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return ev.avc1(e);case"hvc1":case"hev1":return ev.hvc1(e);case"mp4a":return ev.mp4a(e);case"alaw":case"ulaw":return ev.alaw(e);case"enca":return Qb(e,!1,((e,t,i)=>{e.channelCount=Nb(t,16),e.samplesize=Nb(t,18),e.sampleRate=jb(t,24)/65536,t=t.subarray(28),e.sinf=ev.sinf(ev.findBox(t,["sinf"],i)[0]),e.esds=ev.esds(ev.findBox(t,["esds"],i)[0])}));case"encv":return Qb(e,!1,((e,t,i)=>{e.width=Nb(t,24),e.height=Nb(t,26),e.horizresolution=jb(t,28),e.vertresolution=jb(t,32),t=t.subarray(78),e.sinf=ev.sinf(ev.findBox(t,["sinf"],i)[0]),e.avcC=ev.avcC(ev.findBox(t,["avcC"],i)[0]),e.hvcC=ev.hvcC(ev.findBox(t,["hvcC"],i)[0]),e.pasp=ev.pasp(ev.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return Qb(e,!1,((e,t)=>{let i=6;e.default_IsEncrypted=t[i],i+=1,e.default_IV_size=t[i],i+=1,e.default_KID=[];for(let s=0;s<16;s++)e.default_KID.push(Zb(t[i])),i+=1}))}static schi(e){return Qb(e,!1,((e,t,i)=>{e.tenc=ev.tenc(ev.findBox(t,["tenc"],i)[0])}))}static sinf(e){return Qb(e,!1,((e,t,i)=>{e.schi=ev.schi(ev.findBox(t,["schi"],i)[0]),e.frma=ev.frma(ev.findBox(t,["frma"],i)[0])}))}static frma(e){return Qb(e,!1,((e,t)=>{e.data_format="";for(let i=0;i<4;i++)e.data_format+=String.fromCharCode(t[i])}))}static avc1(e){return Qb(e,!1,((e,t,i)=>{const s=Kb(e,t),r=t.subarray(s);i+=s,e.avcC=ev.avcC(ev.findBox(r,["avcC"],i)[0]),e.pasp=ev.pasp(ev.findBox(r,["pasp"],i)[0])}))}static avcC(e){return Qb(e,!1,((e,t)=>{e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){let t,i="avc1.";for(let s=0;s<3;s++)t=e[s].toString(16),t.length<2&&(t=`0${t}`),i+=t;return i}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];let i=6;for(let s=0;s{const s=Kb(e,t),r=t.subarray(s);i+=s,e.hvcC=ev.hvcC(ev.findBox(r,["hvcC"],i)[0]),e.pasp=ev.pasp(ev.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return Qb(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=jb(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=Nb(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,o=0,a=0,n=0;for(let e=0;e{e.hSpacing=jb(t),e.vSpacing=jb(t,4)}))}static mp4a(e){return Qb(e,!1,((e,t,i)=>{const s=Yb(e,t);e.esds=ev.esds(ev.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return Qb(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,o=0;for(;t.length;){for(i=0,o=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===o)t=t.subarray(i+3);else{if(4!==o){if(5===o){const s=e.config=t.subarray(i,i+r);let o=(248&s[0])>>3;return 31===o&&s.length>=2&&(o=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=o,e.codec+=o.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[i].toString(16)+".").padStart(3,"0"),t=t.subarray(i+13)}}}))}static alaw(e){return Qb(e,!1,((e,t)=>{Yb(e,t)}))}static stts(e){return Qb(e,!0,((e,t)=>{const i=jb(t),s=[];let r=4;for(let e=0;e{const i=jb(t),s=[];let r=4;if(1===e.version)for(let e=0;e{const i=jb(t),s=[];let r=4;for(let e=0;e{const i=jb(t),s=jb(t,4),r=[];if(!i){let e=8;for(let i=0;i{const i=jb(t),s=[];let r=4;for(let e=0;e{const i=jb(t),s=[];let r=4;for(let e=0;e{const i=jb(t),s=[];let r=4;for(let e=0;e{e.mfhd=ev.mfhd(ev.findBox(t,["mfhd"],i)[0]),e.traf=ev.findBox(t,["traf"],i).map((e=>ev.traf(e)))}))}static mfhd(e){return Qb(e,!0,((e,t)=>{e.sequenceNumber=jb(t)}))}static traf(e){return Qb(e,!1,((e,t,i)=>{e.tfhd=ev.tfhd(ev.findBox(t,["tfhd"],i)[0]),e.tfdt=ev.tfdt(ev.findBox(t,["tfdt"],i)[0]),e.trun=ev.trun(ev.findBox(t,["trun"],i)[0])}))}static trun(e){return Qb(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,o=e.sampleCount=jb(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~jb(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=jb(t,a),a+=4),e.samples=[],r>a){let r;for(let n=0;n{1===e.version?e.baseMediaDecodeTime=Gb(t):e.baseMediaDecodeTime=jb(t)}))}static probe(e){return!!ev.findBox(e,["ftyp"])}static parseSampleFlags(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}static moovToTrack(e,t,i){var s,r;const o=e.trak;if(!o||!o.length)return;const a=o.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),n=o.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(a&&t){var l,d,h,c,u,p,f;const i=t,s=null===(l=a.tkhd)||void 0===l?void 0:l.trackId;null!=s&&(i.id=a.tkhd.trackId),i.tkhdDuration=a.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=a.mdia.mdhd.timescale,i.duration=a.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const r=a.mdia.minf.stbl.stsd.entries[0];if(i.width=r.width,i.height=r.height,r.pasp&&(i.sarRatio=[r.pasp.hSpacing,r.pasp.vSpacing]),r.hvcC)i.codecType=Hb,i.codec=r.hvcC.codec,i.vps=r.hvcC.vps,i.sps=r.hvcC.sps,i.pps=r.hvcC.pps,i.hvcC=r.hvcC.data;else{if(!r.avcC)throw new Error("unknown video stsd entry");i.codecType=Vb,i.codec=r.avcC.codec,i.sps=r.avcC.sps,i.pps=r.avcC.pps}var m,g,y,A,b,v,_,w;if(i.present=!0,i.ext={},i.ext.stss=null===(d=a.mdia)||void 0===d||null===(h=d.minf)||void 0===h||null===(c=h.stbl)||void 0===c?void 0:c.stss,i.ext.ctts=null===(u=a.mdia)||void 0===u||null===(p=u.minf)||void 0===p||null===(f=p.stbl)||void 0===f?void 0:f.ctts,r&&"encv"===r.type)i.isVideoEncryption=!0,r.default_KID=null===(m=r.sinf)||void 0===m||null===(g=m.schi)||void 0===g?void 0:g.tenc.default_KID,r.default_IsEncrypted=null===(y=r.sinf)||void 0===y||null===(A=y.schi)||void 0===A?void 0:A.tenc.default_IsEncrypted,r.default_IV_size=null===(b=r.sinf)||void 0===b||null===(v=b.schi)||void 0===v?void 0:v.tenc.default_IV_size,i.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,r.data_format=null===(_=r.sinf)||void 0===_||null===(w=_.frma)||void 0===w?void 0:w.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=r}if(n&&i){var S,E,T,k,C,x,D,L,R;const t=i,o=null===(S=n.tkhd)||void 0===S?void 0:S.trackId;null!=o&&(t.id=n.tkhd.trackId),t.tkhdDuration=n.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=n.mdia.mdhd.timescale,t.duration=n.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const a=n.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=a.sampleSize,t.sampleRate=a.sampleRate,t.channelCount=a.channelCount,t.present=!0,a.type){case"alaw":t.codecType=t.codec=Wb,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=$b,t.sampleRate=8e3;break;default:t.codecType=zb,t.sampleDuration=Jb.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=Jb.getRateIndexByRate(t.sampleRate),t.objectType=(null===(s=a.esds)||void 0===s?void 0:s.objectType)||2,a.esds&&(t.config=Array.from(a.esds.config)),t.codec=(null===(r=a.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}var I,P,B,M,F,U,O,N;if(t.sampleDuration=Jb.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null===(E=a.esds)||void 0===E?void 0:E.objectType)||2,a.esds&&(a.esds.config?t.config=Array.from(a.esds.config):console.warn("esds config is null")),t.codec=(null===(T=a.esds)||void 0===T?void 0:T.codec)||"mp4a.40.2",t.sampleRateIndex=Jb.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null===(k=n.mdia)||void 0===k||null===(C=k.minf)||void 0===C||null===(x=C.stbl)||void 0===x?void 0:x.stss,t.ext.ctts=null===(D=n.mdia)||void 0===D||null===(L=D.minf)||void 0===L||null===(R=L.stbl)||void 0===R?void 0:R.ctts,t.present=!0,a&&"enca"===a.type)t.isAudioEncryption=!0,a.data_format=null===(I=a.sinf)||void 0===I||null===(P=I.frma)||void 0===P?void 0:P.data_format,a.default_KID=null===(B=a.sinf)||void 0===B||null===(M=B.schi)||void 0===M?void 0:M.tenc.default_KID,a.default_IsEncrypted=null===(F=a.sinf)||void 0===F||null===(U=F.schi)||void 0===U?void 0:U.tenc.default_IsEncrypted,a.default_IV_size=null===(O=a.sinf)||void 0===O||null===(N=O.schi)||void 0===N?void 0:N.tenc.default_IV_size,t.audioSenc=n.mdia.minf.stbl.senc&&n.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=a}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),null!=t&&t.encv||null!=i&&i.enca){var j,G;const e=null==t||null===(j=t.encv)||void 0===j?void 0:j.default_KID,s=null==i||null===(G=i.enca)||void 0===G?void 0:G.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==t||null===(s=t.samples)||void 0===s?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((e=>{let{tfhd:r,tfdt:o,trun:a}=e;if(!r||!a)return;o&&(t&&t.id===r.trackId&&(t.baseMediaDecodeTime=o.baseMediaDecodeTime),i&&i.id===r.trackId&&(i.baseMediaDecodeTime=o.baseMediaDecodeTime));const n=r.defaultSampleSize||0,l=r.defaultSampleDuration||ev.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let d=a.dataOffset||0,h=0,c=-1;if(!a.samples.length&&a.sampleCount){s[r.trackId]=[];for(let e=0;e((e={offset:d,dts:h,pts:h+(e.cts||0),duration:e.duration||l,size:e.size||n,gopId:c,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(c++,e.gopId=c),h+=e.duration,d+=e.size,e)))})),s}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),s=t.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(!i&&!s)return;let r,o;if(i){var a,n;const e=null===(a=i.mdia)||void 0===a||null===(n=a.minf)||void 0===n?void 0:n.stbl;if(!e)return;const{stts:t,stsc:s,stsz:o,stco:l,stss:d,ctts:h}=e;if(!(t&&s&&o&&l&&d))return;r=qb(t,s,o,l,h,d)}if(s){var l,d,h;const e=null===(l=s.mdia)||void 0===l||null===(d=l.minf)||void 0===d?void 0:d.stbl;if(!e)return;const t=null===(h=s.mdia.mdhd)||void 0===h?void 0:h.timescale,{stts:i,stsc:r,stsz:a,stco:n}=e;if(!(t&&i&&r&&a&&n))return;o=qb(i,r,a,n)}return{videoSamples:r,audioSamples:o}}}class tv extends th{constructor(e){super(e),this.player=e,this.TAG_NAME="HlsFmp4Loader",this.tempSampleListInfo={},this.isInitVideo=!1,this.isInitAudio=!1,this.videoTrack={id:1,samples:[],sps:[],pps:[],vps:[],codec:""},this.audioTrack={id:2,samples:[],sampleRate:0,channelCount:0,codec:"",codecType:""},this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this._hasCalcFps=!1,this._tempSampleTsList=[],this._basefps=25,this._isUseWorker()&&this._initLoopWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._hasCalcFps=!1,this._tempSampleTsList=[],this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this._basefps=25,this.player.debug.log(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,s=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],s.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),ya(this.isInitAudio)){const e=ev.findBox(t,["moov"])[0];if(!e)return void this.player.debug.error(this.TAG_NAME,"cannot found moov box");ev.moovToTrack(ev.moov(e),null,i),this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=ev.findBox(t,["moof"])[0];if(e){const s=ev.moofToSamples(ev.moof(e),null,i)[i.id],r=i.baseMediaDecodeTime;if(s){const o=e.start;s.map((e=>{e.offset+=o;const s=t.subarray(e.offset,e.offset+e.size),a=e.dts+r,n=new Uint8Array(s.length+2);n.set([175,1],0),n.set(s,2),i.samples.push({type:Ue,pts:a,dts:a,payload:n,duration:e.duration,size:n.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),ya(this.isInitVideo)&&ya(this.isInitAudio)){const t=ev.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(ev.moovToTrack(ev.moov(t),s,i),ya(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debug.log(this.TAG_NAME,"video init success");let e=null;s.codecType===is?s.sps.length&&s.vps.length&&s.pps.length&&(e=Yn({sps:s.sps[0],pps:s.pps[0],vps:s.vps[0]})):s.sps.length&&s.pps.length&&(e=Fn({sps:s.sps[0],pps:s.pps[0]})),e&&(this.player.debug.log(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,Oe,0,!0,0))}}const t=ev.findBox(e,["moof"])[0];if(t){const r=ev.moofToSamples(ev.moof(t),s,i),o=s.baseMediaDecodeTime,a=i.baseMediaDecodeTime,n=t.start;Object.keys(r).forEach((t=>{s.id==t?r[t].map((t=>{t.offset+=n;const i={type:Oe,pts:(t.pts||t.dts)+o,dts:t.dts+o,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const r=e.subarray(t.offset,t.offset+t.size);i.payload=r,s.samples.push(i)})):i.id==t&&r[t].map((t=>{t.offset+=n;const s=e.subarray(t.offset,t.offset+t.size),r=t.dts+a,o=new Uint8Array(s.length+2);o.set([175,1],0),o.set(s,2),i.samples.push({type:Ue,pts:r,dts:r,payload:o,duration:t.duration,size:o.byteLength})}))}))}}const r=s.samples.concat(i.samples);r.sort(((e,t)=>e.dts-t.dts)),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this._isUseWorker()?this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer]):e.type===Oe?this._doDecodeVideo({...e,payload:t}):e.type===Ue&&this._doDecodeAudio({...e,payload:t})})),ya(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(r))}checkInitAudio(){return this.isInitAudio=!!(this.audioTrack.sampleRate&&this.audioTrack.channelCount&&this.audioTrack.codec&&"aac"===this.audioTrack.codecType),this.isInitAudio}checkInitVideo(){return this.isInitVideo=!!(this.videoTrack.pps.length&&this.videoTrack.sps.length&&this.videoTrack.codec),this.isInitVideo}_sendAccADTSHeader(e){const t=Fr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Ue,0,!0,0)}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=la(this._tempSampleTsList,Oe);if(i)this._tempSampleTsList=[],this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debug.log(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=Ea(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`JbPro:[HlsFmp4Loader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration)):s.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie),s.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength}),this.cryptoPayloadAudio(t),this._doDecodeByHls(t,Ue,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Qn(t,e.isIFrame):Un(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Oe,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}}class iv{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new tv(this.hls.player):new Ob(this.hls.player),this.player.debug.log(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,s,r,o){this.player.debug.log(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${o}`);const a=this._demuxer;try{this.isMP4?a.demux(e,t):a.demuxAndFix(wh(e,t),i,s,r)}catch(e){throw new cb(hb,db,e)}}}class sv{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new Ub(this.hls,this.player),this._transmuxer=null,this._mse=null,this._softVideo=null,this._sourceCreated=!1,this._needInitSegment=!0,this._directAppend=!1,this.TAG_NAME="HlsBufferService"}async destroy(){this._softVideo=null,this._transmuxer&&(this._transmuxer.destroy(),this._transmuxer=null)}get baseDts(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debug.log(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getBuferredDuration()}getBufferedSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleListLength()}getBufferedAudioSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleAudioListLength()}getBufferedVideoSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleVideoListLength()}createSource(e,t,i,s){if(this._sourceCreated)return;const r=e||t;r&&(Ob.probe(r)?this._transmuxer||(this._transmuxer=new iv(this.hls,!1)):ev.probe(r)?this._transmuxer||(this._transmuxer=new iv(this.hls,!0)):this.player.debug.error(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,s,r,o,a){if(null!=i&&i.length||null!=s&&s.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,o,a,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debug.log(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(){this._transmuxer=null,this._needInitSegment=!0,this._directAppend=!1}async endOfStream(){this._softVideo&&this._softVideo.endOfStream()}async setLiveSeekableRange(e,t){}seamlessSwitch(){this._needInitSegment=!0}}class rv{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(Gs,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,s=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&s.push(e)})),s.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(zs,e)}))}reset(){this._seiSet.clear()}}class ov{constructor(e){this._timescale=e,this.encodeType="",this.audioCodec="",this.videoCodec="",this.domain="",this.fps=0,this.bitrate=0,this.width=0,this.height=0,this.samplerate=0,this.channelCount=0,this.gop=0,this._bitsAccumulateSize=0,this._bitsAccumulateDuration=0}getStats(){return{encodeType:this.encodeType,audioCodec:this.audioCodec,videoCodec:this.videoCodec,domain:this.domain,fps:this.fps,bitrate:this.bitrate,width:this.width,height:this.height,samplerate:this.samplerate,channelCount:this.channelCount,gop:this.gop}}setEncodeType(e){this.encodeType=e}setFpsFromScriptData(e){var t;let{data:i}=e;const s=null==i||null===(t=i.onMetaData)||void 0===t?void 0:t.framerate;s&&s>0&&s<100&&(this.fps=s)}setVideoMeta(e){if(this.width=e.width,this.height=e.height,this.videoCodec=e.codec,this.encodeType=e.codecType,e.fpsNum&&e.fpsDen){const t=e.fpsNum/e.fpsDen;t>0&&t<100&&(this.fps=t)}}setAudioMeta(e){this.audioCodec=e.codec,this.samplerate=e.sampleRate,this.channelCount=e.channelCount}setDomain(e){this.domain=e.split("/").slice(2,3)[0]}updateBitrate(e){if((!this.fps||this.fps>=100)&&e.length){const t=e.reduce(((e,t)=>e+t.duration),0)/e.length;this.fps=Math.round(this._timescale/t)}e.forEach((e=>{1===e.gopId&&this.gop++,this._bitsAccumulateDuration+=e.duration/(this._timescale/1e3),this._bitsAccumulateSize+=e.units.reduce(((e,t)=>e+t.length),0),this._bitsAccumulateDuration>=1e3&&(this.bitrate=8*this._bitsAccumulateSize,this._bitsAccumulateDuration=0,this._bitsAccumulateSize=0)}))}}class av{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;uh(this,"_core",null),uh(this,"_samples",[]),this._core=e,this._timescale=t,this._stats=new ov(t),this._bindEvents()}getStats(){var e,t,i,s,r,o,a;const{currentTime:n=0,decodeFps:l=0}=(null===(e=this._core)||void 0===e?void 0:e.media)||{};return{...this._stats.getStats(),downloadSpeed:(null===(t=this._core)||void 0===t||null===(i=t.speedInfo)||void 0===i?void 0:i.call(t).speed)||0,avgSpeed:(null===(s=this._core)||void 0===s||null===(r=s.speedInfo)||void 0===r?void 0:r.call(s).avgSpeed)||0,currentTime:n,bufferEnd:(null===(o=this._core)||void 0===o||null===(a=o.bufferInfo())||void 0===a?void 0:a.remaining)||0,decodeFps:l}}_bindEvents(){this._core.on(Is,(e=>this._stats.updateBitrate(e.samples))),this._core.on(Ps,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(Bs,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(Ms,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new ov(this._timescale)}}class nv extends o{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),uh(this,"_loadSegment",(async()=>{if(this._segmentProcessing)return void this.player.debug.warn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debug.warn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debug.log(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debug.log(this.TAG_NAME,"nextSeg is null and return")})),this.player=e,this.config=null,this._manifestLoader=null,this._segmentLoader=null,this._playlist=null,this._bufferService=null,this._seiService=null,this._stats=null,this._prevSegSn=null,this._prevSegCc=null,this._tickTimer=null,this._tickInterval=500,this._segmentProcessing=!1,this._reloadOnPlay=!1,this._switchUrlOpts=null,this._disconnectTimer=null,this.TAG_NAME="Hls256",this.canVideoPlay=!1,this.$videoElement=null,this.config=t=function(e){return{isLive:!0,maxPlaylistSize:50,retryCount:3,retryDelay:1e3,pollRetryCount:2,loadTimeout:1e4,preloadTime:30,softDecode:!1,bufferBehind:10,maxJumpDistance:3,startTime:0,targetLatency:10,maxLatency:20,allowedStreamTrackChange:!0,...e}}(t),this._manifestLoader=new Ib(this),this._segmentLoader=new Bb(this),this._playlist=new Fb(this),this._bufferService=new sv(this),this._seiService=new rv(this),this._stats=new av(this,9e4),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){this.player.debug.log(this.TAG_NAME,"destroy()"),this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),await Promise.all([this._clear(),this._bufferService.destroy()]),this._manifestLoader&&(await this._manifestLoader.destroy(),this._manifestLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null),this._playlist&&(this._playlist.destroy(),this._playlist=null),this.player.debug.log(this.TAG_NAME,"destroy end")}_startTick(){this._stopTick(),this._tickTimer=setTimeout((()=>{this._tick()}),this._tickInterval)}_stopTick(){this._tickTimer&&clearTimeout(this._tickTimer),this._tickTimer=null}_tick(){this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.log(this.TAG_NAME,"_tick() player is destroyed"):(this._startTick(),this._loadSegment())}get isLive(){return this._playlist.isLive}get streams(){return this._playlist.streams}get currentStream(){return this._playlist.currentStream}get hasSubtitle(){return this._playlist.hasSubtitle}get baseDts(){var e;return null===(e=this._bufferService)||void 0===e?void 0:e.baseDts}speedInfo(){return this._segmentLoader.speedInfo()}resetBandwidth(){this._segmentLoader.resetBandwidth()}getStats(){return this._stats.getStats()}async loadSource(e){return await this._reset(),await this._loadData(e),this._startTick(),!0}async _loadData(e){try{e&&(e=e.trim())}catch(e){}if(!e)throw this._emitError(new cb(nb,nb,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){var s,r;if(0===i.bitrate&&null!==(s=this._switchUrlOpts)&&void 0!==s&&s.bitrate)i.bitrate=null===(r=this._switchUrlOpts)||void 0===r?void 0:r.bitrate;const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),o=this._playlist.getSegmentByIndex(t+1);if(o){const e=o.start;this.player.debug.warn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debug.log(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[t,i,a]=e;t?(this._playlist.upsertPlaylist(t,i,a),this.isLive&&this._pollM3U8(s,r,o)):this.player.debug.warn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(cb.create(e))}))}_pollM3U8(e,t,i){var s;let r=this._playlist.isEmpty;this._manifestLoader.poll(e,t,i,((e,t,i)=>{this._playlist.upsertPlaylist(e,t,i),this._playlist.clearOldSegment(),e&&r&&!this._playlist.isEmpty&&this._loadSegment(),r&&(r=this._playlist.isEmpty)}),(e=>{this._emitError(cb.create(e))}),1e3*((null===(s=this._playlist.lastSegment)||void 0===s?void 0:s.duration)||0))}async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() !seg");let t=!1,i=null;try{this._segmentProcessing=!0,t=await this._reqAndBufferSegment(e,this._playlist.getAudioSegment(e))}catch(e){i=e}finally{this._segmentProcessing=!1}return i?this._emitError(cb.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit($s,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debug.log(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(e,t,s)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!r[0])return;const o=await this._bufferService.decryptBuffer(...r);if(!o)return void this.player.debug.log(this.TAG_NAME,"decryptBuffer return null");const a=e?e.sn:t.sn,n=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(o[0],o[1],null==l?void 0:l.videoCodec,null==l?void 0:l.audioCodec),await this._bufferService.appendBuffer(e,t,o[0],o[1],s,this._prevSegSn===a-1,n),this._prevSegCc=i,this._prevSegSn=a,!0}async _clear(){this.player.debug.log(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debug.log(this.TAG_NAME,"_reset()"),this._reloadOnPlay=!1,this._prevSegSn=null,this._prevSegCc=null,this._switchUrlOpts=null,this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),this._stats.reset(),await this._clear(),this._bufferService.reset(e)}_end(){this.player.debug.log(this.TAG_NAME,"_end()"),this._clear()}_emitError(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var s;!1===(null===(t=e.originError)||void 0===t?void 0:t.fatal)?console.warn(e):(console.table(e),console.error(e),console.error(null===(s=this.media)||void 0===s?void 0:s.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(Ws,e)),i&&this._end(),this._seiService.reset(),this.emit(Js,e));return e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){var i;const s=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(s),o=null===(i=this._stats)||void 0===i?void 0:i.getStats().downloadSpeed;if(o&&r){t+=r.duration*this._playlist.currentStream.bitrate/o+1}else t+=5}return t}getDemuxBuferredDuration(){return this._bufferService.getBuferredDuration()||0}getDemuxBufferedListLength(){return this._bufferService.getBufferedSegments()||0}getDemuxAudioBufferedListLength(){return this._bufferService.getBufferedAudioSegments()||0}getDemuxVideoBufferedListLength(){return this._bufferService.getBufferedVideoSegments()||0}}class lv extends o{constructor(e){super(),uh(this,"TAG_NAME","Hls256Decoder"),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new nv(e),this._bindEvents()}async destroy(){return this._stopBandwidthEstimateInterval(),this.hls&&(await this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.$videoElement=null,this.player.debug.log(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(Js,(e=>{this.player.emitError(lt.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(ot.kBps,(e.avgSpeed/1024/8).toFixed(2)),this.hls.resetBandwidth()}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}async loadSource(e){return this.url=e,await this.hls.loadSource(e),!0}checkHlsBufferedDelay(){let e=0;return this.hls&&(e=this.hls.getDemuxBuferredDuration()),e}getDemuxBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxBufferedListLength()),e}getDemuxAudioBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxAudioBufferedListLength()),e}getDemuxVideoBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxVideoBufferedListLength()),e}}class dv extends o{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("jb-pro-container-playback"),this._showPrecision=null,this._startTime=null,this._playStartTime=null,this._playingTimestamp=null,this._fps=parseInt(t.fps,10)||e._opt.playbackFps,this._isUseFpsRender=!!ga(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||X.normal,t.controlType&&-1===[X.normal,X.simple].indexOf(t.controlType)&&(this.player.debug.warn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=X.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!ga(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!ya(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!ga(t.isCacheBeforeDecodeForFpsRender),this._startfpsTime=null,this._startFpsTimestamp=null,this._checkStatsInterval=null,this._playbackTs=0,this._renderFps=0,this._isUseLocalCalculateTime?this._startLocalCalculateTime():this._listen(),this.playbackList=[],this._playbackListStartTimestamp=null,this._totalDuration=0,t.controlType===X.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===X.simple){t.duration&&(this._totalDuration=1e3*t.duration);let e=t.startTime||0;e>this.totalDuration&&(e=this.totalDuration),this.setStartTime(e)}this.player.on(ot.playbackPause,(e=>{e?this.pause():this.resume()}));const i={fps:this._fps,isUseFpsRender:this._isUseFpsRender,localOneFrameTimestamp:this._localOneFrameTimestamp,isUseLocalCalculateTime:this._isUseLocalCalculateTime,uiUsePlaybackPause:t.uiUsePlaybackPause,showControl:t.showControl};try{e.debug.log("Playback","init",JSON.stringify(i))}catch(t){e.debug.log("Playback","init",i)}}destroy(){this._startTime=null,this._showPrecision=null,this._playStartTime=null,this._playingTimestamp=null,this._totalDuration=0,this._audioTimestamp=0,this._videoTimestamp=0,this._fps=null,this._isUseFpsRender=!1,this._rate=1,this.playbackList=[],this._playbackListStartTimestamp=null,this._localCalculateTimeInterval=null,this._currentLocalTimestamp=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._renderFps=0,this._playbackTs=0,this._stopLocalCalculateTime(),this.clearStatsInterval(),this.player.$container&&this.player.$container.classList.remove("jb-pro-container-playback"),this.off(),this.player.debug.log("Playback","destroy")}_listen(){this.player.on(ot.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;this.setPlayingTimestamp(i)}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._startFpsTimestamp||(this._startFpsTimestamp=so()),Bo(e.ts)&&(this.player.updateStats({fps:!0,ts:e.ts}),this._playbackTs=e.ts,this._startfpsTime||(this._startfpsTime=e.ts),this._renderFps+=1);const t=so(),i=t-this._startFpsTimestamp;if(i<1e3)return;let s=null;this._startfpsTime&&(s=this._playbackTs-this._startfpsTime),this.player.emit(ot.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:s,audioBufferSize:this.player.audio?this.player.audio.bufferSize:0,videoBufferSize:this.player.video?this.player.video.bufferSize:0,ts:this._playbackTs}),this._renderFps=0,this._startfpsTime=this._playbackTs,this._startFpsTimestamp=t}updateLocalOneFrameTimestamp(e){this._localOneFrameTimestamp=e}_startLocalCalculateTime(){this._stopLocalCalculateTime(),this._localCalculateTimeInterval=setInterval((()=>{const e=this._currentLocalTimestamp;this._playStartTime||(this._playStartTime=e-1e3);let t=e-this._playStartTime;this.setPlayingTimestamp(t)}),1e3)}startCheckStatsInterval(){this.clearStatsInterval(),this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}_stopLocalCalculateTime(){this._localCalculateTimeInterval&&(clearInterval(this._localCalculateTimeInterval),this._localCalculateTimeInterval=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}increaseLocalTimestamp(){this._isUseLocalCalculateTime&&(this._currentLocalTimestamp+=this._localOneFrameTimestamp)}initPlaybackList(e,t,i){this.playbackList=e||[];let s=0;if(this.playbackList.forEach(((e,t)=>{10===Vo(e.start)?(e.startTimestamp=1e3*e.start,e.startTime=vo(e.startTimestamp)):(e.startTimestamp=e.start,e.startTime=vo(e.startTimestamp)),10===Vo(e.end)?(e.endTimestamp=1e3*e.end,e.endTime=vo(e.endTimestamp)):(e.endTimestamp=e.end,e.endTime=vo(e.endTimestamp)),e.duration=e.end-e.start,s+=e.duration})),this._totalDuration=s,this.player.debug.log("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===Vo(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const r=t||Si;this.setShowPrecision(r)}get totalDuration(){return(this._totalDuration||0)/1e3}get startTime(){return this._startTime||0}setStartTime(e){this._startTime=e,this._playingTimestamp=e,this._playStartTime=null}setRate(e){this._rate=e,this.player.emit(ot.playbackRateChange,e)}get fps(){return this._fps}get rate(){return this._rate}get isUseFpsRender(){return this._isUseFpsRender}get isUseLocalCalculateTime(){return this._isUseLocalCalculateTime}get showPrecision(){return this._showPrecision}get is60Min(){return this.showPrecision===Si}get is30Min(){return this.showPrecision===Ei}get is10Min(){return this.showPrecision===Ti}get is5Min(){return this.showPrecision===ki}get is1Min(){return this.showPrecision===ki}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){xi.includes(e)||(this.player.debug.warn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=Si),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(ot.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(ot.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===X.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(ot.playbackTime,t);const i=new Date(t);this.player.emit(ot.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===X.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debug.log("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),this._playingTimestamp=t,this.player.emit(ot.playbackTime,t),this.player.emit(ot.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=xi.indexOf(this.showPrecision)-1;if(e>=0){const t=xi[e];this.setShowPrecision(t)}}expandPrecision(){const e=xi.indexOf(this.showPrecision)+1;if(e<=xi.length-1){const t=xi[e];this.setShowPrecision(t)}}seek(e){if(this.player.debug.log("Playback","seek()",e),this.controlType===X.normal){if("true"===e.hasRecord){let t=e.time;"min"===e.type&&(t=60*e.time);let i=function(e){let t={};e>-1&&(t={hour:Math.floor(e/60/60)%60,min:Math.floor(e/60)%60,second:e%60});return t}(t);if(this._playbackListStartTimestamp){const e=new Date(this._playbackListStartTimestamp).setHours(i.hour,i.min,i.second,0);i.timestamp=e;const t=this._findMoreInfoByTimestamp(e);i&&t.more&&(i.more=t.more)}this.player.emit(ot.playbackSeek,i)}}else if(this.controlType===X.simple){let t=e.time;this.player.emit(ot.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(ot.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===X.normal}isControlTypeSimple(){return this.controlType===X.simple}}class hv extends o{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this._isZooming=!1,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0};const{events:{proxy:t},debug:i}=this.player;this.player.on(ot.zooming,this._handleZooming.bind(this));const s=t(window,uo()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(s),e.debug.log("zoom","init")}destroy(){this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.off(),this.player.debug.log("zoom","destroy")}_handleZooming(e){if(e){this.player.$container.classList.add("jb-pro-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.offsetLeft,i=this.player.video.$videoElement.offsetTop;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let s=e.match(/scale\([0-9., ]*\)/g);if(s&&s[0]){let e=s[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}this._isZooming=!0}else{this.player.$container.classList.remove("jb-pro-zoom-control"),this._unbindEvents(),this._resetVideoPosition(),this.player.$container.style.cursor="auto";let e=this.prevVideoElementStyleTransform;this.player.video.$videoElement.style.transform=e,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,uo()&&this.player._opt.useWebFullScreen&&this.player.resize(),this._isZooming=!1}}_bindEvents(){const{events:{proxy:e},debug:t}=this.player,i=xa(),s=e(this.player.$container,i.move,(e=>{this.handleMouseMove(e)}));this.bindEvents.push(s);const r=e(this.player.$container,i.down,(e=>{this.handleMouseDown(e)}));this.bindEvents.push(r);const o=e(window,i.up,(e=>{this.handleMouseUp(e)}));this.bindEvents.push(o)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()}))}handleMouseMove(e){if(e.stopPropagation(),this.isDragging&&this.player.zooming){e.preventDefault();const{posX:t,posY:i}=ea(e),s=this.tempPosition.x-t,r=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-s,this.videoPosition.top=this.videoPosition.top-r,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=Qo(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=ea(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debug.log("zoom","handleMouseDown is dragging true")}}handleMouseUp(e){e.stopPropagation(),this.isDragging&&this.player.zooming&&(e.preventDefault(),this.tempPosition={x:0,y:0},this.isDragging=!1,this.player.$container.style.cursor="grab",this.player.debug.log("zoom","handleMouseUp is dragging false"))}updateVideoPosition(){const e=this.player.video.$videoElement;e.style.left=this.videoPosition.left+"px",e.style.top=this.videoPosition.top+"px"}_resetVideoPosition(){this.player.resize(),this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.currentZoom=1,this.isDragging=!1}narrowPrecision(){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale())}expandPrecision(){this.currentZoom>=this.player._opt.zoomMaxScale||(this.currentZoom+=1,this.updateVideoElementScale())}updateCurrentZoom(e){e<1||e>this.player._opt.zoomMaxScale||(this.currentZoom=e,this.updateVideoElementScale())}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){const e=this.player.video.$videoElement;let t=e.style.transform,i=1,s=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(i=e,s=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(s=t)}s=wo(s),i=wo(i);const r=.5*i*(this.currentZoom-1)+i,o=.5*s*(this.currentZoom-1)+s;let a;a=-1===t.indexOf("scale(")?t+` scale(${r},${o})`:t.replace(/scale\([0-9., ]*\)/,`scale(${r},${o})`),this.player.debug.log("zoom",`updateVideoElementScale end is ${r}, ${o} style is ${a}`),e.style.transform=a}isZooming(){return this._isZooming}}class cv extends o{constructor(e){super(),this.player=e,this.faceDetector=null,this.objectDetector=null,this.imageDetector=null,this.occlusionDetector=null,this.initFaceDetector(),this.initObjectDetector(),this.initImageDetector(),this.initOcclusionDetector();let t="init";this.faceDetector&&(t+=" and use faceDetector"),this.objectDetector&&(t+=" and use objectDetector"),this.imageDetector&&(t+=" and use imageDetector"),this.occlusionDetector&&(t+=" and use occlusionDetector"),this.player.debug.log("AiLoader",t)}destroy(){this.off(),this.faceDetector&&(this.faceDetector.destroy(),this.faceDetector=null),this.objectDetector&&(this.objectDetector.destroy(),this.objectDetector=null),this.imageDetector&&(this.imageDetector.destroy(),this.imageDetector=null),this.occlusionDetector&&(this.occlusionDetector.destroy(),this.occlusionDetector=null),this.player.debug.log("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.JessibucaProFaceDetector){const e=new JessibucaProFaceDetector({detectWidth:this.player._opt.aiFaceDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("jessibuca-pro-face-detector-info",(e=>{if(this.player.emit(ot.aiFaceDetectorInfo,e),this.player._opt.aiFaceDetectShowRect){const t=this.player._opt.aiFaceDetectRectConfig||{},i=(e.list||[]).map((e=>(e.type="rect",e.color=t.borderColor||"#0000FF",e.lineWidth=t.borderWidth||2,e)));this.player.video&&this.player.video.addAiContentToCanvas(i)}}))}))}}initObjectDetector(){if(this.player._opt.useObjectDetector&&window.JessibucaProObjectDetector){const e=new JessibucaProObjectDetector({detectWidth:this.player._opt.aiObjectDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("jessibuca-pro-object-detector-info",(e=>{if(this.player.emit(ot.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const s={type:"rect",color:i.borderColor||"#0000FF",lineWidth:i.borderWidth||2,x:e.rect.x,y:e.rect.y,width:e.rect.width,height:e.rect.height},r={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(s,r)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.JessibucaProImageDetector){const e=new JessibucaProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector){const e=new JessibucaProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class uv extends o{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,uo()?this.player.debug.warn(this.LOG_NAME,"not support mobile"):this.init(),e.debug.log(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debug.log(this.LOG_NAME,"destroy")}get isShow(){return e=this.player.$container,t="jb-pro-contextmenus-show",e.classList.contains(t);var e,t}show(){ac(this.player.$container,"jb-pro-contextmenus-show")}hide(){var e,t;e=this.player.$container,t="jb-pro-contextmenus-show",e.classList.remove(t)}init(){const{events:{proxy:e},debug:t}=this.player;this.player._opt.contextmenuBtns.length>0&&this.player._opt.contextmenuBtns.forEach((e=>{this.addMenuItem(e)})),e(this.player.$container,"contextmenu",(e=>{e.preventDefault(),this.show();const t=e.clientX,i=e.clientY,{height:s,width:r,left:o,top:a}=this.player.$container.getBoundingClientRect(),{height:n,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-o,h=i-a;t+l>o+r&&(d=r-l),i+n>a+s&&(h=s-n),oo(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{dc(e,this.$contextmenus)||this.hide()})),this.player.on(ot.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debug.warn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=ua(Ss);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:s}=this.player,r=So(),o=`\n
          \n ${e.content}\n
          \n `,a=Array.from(this.$contextmenus.children)[e.index];a?a.insertAdjacentHTML("beforebegin",o):nc(this.$contextmenus,o);const n=this.$contextmenus.querySelector(`.jb-pro-contextmenu-${r}`);e.click&&i(n,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:r,$menuItem:n})}}class pv extends o{constructor(e){super(),this.player=e,this.TAG_NAME="CommonWebrtc",this.rtcPeerConnection=null,this.videoStream=null,this.isDisconnected=!1,this.isH264=this.player.isWebrtcH264(),this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.isInitInfo=!1,this.$videoElement=this.player.video.$videoElement,this.bandwidthEstimateInterval=null,this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this.prevWebrtcVideoStats={},this.prevWebrtcAudioStats={},this.currentWebrtcStats={},this.player._opt.webrtcUseCanvasRender&&this.isH264&&(this.$videoElement=document.createElement("video"),bo()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){if(this.isDisconnected=!1,this.isInitInfo=!1,this.prevWebrtcVideoStats={},this.currentWebrtcStats={},this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this._stopBandwidthEstimateInterval(),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isH264&&(this.videoStream&&(this.videoStream.getTracks().forEach((e=>e.stop())),this.videoStream=null),this.$videoElement))if(this.player._opt.webrtcUseCanvasRender){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}else this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject"));this.$videoElement=null,this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=Zr,this.rtcPeerConnection.ontrack=Zr,this.rtcPeerConnection.onconnectionstatechange=Zr,this.rtcPeerConnection.ondatachannel=Zr,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,Qi,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Xi,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,Zi,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,es,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debug.log(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debug.log(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(ot.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(ot.webrtcFailed);break;case"disconnected":t.emit(ot.webrtcDisconnect);break;case"closed":t.emit(ot.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debug.log(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let i=t.streams[0];this.$videoElement.autoplay=!0,this.$videoElement.srcObject=i,this.videoStream=i}else"audio"===t.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(lt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debug.log(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(ot.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(ot.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_startBandwidthEstimateInterval"),this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{this.rtcPeerTrackVideoReceiver&&this.rtcPeerTrackVideoReceiver.getStats().then((e=>{let t={},i=0;e.forEach((e=>{if(e)switch(e.type){case hr:("succeeded"===e.state||e.bytesReceived)&&(this.currentWebrtcStats.timestamp=e.timestamp,this.currentWebrtcStats.rtt=e.currentRoundTripTime||-1,this.currentWebrtcStats.bytesReceived=e.bytesReceived||0,this.currentWebrtcStats.bytesSent=e.bytesSent||0);break;case pr:this.currentWebrtcStats.remoteCandidate=e||{};break;case ur:this.currentWebrtcStats.localCandidate=e||{};break;case cr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.vbps=o,this.prevWebrtcVideoStats=e;break;case fr:e.frameWidth&&e.frameHeight&&(this.currentWebrtcStats.frameWidth=e.frameWidth||0,this.currentWebrtcStats.frameHeight=e.frameHeight||0)}})),this.rtcPeerTrackAudioReceiver?this.rtcPeerTrackAudioReceiver.getStats().then((e=>{e.forEach((e=>{if(e&&e.type===cr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.abps=o,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(ot.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(ot.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){Ta()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.player.video.render({$video:this.$videoElement,ts:t.mediaTime||0}),this.player.updateStats({dts:t.mediaTime||0}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}isVideoPlaying(){return this.$videoElement&&ya(this.$videoElement.paused)&&ya(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class fv extends pv{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debug.error(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r})).then((()=>{t()})).catch((e=>{this.player.debug&&this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"response sdp is null"),i("response sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class mv extends pv{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debug.log(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debug.error(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debug.log(this.TAG_NAME,"this is raw sdp response")}e?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class gv extends pv{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=lo((t=>{e.emit(ot.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=Zr,this.rtcPeerConnectionDataChannel.onclose=Zr,this.rtcPeerConnectionDataChannel.onmessage=Zr,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null),this.player.debug.log(this.TAG_NAME,"destroy")}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debug.log(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debug.log(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(ot.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(ot.webrtcFailed);break;case"disconnected":t.emit(ot.webrtcDisconnect);break;case"closed":t.emit(ot.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debug.log(this.TAG_NAME,"ontrack",i);const s=t.video.$videoElement;if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let t=i.streams[0];s.autoplay=!0,s.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(lt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debug.log(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(ot.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(ot.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debug.log(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debug.log(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debug.warn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(ot.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debug&&this.player.debug.warn(this.TAG_NAME,"ondatachannel and player is destroyed"):(this.streamRate&&this.streamRate(t.byteLength),this.player.demux&&this.player.demux.dispatch(t))},t.onclose=()=>{this.player.debug.warn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debug.log(this.TAG_NAME,"signalChannel,onmessage",e);JSON.parse(e.data).type},this.rtcPeerConnection=e}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}loadSource(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{const r=this.rtcPeerConnection;r.createOffer().then((o=>{r.setLocalDescription(o),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t,i){let s={"Content-Type":"application/sdp"};return i.username&&i.password&&(s.Authorization="Basic "+btoa(i.username+":"+i.password)),fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:s,body:t})}(e,o.sdp,t).then((e=>{e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),i()})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),s(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource sdp is null"),s("sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),s(e)}))}))}}class yv extends pv{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return Il({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debug.error(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r&&r.sdp?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r.sdp})).then((()=>{t()})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debug&&this.player.debug.error(this.TAG_NAME,"response sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debug&&this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Av extends o{constructor(e){if(super(),this.TAG_NAME="AliyunRtc",this.player=e,!window.AliRTS)throw new Error("AliyunRtc is not defined");this.aliyunRtc=window.AliRTS.createClient(),this.aliyunRtcRemoteStream=null,this.$videoElement=this.player.video.$videoElement,this.listenEvents(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.$videoElement=null,this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debug.log(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debug.error(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(lt.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debug.log(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",s="media";this.aliyunRtc.on("onPlayEvent",(r=>{if(r.event===e)this.player.debug.log(this.TAG_NAME,"onPlayEvent and canplay");else if(r.event===t)this.player.debug.log(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(r.event===i)this.player.debug.log(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(r.event===s){const e=r.data;let t={},i=0;if(e.audio){const s=Math.floor(e.audio.bytesReceivedPerSecond);i+=s,t.abps=s}if(e.video){const s=Math.floor(e.video.bytesReceivedPerSecond);i+=s,t.vbps=s}this.player.updateStats(t),this.player.emit(ot.kBps,(i/1024).toFixed(2))}}))}loadSource(e){return new Promise(((t,i)=>{this.aliyunRtc.isSupport({isReceiveVideo:!0}).then((()=>{this.aliyunRtc.subscribe(e,{}).then((e=>{this.aliyunRtcRemoteStream=e,e.play(this.$videoElement),t()})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and is not support: ",e.message),i(e.message)}))}))}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}isVideoPlaying(){return this.$videoElement&&ya(this.$videoElement.paused)&&ya(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class bv{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debug.log(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){ya(ka())?this.player.debug.log(this.TAG_NAME,"not support PressureObserver"):(this.observer=new PressureObserver((e=>{const t=(e||[]).find((e=>"cpu"===e.source));if(t){switch(this.latestCpuInfo=t,t.state){case"nominal":this.currentLevel=0;break;case"fair":this.currentLevel=1;break;case"serious":this.currentLevel=2;break;case"critical":this.currentLevel=3;break;default:this.currentLevel=-1}this.player.emit(ot.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu"))}}class vv extends za{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e),this.TAG_NAME="DynamicWatermark",this.isPauseAnimation=!1,this.isStopAnimation=!1,this.rafID=null,this.speed=t.speed||.2,this.isDynamic=!0,this.shadowRootDynamicDom=null,this.isGhost=!0===t.isGhost,this.ghostConfig={on:t.on||5,off:t.off||5},this.waterMarkWillRemove=!1,this.waterMarkWillAdd=!1,this.player.once(ot.start,(()=>{const e=ya(co)?decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"):t.content;let i=this.player.getVideoInfo();i||(i={width:200,height:200}),this.update({text:{content:e,fontSize:t.fontSize||18,color:t.color||"white"},left:i.width*Math.random(),top:i.height*Math.random(),opacity:t.opacity||.15}),this.startAnimation()})),this.player.debug.log(this.TAG_NAME,"int")}destroy(){super.destroy(),this.shadowRootDynamicDom=null,this.stopAnimation(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),s={width:0,height:0};const r=()=>{try{if(ya(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const o=this.shadowRootInnerDom,a=this.shadowRootDynamicDom,n=o.getBoundingClientRect(),l=a.getBoundingClientRect();if(l.width&&l.height&&(s.width=l.width,s.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?ya(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(n,s),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(n,s),void(0!==this.speed&&requestAnimationFrame(r));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-n.left,c=l.top-n.top;h+=d*t*i,c+=d*e*(1-i),h+s.width>n.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+s.height>n.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(n.width-s.width,h),c=Math.min(n.height-s.height,c);const u=h/n.width*100,p=c/n.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,ya(this.waterMarkWillRemove)&&this.isGhost&&(this.waterMarkWillRemove=!0,setTimeout((()=>{this._removeDom(),this.waterMarkWillRemove=!1}),1e3*this.ghostConfig.on))}}catch(e){}if(this.isStopAnimation)return this.isStopAnimation=!1,cancelAnimationFrame(this.rafID),void(this.rafID=null);0!==this.speed&&requestAnimationFrame(r)};this.rafID=requestAnimationFrame(r)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),s=e.height*Math.random();i=Math.min(e.width-2*t.width,i),s=Math.min(e.height-2*t.height,s),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${s}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class _v extends o{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=fa();if(this._opt=Object.assign({},i,t),this.debug=new xr(this),this.debug.log(this.TAG_NAME,"init and version is",ho),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(bo()||Ao())&&(this._canPlayAppleMpegurl=ta(),this.debug.log(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),(uo()||po())&&(this.debug.log(this.TAG_NAME,"isMobileOrPad and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),ga(Rr.isEnabled)&&ga(this._opt.useWebFullScreen)&&(this.debug.log(this.TAG_NAME,"screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),ya(Rr.isEnabled)&&ya(this._opt.useWebFullScreen)&&(this.debug.log(this.TAG_NAME,"screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),_a()&&(this.debug.log(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,Ko()&&ga(this._opt.isHls)&&ya(this._opt.supportHls265)&&(this.debug.log(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),ya(this._opt.playFailedAndReplay)&&(this.debug.log(this.TAG_NAME,"_opt.playFailedAndReplay is false and set others replay params false"),this._opt.webglAlignmentErrorReplay=!1,this._opt.webglContextLostErrorReplay=!1,this._opt.autoWasm=!1,this._opt.mseDecodeErrorReplay=!1,this._opt.mediaSourceTsIsMaxDiffReplay=!1,this._opt.wcsDecodeErrorReplay=!1,this._opt.wasmDecodeErrorReplay=!1,this._opt.simdDecodeErrorReplay=!1,this._opt.videoElementPlayingFailedReplay=!1,this._opt.networkDelayTimeoutReplay=!1,this._opt.widthOrHeightChangeReplay=!1,this._opt.simdH264DecodeVideoWidthIsTooLargeReplay=!1,this._opt.mediaSourceUseCanvasRenderPlayFailedReplay=!1,this._opt.heartTimeoutReplay=!1,this._opt.loadingTimeoutReplay=!1,this._opt.websocket1006ErrorReplay=!1,this._opt.streamErrorReplay=!1,this._opt.streamEndReplay=!1,this._opt.mseWaitVideoCanplayAutoWasm=!1),this._opt.hiddenControl&&(this.debug.log(this.TAG_NAME,"_opt.hiddenControl is true and set others show btn to false"),Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(this._opt.operateBtns[e]=!1)})),this._opt.showBandwidth=!1,this._opt.extendOperateBtns=[],this._opt.controlHtml="",this.isPlayback()&&(this._opt.playbackConfig.showControl=!1)),this._opt.watermarkConfig={image:{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS4AAABgCAYAAACjZZ/rAAAK4mlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU1kagO976SEhkIQISAm9SW8BpIQeivQqKiEJJJQQE4KCDZXBERwVRESwDOCoiIKjIyBjQSxYUWzYB2RQUNbBgg2VfcASZmbP7p7937nvfufPf/9yz705/wOAHMKVSDJhFQCyxDnSyABvZnxCIhP3DOAAA9CBA7Dm8mQSdnh4CEBkev6rvL8LoIn5luWEr3///b8KlS+Q8QCAkhBO4ct4WQi3I2OEJ5HmAIA6jOgNluRIJvg2wnQpkiDCgxOcNsVfJjhlktEqkzbRkT4IGwKAJ3G50jQASDaInpnLS0P8kMIRthHzRWKECxD24Am5fISRuGBOVlb2BA8jbIrYSwAg0xFmpfzJZ9pf/Kco/HO5aQqeqmtS8L4imSSTm/d/bs3/lqxM+XQMY2SQhNLASGRWR/bvXkZ2sILFKfPCplnEn7SfZKE8MGaaeTKfxGnmc32DFWsz54VMc6rIn6Pwk8OJnmaBzC9qmqXZkYpYqVIf9jRzpTNx5RkxCr1QwFH4zxdGx01zrih23jTLMqKCZ2x8FHqpPFKRv0Ac4D0T119Re5bsT/WKOIq1OcLoQEXt3Jn8BWL2jE9ZvCI3vsDXb8YmRmEvyfFWxJJkhivsBZkBCr0sN0qxNgc5nDNrwxV7mM4NCp9m4Av8QAjyMEEMsAPOwBawQAQIzREszZkoxidbkicVpQlzmGzkxgmYHDHPag7TzsbODoCJ+zt1JN5GTt5LiHFqRpe9BznK75E7UzqjSykHoKUICf1gRme4CwBKIQDNHTy5NHdKh554YQARUJB/Bg2gAwyAKbBE8nMCbsALyTgIhIFokAAWAh4QgiwgBUvAcrAaFIESsBlsBVVgN6gD+8EhcAS0gBPgDLgAroAb4A54CHrBAHgJRsB7MAZBEA4iQzRIA9KFjCALyA5iQR6QHxQCRUIJUDKUBokhObQcWguVQGVQFVQD1UM/Q8ehM9AlqBu6D/VBQ9Ab6DOMgkkwHdaGjWFrmAWz4WA4Gl4Ap8GL4Xy4EN4IV8K18EG4GT4DX4HvwL3wS3gUBVBKKAZKD2WJYqF8UGGoRFQqSopaiSpGVaBqUY2oNlQn6haqFzWM+oTGomloJtoS7YYORMegeejF6JXoDegq9H50M/oc+ha6Dz2C/oYhY7QwFhhXDAcTj0nDLMEUYSowezHHMOcxdzADmPdYLJaBNcE6YwOxCdh07DLsBuxObBO2HduN7ceO4nA4DZwFzh0XhuPicnBFuO24g7jTuJu4AdxHvBJeF2+H98cn4sX4NfgK/AH8KfxN/HP8GEGFYERwJYQR+IQ8wibCHkIb4TphgDBGVCWaEN2J0cR04mpiJbGReJ74iPhWSUlJX8lFKUJJpFSgVKl0WOmiUp/SJxKVZE7yISWR5KSNpH2kdtJ90lsymWxM9iInknPIG8n15LPkJ+SPyjRlK2WOMl95lXK1crPyTeVXFALFiMKmLKTkUyooRynXKcMqBBVjFR8VrspKlWqV4yo9KqOqNFVb1TDVLNUNqgdUL6kOUnFUY6oflU8tpNZRz1L7aSiaAc2HxqOtpe2hnacN0LF0EzqHnk4voR+id9FH1KhqDmqxakvVqtVOqvUyUAxjBoeRydjEOMK4y/g8S3sWe5Zg1vpZjbNuzvqgPlvdS12gXqzepH5H/bMGU8NPI0OjVKNF47EmWtNcM0JzieYuzfOaw7Pps91m82YXzz4y+4EWrGWuFam1TKtO66rWqLaOdoC2RHu79lntYR2GjpdOuk65zimdIV2aroeuSLdc97TuC6Yak83MZFYyzzFH9LT0AvXkejV6XXpj+ib6Mfpr9Jv0HxsQDVgGqQblBh0GI4a6hqGGyw0bDB8YEYxYRkKjbUadRh+MTYzjjNcZtxgPmqibcEzyTRpMHpmSTT1NF5vWmt42w5qxzDLMdprdMIfNHc2F5tXm1y1gCycLkcVOi+45mDkuc8Rzauf0WJIs2Za5lg2WfVYMqxCrNVYtVq+sDa0TrUutO62/2TjaZNrssXloS7UNsl1j22b7xs7cjmdXbXfbnmzvb7/KvtX+tYOFg8Bhl8M9R5pjqOM6xw7Hr07OTlKnRqchZ0PnZOcdzj0sOiuctYF10QXj4u2yyuWEyydXJ9cc1yOuf7hZumW4HXAbnGsyVzB3z9x+d313rnuNe68H0yPZ40ePXk89T65nredTLwMvvtder+dsM3Y6+yD7lbeNt9T7mPcHH1efFT7tvijfAN9i3y4/ql+MX5XfE399/zT/Bv+RAMeAZQHtgZjA4MDSwB6ONofHqeeMBDkHrQg6F0wKjgquCn4aYh4iDWkLhUODQreEPppnNE88ryUMhHHCtoQ9DjcJXxz+awQ2IjyiOuJZpG3k8sjOKFrUoqgDUe+jvaM3RT+MMY2Rx3TEUmKTYutjP8T5xpXF9cZbx6+Iv5KgmSBKaE3EJcYm7k0cne83f+v8gSTHpKKkuwtMFixdcGmh5sLMhScXURZxFx1NxiTHJR9I/sIN49ZyR1M4KTtSRng+vG28l3wvfjl/SOAuKBM8T3VPLUsdTHNP25I2JPQUVgiHRT6iKtHr9MD03ekfMsIy9mWMZ8ZlNmXhs5Kzjoup4gzxuWyd7KXZ3RILSZGkd7Hr4q2LR6TB0r0ySLZA1ppDRxqlq3JT+XfyvlyP3Orcj0tilxxdqrpUvPRqnnne+rzn+f75Py1DL+Mt61iut3z18r4V7BU1K6GVKSs7VhmsKlw1UBBQsH81cXXG6mtrbNaUrXm3Nm5tW6F2YUFh/3cB3zUUKRdJi3rWua3b/T36e9H3Xevt129f/62YX3y5xKakouTLBt6Gyz/Y/lD5w/jG1I1dm5w27dqM3SzefLfUs3R/mWpZfln/ltAtzeXM8uLyd1sXbb1U4VCxextxm3xbb2VIZet2w+2bt3+pElbdqfaubtqhtWP9jg87+Ttv7vLa1bhbe3fJ7s8/in68VxNQ01xrXFtRh63LrXu2J3ZP50+sn+r3au4t2ft1n3hf7/7I/efqnevrD2gd2NQAN8gbhg4mHbxxyPdQa6NlY00To6nkMDgsP/zi5+Sf7x4JPtJxlHW08RejX3Ycox0rboaa85pHWoQtva0Jrd3Hg453tLm1HfvV6td9J/ROVJ9UO7npFPFU4anx0/mnR9sl7cNn0s70dyzqeHg2/uztcxHnus4Hn794wf/C2U525+mL7hdPXHK9dPwy63LLFacrzVcdrx675njtWJdTV/N15+utN1xutHXP7T510/PmmVu+ty7c5ty+cmfene67MXfv9ST19N7j3xu8n3n/9YPcB2MPCx5hHhU/Vnlc8UTrSe1vZr819Tr1nuzz7bv6NOrpw35e/8vfZb9/GSh8Rn5W8Vz3ef2g3eCJIf+hGy/mvxh4KXk5Nlz0D9V/7Hhl+uqXP7z+uDoSPzLwWvp6/M2Gtxpv971zeNcxGj765H3W+7EPxR81Pu7/xPrU+Tnu8/OxJV9wXyq/mn1t+xb87dF41vi4hCvlTrYCKGTAqakAvNmH9McJANBuAECcP9VfTwo09U0wSeA/8VQPPilOANT1ABC9DICQawBsr0JaWsQ/BfkuCKcgejcA29srxr9ElmpvN+WL5Im0Jo/Hx9+aAoArBeBr6fj4WN34+Nc6JNmHALTnTfX1E6JyEIAacxtH+5D7VPMC8DeZ6vn/VOPfZzCRgQP4+/xPeFgcU9phDh8AAABsZVhJZk1NACoAAAAIAAQBGgAFAAAAAQAAAD4BGwAFAAAAAQAAAEYBKAADAAAAAQACAACHaQAEAAAAAQAAAE4AAAAAAAAAkAAAAAEAAACQAAAAAQACoAIABAAAAAEAAAEuoAMABAAAAAEAAABgAAAAADApncsAAAAJcEhZcwAAFiUAABYlAUlSJPAAAB1BSURBVHgB7V0HeBTVFj6b3fRCAgSQ3qSKIuoDRESx8OzloaIIiqhYUIEHiIJIU6QpVkRRwMaTp4INBBsoRZQiIFhACL1DQtpusuWdf8IsM7Ozu0nYDQzvnO/bzMyd2+a/N/+ce+65d2w+FhIRBAQBQcBCCMRYqK5SVUFAEBAEFASEuKQjCAKCgOUQEOKyXJNJhQUBQUCIS/qAICAIWA4BIS7LNZlUWBAQBIS4pA8IAoKA5RAQ4rJck0mFBQFBQIhL+oAgIAhYDgEhLss1mVRYEBAEhLikDwgCgoDlEBDislyTSYUFAUFAiEv6gCAgCFgOASEuyzWZVFgQEASEuKQPCAKCgOUQEOKyXJNJhQUBQUCIS/qAICAIWA4BIS7LNZlUWBAQBIS4pA8IAoKA5RAQ4rJck0mFBQFBQIhL+oAgIAhYDgEhLss1mVRYEBAEhLikDwgCgoDlEBDislyTSYUFAUFAiEv6gCAgCFgOASEuyzWZVFgQEASEuKQPCAKCgOUQEOKyXJNJhQUBQcBxqkDgK8gmT+5+Ik8RuTYvJtefC6l430YiO9fQxj+mWHvluhTX4GJKaNKFYhLSKSaRf8nV+L7w76nSjlIPQaAiELD5WCqioGBlFGetJOfGb8nNJFW07RciX3EJUamEpR7BTfgdIzGcO6o1pbja7Siu1gUU37BLsCIkXBAQBE4zBE4qcR2adDV5cnYxVxWUkJKWnFTCUo/ae+r5saMtLoHsabUordMzFFvjvNOsieRxBAFBwIhAhROXz5VPBd+/SfmLppHP42LC8lGMzcOjPS/5mIhsdi+H8bmdL2LwYyUsxkY+W2yJtqXRuBQNjO9rNbHElt0piX+O9DONzyrX/0cIbNuxm5yuImrcoA7Z7Xj7iZxOCFQocRVvX0f5C14h18bvFdtVrLeQSctNNlsx2RwgK4bWwSNXPvrY+uaz8zkfvUxiIC6fL5a8nqQSolIJSz1qCM2eXo/SLhxJcTU7nE5tJc9SCgQKCp3Ub9hztHzlWiV2g7q16OWxQ6le7TN0qQ8dyaZNW7bpwtIrpVGzxg10YXJxaiJQYcTlWruQjr4/mLxF+WRnO1a8O5e1K59CVipBBSMukBgnUjQyctjI40xnEovTE5iGuFRNLLXdcEpqdicnxk1ryr4Dh2jjn3/rKp+YGE/tzjtHFyYXJQhMmjKTZvxnrg6O885pSTNeGqMLm//tEho8apIu7KK2bWjK+Kd0YXJxaiIASoi6OFfNY9J6nMhdSHFuF8V62KYFzapc4iN78mHyulOYBJM5h+CklLvqObaf5VByy/uZ5JjoLCi/rPmNnnhmsq7mdWrWoHmzpujC5KIEgdXreCbaIGs3/MEvOh9r9sH7iiGJXJ7iCGCgFVVxrf2ajr43hMhVQPGF+RTHx0iILSGPbMk5nFUIAmTXivyNb5Nrz5JIFCl5WACB2mdUD6hlzerVhLQCULF2QFSJy5t7iPK/eZt8RYUU73KSw10UHi28FRPSKCa1JtmrNKH4s3tRUscxFN+sO9krNWK/rZqsrSUq+djinGRLyg2Zp68ol7IX9yFPwb6Q8eTm6YHAQ/fcThlsq1IlNtZBg/r2Ui/leJogENWhYt6ciVS8eSVrWYUUW+xSDO6hcLMlVaa49veQo3FnctRtx1FNVHufh1xbPqaiXQvIuX022RLz2XDP1nwnho3B5ch3d1LGJdPInlIveCS5Y3kEYISfM/NFgg3LxbOKl3S4gBrVr2P555IH0CMQNeJy78uiwmUfM2k5FW1L8YDXl627sjfqRAk3jCM7O5WGFCap+Ea3Uly9aym+8W2Us+QORevyFUELC65AevK2k2vvckpqLMQVEt/T4GaVjHS6s+u1p8GTyCMEQyD4f3qwFKUI97F2dWRsV7J5veQoYk/4MGKvfS4l3zc3PGlp8rE5ktjd4UpKa/8G2eIqkS0t21RB8yfxeSl39Qj2HSv0B8mJICAIWBOBqGhczhWfk4+N8Ha3mxzF7pBDxNhzb6aEnm+WG734OjdTWoydcpb3YNsX29A8IWYPeZiZt34SpbYeVu7yrJgwNy+fdu7ZR3v2HqD8wkKqnlmFzqieSbVqVGMf3/K/u5xOF/35dxYdPpJD2UdzKSU5iapkVKKGPDRLT0stF1TRyLNcFTmWyOv10a69+2jrtl38fIlUu2Z1yqxS+ZQ29hcVF9PuPftp74GDtO/AYUpMiKeqVTKobq0zqGrl9HLDgZnZv7N2cL6H6Eh2DhtybFSZ27ta1crKcLwiZ20jTlw+1mzcO34nn7uY7EXukCDFZDaiuC7sJmFmywqZUn8zvtYNlNZ2KuUsGsTEpb9nvCrY9M7/BXGhky395Vea9cmXtGTFasI/oFHQ4bped6Xyy+SOXVpZ+vMaev/jL+nn1evIZaJRx/BKh3NaNqV/XXMFXdflUiZHE1ulobBI5Tn70wU04bXputxv/GdnGtqfXWLKIAcPZ9Pz7BO2cPEyxVamTVqtahXqeet1Cm7JSSUTRdr76vnAERNp8fKV6qVyHDnoIbr68ot1YcaLT7/6nsa8MFUXfPnF7Wjs0H66MOPF739toY++WEhffv0D5RcEjixALGiXa6/sRF2vvaLUKwqwCmHa+5/QDz+tVF5SxnJxDUK8pMM/6L4eXakmvxSjLREnLu/BXeRa841S74RCNsiHWG1hb345xVSPzNIcR/q55Khcm9x7DoXBzEcuNuzH1zp9F2VDw8I/zTImrlCy/+Bhem36f2j6rLk0dthjdFlHTIgEF/wzPDFmMn2/9OfgkfgOSHLN+j+U3wdz5tGLY4ZQjWpVTdNEOk+3x03Q2rQCDaQsMu+bH2j081MpL9/cdWf/wUM08bUZCnm/OWkE1avDM90mgnKNdXF7wrxZOR83j1SM6YpMXhBqkR7OE/V576Mv1CDTI15mv/72h/L7+POv6ZknH6UzGwa3+SL+5Knv0szZnxHKCCUg+o8+X0hffL2YBjxwF91+01Whop/wvfKPE4IU7XPmk+fwbnavCnzDG5PEXTvUGFTua0dqM3LUaFmq9M6d80oVz4qRdu87QN0ffDwsaWmfrdDppP5PjVcITBuuPcc/0oODR4UlLW0anMPrv9djwwgd2yjRyNNYRlmvUd+nnnslKGlp89vDWPfo+wRt3rpdG1yh52i7ewc8HZa0jJX6fdMWuvvRYbRl207jLf/10GdfordnzQlLWv4EfII2fXbyGzRn3rfa4IifR5y4irPWK5W0u0MztK1SDbIlpET0gRJq3liq/HxerhsPaU83gaYzZPTztHX7roBHgy0Lw4TrrrzEVJVX3q5vvENmnufIDENDaFFGObdVM+rT8xYa9XhfuvWGLooNyBhn5+59/OZ+xxgclTwDCilDAJZXDXh6Amk1NIfDTkmJCUFzOZJ9lIaPe0XxzA8aKYo3oGmt/HWDaQkYsrVt04qan9nQ9BmO5ubRg4NGBWh3yOyr75bQ5wsXmeabkZ5Gl/KwsGO786iWicMvEo1hjRW2z2hJxIeKzqVzlLrGeEITQ8Jdr0f8meKqdipVnl7nAfK6DvFmhNEfi5eqQhGK9P7HX5iSC1T3rtddQakpx33dtu3cw8O+F2j975v8pYP4ho19mT6ZPpkS2KCrlZkffqq9VM773d+Dene/2R9+09WXKeewVz02dKzO/oV/gn59euqMw9HI01+ZcpxoF11f0am9Yq9p2qi+MoFx4NAR+viLr9nW83GAzQsYQsO4+ZrLy1Fq+ZMAZ9j0jAIj/MjBD9P5rY+PQGCLfO+/n9Or02dRMU+YqQINfdac+dTrdv1Lf8qMD9Uo/iPyGzHwId3QGC+8+Uxyw8a+pMsX5D/7swX0wF23+tNH8iTiGlfR5jVK/Xj1dsh62ng300iLLfa4x3SovD1528hbwMPZ00jcrOFOfWd2wBPdc/tNSqfUkhYiwVHzpWefVGYXtYl27N5L3/64QhtEsIUdyTmqC8Nb9+5uN+jC1IsO/ziXut10tXqpHEGK6zb86Q+LRp7+zE/wpHPHtvT8qMGKpqLOumLyAv+ETw14wDR3aKQVLW+xwdwo8XGxSt21pIU4CMdL5ul/P2hMEjDMhA3POITETPSkEYN0pIWMYPC/+rKOdH+PWwLyXbP+94CwSAVEXOMiNo7C2dQTbg8kdmE4WQJty+M6gh1zThv5iWf4co7m6Z4HuyL069NDF6a9wEzQ+OEDqMfDT2iDlWHCNVccn/mCsd8oCfHxIWelHul9R4ATaFrqcdNANPI01rE81yD0Z554NGjSG/55KWu1vyvalzbSX+wWsnf/waCTENq4kTiHzXDVug0BWQ3u25uaNq4fEK4G3HBVZ8KEiXbHERDVLnaXUYd9aSkpitatpsERbg/4BRO8rF59e5bu9q69+3XXkbyI2v+u1xFGmeMF0CKRQ2DBd0sDMmt//jlh/Y3ObsHrQfltrHVrWPrLGmU4FB9f4hPXoG5tZZipJRsYpqfOnE19ggwFkDbYTCIqGo08AwAoR0D/B3oq/mihkg55pDfNnf9dgNH6x59W0S3XV8xs9XesFUOL1QrWaMLOGE7688sMu45oRTt8hJkg1GyjNp16Dtcao+Tlmc/KGuOV5zpqxOUL49joO/A3UbVG5amzpDFBQGufUW9XYY0KQ7JwUomdRbXx0In38VsYthII/LBghP9h+SpdVq/wG/YLdh3AUAFvXBiBsai5NBKNPEtTbrg4zZuE75P4x67PLhBwxtQK7IYVJVk7Aidg4PhbGsFebpHaz83Lq2NymaCgsVWklK6XlaFGtvgEdj51Kim8TF687Z9p6sKZD1PK+OOGYdNIUQq0J9XkLwRVj1LuJydbGI+NMnLCa8agUl8f5PxU4kKi3nfczG/pDYTpd61k8QwmfMHwi4uNpeZNGlLrs5oRtL3zW5+laHPa+NrzaOSpzb+s5/D8L63zZOMGdQOICzOMFSUHDwe2d+NSEldZ64jZ1kXLfqE/N2cpBIVrkFVePm/DzjvOngyJOHHFt76MnCtLDJXO5ARKLAi0jygPmn+IvHk8s5dSpcKf255Sl0Bep4tgyICtiCMpRr+rNme3oNcnPMW+XKODdlbMJK1lAzx+mDGEVzlm2u7t/i9T+0g08jwRDJqEcMY05ouh1ILv9cPzwxFuA2OZ2muzF1Wkd8GAFj/+len006q12qJPifMwhqiy1zGxY1d/IuwVD60rmLhm3hfsVlTDbXEZvCFqcENjVAuPSua8rXWE/dLMPLxBNLOmTqDu/7pGt+dVsEeCV/y7PAUP4z+m3c0kGnmalVOaMFuIvmpMb7YuT29xMqaI7HWMybdEuRdErBD4cXXtPeCUJC08ZMQ1rpi0qn7wPA4HudlIG1tsrk569/5F3m0rKabe+f40FXFi1ukqotxolYEp+8rplQK808fxjKF2U72ylB/MONuwXm0a8ui9NPChXgRjNNbiQcPasm1HgLFYLW/7rj10V98n6d1Xx5oa7KORp1p2WY5mdsJg6Tdv3RZwC21QUWK2WNpocytvXTb8uVnZLhz2K63AGfcCHv5Ds8N6zdTUZEpj30C42hTw4v1+w8Zpo0f1POLEZUvJ4E0AW/BC641KxV1syAxGXL4c/oTU7AGUNHARO4QE18zCIVC46UNKPPO2cNFO+n34WsFhTyvhjNlGmxLSqrN92nyqVs4IIC6QFmxN0RB04ksv+ofyQ/5Y17du419swF9J8775McDvC64CXy9eTj1uuS5odaKRZ9DCTG7AkxyuAfinDCebtmwPiBLKXUCNXGhYR6mGa4+wL4YT7PZglL+zdhqDynX9xrsf8XpJvW0as88TRwwM8PtTC4DdqyKl/GwRpJb2jOq8zXJ7/13MLuamp8NTzR+mPfHs/o2ODqrC2zuXferUx9vU5K8ZzYurW2mzLMW5eV1KkfCEolx9x4PU5vJbdD/1M1rBMsZyGaOY7eRQnz/DZRSsR6sogWH7wgtaK9rYlx+8xt8zDHQwXrW25GVW2jpFI89wZf+xKStcFMV1xGxWTzuZgUxiecRhFLiRhJOsneGdo/HZNaNsMcxyGu+r1/DhwioA7U9br+W/BNq04O+HrZCCSUWv14w4ceHB4pq3I1usZn0Xk1ZBcjJvsRy8uIIpXaj41w+D4RIQ7snfRQVrx1LeL7wdcxmX7sSwjetkSKvmZwYUiy1nQskqk6/WmPnMYImKUcw6oDEOrjGVjc6MIcJvf2xWlgFp/XqghYBAtT/tej5jnhg6GJeQIM4fm7f6o0YjT3/mJ3DyAq+pNNNytVlOfHV6gEaC+x3btdFGU/Ym0wXwBfANJfCVW/JT6D6B9J0vaqssRdLmhdUNHzEhhRI822P83ckRPOOs/akjAcyMGp8fLxDVOTVY3kZXmWDxIhUe+EqIQM5xZ3WimPRM8hw67uficcRSoT2VkgpzTEvw7PmNCub2I8eqt3nf+YcotsX1HC9QM/J53VS4bhK5smZT0W72UcL3Fcso3uLcMqaITHQscl64aJkus8947yWs8TPTUDC0gv3IKDBoG+ViXvCamJCg63SYDXp52vv0yL3djdH91/A9uvXeAbqZQnTSeR9M8ceZ8OoMxZveH8AnqDMWVgcTh4m2gWUjqkQjTzXvEzlCcxgx/jWCfdBM5n37I/1n7vyAW/BWN2okZkPOFavWKS8Gs5cYMkV7YVPGcIJh6QW8dnDF6vW6qM+9NI1acz8z60+I+PqM2YqHvzYRXEBq8qaSELMF5TADYCiobT9tetgG5zMuFSnBVaATqQVrWFXGLOQPWRxf4oHsvLwMKD8lnWca7ea5sxHfvX0FFXx0F2U/m0HZL9Sm/C96UQFvEJg793o6PK0m/ypTwc/jqWgH2wE85eRd/iDtyZDzeQmOUdBJ7+3/NH224HtF84FrA4zZr7NXuvGDpUgLL/crL7nQmI2yKNpsn3XYK/CBVLO9pRYvW0n38ZYoRl+cbjf+U3E6VQvBDgNGwaJi7FtlJujkM3iPL6PATqJKNPJU8z7RI8gJ37KEsVvVRNBO2OIFpGYmd9x8TUBw+wvM7YsPsUsJXmCq1oo2x44ejzzxrLLgOSCjIAH3sG+dUfCBkP7Dx+sWzyMO9tPC0PCd/35mTEK333x8XSnsp2YE9eQzL5rODGPPt5488WJcyxpQSIQDovol6/yveDO2TyeWfMMCFIkflCibj2J9Lr4sIrutmDcbZIM1c1C4L1l7KY47Ujx/DDaR8+KMjuWZefcy/mxZyfh73zQejqllqeWBJ1HusfCEuldTpbYvckDFC9RzdKBgYmdyD7VpG1wRMKtnJhjedesziLBuziiYeWzBzqFnt2hKBw4dpr/4LYmdLY2CGb73p4zTLXvBP8P1PfqadlzEx0zTua2a01Ee5sDOgs3kjEQJb/P5s1737w4RjTzxLB/wjq9jX5ymeyz4kmG3BK2YfckadsI8fgatDxv+kRP4Z1wHqs0L2hMwM5utvur2B5Qhtja+eo42qVkjkw4dztFpylgvafTCx8tq0shBalL/ceTEKcoGfv4AzQnapk6tGtwWhUyMO023mYGW+Pl7r+ochaH14YVnJphRbNvmbEUDw6aEqv8gNDXjCxAfLVk0d7pZNiccVk6VpXTlJl12FxX9vZKKNi7SJ2CNrNjONjBbPE8m8pepyUUOG4zz+hk3JPL52Pe+OJGN9/yDjQxGfhCQRpxbF1DSWXcqITZHPG+15dLcPbVOBz3ci31j1gVdIhGKtJo0qk/9eYuaYIIZShhR+wwcqXQsbTxMbcO+EsrGgjft1IlP60gLeeCfd9SQR+jhIWMCtnTBLgL4ffjpV9ridOf4B8WWxdop/GjkqSu0HBf4mOw9d9ykaMCqKwAIFr9ggplbDJnNSAtphva7X3HaNUuPMoyTLxfx0qnL2F5Z2lUP6E94Waw22YlBbRuzshEGW+Rr44bpSAvhPW69XlnepbVJIhwCLdTodoF8Xhj9OOM2vCRSBfw1UEBkS4SBPr33CxRbu3mQjG1MVTHkjkkkZ0wV/lUlJ2WS05tJLk8mq9LVeI+fTNawUpjAVLUpMKvcJaPBcMqNytfPCYxgCPHk7yRvYeBsnSFaVC7hTY6tjEOt4DcrGPaxV58bGtDJjHHxRvzwzYnUhjWgsgjWrr31wihTPyvkg6Hd1AnDlQ8jlCVf2GKeHzXIdJ/1aORZlrqZxYX2CI02nJsK0oLoZ77ybFB7EuJc1LYN9eWdMoIRG+KoglnJ0bwzBQYHpRVoOm9NHl2qxdXaPNFP0N5mtjB86GTGy89Q2/PO1iYxPUf5aF+s3axIsY9giWaBNkccxbfqTO79W8hzMKtkyIaWCfcDpSKOegwZn7W2lBoUm9mS1yBWJnf2ZvLk8OyNmsaQh6/oIMVV73DSPg4LzQMfqUjntzXUbdXWwU8bIDCcwpaBoY52W5iAiJoAdKbru1xC0NDgm7SLv/hiJvCbAiGOYW3qwV63cX1SzaL5w2DA7XbjVcpSHgynDmebT7QgAYYp3XjfcWiAzRo38OdhPIl0ntjUzzhTi/WT2LFTKzDCY/JDK3V5iHbtFZ0IQ7+reOH4Tt6bDPuTGVzveLYwnfef6kpjmGTM7EHaPHEO22bLpo2V/Mz8nbDGEx+ZGDf834pDJz56gbWBWgHRdLm0gzbIfw6NtlP78xV3FGhxWWwCCKa544V592030Ghu8+rVjk+W+DM7doI6XdW5IzlZ29zOEzhOl34Ug76DPjyZX8JNGtZXPs7xDu9NrxX0w7u73agNith5VG1c2lrCT+vIy3dS8Q6eBQGRqGSinmuPIBxVwVKP6n3cU881x7ha7Sjj2rf5XizPNi6hnMX9yFvM/1javNT4HJbSaiAlN+2jreJJOcce3TDMlqj1O9gB8oiyrg++Wi2aNqJzecFyad7WoSoPOwSGJHACzWYjM8gQH3jA58lgUyuvYEcJzChl5+QqBJnMn++C9zhIS52lKmve0cizrHXQxsd2P7APwR4It4DaNWsouOEftzyCfLbyzg77+bNhldJSFKzQFiCKSAlsTdvYFwztDTwT4uKUz5PVq13TdGvtcOWCBGETRZ29vLSsfp1aVIdxKC8G4corzf0KIy61MtnT+1LRX0vJV5x3XKNSCUU9asmmlMQFgko6525KbT9UKSp/w9uU9+vzPJXJb4ogeWRes5xi4o8vUVLrKEdBQBA4tRGocOLyuYuoOGsN5cz6N3mPsp1JJSvtsZzEFZOUQZk9f/Yj7tr5PeWtnUzunI16kkT+XF5c9Qspo8NMf3w5EQQEAWsgUOHEpYXFufozyp03lrzObDauu4+TWFmIi4c6MUmVKK5+Z6rUaTQTVOBEac6ygeTau5iLYMc+G6/BOkZccKlIOrMXpbYYzGHlU/21zyPngoAgUDEInFTiUh6RPxVWsGIWf4sxi4p3r6finatLiEUd3qlHVSM7Rjr2Kg0pvkEnsqeeQYln3c58pVliZIKdj73lC7d+wiS5l5z8QVhP4Q6FKG3xaZTS7BFKanC3SSoJEgQEgVMRgZNPXCoqbPTz5rPxL++gEuIpOMhLhrbwcHKXsqNqTEZtcmQ24ZnAkp1LbfGpZE/DFCyYrGwCdwifO4/c/LWfgi1v8Ycz9lHm5YvLlonEFgQEgZOGwKlDXCcNAilYEBAErIYABmAigoAgIAhYCgEhLks1l1RWEBAEgIAQl/QDQUAQsBwCQlyWazKpsCAgCAhxSR8QBAQByyEgxGW5JpMKCwKCgBCX9AFBQBCwHAJCXJZrMqmwICAICHFJHxAEBAHLISDEZbkmkwoLAoKAEJf0AUFAELAcAkJclmsyqbAgIAgIcUkfEAQEAcshIMRluSaTCgsCgoAQl/QBQUAQsBwCQlyWazKpsCAgCAhxSR8QBAQByyEgxGW5JpMKCwKCgBCX9AFBQBCwHAJCXJZrMqmwICAICHFJHxAEBAHLISDEZbkmkwoLAoKAEJf0AUFAELAcAkJclmsyqbAgIAgIcUkfEAQEAcshIMRluSaTCgsCgsD/AFt/MVAlcetCAAAAAElFTkSuQmCC",width:75,height:24},opacity:.1,right:10,top:10},this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debug.log(this.TAG_NAME,"isMpeg4 is true, so set _opt.useWasm true and others params false"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!0),this.isPlayback()&&(ga(this._opt.useMSE)&&ga(this._opt.mseDecoderUseWorker)&&this.debug.log(this.TAG_NAME,"isPlayback and mseDecoderUseWorker is true, so set mseDecoderUseWorker false"),this._opt.mseDecoderUseWorker=!1,ga(this._opt.useWCS)&&ga(this._opt.wcsDecodeAudio)&&this.debug.log(this.TAG_NAME,"isPlayback and wcsDecodeAudio is true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1),this._opt.poster&&(this._opt.background=this._opt.poster),ya(this._opt.muted)&&(this._opt.isNotMute=!0),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker),ya(this._opt.mseDecoderUseWorker)&&this.debug.log(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debug.log(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and set _opt.recordType = webm"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!1,this._opt.recordType=E),this._opt.isNakedFlow&&(this.debug.log(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),go()&&(this.debug.log(this.TAG_NAME,"isFirefox is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e="VideoDecoder"in window,t=xo();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debug.warn(this.TAG_NAME,`\n useWCS is true,\n and supportWCS is ${e}, supportHevcWCS is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useWCS false`),this._opt.useWCS&&(this._opt.wcsDecodeAudio&&(this._opt.wcsDecodeAudio="AudioDecoder"in window,this._opt.wcsDecodeAudio||this.debug.warn(this.TAG_NAME,"wcsDecodeAudio is true, but not support so set wcsDecodeAudio false")),this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Do()&&Lo(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"wcsUseVideoRender is true, but not support so set wcsUseVideoRender false")))}if(this._opt.useMSE){const e=function(){let e=!1;return"MediaSource"in self&&(e=!0),e}()||function(){let e=!1;return!("MediaSource"in self)&&"ManagedMediaSource"in self&&(e=!0),e}(),t=Co()||function(){let e=!1;return!("MediaSource"in self)&&"ManagedMediaSource"in self&&(self.ManagedMediaSource.isTypeSupported(ui)||self.ManagedMediaSource.isTypeSupported(pi)||self.ManagedMediaSource.isTypeSupported(fi)||self.ManagedMediaSource.isTypeSupported(mi)||self.ManagedMediaSource.isTypeSupported(gi))&&(e=!0),e}();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debug.warn(this.TAG_NAME,`\n useMSE is true,\n and supportMSE is ${e}, supportHevcMSE is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useMSE false`)}}if(ya(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),ya(this._opt.useWCS)&&(this._opt.wcsDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debug.warn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.warn(this.TAG_NAME,"useMSE is true and forceNoOffscreen is false then forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.isWebrtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isWebrtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isHls&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isHls is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isAliyunRtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isAliyunRtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this.isStreamWebTransport()&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.wcsDecodeAudio&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"is wcsDecodeAudio true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),ya(this._opt.demuxUseWorker)&&(this._opt.mseDecoderUseWorker=!1),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.useMThreading&&(this._opt.useMThreading="undefined"!=typeof SharedArrayBuffer,this._opt.useMThreading||this.debug.warn(this.TAG_NAME,"useMThreading is true, but not support so set useMThreading false")),this._opt.useSIMD||-1!==this._opt.decoder.indexOf("-simd")){const e=WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),t=_a();this._opt.useSIMD=e&&ya(t),this._opt.useSIMD||this.debug.warn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var s;if(this._opt.useSIMD?-1===this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-simd-mt.js")):-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-mt.js")),-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard-not-wasm.js")):this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard-not-wasm.js")),ya(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),ya(this._opt.hasVideo)&&(this._opt.operateBtns.fullscreen=!1,this._opt.operateBtns.screenshot=!1,this._opt.operateBtns.record=!1,this._opt.operateBtns.ptz=!1,this._opt.operateBtns.quality=!1,this._opt.operateBtns.zoom=!1),this._opt.qualityConfig&&0===this._opt.qualityConfig.length&&this._opt.operateBtns.quality&&(this._opt.operateBtns.quality=!1,this.debug.warn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),ga(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),ya(this._opt.useWebGPU)&&this.debug.warn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._destroyed=!1,this._destroyLock=!1,this._closed=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._checkVisibleHiddenTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._tempTsList=[],this._allStatsData={},this._faceDetectActive=!1,this._objectDetectActive=!1,this._occlusionDetectActive=!1,this._imageDetectActive=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,this._latestAudioTimestamp=0,this._videoIframeIntervalTs=0,this._streamQuality=this._opt.defaultStreamQuality||"",!this._streamQuality&&this._opt.qualityConfig.length>0&&(this._streamQuality=this._opt.qualityConfig[0]||""),this._visibility=!0,this._lastestVisibilityChangeTimestamp=null,this._tempWorkerStats=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._tempStreamList=[],this._tempInnerPlayBgobj=null,this._flvMetaData=null,this._flvMetaDataFps=null,this._mseWorkerData={},ya(this._opt.useMSE)&&ya(this._opt.useWCS)&&!this.isWebrtcH264()&&!this.isOldHls()&&(this._opt.useWasm=!0),(this.isOldHls()||this.isWebrtcH264())&&(this._opt.hasVideo=!0,this._opt.hasAudio=!0),this._opt.hasVideo||(this._opt.useMSE=!1,this._opt.useWCS=!1),this._opt.useWasm&&(this._opt.useOffscreen?this._opt.wasmUseVideoRender=!1:this._opt.wasmUseVideoRender&&(this._opt.wasmUseVideoRender=_o()&&Do()&&Lo(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false"),this._opt.wasmUseVideoRender&&this._opt.wasmPlayAudioUseVideoRender&&(this._opt.wasmPlayAudioUseVideoRender="AudioData"in window,this._opt.wasmPlayAudioUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render play audio, but not support so set wasmPlayAudioUseVideoRender false"))),this._opt.useSIMD?this.debug.log(this.TAG_NAME,"use simd wasm"):this.debug.log(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.JessibucaProFaceDetector||this._opt.useObjectDetector&&window.JessibucaProObjectDetector||this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||this._opt.useImageDetector&&window.JessibucaProImageDetector)?(this.ai=new cv(this),this._opt.useFaceDetector&&window.JessibucaProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.JessibucaProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.JessibucaProImageDetector&&(this.imageDetectActive=!0)):(this._opt.operateBtns.aiObject=!1,this._opt.operateBtns.aiFace=!1,this._opt.operateBtns.aiOcclusion=!1),this._opt.useFaceDetector&&(this._opt.useWasm&&window.JessibucaProFaceDetector||this.debug.warn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.JbProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.JessibucaProObjectDetector||this.debug.warn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.JbProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.JessibucaProOcclusionDetector||this.debug.warn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.JessibucaProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.JessibucaProImageDetector||this.debug.warn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.JessibucaProImageDetector is null`)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=_o()&&Do()&&Lo(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Do()&&Lo(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&ya(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!bo()&&(this._opt.hlsUseCanvasRender=!0),this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender=!0)),this._opt.useVideoRender=!1,this._opt.useCanvasRender=!1,this._opt.useWasm?this._opt.wasmUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useWCS?this._opt.wcsUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useMSE?this._opt.mseUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isOldHls()?this._opt.hlsUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0),this._opt.useCanvasRender&&this.useVideoPlayAudio()&&(this.debug.log(this.TAG_NAME,"useCanvasRender is true and useVideoPlayAudio() return true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1,this._opt.wasmPlayAudioUseVideoRender=!1),s=this,Object.defineProperty(s,"rect",{get:()=>{let e={};return s.$container&&(e=s.$container.getBoundingClientRect(),e.width=Math.max(e.width,s.$container.clientWidth),e.height=Math.max(e.height,s.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(s,e,{get:()=>s.rect[e]||0})})),this.events=new Da(this),this._opt.hasVideo&&(this.video=new sn(this),this.recorder=new pl(this)),this.isOldHls()?(this.hlsDecoder=new NA(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new yv(this):this._opt.isWebrtcForSRS?this.webrtc=new fv(this):this._opt.isWebrtcForOthers?this.webrtc=new mv(this):this.webrtc=new gv(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new Av(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new lv(this)),this.isWebrtcH265()&&(this.webrtc=new gv(this)),ya(ia(this._opt))?this.decoderWorker=new bl(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new wn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isMute=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.isMSEAudioDecoderError=!1,this.isMSEPlaybackRateChangePause=!1,this.isMSECurrentMoreThanBufferedPause=!1,this.isPlayFailedAndPaused=!1,this._opt.useWCS&&(this.webcodecsDecoder=new Kh(this),!this._opt.hasAudio&&ya(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&ya(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new gc(this),!this._opt.hasAudio&&ya(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new pc(this),this._opt.contextmenuBtns.length>0&&ya(this._opt.disableContextmenu)&&fo()?this.contextmenu=new uv(this):ga(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&fo()&&this.debug.warn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new dv(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new hv(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&ya(this._opt.supportLockScreenPlayAudio&&Ao())&&(this.keepScreenOn=new Ac(this)),(e=>{try{const t=t=>{Qo(t)===e.$container&&(e.emit(at.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};Rr.on("change",t),e.events.destroys.push((()=>{Rr.off("change",t)}))}catch(e){}if(e.on(ot.decoderWorkerInit,(()=>{e.debug.log("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(ot.play,(()=>{e.loading=!1})),e.on(ot.fullscreen,(t=>{if(t)try{Rr.request(e.$container).then((()=>{})).catch((t=>{e.debug.error("player","fullscreen request error",t),uo()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){uo()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{Rr.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debug.error("player","fullscreen exit error",t),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),uo()&&e.on(ot.webFullscreen,(t=>{t?e.$container.classList.add("jb-pro-fullscreen-web"):e.$container.classList.remove("jb-pro-fullscreen-web"),e.emit(at.fullscreen,e.fullscreen)})),e.on(ot.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[ot.timeUpdate,ot.currentPts,ot.videoSEI],i=[ot.stats,ot.playbackStats,ot.playbackTimestamp,ot.flvMetaData,ot.playToRenderTimes,ot.audioInfo,ot.videoInfo];Object.keys(ot).forEach((s=>{e.on(ot[s],(function(r){if(!t.includes(s)){i.includes(s)&&(r=JSON.stringify(r));for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n{e.on(lt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("jb-pro-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&ya(this._opt.hasAudio)&&ya(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&ya(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debug.log(this.TAG_NAME,"player is closed, so can not play"):(e&&ga(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(ot.playing,e),this.emit(ot.volumechange,this.volume),e?this.emit(ot.play):this.emit(ot.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this._isMute=0===this.volume):this.debug.warn(this.TAG_NAME,"set volume error, audio is null"))}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(ot.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.isDestroyedOrClosed()||this.zooming!==e&&(this.zoom||(this.zoom=new hv(this)),this._zooming=e,this.emit(ot.zooming,this.zooming))}get zooming(){return this._zooming}set recording(e){e?this.playing&&!this.recording&&(this.recorder&&this.recorder.startRecord(),this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!0})):this.recording&&(this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder&&this.recorder.stopRecordAndSave().then((()=>{})).catch((e=>{})))}get recording(){return!!this.recorder&&this.recorder.isRecording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set latestAudioTimestamp(e){null!==e&&(this._latestAudioTimestamp=e)}get latestAudioTimestamp(){return this._latestAudioTimestamp}get videoTimestamp(){return this._stats.currentPts||this._stats.ts}set streamQuality(e){this.streamQuality!==e&&(this._streamQuality=e,this.emit(ot.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return ga(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let s=Xt;return ya(i)&&ya(t)?s=Xt:ya(i)&&ga(t)?s=Zt:ga(i)&&ga(t)&&(s=ei),s}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(ot.visibilityChange,e),this._lastestVisibilityChangeTimestamp=so(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(ot.playbackPause,e),this.emit(ot.playbackPauseOrResume,e))}get playbackPause(){return this.isPlayback()&&this._playbackPause}set videoIframeIntervalTs(e){this._videoIframeIntervalTs=e}get videoIframeIntervalTs(){return this._videoIframeIntervalTs}set faceDetectActive(e){this._faceDetectActive!==e&&(this._faceDetectActive=e,this.emit(ot.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(ot.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(ot.occlusionDetectActive,e))}get occlusionDetectActive(){return this._occlusionDetectActive}set imageDetectActive(e){this._imageDetectActive!==e&&(this._imageDetectActive=e)}get imageDetectActive(){return this._imageDetectActive}get isUseWorkerDemuxAndDecode(){return this.stream&&this.stream.getStreamType()===A}isDestroyed(){return this._destroyed}isDestroying(){return this._destroyed&&this._destroyLock}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isLoading(){return this.loading}isPlaying(){let e=!1;return this._opt.playType===v?e=this.playing:this._opt.playType===w&&(e=ya(this.playbackPause)&&this.playing),e}updateOption(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._opt=Object.assign({},this._opt,e),ga(t)&&this.decoderWorker&&Object.keys(e).forEach((t=>{this.decoderWorker.updateWorkConfig({key:t,value:e[t]})}))}init(){return new Promise(((e,t)=>{this.video||this._opt.hasVideo&&(this.video=new sn(this)),this.audio||this._opt.hasAudio&&(this.audio=new wn(this)),this.stream||(this.stream=new Rn(this)),this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new NA(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new yv(this):this._opt.isWebrtcForSRS?this.webrtc=new fv(this):this._opt.isWebrtcForOthers?this.webrtc=new mv(this):this.webrtc=new gv(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new Av(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new Gh(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new Kh(this))),this._opt.useMSE&&ya(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new gc(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new lv(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new gv(this))),this.decoderWorker?this.loaded?e():this.once(ot.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug&&this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):ya(ia(this._opt))?(this.decoderWorker=new bl(this),this.once(ot.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug&&this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))):e())}))}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!e&&!this._opt.url)return s("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=so(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debug.log(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=so(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(lt.fetchError,(e=>{this.emitError(lt.fetchError,e)})),this.stream.once(lt.websocketError,(e=>{this.emitError(lt.websocketError,e)})),this.stream.once(ot.streamEnd,(e=>{this.emit(ot.streamEnd,e)})),this.stream.once(lt.hlsError,(e=>{this.emitError(lt.hlsError,e)})),this.stream.once(lt.webrtcError,(e=>{this.emitError(lt.webrtcError,e)})),this.stream.once(ot.streamSuccess,(()=>{i(),this._times.streamResponse=so(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval();{const e=Number("1")||1;setTimeout((()=>{this.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码)"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload()}),60*e*60*1e3)}})),this.stream.fetchStream(e,t)):(this.debug&&this.debug.warn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),s("this.stream is null"))})).catch((e=>{s(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debug.log(this.TAG_NAME,`playForControl() and pauseAndNextPlayUseLastFrameShow is ${this._opt.pauseAndNextPlayUseLastFrameShow}`),this._opt.pauseAndNextPlayUseLastFrameShow&&this._tempInnerPlayBgobj&&this._tempInnerPlayBgobj.loadingBackground&&this.updateOption({loadingBackground:this._tempInnerPlayBgobj.loadingBackground,loadingBackgroundWidth:this._tempInnerPlayBgobj.loadingBackgroundWidth,loadingBackgroundHeight:this._tempInnerPlayBgobj.loadingBackgroundHeight}),this.play().then((t=>{e(t)})).catch((e=>{t(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()})).catch((e=>{t(e)}))}))}resumeAudioAfterPause(){this.lastVolume&&ya(this._isMute)&&(this.volume=this.lastVolume)}async _close(){this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!1,this.playing=!1,this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.isPlayback()&&this.playback&&this.playback.clearStatsInterval(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(await this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(await this.audio.destroy(),this.audio=null)}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{e?this.close().then((()=>{t()})).catch((e=>{i(e)})):this._close().then((()=>{t()})).catch((e=>{i(e)}))}))}pauseForControl(){return new Promise(((e,t)=>{if(this.debug.log(this.TAG_NAME,"_pauseInner()"),this._opt.pauseAndNextPlayUseLastFrameShow&&this.video){const e=this.video.screenshot("","png",.92,"base64");if(e){const t=this.getVideoInfo();t?(this.debug.log(this.TAG_NAME,`pauseForControl() and loadingBackground width is ${t.width} and height is ${t.height}`),this._tempInnerPlayBgobj={loadingBackground:e,loadingBackgroundWidth:t.width,loadingBackgroundHeight:t.height}):this.debug.warn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debug.warn(this.TAG_NAME,"pauseForControl() and loadingBackground is null")}this.pause().then((t=>{e(t)})).catch((e=>{t(e)}))}))}isAudioMute(){let e=!0;return this.audio&&(e=this.audio.isMute),e}isAudioNotMute(){return!this.isAudioMute()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video&&this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}cancelRecord(){return new Promise(((e,t)=>{this.recorder||t("recorder is null"),this.recording&&(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})))}))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.recorder||s("recorder is null"),this.recording?(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)}))):s("recorder is not recording")}))}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(t=!0)})),(this._opt.showBandwidth||t)&&(e=!0),this._opt.extendOperateBtns&&this._opt.extendOperateBtns.length>0&&(e=!0),this.isPlayback()&&this._opt.playbackConfig.showControl&&(e=!0),this._opt.controlHtml&&(e=!0),e}useWasmDecode(){return ya(this._opt.useMSE)&&ya(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&ya(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&ya(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(ya(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed"));if(ya(this.isHistoryFpsListAllZero()))return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero"));if(0!==this._stats.fps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`));const e=this._historyFpsList.join(",");this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 and\n pause and emit delayTimeout event and\n current vbps is ${this._stats.vbps} and\n current fps is ${this._stats.fps} and\n history FpsList is ${e} and\n current visibility is ${this.visibility} and`),this.emit(ot.timeout,ot.delayTimeout),this.emit(ot.delayTimeout)}else this.debug.log(this.TAG_NAME,`checkHeartTimeout$2 playbackPause is ${this.playbackPause}, playing is ${this.playing}`)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing?this.debug.warn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debug.warn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(ot.timeout,ot.loadingTimeout),this.emit(ot.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debug.log(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(ot.start)),this.playing||(this.playing=!0))}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.log(this.TAG_NAME,"updateStats but player is closed or destroyed"));if(this._startBpsTime||(this._startBpsTime=so()),Bo(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,this._tempTsList.push(t),null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}Bo(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),Bo(e.mseTs)&&(this._stats.mseTs=e.mseTs),Bo(e.buf)&&(this._stats.buf=e.buf),Bo(e.netBuf)&&(this._stats.netBuf=e.netBuf),Bo(e.currentPts)&&(this._stats.currentPts=e.currentPts),e.fps&&(this._stats.fps+=1),e.dfps&&(this._stats.dfps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps),e.workerStats&&(this._tempWorkerStats=e.workerStats),e.isDropping&&(this._stats.isDropping=e.isDropping),e.mseVideoBufferDelayTime&&(this._stats.mseVideoBufferDelayTime=parseInt(1e3*e.mseVideoBufferDelayTime,10));const t=so();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,s=0,r=0,o=0,a=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.mseDecoder.checkSourceBufferStore(),s=s.toFixed(2),o=this.mseDecoder.getDecodePlaybackRate(),a=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.video.checkSourceBufferStore(),s=s.toFixed(2),o=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(r=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10));let n=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),n=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0,m=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.streamBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay,m=this._tempWorkerStats.wasmDecodeDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let g=0,y=0;this.audio&&this.audio.bufferList&&(g=this.audio.bufferList.length,y=parseInt(g*this.audio.oneBufferDuration,10));let A=0,b=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(A=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;b=parseInt(t*A+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const _=v+this._stats.netBuf;this.isOldHls()&&(this._stats.fps=this.hlsDecoder.getFps()),this._stats.fps>this._stats.maxFps&&(this._stats.maxFps=this._stats.fps);let w=this.getVideoCurrentTime();const S=this._stats.videoCurrentTime;let E=-1;S&&w&&(E=(w-S).toFixed(2),w=w.toFixed(2));let T=0;this.audioTimestamp>0&&(T=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:g,audioBufferDelayTs:y,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:A,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:b,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,streamBuffer:h,mseDelay:i,mseStore:s,mseDecodeDiffTimes:r,mseDecodePlaybackRate:o,msePendingBuffer:a,wcsDecodeDiffTimes:r,wasmDecodeDelay:m,hlsDelay:i,hlsDemuxLength:n,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:_,isStreamTsMoreThanLocal:p,videoCurrentTime:w,videoCurrentTimeDiff:E,audioSyncVideo:T});let C=null,x=null,D="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){C=function(e,t){let i=3;const s=t||25;return e<.33*s?i=0:e<.5*s?i=1:e<.83*s&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=C;const e=this.checkVideoSmooth(this._allStatsData);D=e.reason,x=e.result,this._allStatsData.videoSmooth=x}this.emit(ot.stats,this._allStatsData),this._allStatsData.streamBuffer>this._opt.flvDemuxBufferSizeMaxLarge&&this.getDemuxType()===k&&this.emit(lt.flvDemuxBufferSizeTooLarge,this._allStatsData.streamBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._stats.videoCurrentTimeDiff),Bo(C)&&this.emit(ot.performance,C),Bo(x)&&this.emit(ot.videoSmooth,x,D)):this._opt.hasAudio&&this.updateHistoryFpsList(this._stats.abps,0),this._stats.fps=0,this._stats.dfps=0,this._stats.abps=0,this._stats.vbps=0,this._tempTsList=[],this._stats.isDropping=!1,this._startBpsTime=t}resetStats(){this._startBpsTime=null,this._playingStartTimestamp=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={},this._tempTsList=[]}checkVideoSmooth(e){let t=!0,i="";if(this._opt.videoBuffer,this._opt.videoBufferDelay,this.isWebrtcH264()||this.isOldHls())return{result:t,reason:i};if(0===e.vbps&&ya(this._opt.isHls)&&(i="vbpsIsZero",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const s=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),r=s.reduce(((e,t)=>e+t),0)/s.length,o=.83*r;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff){if(i="videoCurrentTimeDiffIsNotNormal",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),0===Number(e.videoCurrentTimeDiff)){const e=this.isVideoPlaying(),t=this.getVideoCurrentTime(),i=this.getVideoBufferTimeRange();let s=-1,r=-1;i&&(s=i.start,r=i.end),this.debug.log(this.TAG_NAME,`checkVideoSmooth and videoCurrentTimeDiff is 0 so check\n videoCurrentTime is ${t} and isPlaying is ${e}\n bufferStartTime is ${s} and bufferEndTime is ${r}`)}t=!1}return{result:t,reason:i}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}clearBufferDelay(){this._opt.useWasm?this.decoderWorker&&this.decoderWorker.clearWorkBuffer(!0):this.demux&&this.demux.clearBuffer(!0)}doDestroy(){this.emit(ot.beforeDestroy)}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.log(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed"));const e=this.getPlayToRenderTimes();this.emit(ot.playToRenderTimes,e)}getPlayToRenderTimes(){const e=this._times;return e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart>0?e.streamResponse-e.streamStart:0,e.demuxTimestamp=e.demuxStart-e.streamResponse>0?e.demuxStart-e.streamResponse:0,e.decodeTimestamp=e.decodeStart-e.demuxStart>0?e.decodeStart-e.demuxStart:0,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,e}getOption(){return this._opt}getPlayType(){return this._opt.playType}isPlayer(){return this._opt.playType===v}isPlayback(){return this._opt.playType===w}isDemuxSetCodecInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.hasInit:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.hasInit),e}isDemuxDecodeFirstIIframeInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.isDecodeFirstIIframe:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.isDecodeFirstIIframe),e}isAudioPlaybackRateSpeed(){let e=!1;return this.audio&&(e=this.audio.isPlaybackRateSpeed()),e}getPlayingTimestamp(){return this._stats.pTs}getRecordingType(){let e=null;return this.recorder&&(e=this.recorder.getType()),e}getRecordingByteLength(){let e=0;return this.recording&&(e=this.recorder.getToTalByteLength()),e}getRecordingDuration(){let e=0;return this.recording&&(e=this.recorder.getTotalDuration()),e}getDecodeType(){let e="";const t=this.getOption();return this.isWebrtcH264()?W:this.isAliyunRtc()?V:this.isOldHls()?$:(t.useMSE&&(e+=U+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=O+" "),t.useWasm&&(e+=j+" ",t.useSIMD&&(e+=G+" "),t.useMThreading&&(e+=z+" ")),t.useOffscreen&&(e+=N+" "),e)}getDemuxType(){return this._opt.demuxType}getRenderType(){let e="";return this.video&&(e=this.video.getType()),e}getCanvasRenderType(){let e="";return this.video&&(e=this.video.getCanvasType()),e}getAudioEngineType(){let e="";return this.audio&&(e=this.audio.getEngineType()),e}getStreamType(){let e="";return this.stream&&(e=this.stream.getStreamType()),e}getAllStatsData(){return this._allStatsData}isFlvDemux(){return this._opt.demuxType===k}isM7SDemux(){return this._opt.demuxType===C}isNakedFlowDemux(){return this._opt.demuxType===R}isMpeg4Demux(){return this._opt.demuxType===P}isTsDemux(){return this._opt.demuxType===M}isFmp4Demux(){return this._opt.demuxType===I}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(ot.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case Xt:t.isFullResize=!1,t.isResize=!1;break;case Zt:t.isFullResize=!1,t.isResize=!0;break;case ei:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(ot.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(ot.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e,ya(e)&&this.video&&this.video.addAiContentToCanvas([])}objectDetect(e){this.objectDetectActive=e,ya(e)&&this.video&&this.video.addAiContentToCanvas([])}occlusionDetect(e){this.occlusionDetectActive=e}downloadNakedFlowFile(){this.demux&&this.demux.downloadNakedFlowFile&&this.demux.downloadNakedFlowFile()}downloadFmp4File(){this.demux&&this.demux.downloadFmp4File&&this.demux.downloadFmp4File()}downloadMpeg4File(){const e=new Blob([this._tempStreamList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".mpeg4",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadMpeg4File",e)}}hasCacheOnGopBuffer(){const e=this.videoIframeIntervalTs,t=this._allStatsData.demuxBuffer,i=this._allStatsData.maxFps;let s=!1;if(e&&t&&i){s=1e3/i*t>e}return s}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.video&&this.video.addContentToCanvas(e)}addContentToContainer(){}sendWebsocketMessage(e){const t=this.getStreamType();t===m||t===A+" "+m?this.stream.sendMessage(e):this.debug.warn(this.TAG_NAME,`sendWebsocketMessage: stream type is not websocket, current stream type is ${this.getStreamType()}`)}checkIsInRender(){const e=this._stats;return e.vbps>0&&e.fps>0}setControlHtml(e){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML=e)}clearControlHtml(){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML="")}updateWatermark(e){this.singleWatermark||(this.singleWatermark=new za(this)),this.singleWatermark&&this.singleWatermark.update(e)}removeWatermark(){this.singleWatermark&&this.singleWatermark.remove()}getVideoInfo(){let e=null;return this.video&&(e=this.video.getVideoInfo()),e}getAudioInfo(){let e=null;return this.audio&&(e=this.audio.getAudioInfo()),e}getVideoPlaybackQuality(){let e=null;return this.video&&(e=this.video.getPlaybackQuality()),e}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(ot.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||ya(this.visibility)||(this._historyFpsList.length>this._opt.heartTimeout&&(this._historyFpsList.shift(),this._historyVideoDiffList.shift()),this._historyFpsList.push(e),this._historyVideoDiffList.push(t),this.isHistoryFpsListAllZero()&&this.checkHeartTimeout$2())}isHistoryFpsListAllZero(){let e=!0;if(this._historyFpsList.length0){e=!1;break}if(e)for(let t=0;t0){e=!1;break}return e}isUseHls265(){return ga(this._opt.isHls)&&ga(this._opt.supportHls265)}isHls(){return ga(this._opt.isHls)}isOldHls(){return ga(this._opt.isHls)&&ya(this._opt.supportHls265)}isWebrtcNotH265(){return ga(this._opt.isWebrtc)&&ya(this._opt.isWebrtcH265)}isWebrtcH264(){return ga(this._opt.isWebrtc)&&ya(this._opt.isWebrtcH265)}isWebrtcH265(){return ga(this._opt.isWebrtc)&&ga(this._opt.isWebrtcH265)}isAliyunRtc(){return ga(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===y}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&ga(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&ga(this._opt.useWCS)}isPlaybackUseWCS(){return this.isPlayback()&&ga(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&ga(this._opt.useMSE)}isPlaybackUseWASM(){return this.isPlayback()&&ga(this._opt.useWasm)}isPlayUseMSE(){return this.isPlayer()&&ga(this._opt.useMSE)}isMSEDecodeAudio(){return this._opt.useMSE&&this._opt.mseDecodeAudio}isWCSDecodeAudio(){this._opt.useWCS&&this._opt.wcsDecodeAudio}isInWebFullscreen(){return this._opt.useWebFullScreen&&uo()&&this.fullscreen}getPlaybackRate(){let e=1;return ga(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return ga(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame&&!this.isMSEDecodeAudio()}pushTempStream(e){const t=new Uint8Array(e);this._tempStreamList.push(t)}updateLoadingText(e){this.loading&&this.control&&this.control.updateLoadingText(e)}getVideoCurrentTime(){let e=0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoCurrentTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoCurrentTime()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoCurrentTime():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoCurrentTime())),e}getVideoBufferTimeRange(){let e=null;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoBufferTimeRange():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferTimeRange()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoBufferTimeRange():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoBufferTimeRange())),e}isVideoPlaying(){let e=!0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.isVideoPlaying():this.isMseDecoderUseWorker()&&(e=this.video.isVideoPlaying()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.isVideoPlaying():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.isVideoPlaying())),e}addMemoryLog(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s0){const e=t/1e3;this._flvMetaDataFps=e}}Po(e.hasAudio)&&ya(e.hasAudio)&&(this.debug.log("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),Po(e.hasVideo)&&ya(e.hasVideo)&&(this.debug.log("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo)}this.emit(ot.flvMetaData,e)}getMetaData(){return this._flvMetaData}getExtendBtnList(){return this.control.getExtendBtnList().map((e=>({name:e.name,$container:e.$iconContainer,$btn:e.$iconWrap,$activeBtn:e.$activeIconWrap})))}getCpuLevel(){let e=null;return this.pressureObserverCpu&&(e=this.pressureObserverCpu.getCurrentCpuState()),e}isRecordTypeFlv(){return this.recorder&&this._opt.recordType===T}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===S}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===E}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return ga(this._opt.useMSE)}isUseWCS(){return ga(this._opt.useWCS)}isUseWASM(){return ga(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&ga(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getCurrentVideoAndAudio(){return{video:this.getRenderCurrentPts(),audio:this.audioTimestamp}}getMseVideoBufferDelayTime(){let e=0;return this._opt.useMSE&&this.mseDecoder&&(this.mseDecoder?e=this.mseDecoder.getVideoBufferDelayTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferDelayTime()),e=parseInt(1e3*e,10)),e}updateCurrentPts(e){this.updateStats({currentPts:e}),this.emit(ot.currentPts,e)}getRenderCurrentPts(){let e=0;return e=this._stats.currentPts?this._stats.currentPts:this.videoTimestamp-this.getMseVideoBufferDelayTime(),e}openSyncAudioAndVideo(){return this._opt.syncAudioAndVideo&&this._opt.hasVideo}showTipsMessageByCode(e){if(this.control){const t=this._opt.showMessageConfig[e]||"未知异常";this.control.showTipsMessage(t,e)}}showTipsMessageByContent(e){this.control&&e&&this.control.showTipsMessage(e)}hideTipsMessage(){this.control&&this.control.hideTipsMessage()}decoderCheckFirstIFrame(){ga(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}setPtzPosition(e){this.control&&this.control.updatePtzPosition(e)}setRotate(e){this.updateOption({rotate:e}),this.resize()}setPlayFailedAndPaused(){this.isPlayFailedAndPaused=!0}getMseMineType(){let e={};return this.mseDecoder&&(e=this.mseDecoder.getMimeType()),e}getMaxDelayTs(){return this._opt.videoBuffer+this._opt.videoBufferDelay}isMseVideoStateInited(){return!this.video||this.video.getReadyStateInited()}showPlayBtn(){this.control&&this.control.showPlayBtn()}toggleControlExtendBtn(e,t){this.control&&this.control.toggleExtendBtn(e,t)}getControlExtendBtnActive(e){let t=!1;return this.control&&(t=this.control.getExtendBtnActive(e)),t}useVideoPlayAudio(){return this._opt.hasAudio&&(this._opt.useWCS&&this._opt.wcsDecodeAudio||this._opt.useWasm&&this._opt.wasmPlayAudioUseVideoRender)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class wv{constructor(e){this.player=e,this.globalSetting=null;const t=So();this.defaultSettings={watermark_id:`JbPro_${t}`,watermark_prefix:`JbPro_mask_${t}`,watermark_txt:"JbPro 测试水印",watermark_x:0,watermark_y:0,watermark_rows:0,watermark_cols:0,watermark_x_space:0,watermark_y_space:0,watermark_font:"微软雅黑",watermark_color:"black",watermark_fontsize:"18px",watermark_alpha:.15,watermark_width:150,watermark_height:100,watermark_angle:15,watermark_parent_width:0,watermark_parent_height:0,watermark_parent_node:null},this.load({text:decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),color:"white"}),this.player.debug.log("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings=null,this.player.debug.log("Watermark","destroy")}remove(){}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debug.log("Watermark","resize()"),this.globalSetting&&this._loadMark(this.globalSetting)}_loadMark(){let e=this.defaultSettings;if(1===arguments.length&&"object"==typeof arguments[0]){var t=arguments[0]||{};for(let i in t)t[i]&&e[i]&&t[i]===e[i]||(t[i]||0===t[i])&&(e[i]=t[i])}var i=document.getElementById(e.watermark_id);i&&i.parentNode&&i.parentNode.removeChild(i);var s="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,r=s||document.body;const o=r.getBoundingClientRect();var a=Math.max(r.scrollWidth,r.clientWidth,o.width),n=Math.max(r.scrollHeight,r.clientHeight,o.height),l=arguments[0]||{},d=r;(l.watermark_parent_width||l.watermark_parent_height)&&d&&(e.watermark_x=e.watermark_x+0,e.watermark_y=e.watermark_y+0);var h=document.getElementById(e.watermark_id),c=null;if(h)h.shadowRoot&&(c=h.shadowRoot);else{(h=document.createElement("div")).id=e.watermark_id,h.setAttribute("style","pointer-events: none !important; display: block !important"),c="function"==typeof h.attachShadow?h.attachShadow({mode:"open"}):h;var u=r.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?r.insertBefore(h,u[p]):r.appendChild(h)}e.watermark_cols=parseInt((a-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((a-e.watermark_x-e.watermark_width*e.watermark_cols)/e.watermark_cols);e.watermark_x_space=m?e.watermark_x_space:m,e.watermark_rows=parseInt((n-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var g,y,A,b=parseInt((n-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=b?e.watermark_y_space:b,s?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1)):(f=0+e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var v=0;v\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(v)));var w=document.createElement("div");w.style.position="absolute",w.style.left="0px",w.style.top="0px",w.style.overflow="hidden",w.style.zIndex="9999999",w.style.width=a+"px",w.style.height=n+"px",w.style.display="block",w.style["-ms-user-select"]="none",w.style.backgroundImage=`url(data:image/svg+xml;base64,${_})`,c.appendChild(w)}_removeMark(){const e=this.defaultSettings;var t=document.getElementById(e.watermark_id);if(t){var i=t.parentNode;i&&i.removeChild(t)}}_calcTextSize(){const{watermark_txt:e,watermark_font:t,watermark_fontsize:i}=this.globalSetting,s=document.createElement("span");s.innerHTML=e,s.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(s);const r={width:s.offsetWidth,height:s.offsetHeight};return s.remove(),r}}const Ev="right",Tv="left",kv="up",Cv="down",xv="leftUp",Dv="leftDown",Lv="rightUp",Rv="rightDown",Iv="zoomExpand",Pv="zoomNarrow",Bv="apertureFar",Mv="apertureNear",Fv="focusFar",Uv="focusNear",Ov="setPos",Nv="calPos",jv="delPos",Gv="wiperOpen",zv="wiperClose",Wv="cruiseStart",$v={stop:0,fiStop:0,right:1,left:2,up:8,down:4,leftUp:10,leftDown:6,rightUp:9,rightDown:5,zoomExpand:16,zoomNarrow:32,apertureFar:72,apertureNear:68,focusFar:66,focusNear:65,setPos:129,calPos:130,delPos:131,wiperOpen:140,wiperClose:141,setCruise:132,decCruise:133,cruiseStart:136,cruiseStop:0},Vv=[25,50,75,100,125,150,175,200,225,250],Hv=[1,2,3,4,5,6,7,8,9,16],Jv=[16,48,80,112,144,160,176,192,208,224];function qv(e){const{type:t,speed:i=5,index:s=0}=e,r=function(e){return Vv[(e=e||5)-1]||Vv[4]}(i);let o,a,n,l;if(o=$v[t],!o)return"";switch(t){case kv:case Cv:case Bv:case Mv:n=r;break;case Ev:case Tv:case Fv:case Uv:a=r;break;case xv:case Dv:case Lv:case Rv:a=r,n=r;break;case Iv:case Pv:l=function(e){return Jv[(e=e||5)-1]||Jv[4]}(i);break;case Nv:case jv:case Ov:n=Kv(s);break;case zv:case Gv:a=1;break;case Wv:a=Kv(s)}return function(e,t,i,s){let r=[];r[0]=165,r[1]=15,r[2]=1,r[3]=0,r[4]=0,r[5]=0,r[6]=0,e&&(r[3]=e);t&&(r[4]=t);i&&(r[5]=i);s&&(r[6]=s);return r[7]=(r[0]+r[1]+r[2]+r[3]+r[4]+r[5]+r[6])%256,function(e){let t="";for(let i=0;it)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=Qv(e[r]):"object"==typeof e[r]?s[r]=Xv(e[r],t,i+1):s[r]=e[r]);return s}}function Zv(){return(new Date).toLocaleString()}class e_{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player=e,this.TAG_NAME="MemoryLogger",this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[],this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.clear(),this.player.debug.log(this.TAG_NAME,"destroy")}clear(){this.logSize=0,this.logTextArray=[]}logCache(){let e="";try{for(var t=arguments.length,i=new Array(t),s=0;sXv(e)));e="[JbPro] "+Zv()+JSON.stringify(r)}catch(e){return}if(this.logSize+=e.length,this.logTextArray.push(e),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLog(){return this.logTextArray.join("\n")}getLogBlob(){const e=this.getLog();return new Blob([e],{type:"text/plain"})}download(){const e=this.getLog();this.clear();const t=new Blob([e],{type:"text/plain"});Ka(t,"JbPro-"+Zv()+".log")}}class t_ extends o{constructor(e){super(),this.player=e,this.TAG_NAME="Network",this.online=this.isOnline(),this.prevOnline=this.online,this.interval=null,this._initListener(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this._stopCheck(),window.removeEventListener("online",this._updateOnlineStatus),window.removeEventListener("offline",this._updateOfflineStatus),this.player.debug.log(this.TAG_NAME,"destroy")}_initListener(){window.addEventListener("online",this._updateOnlineStatus.bind(this)),window.addEventListener("offline",this._updateOfflineStatus.bind(this))}_stopCheck(){this.interval&&(clearInterval(this.interval),this.interval=null)}_startCheck(){this.interval=setInterval((()=>{this.isOnline()!==this.prevOnline&&(this.isOnline()?this._updateOnlineStatus():this._updateOfflineStatus())}),1e3)}_updateOnlineStatus(){this.prevOnline=this.online,this.online=!0,this.logStatus(),this.emit("online")}_updateOfflineStatus(){this.prevOnline=this.online,this.online=!1,this.logStatus(),this.emit("offline")}logStatus(){const e=this.prevOnline?"online":"offline",t=this.online?"online":"offline";this.player.debug.log(this.TAG_NAME,`prevOnline: ${this.prevOnline}, online: ${this.online}, status: ${e} -> ${t}`)}isOnline(){return void 0===navigator.onLine||navigator.onLine}isOffline(){return!this.isOnline()}}class i_ extends o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},this.TAG_NAME="JbPro",this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`JbPro option "${t}" can not be undefined`)})),this.originalOptions=e;const t=pa();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid=ca()),this.debug=new xr(this);let s=e.container;if("string"==typeof e.container&&(s=document.querySelector(e.container)),!s)throw this.debug.error("JbPro","JbPro need container option and now container is",e.container),new Error("JbPro need container option");if(ya(i.isLive)){const e=document.createElement("video");return e.muted=!0,e.setAttribute("controlsList","nodownload"),e.disablePictureInPicture="disablePictureInPicture",e.style.position="absolute",e.style.top=0,e.style.left=0,e.style.height="100%",e.style.width="100%",s.appendChild(e),this.$videoElement=e,this.$container=s,void(this._opt=i)}if(i.decoder&&ya(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debug.error("JbPro",`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===s.nodeName||"VIDEO"===s.nodeName)throw this.debug.error("JbPro",`JbPro container type can not be ${s.nodeName} type`),new Error(`JbPro container type can not be ${s.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debug.error("JbPro",`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(this._checkHasCreated(s))throw this.debug.error("JbPro","JbPro container has been created and can not be created again",s),new Error("JbPro container has been created and can not be created again",s);if(!s.classList)throw this.debug.error(this.TAG_NAME,"JbPro container is invalid, must be a DOM Element",s),new Error("JbPro container is invalid, must be a DOM Element",s);if(s.classList.add("jb-pro-container"),Aa(s,te,So()),delete i.container,Bo(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),Bo(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),Bo(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),Bo(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),Bo(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),Bo(i.timeout)&&(Io(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),Io(i.heartTimeout)&&(i.heartTimeout=i.timeout)),Bo(i.autoWasm)&&(Io(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),Io(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm),Io(i.mseWaitVideoCanplayAutoWasm)&&(i.mseWaitVideoCanplayAutoWasm=i.autoWasm)),Bo(i.aiFaceDetectLevel)&&Io(i.aiFaceDetectWidth)){const e=qs[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(Bo(i.aiObjectDetectLevel)&&Io(i.aiObjectDetectWidth)){const e=Ks[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}ga(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this.debug.log("JbPro","init"),i.videoBuffer>1e4&&this.debug.warn(this.TAG_NAME,`videoBuffer ${i.videoBuffer/1e3}s is too long, will black screen for ${i.videoBuffer/1e3}s , it is recommended to set it to less than 10s`),this._destroyed=!1,this._destroyLock=!1,this.$container=s,this._tempPlayBgObj={},this._tempVideoLastIframeInfo={},this._tempPlayerIsMute=!0,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this.events=new Da(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new Sv(this):this.watermark=new wv(this),this.memoryLogger=new e_(this),this.network=new t_(this),this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[],this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.widthOrHeightChangeReplayDelayTimeout=null,this.streamErrorReplayDelayTimeout=null,this.streamEndReplayDelayTimeout=null,this.playbackPauseTimeout=null,this.playbackResumeTimeout=null,this.initDecoderWorkerTimeout=null,this.$loadingBgImage=null,this.$loadingBg=null,this._initOnLock(),this._initPlayer(s,i),this._initWatermark(),this._initNetwork(),this.debug.log("JbPro",'init success and version is "6-18-2024"'),console.log('JbPro Version is "6-18-2024" '+(ya(co)?"and is Trial Version[试用版本]":""))}destroy(){return new Promise(((e,t)=>{if(this.debug&&this.debug.log("JbPro","destroy()"),this._destroyLock)return t("JbPro is destroying");this._destroyLock=!0,this._destroyed=!0,this.off(),this._removeTimeout(),this._initOnLock(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$container&&this.$container.removeChild(this.$videoElement),this.$videoElement=null),this._removeLoadingBackgroundForIOS(),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),this._destroyLock=!1,e()})).catch((e=>{this._destroyLock=!1,t(e)})):(this._destroy(),this._destroyLock=!1,e())}))}_removeTimeout(){this.widthOrHeightChangeReplayDelayTimeout&&(clearTimeout(this.widthOrHeightChangeReplayDelayTimeout),this.widthOrHeightChangeReplayDelayTimeout=null),this.streamErrorReplayDelayTimeout&&(clearTimeout(this.streamErrorReplayDelayTimeout),this.streamErrorReplayDelayTimeout=null),this.streamEndReplayDelayTimeout&&(clearTimeout(this.streamEndReplayDelayTimeout),this.streamEndReplayDelayTimeout=null),this.playbackPauseTimeout&&(clearTimeout(this.playbackPauseTimeout),this.playbackPauseTimeout=null),this.playbackResumeTimeout&&(clearTimeout(this.playbackResumeTimeout),this.playbackResumeTimeout=null)}_destroy(){var e,t;this.events&&(this.events.destroy(),this.events=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.network&&(this.network.destroy(),this.network=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("jb-pro-container"),this.$container.classList.remove("jb-pro-fullscreen-web"),e=this.$container,t=te,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._tempPlayBgObj=null,this._tempVideoLastIframeInfo=null,this._isNetworkOfflinePaused=!1,this._playerOnLock=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this._tempPlayerIsMute=!0,this._resetReplayTimes(),this.debug&&this.debug.log("JbPro","destroy end"),this._opt=null,this.debug=null}_resetReplayTimes(){this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[]}_getOriginalOpt(){const e=pa();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new _v(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(((t,i)=>{try{this.debug.log(this.TAG_NAME,"_resetPlayer()",JSON.stringify(e))}catch(t){this.debug.log(this.TAG_NAME,"_resetPlayer()",e)}const s=()=>{this._opt.url="",this._opt.playOptions={},this._opt=Object.assign(this._opt,e),this._initPlayer(this.$container,this._opt)};this.player?this.player.destroy().then((()=>{this.player=null,s(),this.debug.log(this.TAG_NAME,"_resetPlayer() end"),t()})).catch((e=>{this.debug.error(this.TAG_NAME,"_resetPlayer() error",e),i(e)})):(s(),this.debug.log(this.TAG_NAME,"_resetPlayer() end"),t())}))}_bindEvents(){var e=this;Object.keys(at).forEach((t=>{this.player.on(at[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(ot.beforeDestroy,(()=>{this.emit(ot.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(ot.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(ot.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(ot.videoInfo,(()=>{this.player&&(this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize())})),this.player.on(ot.memoryLog,(function(){e.memoryLogger.logCache(...arguments)})),this.player.on(ot.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_initWatermark(){if(this._opt.fullscreenWatermarkConfig.text=decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),this._opt.fullscreenWatermarkConfig.color="white",Jo(this._opt.fullscreenWatermarkConfig)){const e=Fo(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debug.warn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_initNetwork(){this.network.on(ot.online,(()=>{if(this.emit(ot.networkState,ot.online),this.isDestroyed())this.debug.log(this.TAG_NAME,"network online and JbPro is destroyed");else if(this._isNetworkOfflinePaused&&this._isNetworkOfflinePausedAndNextPlayConfig&&this._isNetworkOfflinePausedAndNextPlayConfig.url){const e=this._isNetworkOfflinePausedAndNextPlayConfig.url,t=this._isNetworkOfflinePausedAndNextPlayConfig.playOptions;this._streamErrorReplayTimes++;const i=this._isNetworkOfflinePausedAndNextPlayConfig.type||"unknown";this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.debug.log(this.TAG_NAME,`${i} and network online and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and reset player and play`),this.play(e,t).then((()=>{this.debug.log(this.TAG_NAME,`${i} and network online and play success`)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.fetchError,{},e),this.debug.error(this.TAG_NAME,`${i} and network online and play error`,e.toString(),e)}))}})),this.network.on(ot.offline,(()=>{this.emit(ot.networkState,ot.offline)}))}_checkHasCreated(e){if(!e)return!1;return!!ba(e,te)}_initOnLock(){this.webglAlignmentErrorOnLock=!1,this.webglContextLostErrorOnLock=!1,this.mediaSourceH265NotSupportOnLock=!1,this.mediaSourceFullOnLock=!1,this.mediaSourceAppendBufferErrorOnLock=!1,this.mseSourceBufferErrorOnLock=!1,this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.mseAddSourceBufferErrorOnLock=!1,this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.mediaSourceTsIsMaxDiffOnLock=!1,this.mseWidthOrHeightChangeOnLock=!1,this.mediaSourceAudioG711NotSupportOnLock=!1,this.mediaSourceAudioInitTimeoutOnLock=!1,this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.mseWorkerAddSourceBufferErrorOnLock=!1,this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.webcodecsH265NotSupportOnLock=!1,this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.webcodecsDecodeConfigureErrorOnLock=!1,this.webcodecsDecodeErrorOnLock=!1,this.wcsWidthOrHeightChangeOnLock=!1,this.webcodecsAudioNoDataTimeoutOnLock=!1,this.webcodecsAudioInitTimeoutOnLock=!1,this.simdDecodeErrorOnLock=!1,this.wasmWidthOrHeightChangeOnLock=!1,this.wasmUseVideoRenderErrorOnLock=!1,this.videoElementPlayingFailedOnLock=!1,this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.networkDelayTimeoutOnLock=!1,this.flvDemuxBufferSizeTooLargeOnLock=!1,this.fetchErrorOnLock=!1,this.streamEndOnLock=!1,this.websocketErrorOnLock=!1,this.webrtcErrorOnLock=!1,this.hlsErrorOnLock=!1,this.aliyunRtcErrorOnLock=!1,this.decoderWorkerInitErrorOnLock=!1,this.decoderWorkerWasmErrorOnLock=!1,this.videoElementPlayingFailedForWebrtcOnLock=!1,this.videoInfoErrorOnLock=!1,this.webrtcStreamH265OnLock=!1,this.mseWaitVideoCanplayTimeoutOnLock=!1}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debug.log("JbPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debug.warn("JbPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debug.log("JbPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debug.log("JbPro","cancelMute()"),this.player&&this.player.mute(!1)}setVolume(e){this.debug.log("JbPro",`setVolume() ${e}`),this.player&&(this.player.volume=e)}getVolume(){let e=null;return this.player&&(e=this.player.volume,e=parseFloat(e).toFixed(2)),e}audioResume(){this.debug.log("JbPro","audioResume()"),this.player&&this.player.audio?this.player.audio.audioEnabled(!0):this.debug.warn("JbPro","audioResume error")}setTimeout(e){this.debug.log("JbPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debug.warn("JbPro",`setTimeout error: ${e} is not a number`):(this._opt.timeout=e,this._opt.loadingTimeout=e,this._opt.heartTimeout=e,this.player&&this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e}))}setScaleMode(e){this.debug.log("JbPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debug.warn("JbPro","setScaleMode() player is null")}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{this.debug.log("JbPro",`pause() ${e}`),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._tempPlayerIsMute=this.isMute(),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{if(this.debug.log("JbPro",`_pause() ${e}`),this.isDestroyed())return i("JbPro is destroyed");this._resetReplayTimes(),this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("JbPro is destroyed");this.debug.log("JbPro","close()"),this._opt.url="",this._resetReplayTimes(),this.player?this.player.close().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}clearView(){this.debug.log("JbPro","clearView()"),this.player&&this.player.video?this.getRenderType()===H?this.player.video.clearView():this.debug.warn("JbPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debug.warn("JbPro","clearView","player is null")}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debug.log("JbPro",`play() ${e}`,JSON.stringify(t))}catch(i){this.debug.log("JbPro",`play() ${e}`,t)}if(!e&&!this._opt.url)return this.emit(ot.error,lt.playError),void s("url is null and this._opt.url is null");if(e&&(e=(""+e).trim(),-1===e.indexOf("http:")&&-1===e.indexOf("https:")&&-1===e.indexOf("webrtc:")&&-1===e.indexOf("ws:")&&-1===e.indexOf("wss:")&&-1===e.indexOf("wt:")&&-1===e.indexOf("artc:")))return s(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(ya(this._opt.isLive))return this.$videoElement.controls="controls",this.$videoElement.muted=!1,this.$videoElement.src=e,this.$videoElement.play(),void i(this.$videoElement);if(this._opt.isM7sCrypto){let r=t.cryptoKey||this._opt.playOptions.cryptoKey,o=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!r||!o)){const e=this._opt.m7sCryptoKey.split(".");r=da(e[0]),o=da(e[1])}if(!r||!o){const r=e||this._opt.url;return void this._cryptoPlay(r).then((r=>{let{cryptoIV:o,cryptoKey:a}=r;this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}this._opt.playOptions.cryptoKey=r,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=r}else if(this._opt.isXorCrypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.xorCryptoKey&&(!e||!i)){const t=this._opt.xorCryptoKey.split(".");e=da(t[0]),i=da(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}else if(this._opt.isSm4Crypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.sm4CryptoKey&&(!e||!i)){const t=this._opt.sm4CryptoKey.split(".");2===t.length&&(e=ll(t[0]),i=ll(t[1]))}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))}))}_playBefore(e,t){return new Promise(((i,s)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debug.log("JbPro","_playBefore","playing and resolve()"),i();else{this.debug.log("JbPro","_playBefore","this._opt.url === url and pause -> play and destroy play");let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),ya(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore this.player.play error",e),this.emit(ot.crashLog,this.getCrashLog("this.player.play 1",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e),s(e)}))}else{this.debug.log("JbPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const r=this._getOriginalOpt();this._resetPlayer(r).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(ot.crashLog,this.getCrashLog("this.player.play 2",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(ot.crashLog,this.getCrashLog("this.player.play 3",e)),s(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),ya(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(ot.crashLog,this.getCrashLog("this.player.play 4",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(ot.crashLog,this.getCrashLog("this.player.play 5",e)),s(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(ot.crashLog,this.getCrashLog("this.player.play 6",e)),s(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const s=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let s=t[1].substring(i);return-1!=s.indexOf("?")&&(s=s.split("?")[0]),s}(e);let r=this._opt.cryptoKeyUrl,o="";const a=ha(e);if(r){if(o=r,this._opt.isM7sCrypto&&-1===o.indexOf("/crypto/?stream=")){const e=ha(r);o=e.origin+ee+`?stream=${s}`}}else r=a.origin+ee,o=r+`?stream=${s}`;var n;this.player.debug.log("JbPro",`_cryptoPlay() cryptoKeyUrl: ${o} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(n=o,new Promise(((e,t)=>{Il.get(n).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const s=e.split("."),r=da(s[0]),o=da(s[1]);o&&r?t({cryptoIV:o,cryptoKey:r}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${o} res is null`)})).catch((e=>{i(e)}))}))}playback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debug.log("JbPro",`playback() ${e}, options: `,JSON.stringify(t))}catch(i){this.debug.log("JbPro",`playback() ${e}, options: `,t)}if(ya(this._opt.isLive))return s("this._opt.isLive is false, can not playback");const r=fa(),o=Object.assign({},r.playbackConfig,this._opt.playbackConfig,t);o.isUseFpsRender||o.isCacheBeforeDecodeForFpsRender&&(o.isCacheBeforeDecodeForFpsRender=!1,this.debug.warn("JbPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===o.rateConfig.length&&o.showRateBtn&&(o.showRateBtn=!1,this.debug.warn("JbPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),o.controlType,X.simple,this._resetPlayer({videoBuffer:0,playbackConfig:o,playType:w,openWebglAlignment:!0,useMSE:o.useMSE,useWCS:o.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}playbackPause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debug.log("JbPro",`playbackPause() ${e}`),this._opt.playType===v?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");ga(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,this.player.recording=!1,this.player.zooming=!1,this.playbackPauseTimeout=setTimeout((()=>{this.playbackPauseTimeout=null,t()}),100))})))}playbackResume(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debug.log("JbPro","playbackResume()"),this._opt.playType===v?Promise.reject("playType is player, can not call playbackResume method"):new Promise(((e,t)=>{if(!this.player)return t("player is null");this.player.playbackPause=!1,this.playbackResumeTimeout=setTimeout((()=>{this.playbackResumeTimeout=null,e()}),100)})))}forward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debug.log("JbPro",`forward() ${e}`),ya(this._opt.isLive)||this._opt.playType===v?Promise.reject("forward() method only just for playback type"):ko(Number(e))?new Promise(((t,i)=>{this.player?(e=ro(Number(e),.1,32),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"playbackRate",value:e}),this.player.playback.setRate(e),this.player.video&&this.player.video.setRate(e),this.player.audio&&this.player.audio.setRate(e),(this.player.isPlaybackUseWCS()||this.player.isPlaybackUseMSE())&&(this.player.demux&&this.player.demux.dropBuffer$2(),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.player.demux.initPlaybackCacheLoop()),t()):i("player is not playing")})):Promise.reject(`forward() params "rate": ${e} must be number type`))}playbackForward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((t,i)=>{this.forward(e).then((()=>{t()})).catch((e=>{i(e)}))}))}normal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.forward(1).then((()=>{e()})).catch((e=>{t(e)}))}))}playbackNormal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.normal().then((()=>{e()})).catch((e=>{t(e)}))}))}updatePlaybackForwardMaxRateDecodeIFrame(e){this.isDestroyed()||(this.debug.log("JbPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=ro(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debug.warn("JbPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null"))}setPlaybackStartTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setPlaybackStartTime() ${e}`);const t=Vo(e);this.player?this.player.isPlayback()?t<10&&0!==e&&this.player.playback.isControlTypeNormal()?this.debug.warn("JbPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`):this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration?this.debug.warn("JbPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`):this.player.playing&&(this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),this.player.playback.setStartTime(e),this.playbackClearCacheBuffer()):this.debug.warn("JbPro","setPlaybackStartTime() playType is not playback"):this.debug.warn("JbPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.isDestroyed()||(this.debug.log("JbPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debug.warn("JbPro","control type is not normal , not support!"):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}playbackCurrentTimeScroll(){this.isDestroyed()||(this.debug.log("JbPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debug.warn("JbPro","control type is not normal , not support!"):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}playbackClearCacheBuffer(){this.isDestroyed()||(this.debug.log("JbPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}getPlaybackCurrentRate(){return this.player?this.player.isPlayback()?this.player.getPlaybackRate():(this.debug.warn("JbPro","playType is not playback"),1):(this.debug.warn("JbPro","player is null"),1)}updatePlaybackLocalOneFrameTimestamp(e){this.isDestroyed()||(this.debug.log("JbPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null"))}setStreamQuality(e){if(this.isDestroyed())return;if(this.debug.log("JbPro",`setStreamQuality() ${e}`),!this.player)return void this.debug.warn("JbPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debug.warn("JbPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debug.warn("JbPro",`quality: ${e} is not in qualityList`)}_play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!this.player)return s("player is null");let r=!1;this._opt.url&&this._opt.url!==e&&(r=!0),this._opt.url=e,this._opt.playOptions=t;const o=e.split("?")[0],p=o.startsWith("http://")||o.startsWith("https://"),f=o.startsWith("webrtc://"),m=o.startsWith("artc://"),g=o.startsWith("wt://"),y=o.startsWith("ws://")||o.startsWith("wss://"),A=p||y,b=p&&o.endsWith(".m3u8"),v=A&&o.endsWith(".flv"),_=A&&(o.endsWith(".fmp4")||o.endsWith(".mp4")),w=A&&o.endsWith(".mpeg4"),S=A&&(o.endsWith(".h264")||o.endsWith(".h265")),E=A&&o.endsWith(".ts");let T=this._opt.isWebrtcForZLM||!1,F=this._opt.isWebrtcForSRS||!1,U=this._opt.isWebrtcForOthers||!1;f&&(-1!==e.indexOf("/index/api/webrtc")?(T=!0,F=!1,U=!1):-1!==e.indexOf("/rtc/v1/play/")&&(F=!0,T=!1,U=!1));let O=null,N=null;if(v&&ya(this._opt.isFlv)&&this._resetDemuxType("isFlv"),_&&ya(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),w&&ya(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),S&&ya(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),E&&ya(this._opt.isTs)&&this._resetDemuxType("isTs"),p?O=b?l:n:g?O=h:f?O=d:m?O=c:y&&(O=a),this._opt.isNakedFlow?N=R:this._opt.isFmp4?N=I:this._opt.isMpeg4?N=P:this._opt.isFlv?N=k:this._opt.isTs?N=M:b?N=x:f?N=D:m?N=B:g?N=L:y&&(N=C),!O||!N)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),s(`play url ${e} is invalid, protocol is ${u[O]}, demuxType is ${N}`);this.debug.log("JbPro",`play url ${e} protocol is ${u[O]}, demuxType is ${N}`);const j=()=>{this.player.on(lt.webglAlignmentError,this._handleWebglAlignmentError.bind(this)),this.player.on(lt.webglContextLostError,this._handleWebglContextLostError.bind(this)),this.player.on(lt.mediaSourceH265NotSupport,this._handleMediaSourceH265NotSupport.bind(this)),this.player.on(lt.mseWaitVideoCanplayTimeout,this._handleMseWaitVideoCanplayTimeout.bind(this)),this.player.on(lt.mediaSourceFull,this._handleMediaSourceFull.bind(this)),this.player.on(lt.mediaSourceAppendBufferError,this._handleMediaSourceAppendBufferError.bind(this)),this.player.on(lt.mseSourceBufferError,this._handleMseSourceBufferError.bind(this)),this.player.on(lt.mediaSourceBufferedIsZeroError,this._handleMediaSourceBufferedIsZeroError.bind(this)),this.player.on(lt.mseAddSourceBufferError,this._handleMseAddSourceBufferError.bind(this)),this.player.on(lt.mediaSourceDecoderConfigurationError,this._handleMediaSourceDecoderConfigurationError.bind(this)),this.player.on(lt.mediaSourceTsIsMaxDiff,this._handleMediaSourceTsIsMaxDiff.bind(this)),this.player.on(lt.mseWidthOrHeightChange,this._handleMseWidthOrHeightChange.bind(this)),this.player.on(lt.mediaSourceAudioG711NotSupport,this._handleMediaSourceAudioG711NotSupport.bind(this)),this.player.on(lt.mediaSourceAudioInitTimeout,this._handleMediaSourceAudioInitTimeout.bind(this)),this.player.once(lt.mediaSourceAudioNoDataTimeout,this._handleMediaSourceAudioNoDataTimeout.bind(this)),this.player.on(lt.mseWorkerAddSourceBufferError,this._handleMseWorkerAddSourceBufferError.bind(this)),this.player.on(lt.mediaSourceUseCanvasRenderPlayFailed,this._handleMediaSourceUseCanvasRenderPlayFailed.bind(this)),this.player.on(lt.webcodecsH265NotSupport,this._handleWebcodecsH265NotSupport.bind(this)),this.player.on(lt.webcodecsUnsupportedConfigurationError,this._handleWebcodecsUnsupportedConfigurationError.bind(this)),this.player.on(lt.webcodecsDecodeConfigureError,this._handleWebcodecsDecodeConfigureError.bind(this)),this.player.on(lt.webcodecsDecodeError,this._handleWebcodecsDecodeError.bind(this)),this.player.on(lt.wcsWidthOrHeightChange,this._handleWcsWidthOrHeightChange.bind(this)),this.player.on(lt.webcodecsAudioNoDataTimeout,this._handleWebcodecsAudioNoDataTimeout.bind(this)),this.player.on(lt.webcodecsAudioInitTimeout,this._handleWebcodecsAudioInitTimeout.bind(this)),this.player.on(lt.simdDecodeError,this._handleSimdDecodeError.bind(this)),this.player.on(lt.wasmWidthOrHeightChange,this._handleWasmWidthOrHeightChange.bind(this)),this.player.on(lt.wasmUseVideoRenderError,this._handleWasmUseVideoRenderError.bind(this)),this.player.on(lt.videoElementPlayingFailed,this._handleVideoElementPlayingFailed.bind(this)),this.player.on(lt.simdH264DecodeVideoWidthIsTooLarge,this._handleSimdH264DecodeVideoWidthIsTooLarge.bind(this)),this.player.on(ot.networkDelayTimeout,this._handleNetworkDelayTimeout.bind(this)),this.player.on(ot.flvDemuxBufferSizeTooLarge,this._handleFlvDemuxBufferSizeTooLarge.bind(this)),this.player.on(lt.fetchError,this._handleFetchError.bind(this)),this.player.on(ot.streamEnd,this._handleStreamEnd.bind(this)),this.player.on(lt.websocketError,this._handleWebsocketError.bind(this)),this.player.on(lt.webrtcError,this._handleWebrtcError.bind(this)),this.player.on(lt.hlsError,this._handleHlsError.bind(this)),this.player.on(lt.aliyunRtcError,this._handleAliyunRtcError.bind(this)),this.player.on(lt.decoderWorkerInitError,this._handleDecoderWorkerInitError.bind(this)),this.player.on(lt.decoderWorkerWasmError,this._handleDecoderWorkerWasmError.bind(this)),this.player.on(lt.videoElementPlayingFailedForWebrtc,this._handleVideoElementPlayingFailedForWebrtc.bind(this)),this.player.on(lt.videoInfoError,this._handleVideoInfoError.bind(this)),this.player.on(ot.webrtcStreamH265,this._handleWebrtcStreamH265.bind(this)),this.player.on(ot.delayTimeout,this._handleDelayTimeout.bind(this)),this.player.on(ot.loadingTimeout,this._handleLoadingTimeout.bind(this)),this._hasLoaded()?(this.debug.log(this.TAG_NAME,"_playNext and _hasLoaded() is true"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_hasLoaded() and play error",e),this.emit(ot.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debug.error("JbPro","_hasLoaded() and play error and next pause error",e)}))}))):(this.debug.log(this.TAG_NAME,"_playNext and waiting decoderWorkerInit callback"),this._checkInitDecoderWorkerTimeout(),this.player.once(ot.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()?this.debug&&this.debug.log("JbPro","decoderWorkerInit but player is destroyed"):(this.debug.log(this.TAG_NAME,"_playNext and decoderWorkerInit callback and next play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","decoderWorkerInit and play error",e),this.emit(ot.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debug.error("JbPro","decoderWorkerInit and play error and next pause error",e)}))})))})))},G=this.player.getOption(),z=b&&ya(this._opt.supportHls265),W=f&&ya(this._opt.isWebrtcH265),$=b&&!!ta(),V=b&&G.demuxUseWorker;if(z||W||m||r||w||$||V)this.debug.log("JbPro",`need reset player and\n isOldHls is ${z} and isOldWebrtc is ${W} and\n isAliyunRtc is ${m} and\n needResetPlayer(url change) is ${r} and\n isMpeg4 is ${w} and\n isHlsCanVideoPlay is ${$} and\n isHlsButDemuxUseWorker is ${V}`),this._resetPlayer({protocol:O,demuxType:N,isHls:b,isWebrtc:f,isWebrtcForZLM:T,isWebrtcForSRS:F,isWebrtcForOthers:U,isAliyunRtc:m,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||"",url:e,playOptions:t}).then((()=>{j()})).catch((e=>{s("reset player error")}));else{const e={protocol:O,demuxType:N,isHls:b,isWebrtc:f,isAliyunRtc:m,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1,e.wcsDecodeAudio=!1),this.player.updateOption(e),j()}}))}_resetDemuxType(e){this._opt.isFlv=!1,this._opt.isFmp4=!1,this._opt.isMpeg4=!1,this._opt.isNakedFlow=!1,this._opt.isHls=!1,this._opt.isWebrtc=!1,this._opt.isWebrtcForZLM=!1,this._opt.isWebrtcForSRS=!1,this._opt.isWebrtcForOthers=!1,this._opt.isAliyunRtc=!1,this._opt.isTs=!1,e&&(this._opt[e]=!0),"isFmp4"!==e&&(this._opt.isFmp4Private=!1)}resize(){this.isDestroyed()||(this.debug.log("JbPro","resize()"),this.player&&this.player.resize())}setBufferTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debug.warn("JbPro",`setBufferTime() buffer time is ${e} second, is too large, video will show blank screen until cache ${e} second buffer data`);const t=1e3*e;this._opt.videoBuffer=t,this.player?this.player.updateOption({videoBuffer:t},!0):this.debug.warn("JbPro","setBufferTime() player is null")}setBufferDelayTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debug.warn("JbPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=ro(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debug.warn("JbPro","setBufferDelayTime() player is null")}setRotate(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setRotate() ${e}`),e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)?(this._opt.rotate=e,this.player?this.player.setRotate(e):this.debug.warn("JbPro","setRotate() player is null")):this.debug.warn("JbPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setMirrorRotate() ${e}`);e||(e="none"),this._opt.mirrorRotate!==e&&-1!==["none","level","vertical"].indexOf(e)?(this._opt.mirrorRotate=e,this.player?(this.player.updateOption({mirrorRotate:e}),this.resize()):this.debug.warn("JbPro","setMirrorRotate() player is null")):this.debug.warn("JbPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setAspectRatio() ${e}`);e||(e="default"),this._opt.aspectRatio!==e&&-1!==["default","4:3","16:9"].indexOf(e)?(this._opt.aspectRatio=e,this.player?(this.player.updateOption({aspectRatio:e}),this.resize()):this.debug.warn("JbPro","setAspectRatio() player is null")):this.debug.warn("JbPro",`setAspectRatio() aspectRatio is ${e} and this._opt.aspectRatio is ${this._opt.mirrorRotate}`)}hasLoaded(){return!0}_hasLoaded(){return this.player&&this.player.loaded||!1}setKeepScreenOn(){this.isDestroyed()||(this.debug.log("JbPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debug.warn("JbPro","setKeepScreenOn() player is not ready"))}setFullscreen(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debug.warn("JbPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debug.warn("JbPro","setFullscreen() player is not ready")}setWebFullscreen(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debug.warn("JbPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,s){if(!this.isDestroyed())return this.debug.log("JbPro",`screenshot() ${e} ${t} ${i} ${s}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,s):(this.debug.warn("JbPro","screenshot() player is not ready"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debug.log("JbPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debug.warn("JbPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debug.log("JbPro","screenshotCopyrightWatermark()",e),this.player&&this.player.video?this.player.video.screenshotCopyrightWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debug.warn("JbPro","screenshotCopyrightWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,s)=>this.isDestroyed()?s("player is destroyed"):(this.debug.log("JbPro",`startRecord() ${e} ${t}`),this.player?void(this.player.playing?(this.player.startRecord(e,t),i()):(this.debug.warn("JbPro","startRecord() player is not playing"),s("not playing"))):(this.debug.warn("JbPro","startRecord() player is not ready"),s("player is not ready")))))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{if(this.isDestroyed())return s("player is destroyed");this.debug.log("JbPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)})):s("not recording")}))}cancelRecord(){return new Promise(((e,t)=>this.isDestroyed()?t("player is destroyed"):(this.debug.log("JbPro","cancelRecord()"),this.player?void this.player.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})):(this.debug.warn("JbPro","cancelRecord() player is not ready"),t("player is not ready")))))}isPlaying(){let e=!1;return this.player&&(e=this.player.isPlaying()),e}isLoading(){return!!this.player&&this.player.loading}isPause(){let e=!1;return this._opt.playType===v?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===w&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===w&&this.player&&(e=this.player.playbackPause),e}isMute(){let e=!0;return this.player&&(e=this.player.isAudioMute()),e}isRecording(){return this.player&&this.player.recorder&&this.player.recorder.recording||!1}isFullscreen(){let e=!1;return this.player&&(e=this.player.fullscreen),e}isWebFullscreen(){let e=!1;return this.player&&(e=this.player.webFullscreen),e}clearBufferDelay(){this.isDestroyed()||(this.debug.log("JbPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debug.warn("JbPro","clearBufferDelay() player is not init"))}setNetworkDelayTime(e){if(this.isDestroyed())return;this.debug.log("JbPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debug.warn("JbPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=ro(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debug.warn("JbPro","setNetworkDelayTime() player is null")}getDecodeType(){let e="";return this.player&&(e=this.player.getDecodeType()),e}getRenderType(){let e="";return this.player&&(e=this.player.getRenderType()),e}getAudioEngineType(){let e="";return this.player&&(e=this.player.getAudioEngineType()),e}getPlayingTimestamp(){let e=0;return this.player&&(e=this.player.getPlayingTimestamp()),e}getStatus(){let e=gs;return this.player&&(e=this.player.loading?ps:this.player.playing?fs:ms),e}getPlayType(){return this.player?this.player._opt.playType:v}togglePerformancePanel(e){if(this.isDestroyed())return;this.debug.log("JbPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;Po(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debug.warn("JbPro","togglePerformancePanel() failed, this.player is not init"):this.debug.warn("JbPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){if(!this.isDestroyed())if(this.debug.log("JbPro","openZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debug.warn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!0}else this.debug.warn("JbPro","openZoom() failed, this.player is not init")}closeZoom(){if(!this.isDestroyed())if(this.debug.log("JbPro","closeZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debug.warn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!1}else this.debug.warn("JbPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.isDestroyed()||(this.debug.log("JbPro",`toggleZoom() ${e}`),Po(e)||(e=!this.isZoomOpen()),ga(e)?this.openZoom():ya(!1)&&this.closeZoom())}expandZoom(){this.isDestroyed()||(this.debug.log("JbPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debug.warn("JbPro","expandZoom() failed, zoom is not open or not init"))}narrowZoom(){this.isDestroyed()||(this.debug.log("JbPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debug.warn("JbPro","narrowZoom failed, zoom is not open or not init"))}updateCurrentZoom(e){this.isDestroyed()||(this.debug.log("JbPro","updateCurrentZoom()",e),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.updateCurrentZoom(e):this.debug.warn("JbPro","narrowZoom failed, zoom is not open or not init"))}getCurrentZoomIndex(){if(this.isDestroyed())return;let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");if(this.debug.log("JbPro","setNakedFlowFps()",e),Io(e))return i("setNakedFlowFps() fps is empty");let s=Number(e);s=ro(s,1,100),this._opt.nakedFlowFps=s,this.player?this.player.updateOption({nakedFlowFps:s}):this.debug.warn("JbPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!this.player)return;const i=this.player.getAllStatsData(),s=this.player;let r={url:this._opt.url,playType:s.isPlayback()?"playback":"live",demuxType:s.getDemuxType(),decoderType:s.getDecodeType(),renderType:s.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:s.getAudioEngineType(),allTimes:i.pTs,timestamp:so(),type:e,error:na(t)||e};if(s.video){const e=s.video.videoInfo||{};r.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(s.audio){const e=s.audio.audioInfo||{};r.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return r}updateDebugLevel(e){this.isDestroyed()||(this.debug.log("JbPro","updateDebugLevel()",e),e===q||e===K?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debug.warn("JbPro","updateDebugLevel() player is null")):this.debug.warn("JbPro",`updateDebugLevel() level is same, level: ${e}`):this.debug.warn("JbPro",`updateDebugLevel() level is not valid, level: ${e}`))}updateWatermark(e){this.isDestroyed()||(this.debug.log("JbPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debug.warn("JbPro","updateWatermark() player is not init"))}removeWatermark(){this.isDestroyed()||(this.debug.log("JbPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debug.warn("JbPro","removeWatermark() player is not init"))}updateFullscreenWatermark(e){if(!this.isDestroyed())if(this.debug.log("JbPro","updateFullscreenWatermark()",e),Jo(e)){this._opt.fullscreenWatermarkConfig=e;const t=Fo(this.$container,e);if(!t.watermark_txt)return void this.debug.warn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debug.warn("JbPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.isDestroyed()||(this.debug.log("JbPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debug.warn("JbPro","removeFullscreenWatermark() watermark is not init"))}faceDetectOpen(){this.isDestroyed()||(this.debug.log("JbPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debug.warn("JbPro","faceDetectOpen() player is not init"))}faceDetectClose(){this.isDestroyed()||(this.debug.log("JbPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debug.warn("JbPro","faceDetectClose() player is not init"))}objectDetectOpen(){this.isDestroyed()||(this.debug.log("JbPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debug.warn("JbPro","objectDetectOpen() player is not init"))}objectDetectClose(){this.isDestroyed()||(this.debug.log("JbPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debug.warn("JbPro","objectDetectClose() player is not init"))}sendWebsocketMessage(e){this.isDestroyed()||(this.debug.log("JbPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debug.warn("JbPro","sendWebsocketMessage() player is not init"))}addContentToCanvas(e){this.isDestroyed()||(this.debug.log("JbPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debug.warn("JbPro","addContentToCanvas() player is not init"))}clearContentToCanvas(){this.isDestroyed()||(this.debug.log("JbPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debug.warn("JbPro","clearContentToCanvas() player is not init"))}addContentToContainer(e){this.isDestroyed()||(this.debug.log("JbPro","addContentToContainer()"),this.player?this.player.addContentToContainer(e):this.debug.warn("JbPro","addContentToContainer() player is not init"))}clearContentToContainer(){this.isDestroyed()||(this.debug.log("JbPro","clearContentToContainer()"),this.player?this.player.addContentToContainer([]):this.debug.warn("JbPro","clearContentToContainer() player is not init"))}setControlHtml(e){this.isDestroyed()||(this.debug.log("JbPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debug.warn("JbPro","setControlHtml() player is not init"))}clearControlHtml(){this.isDestroyed()||(this.debug.log("JbPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debug.warn("JbPro","clearControlHtml() player is not init"))}getVideoInfo(){let e=null;return this.player&&(e=this.player.getVideoInfo()),e}getAudioInfo(){let e=null;return this.player&&(e=this.player.getAudioInfo()),e}setSm4CryptoKey(e){if(this.isDestroyed())return;this.debug.log("JbPro","setSm4CryptoKey()",e);const t=(e=""+e).split(".");if(32!==e.length&&2!==t.length)return void this.debug.warn("JbPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`);if(2===t.length&&(32!==t[0].length||32!==t[1].length))return void this.debug.warn("JbPro",`setSm4CryptoKey() key is invalid and key length is ${t[0].length} !== 32 or iv length ${t[1].length} !== 32`);this._opt.sm4CryptoKey=e;let i=2===t.length;if(i&&(this._opt.playOptions.cryptoKey=ll(t[0]),this._opt.playOptions.cryptoIV=ll(t[1])),this.player){const t={sm4CryptoKey:e};i&&(t.cryptoKey=this._opt.playOptions.cryptoKey,t.cryptoIV=this._opt.playOptions.cryptoIV),this.player.updateOption(t,!0)}else this.debug.warn("JbPro","setSm4CryptoKey() player is null")}setM7sCryptoKey(e){this.isDestroyed()||(this.debug.log("JbPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debug.warn("JbPro","setM7sCryptoKey() player is null"))}setXorCryptoKey(e){this.isDestroyed()||(this.debug.log("JbPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debug.warn("JbPro","setXorCryptoKey() player is null"))}updateLoadingText(e){this.isDestroyed()||(this.debug.log("JbPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debug.warn("JbPro","updateLoadingText() player is null"))}updateIsEmitSEI(e){this.isDestroyed()||(this.debug.log("JbPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debug.warn("JbPro","updateIsEmitSEI() player is null"))}getPTZCmd(e,t){return this.debug.log("JbPro","getPTZCmd()",e),e?this.player?qv({type:e,index:0,speed:t}):(this.debug.warn("JbPro","getPTZCmd() player is null"),null):(this.debug.warn("JbPro","getPTZCmd() ptz is null"),null)}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadMemoryLog(){this.isDestroyed()||this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{},t={loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0};return t.loadingBackground&&t.loadingBackgroundWidth&&t.loadingBackgroundHeight&&(this._tempVideoLastIframeInfo=t),this._tempVideoLastIframeInfo||{}}getExtendBtnList(){this.debug.log("JbPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debug.warn("JbPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debug.log("JbPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debug.warn("JbPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){if(this.isDestroyed())return;this.debug.log("JbPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debug.warn("JbPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.isDestroyed())return;if(this.debug.log("JbPro","updateAiFaceDetectLevel()",e),!qs[e])return void this.debug.warn("JbPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=qs[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debug.warn("JbPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){if(this.isDestroyed())return;this.debug.log("JbPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debug.warn("JbPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.isDestroyed())return;if(this.debug.log("JbPro","updateAiObjectDetectLevel()",e),!Ks[e])return void this.debug.warn("JbPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=Ks[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debug.warn("JbPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.isDestroyed()||(this.debug.log("JbPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e))}showErrorMessageTips(e){this.isDestroyed()||(this.debug.log("JbPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debug.warn("JbPro","showErrorMessageTips() player is null")))}setPtzPosition(e){this.debug.log("JbPro","setPtzPosition()",e),e&&!Ho(e)&&(this.player?this.player.setPtzPosition(e):this.debug.warn("JbPro","setPtzPosition() player is null"))}hideErrorMessageTips(){this.isDestroyed()||(this.debug.log("JbPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debug.warn("JbPro","hideErrorMessageTips() player is null"))}getContainerRect(){return this._getContainerRect()}proxy(e,t,i,s){return this.events.proxy(e,t,i,s)}getUrl(){return this._opt.url}toggleControlExtendBtn(e,t){this.isDestroyed()||(this.debug.log(this.TAG_NAME,`toggleControlExtendBtn() ${e} ${t}`),this.player?this.player.toggleControlExtendBtn(e,t):this.debug.warn(this.TAG_NAME,"toggleControlExtendBtn() player is null"))}getControlExtendBtnActive(e){if(this.isDestroyed())return;this.debug.log(this.TAG_NAME,`getControlExtendBtnActive() ${e}`);let t=!1;return this.player?t=this.player.getControlExtendBtnActive(e):this.debug.warn(this.TAG_NAME,"getControlExtendBtnActive() player is null"),t}toggleControlBar(e){this.isDestroyed()||(this.debug.log(this.TAG_NAME,`toggleControlBar() ${e}`),this.player?this.player.toggleControlBar(e):this.debug.warn(this.TAG_NAME,"toggleControlBar() player is null"))}getControlBarShow(){if(this.isDestroyed())return!1;this.debug.log(this.TAG_NAME,"getControlBarShow()");let e=!1;return this.player?e=this.player.getControlBarShow():this.debug.warn(this.TAG_NAME,"getControlBarShow() player is null"),e}static getCopyrightWatermarkHash(e){return Oo(e)}static extractScreenshotCopyrightWatermark(e){return function(e){for(var t=e,i=0,s=0,r=0;r<32;r++)s|=(1&t[i])<=5){const s=i[0],r=i[i.length-1],o=r-s;o<=1e4&&(this.debug.warn(this.TAG_NAME,`retry type is ${e}, and retry length is ${i.length}, and start is ${s} and end is ${r} and diff is ${o}`),t=!1)}return t}_initLoadingBackgroundForIOS(e){(Ao()||bo())&&e.loadingBackground&&e.loadingBackgroundWidth&&e.loadingBackgroundHeight&&(this.debug.log(this.TAG_NAME,"_initLoadingBackgroundForIOS"),this._initLoadingBg(),"default"===this.player._opt.aspectRatio||uo()?this._doInitLoadingBackground(e):this._doInitLoadingBackgroundForRatio(e))}_doInitLoadingBackground(e){const t=this._getContainerRect();let i=t.height;const s=this.player._opt;if(this.player.isControlBarShow()){i-=s.playType===w?Qt:Yt}let r=t.width,o=i;const a=s.rotate;270!==a&&90!==a||(r=i,o=t.width),this.$loadingBgImage.width=r,this.$loadingBgImage.height=o,this.$loadingBgImage.src=e.loadingBackground;let n=(t.width-r)/2,l=(i-o)/2,d="contain";s.isResize||(d="fill"),s.isFullResize&&(d="none");let h="";"none"===s.mirrorRotate&&a&&(h+=" rotate("+a+"deg)"),"level"===s.mirrorRotate?h+=" rotateY(180deg)":"vertical"===s.mirrorRotate&&(h+=" rotateX(180deg)"),this._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=d),this.$loadingBgImage.style.transform=h,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=n+"px",this.$loadingBgImage.style.top=l+"px",this.$loadingBgImage.complete?ac(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{ac(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForRatio(e){const t=this.player._opt.aspectRatio.split(":").map(Number),i=this._getContainerRect();let s=i.width,r=i.height;const o=this.player._opt;let a=0;this.player.isControlBarShow()&&(a=o.playType===w?Qt:Yt,r-=a);const n=e.loadingBackgroundWidth,l=e.loadingBackgroundHeight,d=n/l,h=t[0]/t[1];if(this.$loadingBgImage.src=e.loadingBackground,d>h){const e=h*l/n;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${a}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=n/h/l;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${a}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}this.$loadingBgImage.complete?ac(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{ac(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_initLoadingBg(){if(!this.$loadingBg){const e=document.createElement("div"),t=document.createElement("img");e.className="jb-pro-loading-bg-for-ios",this.$loadingBg=e,this.$loadingBgImage=t,e.appendChild(t),this.$container.appendChild(e)}}_removeLoadingBackgroundForIOS(){if(this.$loadingBg){this.debug.log(this.TAG_NAME,"_removeLoadingBackgroundForIOS()");if(!hc(this.$loadingBg)){const e=this.$container.querySelector(".jb-pro-loading-bg-for-ios");e&&this.$container&&this.$container.removeChild(e)}this.$loadingBg=null,this.$loadingBgImage=null}}_getContainerRect(){let e={};return this.$container&&(e=this.$container.getBoundingClientRect(),e.width=Math.max(e.width,this.$container.clientWidth),e.height=Math.max(e.height,this.$container.clientHeight)),e}_isNeedNetworkDisconnectReplay(){return this._opt.networkDisconnectReplay&&this.network.isOffline()}_handleWebglAlignmentError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webglAlignmentError but player is destroyed");else if(this.webglAlignmentErrorOnLock)this.debug.log("JbPro","webglAlignmentErrorOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.webglAlignmentError,e)),this.webglAlignmentErrorOnLock=!0,this.player&&this.player._opt.webglAlignmentErrorReplay){this.debug.log("JbPro","webglAlignmentError");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({openWebglAlignment:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webglAlignmentError and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webglAlignmentError,{},e),this.debug.error("JbPro","webglAlignmentError and play error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))})).catch((e=>{this.webglAlignmentErrorOnLock=!1,this.debug.error("JbPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.webglAlignmentError,{},e),this.debug.log("JbPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webglAlignmentError,{},e),this.debug.error("JbPro","webglAlignmentError and pause error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))}}_handleWebglContextLostError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webglContextLostError but player is destroyed"));if(this.webglContextLostErrorOnLock)return void this.debug.log("JbPro","webglContextLostErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.webglContextLostErrorOnLock=!0,this.player&&this.player._opt.webglContextLostErrorReplay){this.debug.log("JbPro","webglContextLostError");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","webglContextLostError and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.error("JbPro","webglContextLostError and play error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))})).catch((i=>{this.webglContextLostErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.error("JbPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.log("JbPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.error("JbPro","webglAlignmentError and pause error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))}}_handleMediaSourceH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mediaSourceH265NotSupport but player is destroyed");else if(this.mediaSourceH265NotSupportOnLock)this.debug.log("JbPro","mediaSourceH265NotSupportOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.mediaSourceH265NotSupport,e)),this.mediaSourceH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceH265NotSupport,e),this.debug.error("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))})).catch((t=>{this.mediaSourceH265NotSupportOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceH265NotSupport,{},e),this.debug.log("JbPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))}}_handleMseWaitVideoCanplayTimeout(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mseWaitVideoCanplayTimeout but player is destroyed");else if(this.mseWaitVideoCanplayTimeoutOnLock)this.debug.log("JbPro","mseWaitVideoCanplayTimeoutOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.mseWaitVideoCanplayTimeout,e)),this.mseWaitVideoCanplayTimeoutOnLock=!0,this.player&&this.player._opt.mseWaitVideoCanplayAutoWasm){this.debug.log("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mseWaitVideoCanplayTimeout,e),this.debug.error("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))})).catch((t=>{this.mseWaitVideoCanplayTimeoutOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mseWaitVideoCanplayTimeout,{},e),this.debug.error("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.mseWaitVideoCanplayTimeout,{},e),this.debug.log("JbPro","mseWaitVideoCanplayTimeout and autoWasm is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))}}_handleMediaSourceFull(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceFull but player is destroyed"));if(this.mediaSourceFullOnLock)return void this.debug.log("JbPro","mediaSourceFullOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceFullOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(br)?this._mseDecodeErrorRetryLog.push(so()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mediaSourceFull and auto wasm ${ya(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and reset player and play error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))})).catch((i=>{this.mediaSourceFullOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.log("JbPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and pause error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))}}_handleMediaSourceAppendBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAppendBufferError but player is destroyed"));if(this.mediaSourceAppendBufferErrorOnLock)return void this.debug.log("JbPro","mediaSourceAppendBufferErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceAppendBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(br)?this._mseDecodeErrorRetryLog.push(so()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEAudioDecoderError&&(this.player.debug.log("JbPro","mediaSourceAppendBufferError and isMSEAudioDecoderError is true so set mseDecodeAudio = false"),r.mseDecodeAudio=!1),this.debug.log("JbPro",`mediaSourceAppendBufferError and auto wasm ${ya(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and reset player and play error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))})).catch((i=>{this.mediaSourceAppendBufferErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.log("JbPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and pause error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))}}_handleMseSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseSourceBufferError but player is destroyed"));if(this.mseSourceBufferErrorOnLock)return void this.debug.log("JbPro","mseSourceBufferErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseSourceBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={};if(this.player._opt.mseDecoderUseWorker)r={mseDecoderUseWorker:!1},this.debug.log("JbPro","mseSourceBufferError auto wasm [mse worker -> mse] reset player and play");else{let e=this.player._opt.decoderErrorAutoWasm,t=!0;e?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(br)?this._mseDecodeErrorRetryLog.push(so()):(e=!0,t=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debug.log("JbPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mseSourceBufferError auto wasm ${ya(t)?" and is not meaningful Retry":""} [mse-> ${e?"wasm":"mse"}] reset player and play`)}this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError reset player and play error",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseSourceBufferErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.log("JbPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError and pause error:",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))}}_handleMediaSourceBufferedIsZeroError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceBufferedIsZeroError but player is destroyed"));if(this.mediaSourceBufferedIsZeroErrorOnLock)return void this.debug.log("JbPro","mediaSourceBufferedIsZeroErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceBufferedIsZeroErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(br)?this._mseDecodeErrorRetryLog.push(so()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mediaSourceBufferedIsZeroError auto wasm ${ya(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError reset player and play error",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))})).catch((i=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.log("JbPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError and pause error:",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))}}_handleMseAddSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseAddSourceBufferError but player is destroyed"));if(this.mseAddSourceBufferErrorOnLock)return void this.debug.log("JbPro","mseAddSourceBufferErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseAddSourceBufferErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.log("JbPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError and pause error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceDecoderConfigurationError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.mediaSourceDecoderConfigurationErrorOnLock)this.debug.log("JbPro","mediaSourceDecoderConfigurationErrorOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.mediaSourceDecoderConfigurationError,e)),this.mediaSourceDecoderConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;let s={useMSE:!1,useWCS:!1};this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))})).catch((t=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.log("JbPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError and pause error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))}}_handleMediaSourceTsIsMaxDiff(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceTsIsMaxDiff but player is destroyed"));if(this.mediaSourceTsIsMaxDiffOnLock)return void this.debug.log("JbPro","mediaSourceTsIsMaxDiffOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceTsIsMaxDiffOnLock=!0,this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debug.log("JbPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff replay error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))})).catch((i=>{this.mediaSourceTsIsMaxDiffOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.log("JbPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff and pause error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))}}_handleMseWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseWidthOrHeightChange but player is destroyed"));if(this.mseWidthOrHeightChangeOnLock)return void this.debug.log("JbPro","mseWidthOrHeightChangeOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.mseWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debug.log("JbPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.mseWidthOrHeightChangeOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(ot.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange error and pause error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}}_handleMediaSourceAudioG711NotSupport(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAudioG711NotSupport but player is destroyed"));if(this.mediaSourceAudioG711NotSupportOnLock)return void this.debug.log("JbPro","mediaSourceAudioG711NotSupportOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioG711NotSupportOnLock=!0,this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debug.log("JbPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))})).catch((e=>{this.mediaSourceAudioG711NotSupportOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport error and pause error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))}}_handleMediaSourceAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAudioInitTimeout but player is destroyed"));if(this.mediaSourceAudioInitTimeoutOnLock)return void this.debug.log("JbPro","mediaSourceAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debug.log("JbPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioInitTimeoutOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i),this.debug.error("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i),this.debug.error("JbPro","mediaSourceAudioInitTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))}}_handleMediaSourceAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mediaSourceAudioNoDataTimeout but player is destroyed"));if(this.mediaSourceAudioNoDataTimeoutOnLock)return void this.debug.log("JbPro","mediaSourceAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioNoDataTimeoutReplay){this.debug.log("JbPro","mediaSourceAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioNoDataTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioNoDataTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioNoDataTimeout,i),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceAudioNoDataTimeout,i),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))}}_handleMseWorkerAddSourceBufferError(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","mseWorkerAddSourceBufferError but player is destroyed"));if(this.mseWorkerAddSourceBufferErrorOnLock)return void this.debug.log("JbPro","mseWorkerAddSourceBufferErrorOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mseWorkerAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mseWorkerAddSourceBufferError and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecoderUseWorker:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mseWorkerAddSourceBufferError and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mseWorkerAddSourceBufferError,i,t),this.debug.error("JbPro","mseWorkerAddSourceBufferError and reset player and play error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))})).catch((e=>{this.mseWorkerAddSourceBufferErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mseWorkerAddSourceBufferError,i,t),this.debug.error("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.mseWorkerAddSourceBufferError,i),this.debug.error("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.mseWorkerAddSourceBufferError,i),this.debug.error("JbPro","mseWorkerAddSourceBufferError error and pause error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceUseCanvasRenderPlayFailed(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.mediaSourceUseCanvasRenderPlayFailedOnLock)this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailedOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.mediaSourceUseCanvasRenderPlayFailed,e)),this.mediaSourceUseCanvasRenderPlayFailedOnLock=!0,this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debug.log("JbPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;let s={};const r=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;r===H?s={useMSE:!1,useWCS:!1}:r===J&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))})).catch((t=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.emit(ot.playFailedAndPaused,lt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))}}_handleWebcodecsH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webcodecsH265NotSupport but player is destroyed");else if(this.webcodecsH265NotSupportOnLock)this.debug.log("JbPro","webcodecsH265NotSupportOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.webcodecsH265NotSupport,e)),this.webcodecsH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webcodecsH265NotSupport,e),this.debug.error("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))})).catch((e=>{this.webcodecsH265NotSupportOnLock=!1,this.debug.error("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.webcodecsH265NotSupport,e),this.debug.log("JbPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webcodecsH265NotSupport,e),this.debug.error("JbPro","webcodecsH265NotSupport and pause error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))}}_handleWebcodecsUnsupportedConfigurationError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.webcodecsUnsupportedConfigurationErrorOnLock)this.debug.log("JbPro","webcodecsUnsupportedConfigurationErrorOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.webcodecsUnsupportedConfigurationError,e)),this.webcodecsUnsupportedConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))})).catch((t=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.log("JbPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError and pause error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))}}_handleWebcodecsDecodeConfigureError(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.webcodecsDecodeConfigureErrorOnLock)this.debug.log("JbPro","webcodecsDecodeConfigureErrorOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))})).catch((t=>{this.webcodecsDecodeConfigureErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.log("JbPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError and pause error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))}}_handleWebcodecsDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webcodecsDecodeError but player is destroyed"));if(this.webcodecsDecodeErrorOnLock)return void this.debug.log("JbPro","webcodecsDecodeErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.webcodecsDecodeErrorOnLock=!0,this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(vr)?this._wcsDecodeErrorRetryLog.push(so()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`webcodecs decode error autoWasm ${ya(a)?" and is not meaningful Retry":""} [wcs-> ${o?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error reset player and play error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))})).catch((()=>{this.webcodecsDecodeErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.log("JbPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error and pause error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))}}_handleWcsWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","wcsWidthOrHeightChange but player is destroyed"));if(this.wcsWidthOrHeightChangeOnLock)return void this.debug.log("JbPro","wcsWidthOrHeightChangeOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wcsWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debug.log("JbPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wcsWidthOrHeightChangeOnLock=!1,this.emit(ot.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(ot.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}}_handleWebcodecsAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webcodecsAudioNoDataTimeout but player is destroyed"));if(this.webcodecsAudioNoDataTimeoutOnLock)return void this.debug.log("JbPro","webcodecsAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioNoDataTimeoutReplay){this.debug.log("JbPro","webcodecsAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","webcodecsAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.webcodecsAudioNoDataTimeout,i,t),this.debug.error("JbPro","webcodecsAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioNoDataTimeoutOnLock=!1,this.emit(ot.playFailedAndPaused,lt.webcodecsAudioNoDataTimeout,i,t),this.debug.error("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.webcodecsAudioNoDataTimeout,i),this.debug.error("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.webcodecsAudioNoDataTimeout,i),this.debug.error("JbPro","webcodecsAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))}}_handleWebcodecsAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webcodecsAudioInitTimeout but player is destroyed"));if(this.webcodecsAudioInitTimeoutOnLock)return void this.debug.log("JbPro","webcodecsAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioInitTimeoutReplay){this.debug.log("JbPro","webcodecsAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","webcodecsAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.webcodecsAudioInitTimeout,i,t),this.debug.error("JbPro","webcodecsAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioInitTimeoutOnLock=!1,this.emit(ot.playFailedAndPaused,lt.webcodecsAudioInitTimeout,i,t),this.debug.error("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.webcodecsAudioInitTimeout,i),this.debug.error("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.webcodecsAudioInitTimeout,i),this.debug.error("JbPro","webcodecsAudioInitTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))}}_handleSimdDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","simdDecodeError but player is destroyed"));if(this.simdDecodeErrorOnLock)return void this.debug.log("JbPro","simdDecodeErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.simdDecodeErrorOnLock=!0,this.player&&this.player._opt.simdDecodeErrorReplay){this.debug.log("JbPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.simdDecodeErrorReplayType===j&&(r={useSIMD:!1}),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and reset player and play error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))})).catch((i=>{this.simdDecodeErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError error and pause error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))}}_handleWasmWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","wasmWidthOrHeightChange but player is destroyed"));if(this.wasmWidthOrHeightChangeOnLock)return void this.debug.log("JbPro","wasmWidthOrHeightChangeOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wasmWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debug.log("JbPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wasmWidthOrHeightChangeOnLock=!1,this.emit(ot.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(ot.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(ot.playFailedAndPaused,lt.wasmWidthOrHeightChange,i),this.debug.error("JbPro","wasmWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}}_handleWasmUseVideoRenderError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","wasmUseVideoRenderError but player is destroyed"));if(this.wasmUseVideoRenderErrorOnLock)return void this.debug.log("JbPro","wasmUseVideoRenderErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.wasmUseVideoRenderError,e)),this.debug.log("JbPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.wasmUseVideoRenderErrorOnLock=!0,this._resetPlayer({useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.wasmUseVideoRenderError,{},e),this.debug.error("JbPro","wasmUseVideoRenderError and reset player and play error",t)})).finally((()=>{this.wasmUseVideoRenderErrorOnLock=!1}))})).catch((t=>{this.wasmUseVideoRenderErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.wasmUseVideoRenderError,{},e),this.debug.error("JbPro","wasmUseVideoRenderError and _resetPlayer error",t)}))}_handleVideoElementPlayingFailed(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","videoElementPlayingFailed but player is destroyed"));if(this.videoElementPlayingFailedOnLock)return void this.debug.log("JbPro","videoElementPlayingFailedOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.videoElementPlayingFailed,e));const t=this._getVideoLastIframeInfo();if(this.videoElementPlayingFailedOnLock=!0,this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debug.log("JbPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useVideoRender:!1,useCanvasRender:!0};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and reset player and play error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))})).catch((t=>{this.videoElementPlayingFailedOnLock=!1,this.emit(ot.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and _pause error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))}}_handleSimdH264DecodeVideoWidthIsTooLarge(e){if(this.isDestroyed())this.debug&&this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.simdH264DecodeVideoWidthIsTooLargeOnLock)this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLargeOnLock is true");else if(this.emit(ot.crashLog,this.getCrashLog(lt.simdH264DecodeVideoWidthIsTooLarge,e)),this.simdH264DecodeVideoWidthIsTooLargeOnLock=!0,this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useSIMD:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))})).catch((t=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.emit(ot.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))}}_handleNetworkDelayTimeout(e){if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","networkDelayTimeout but player is destroyed"));if(this.networkDelayTimeoutOnLock)return void this.debug.log("JbPro","networkDelayTimeoutOnLock is true");this.emit(ot.crashLog,this.getCrashLog(ot.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","network delay time out and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this.networkDelayTimeoutOnLock=!0,this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.networkDelayTimeout,t,e),this.debug.error("JbPro","wasm decode error and reset player and play error",i)})).finally((()=>{this.networkDelayTimeoutOnLock=!1}))})).catch((()=>{this.networkDelayTimeoutOnLock=!1,this.emit(ot.playFailedAndPaused,ot.networkDelayTimeout,t,e),this.debug.error("JbPro","wasm decode error and _resetPlayer error")}))}}_handleFlvDemuxBufferSizeTooLarge(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","flvDemuxBufferSizeTooLarge but player is destroyed"));if(this.flvDemuxBufferSizeTooLargeOnLock)return void this.debug.log("JbPro","flvDemuxBufferSizeTooLargeOnLock is true");const t=this._getVideoLastIframeInfo();if(this.flvDemuxBufferSizeTooLargeOnLock=!0,this.player._opt.flvDemuxBufferSizeTooLargeReplay){this.emit(ot.crashLog,this.getCrashLog(ot.flvDemuxBufferSizeTooLarge,e)),this.debug.log("JbPro","flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeReplay = true and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play success")})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play error",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))})).catch((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1,this.emit(ot.playFailedAndPaused,ot.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large and _resetPlayer error")}))}else if(this._opt.flvDemuxBufferSizeTooLargeEmitFailed){this.debug.log(this.TAG_NAME,"flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeEmitFailed = true and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.flvDemuxBufferSizeTooLarge,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))}}_handleFetchError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","fetchError but player is destroyed"));if(this.fetchErrorOnLock)return void this.debug.log("JbPro","fetchErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.fetchError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.fetchErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debug.log("JbPro","fetch error and network is disconnect and reset player and play"):this.debug.log("JbPro",`fetch error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes}, streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())this.debug&&this.debug.log("JbPro","fetch error and _resetPlayer but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","fetch error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:lt.fetchError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debug.log("JbPro","fetch error and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.fetchError,{},e),this.debug.error("JbPro","fetch error and reset player and play error",t)})).finally((()=>{this.fetchErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.fetchErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.fetchError,{},e),this.debug.error("JbPro","fetch error and _resetPlayer error",t)}))}else{this.debug.log("JbPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.fetchError,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.fetchError,t,e),this.debug.error("JbPro","fetch error and pause",i)})).finally((()=>{this.fetchErrorOnLock=!1}))}}_handleStreamEnd(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","streamEnd but player is destroyed and return"));if(this.streamEndOnLock)return void this.debug.log("JbPro","streamEndOnLock is true");this.emit(ot.crashLog,this.getCrashLog(ot.streamEnd,e));const t=this._getVideoLastIframeInfo(),i=""+e=="1006"&&this.player._opt.websocket1006ErrorReplay,s=!!i&&this._checkIsMeaningfulRetry(Ar),r=i&&s,o=this.player._opt.streamEndReplay,a=this._isNeedNetworkDisconnectReplay();if(this.streamEndOnLock=!0,r||o||a){a?this.debug.log("JbPro","streamEnd and network is disconnect and reset player and play"):r?this.debug.log("JbPro",`streamEnd and websocket1006ErrorReplay is true and error is 1006 and _websocket1006ErrorReplayTimes is ${this._websocket1006ErrorReplayTimes} , delay ${this._opt.websocket1006ErrorReplayDelayTime}s reset player and play`):this.debug.log("JbPro",`streamEnd and isStreamEndReplay is true and and _streamEndReplayTimes is ${this._streamEndReplayTimes} , delay ${this._opt.streamEndReplayDelayTime}s reset player and play`);const s=this._opt.playOptions,o=this._opt.url;i&&this._websocket1006ErrorRetryLog.push(so());let n={};this.player._opt.replayUseLastFrameShow&&(n=Object.assign({},n,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(n.isNotMute=!0);let l=r?this._opt.websocket1006ErrorReplayDelayTime:this._opt.streamEndReplayDelayTime;a&&(l=1),this._initLoadingBackgroundForIOS(t),this._resetPlayer(n).then((()=>{this.streamEndReplayDelayTimeout=setTimeout((()=>{if(this.streamEndReplayDelayTimeout=null,this._removeLoadingBackgroundForIOS(),this.isDestroyed())a?this.debug&&this.debug.log("JbPro","streamEnd and network is disconnect and _resetPlayer() but player is destroyed and return"):r?this.debug&&this.debug.log("JbPro","streamEnd and 1006 error and _resetPlayer() but player is destroyed and return"):this.debug&&this.debug.log("JbPro","streamEnd and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return r?this.debug.log("JbPro","streamEnd and 1006 error network is offline and wait network online to play , so return"):this.debug.log("JbPro","streamEnd and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:s,type:r?lt.websocket1006Error:lt.streamEnd});r?this._websocket1006ErrorReplayTimes++:this._streamEndReplayTimes++,this.play(o,s).then((()=>{r?this.debug.log("JbPro","streamEnd and 1006 error and reset player and play success"):this.debug.log("JbPro","streamEnd and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.streamEnd,{},e),r?this.debug.error("JbPro","streamEnd and 1006 error and reset player and play error",t):this.debug.error("JbPro","streamEnd and reset player and play error",t)})).finally((()=>{this.streamEndOnLock=!1}))}}),1e3*l)})).catch((t=>{this.streamEndOnLock=!1,this.emit(ot.playFailedAndPaused,lt.streamEnd,{},e),r?this.debug.error("JbPro","streamEnd and 1006 and _resetPlayer error",t):this.debug.error("JbPro","streamEnd and _resetPlayer error",t)}))}else{i?this.debug.log("JbPro","streamEnd pause player "+(ya(s)?"and is not meaningful retry":"")):this.debug.log("JbPro","streamEnd pause player");const r=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(r).then((()=>{this.emit(ot.playFailedAndPaused,ot.streamEnd,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.streamEnd,t,e),this.debug.error("JbPro","streamEnd pause",i)})).finally((()=>{this.streamEndOnLock=!1}))}}_handleWebsocketError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","websocketError but player is destroyed"));if(this.websocketErrorOnLock)return void this.debug.log("JbPro","websocketErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.websocketError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.websocketErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debug.log("JbPro","websocketError error and network is disconnect and reset player and play"):this.debug.log("JbPro",`websocketError error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())i?this.debug&&this.debug.log("JbPro","websocketError error and network is disconnect and _resetPlayer() but player is destroyed and return"):this.debug&&this.debug.log("JbPro","websocketError error and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","websocketError error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:lt.websocketError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debug.log("JbPro","websocketError error and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.fetchError,{},e),this.debug.error("JbPro","websocketError error and reset player and play error",t)})).finally((()=>{this.websocketErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.websocketErrorOnLock=!1,this.emit(ot.playFailedAndPaused,lt.fetchError,{},e),this.debug.error("JbPro","websocketError error and _resetPlayer error",t)}))}else{this.debug.log("JbPro","websocketError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.websocketError,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.websocketError,t,e),this.debug.error("JbPro","websocketError and pause",i)})).finally((()=>{this.websocketErrorOnLock=!1}))}}_handleWebrtcError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webrtcError but player is destroyed"));if(this.webrtcErrorOnLock)return void this.debug.log("JbPro","webrtcErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.webrtcError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debug.log("JbPro","webrtcError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:lt.webrtcError}})).catch((()=>{this.emit(ot.playFailedAndPaused,lt.webrtcError,t,e),this.debug.error("JbPro","webrtcError and _resetPlayer error")})).finally((()=>{this.webrtcErrorOnLock=!1}))}else{this.debug.log("JbPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.webrtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.webrtcError,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.webrtcError,t,e),this.debug.error("JbPro","webrtcError and pause",i)})).finally((()=>{this.webrtcErrorOnLock=!1}))}}_handleHlsError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","hlsError but player is destroyed"));if(this.hlsErrorOnLock)return void this.debug.log("JbPro","hlsErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.hlsError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debug.log("JbPro","hlsError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),ya(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:lt.hlsError}})).catch((()=>{this.emit(ot.playFailedAndPaused,lt.hlsError,t,e),this.debug.error("JbPro","hlsError and _resetPlayer error")})).finally((()=>{this.hlsErrorOnLock=!1}))}else{this.debug.log("JbPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.hlsErrorOnLock=!0,this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.hlsError,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.hlsError,t,e),this.debug.error("JbPro","hlsError and pause",i)})).finally((()=>{this.hlsErrorOnLock=!1}))}}_handleAliyunRtcError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","aliyunRtcError but player is destroyed"));if(this.aliyunRtcErrorOnLock)return void this.debug.log("JbPro","aliyunRtcErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.aliyunRtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.aliyunRtcError,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.aliyunRtcError,t,e),this.debug.error("JbPro","aliyunRtcError and pause",i)})).finally((()=>{this.aliyunRtcErrorOnLock=!1}))}_handleDecoderWorkerInitError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","decoderWorkerInitError but player is destroyed"));if(this.decoderWorkerInitErrorOnLock)return void this.debug.log("JbPro","decoderWorkerInitErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.decoderWorkerInitError,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","decoderWorkerInitError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerInitErrorOnLock=!0,this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.decoderWorkerInitError,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.decoderWorkerInitError,t,e),this.debug.error("JbPro","decoderWorkerInitError and pause",i)})).finally((()=>{this.decoderWorkerInitErrorOnLock=!1}))}_handleDecoderWorkerWasmError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","decoderWorkerWasmError but player is destroyed"));if(this.decoderWorkerWasmErrorOnLock)return void this.debug.log("JbPro","decoderWorkerWasmErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.decoderWorkerWasmError,e)),this.debug.log("JbPro","decoderWorkerWasmError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerWasmErrorOnLock=!0,this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.decoderWorkerWasmError,{},e)})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.decoderWorkerWasmError,{},e),this.debug.error("JbPro","decoderWorkerWasmError and pause",t)})).finally((()=>{this.decoderWorkerWasmErrorOnLock=!1}))}_handleVideoElementPlayingFailedForWebrtc(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","videoElementPlayingFailedForWebrtc but player is destroyed"));if(this.videoElementPlayingFailedForWebrtcOnLock)return void this.debug.log("JbPro","videoElementPlayingFailedForWebrtcOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.videoElementPlayingFailedForWebrtc,e)),this.debug.log("JbPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoElementPlayingFailedForWebrtcOnLock=!0,this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.videoElementPlayingFailedForWebrtc,{},e),this.debug.error("JbPro","videoElementPlayingFailedForWebrtc and pause",t)})).finally((()=>{this.videoElementPlayingFailedForWebrtcOnLock=!1}))}_handleVideoInfoError(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","videoInfoError but player is destroyed"));if(this.videoInfoErrorOnLock)return void this.debug.log("JbPro","videoInfoErrorOnLock is true");this.emit(ot.crashLog,this.getCrashLog(lt.videoInfoError,e)),this.debug.log("JbPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoInfoErrorOnLock=!0,this._pause(t).then((()=>{this.emit(ot.playFailedAndPaused,lt.videoInfoError,{},e)})).catch((t=>{this.emit(ot.playFailedAndPaused,lt.videoInfoError,{},e),this.debug.error("JbPro","videoInfoError and pause",t)})).finally((()=>{this.videoInfoErrorOnLock=!1}))}_handleWebrtcStreamH265(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","webrtcStreamH265 but player is destroyed"));if(this.webrtcStreamH265OnLock)return void this.debug.log("JbPro","webrtcStreamH265OnLock is true");this.debug.log("JbPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.webrtcStreamH265OnLock=!0,this._resetPlayer({isWebrtcH265:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(ot.playFailedAndPaused,ot.webrtcStreamH265,{},e),this.debug.error("JbPro","webrtcStreamH265 and reset player and play error",t)})).finally((()=>{this.webrtcStreamH265OnLock=!1}))})).catch((()=>{this.webrtcStreamH265OnLock=!1,this.emit(ot.playFailedAndPaused,ot.webrtcStreamH265,{},e),this.debug.error("JbPro","webrtcStreamH265 and _resetPlayer error")}))}_handleDelayTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debug.warn("JbPro","delay timeout replay but player is destroyed"));this.emit(ot.crashLog,this.getCrashLog(ot.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","delayTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:ot.delayTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.delayTimeout,t,e),this.debug.error("JbPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.delayTimeout,t,e),this.debug.error("JbPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,ot.delayTimeout,t,e),this.player&&(this.emit(ot.delayTimeoutRetryEnd),this.emit(ot.playFailedAndPaused,ot.delayTimeoutRetryEnd)),this.debug.warn("JbPro",`delayTimeoutRetryEnd and\n opt.heartTimeout is ${this.player&&this.player._opt.heartTimeout} and\n opt.heartTimeoutReplay is ${this.player&&this.player._opt.heartTimeoutReplay} and\n opt.heartTimeoutReplayTimes is ${this.player&&this.player._opt.heartTimeoutReplayTimes},and\n local._heartTimeoutReplayTimes is ${this._heartTimeoutReplayTimes}`)})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.delayTimeout,t,e),this.debug.error("JbPro","delay timeout and pause error",i)}))}}_handleLoadingTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","loading timeout but player is destroyed"));this.emit(ot.crashLog,this.getCrashLog(ot.loadingTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","loadingTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:ot.loadingTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.loadingTimeout,t,e),this.debug.error("JbPro","loading timeout replay error",i)}))})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.loadingTimeout,t,e),this.debug.error("JbPro","loading timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,ot.loadingTimeout,t,e),this.player&&(this.emit(ot.loadingTimeoutRetryEnd),this.emit(ot.playFailedAndPaused,ot.loadingTimeoutRetryEnd,t,e),this._opt.loadingTimeoutRetryEndShowPlayBtn&&this.player.showPlayBtn()),this.debug.log("JbPro",`loadingTimeoutRetryEnd and\n opt.loadingTimeout is ${this.player&&this.player._opt.loadingTimeout} and\n opt.loadingTimeoutReplay is ${this.player&&this.player._opt.loadingTimeoutReplay} and\n local._loadingTimeoutReplayTimes time is ${this._loadingTimeoutReplayTimes} and\n opt.loadingTimeoutReplayTimes is ${this.player&&this.player._opt.loadingTimeoutReplayTimes}`)})).catch((i=>{this.emit(ot.playFailedAndPaused,ot.loadingTimeout,t,e),this.debug.error("JbPro","loading timeout and pause error",i)}))}}_handleInitDecoderWorkerTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debug.log("JbPro","InitDecoderWorkerTimeout but player is destroyed"));this.emit(ot.crashLog,this.getCrashLog(lt.initDecoderWorkerTimeout,e)),this.debug.log("JbPro","InitDecoderWorkerTimeout and pause player");const t=this._getVideoLastIframeInfo(),i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(ot.playFailedAndPaused,lt.initDecoderWorkerTimeout,t,e)})).catch((i=>{this.emit(ot.playFailedAndPaused,lt.initDecoderWorkerTimeout,t,e),this.debug.error("JbPro","videoInfoError and pause",i)}))}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout(lt.initDecoderWorkerTimeout)}),1e3*this._opt.initDecoderWorkerTimeout)}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}}i_.ERROR=lt,i_.EVENTS=at,window.JessibucaPro=i_,window.JbPro=i_,window.WebPlayerPro=i_;uc('.jb-pro-multi-container .jb-pro-multi-player-container-v2{overflow:hidden;width:100%;height:100%;position:relative;display:grid;grid-template-columns:repeat(var(--split),1fr);grid-template-rows:repeat(var(--split),1fr)}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player{overflow:hidden;position:relative;width:100%;height:100%}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player .jb-pro-multi-player-draw-window{position:absolute;z-index:1;width:calc(100% - 2px);height:calc(100% - 2px);color:#fff;transition:all .25s}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player .jb-pro-multi-player-video-window{position:absolute;left:1px;top:1px;z-index:2;width:calc(100% - 2px);height:calc(100% - 2px)}.jb-pro-multi-container .jb-pro-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9}.jb-pro-multi-container .jb-pro-multi-layout-6 .jb-pro-multi-player[order="0"]{grid-column-start:1;grid-column-end:3;grid-row-start:1;grid-row-end:3}.jb-pro-multi-container .jb-pro-multi-layout-9 .jb-pro-multi-player[order="0"]{grid-column-start:1;grid-column-end:4;grid-row-start:1;grid-row-end:4}');class s_ extends o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`jb-pro-multi option "${t}" can not be undefined`)}));const t=ua(Es);this._opt=Object.assign({},t,e),this.LOG_TAG="jbProMulti";let i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jb-pro-multi need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jb-pro-multi container type can not be ${i.nodeName} type`);i.classList.add("jb-pro-multi-container"),delete this._opt.container,this.maxWindowSize=this._opt.maxSplit*this._opt.maxSplit,this.currentWindowIndex=-1,this.currentWindowUuid=null,this.specialLayoutType=null,this.startDragWindowItem=null,this.checkRectInterval=null,this.windowList=[],this.$container=i,this.debug=new xr(this),this.events=new Da(this),this._opt.split||(this._opt.split=1),ga(this._opt.draggable)?this._initWindows$2():this._initWindows(),this._innerArrangeWindow(this._opt.split,!0),this._initEvents(),this._handleWindowSelect(0),this._listenFullscreenChange()}destroy(){return new Promise(((e,t)=>{if(this.debug.log(this.LOG_TAG,"destroy()"),this.off(),this.events&&(this.events.destroy(),this.events=null),this.checkRectInterval&&(clearInterval(this.checkRectInterval),this.checkRectInterval=null),this.specialLayoutType=null,this.startDragWindowItem=null,this.currentWindowUuid=null,this.currentWindowIndex=-1,this.$container&&(this.$container.classList.remove("jb-pro-multi-container"),this.$container=null),this.windowList){const i=[];this.windowList.forEach((e=>{e.$playerContainerEvents.forEach((e=>{e()})),e.player&&i.push(e.player.destroy())})),Promise.all(i).then((()=>{this.windowList.forEach((e=>{e.player=null})),this.windowList=[],e()})).catch((e=>{t(e)}))}else e();this.debug&&this.debug.log(this.LOG_TAG,"destroy")}))}_createPlayer(e){var t=this;const i=this._findWindowItemIndex(e);e.uuid;const s=this._opt;s.supportDblclickContainerFullscreen&&(s.supportDblclickFullscreen=!1);const r=new i_({...s,isMulti:!0,multiIndex:i,container:e.$player});return Object.keys(at).forEach((e=>{r.on(at[e],(function(){for(var s=arguments.length,r=new Array(s),o=0;o{this.emit(ot.close,i),e.player=null})),r}_initWindows(){let e="";for(let t=0;t\n
          \n
          \n
          \n `;const t=`
          ${e}
          `;this.$container.innerHTML=t;const i=this.$container.querySelectorAll(".jb-pro-multi-player");for(let e=0;e\n
          \n
          \n \n `;const i=`
          \n ${e}\n
          `;this.$container.innerHTML=i,this.$multiContainer=this.$container.querySelector(".jb-pro-multi-player-container-v2");const s=this.$container.querySelectorAll(".jb-pro-multi-player");for(let e=0;e{const s=t.$playerContainer,r=e(s,"click",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerClickDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);if(this.emit(Ts.selected,i,e),this.getSelectedWindowUuid()===t){if(this._getWindowItem(t).isContainerFullscreen)return}1!==this._opt.split&&this._handleWindowSelect(i)})),o=e(s,"dblclick",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"dblclickDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.dblSelected,i,e),this._opt.supportDblclickContainerFullscreen&&1!==this._opt.split&&this._handleWindowContainerFullscreen(i)})),a=e(s,"mouseup",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerMouseupDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.mouseup,i,e)})),n=e(s,"mouseover",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerMouseoverDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.mouseover,i,e)})),l=e(s,"mouseout",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerMouseoutDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.mouseout,i,e)})),d=e(s,"mousedown",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerMousedownDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.mousedown,i,e)})),h=e(s,"dragover",(e=>{e.preventDefault()})),c=e(s,"dragenter",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerDragEnterDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.dragenter,i,e)})),u=e(s,"dragleave",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerDragLeaveDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.dragleave,i,e)})),p=e(s,"drop",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerDropDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);if(e.preventDefault(),this._opt.draggable&&this.startDragWindowItem){const e=this.startDragWindowItem.$playerContainer,t=e.style.order;e.style.order=s.style.order,e.setAttribute("order",e.style.order),s.setAttribute("order",t),s.style.order=t,this.debug.log(this.LOG_TAG,`player Drop ${t} -> ${e.style.order}`),this._sortWindows()}this.emit(Ts.drop,i,e)}));if(t.$playerContainerEvents=[r,a,n,l,d,o,h,c,u,p],this._opt.draggable){const i=e(s,"dragstart",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerDragStartDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this._handleWindowSelect(i),this.startDragWindowItem=this._getWindowItem(i),this.emit(Ts.dragstart,i,e,s)}));t.$playerContainerEvents.push(i)}if(this._opt.supportMousemoveEvent){const i=e(s,"mousemove",(e=>{const t=ba(s,"uuid");if(!t)return void this.debug.error(this.LOG_TAG,"playerMousemoveDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Ts.mousemove,i,e)}));t.$playerContainerEvents.push(i)}}))}_getContainerRect(){const e=this.$container.getBoundingClientRect();return{width:parseInt(e.width),height:parseInt(e.height)}}_updateWindows(){const e=this._getContainerRect(),t=e.width,i=e.height,s=this._opt.split,r=t%s,o=i%s,a=(t-r-2*s)/s,n=(i-o-2*s)/s,l=(t-r)/s,d=(i-o)/s;let h=this._getCurrentMaxSplit();for(let e=0;e=Math.pow(s,2)?o:0),f=l+(e%s==s-1?r:0),m=d+(e+s>=Math.pow(s,2)?o:0);i.style.width=f+"px",i.style.height=m+"px",i.style.display="block",c.style.width=u+"px",c.style.height=p+"px",c.style.display="block",h.style.width=u+"px",h.style.height=p+"px",h.style.display="block",t.player&&t.player.resize()}if(this.specialLayoutType){const e=this.windowList[0],t=e.$playerContainer,i=e.$player,s=e.$playerBorder,r=t.style.width.replace("px",""),o=t.style.height.replace("px",""),a=i.style.width.replace("px",""),n=i.style.height.replace("px","");let l,d,c,u;this.specialLayoutType===ks?(l=2*r,d=2*o,c=2*a+2,u=2*n+2):this.specialLayoutType===Cs&&(l=3*r,d=3*o,c=3*a+4,u=3*n+4),t.style.width=l+"px",t.style.height=d+"px",i.style.width=c+"px",i.style.height=u+"px",s.style.width=c+"px",s.style.height=u+"px",e.player&&e.player.resize(),h=this._getSpecialMaxSplit()}for(let e=h;e{e.$playerContainer.draggable=this._opt.split>1}))}_sortWindows(){const e=[];for(let t=0;t1&&(this.windowList.forEach((e=>{t.$playerBorder.style.display="block",e.$playerBorder.style.border=`1px solid ${this._opt.style.border}`})),this._opt.showSelectedBorder&&(t.$playerBorder.style.border=`1px solid ${this._opt.style.borderSelect}`))):this.debug.warn(this.LOG_TAG,`_handleWindowSelect() ${e} is not exist`),1===this._opt.split&&(t.$playerBorder.style.display="none")}_handleWindowContainerFullscreen(e,t){const i=this._getWindowItem(e);if(i){if(Po(t)&&t===i.isContainerFullscreen)return;if(this._opt.draggable)i.isContainerFullscreen?(i.$playerContainer.setAttribute("fullscreen","0"),i.$playerContainer.style.fullscreen="0"):(i.$playerContainer.setAttribute("fullscreen","1"),i.$playerContainer.style.fullscreen="1");else if(i.isContainerFullscreen)i.$playerContainer.style.position="relative",i.$playerContainer.style.left="auto",i.$playerContainer.style.top="auto",i.$playerContainer.style.zIndex="auto",i.$playerContainer.style.width=i.prevInfo.playerContainerWidth,i.$playerContainer.style.height=i.prevInfo.playerContainerHeight,i.$player.style.width=i.prevInfo.playerWidth,i.$player.style.height=i.prevInfo.playerHeight,this.getSelectedWindowUuid()===i.uuid&&(i.$playerBorder.style.display="block");else{const e=this._getContainerRect(),t=e.width,s=e.height;i.prevInfo={playerContainerWidth:i.$playerContainer.style.width,playerContainerHeight:i.$playerContainer.style.height,playerWidth:i.$player.style.width,playerHeight:i.$player.style.height},i.$playerContainer.style.position="absolute",i.$playerContainer.style.top="0",i.$playerContainer.style.left="0",i.$playerContainer.style.zIndex="10",i.$playerContainer.style.width=t+"px",i.$playerContainer.style.height=s+"px",i.$player.style.width=t+"px",i.$player.style.height=s+"px",i.$playerBorder.style.display="none"}i.isContainerFullscreen=!i.isContainerFullscreen,i.player&&i.player.resize()}else this.debug.warn(this.LOG_TAG,`handleWindowContainerFullscreen() ${e} is not exist`)}_handleFullscreenResize(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,t=this._getContainerRect(),i=0;this.checkRectInterval=setInterval((()=>{const s=Rr.isFullscreen,r=this._getContainerRect(),o={width:screen.width,height:screen.height};this.debug.log(this.LOG_TAG,`isInFullscreen ${s} , checkRectInterval times : ${i} nowRect:${JSON.stringify(r)}, prevRect:${JSON.stringify(t)} ,window screen rect:${JSON.stringify(o)}`);const a=r.width===t.width&&r.height===t.height,n=!s||o.width-r.width<10&&o.height-r.height<10;if(a&&n||i>=e)return this.checkRectInterval&&(clearInterval(this.checkRectInterval),this.checkRectInterval=null),void this.resize();t=r,i++}),1e3)}_listenFullscreenChange(){try{const e=e=>{Qo(e)===this.$container&&(this.emit(Ts.multiFullscreen,Rr.isFullscreen),Rr.isFullscreen||-1!==window.navigator.userAgent.indexOf("Edg")?this._handleFullscreenResize():this.resize())};Rr.on("change",e),this.events.destroys.push((()=>{Rr.off("change",e)}))}catch(e){}}play(e,t,i){return new Promise(((s,r)=>{(ko(t)||qo(t))&&(i=t,t={});const o=this._getWindowItem(i);if(o)if(o.player)o.player.play(e,t).then((()=>{s()})).catch((e=>{r(e)}));else{const i=this._createPlayer(o);o.player=i,i.play(e,t).then((()=>{s()})).catch((e=>{r(e)}))}else r(`play() windowIndex ${i} is not exist`)}))}getOption(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getOption():(this.debug.warn(this.LOG_TAG,`getOption() windowIndex ${e} is not exist`),{})}setDebug(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setDebug(e):this.debug.warn(this.LOG_TAG,`setDebug() windowIndex ${t} is not exist`)}mute(e){const t=this._getWindowItem(e);t&&t.player?t.player.mute():this.debug.warn(this.LOG_TAG,`mute() windowIndex ${e} is not exist`)}cancelMute(e){const t=this._getWindowItem(e);t&&t.player?t.player.cancelMute():this.debug.warn(this.LOG_TAG,`cancelMute() windowIndex ${e} is not exist`)}setVolume(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setVolume(e):this.debug.warn(this.LOG_TAG,`setVolume() windowIndex ${t} is not exist`)}audioResume(e){const t=this._getWindowItem(e);t&&t.player?t.player.audioResume():this.debug.warn(this.LOG_TAG,`audioResume() windowIndex ${e} is not exist`)}setTimeout(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setTimeout(e):this.debug.warn(this.LOG_TAG,`setTimeout() windowIndex ${t} is not exist`)}setScaleMode(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setScaleMode(e):this.debug.warn(this.LOG_TAG,`setScaleMode() windowIndex ${t} is not exist`)}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{const r=this._getWindowItem(t);r&&r.player?r.player.pause(e).then((()=>{i()})).catch((e=>{s(e)})):s(`pause() windowIndex ${t} is not exist`)}))}close(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);s&&s.player?s.player.close().then((()=>{t()})).catch((e=>{i(e)})):i(`close() windowIndex ${e} is not exist`)}))}clearView(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearView():this.debug.warn(this.LOG_TAG,`clearView() windowIndex ${e} is not exist`)}setStreamQuality(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setStreamQuality(e):this.debug.warn(this.LOG_TAG,`setStreamQuality() windowIndex ${t} is not exist`)}resize(){this._opt.draggable?this._updateWindows$2():this._updateWindows()}setBufferTime(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setBufferTime(e):this.debug.warn(this.LOG_TAG,`setBufferTime() windowIndex ${t} is not exist`)}setBufferDelayTime(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setBufferDelayTime(e):this.debug.warn(this.LOG_TAG,`setBufferDelayTime() windowIndex ${t} is not exist`)}setRotate(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setRotate(e):this.debug.warn(this.LOG_TAG,`setRotate() windowIndex ${t} is not exist`)}setMirrorRotate(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setMirrorRotate(e):this.debug.warn(this.LOG_TAG,`setMirrorRotate() windowIndex ${t} is not exist`)}updateIsEmitSEI(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateIsEmitSEI(e):this.debug.warn(this.LOG_TAG,`updateIsEmitSEI() windowIndex ${t} is not exist`)}setAspectRatio(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setAspectRatio(e):this.debug.warn(this.LOG_TAG,`setAspectRatio() windowIndex ${t} is not exist`)}hasLoaded(e){const t=this._getWindowItem(e);return!(!t||!t.player)&&t.player.hasLoaded()}setKeepScreenOn(e){const t=this._getWindowItem(e);t&&t.player?t.player.setKeepScreenOn():this.debug.warn(this.LOG_TAG,`setKeepScreenOn() windowIndex ${e} is not exist`)}setFullscreen(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setFullscreen(e):this.debug.warn(this.LOG_TAG,`setFullscreen() windowIndex ${t} is not exist`)}screenshot(e,t){const i=this._getWindowItem(t);return i&&i.player?i.player.screenshot(e.filename,e.format,e.quality,e.type):null}screenshotWatermark(e,t){const i=this._getWindowItem(t);return i&&i.player?i.player.screenshotWatermark(e):null}startRecord(e,t,i){return new Promise(((s,r)=>{const o=this._getWindowItem(i);o&&o.player?o.player.startRecord(e,t).then((()=>{s()})).catch((e=>{r(e)})):(this.debug.warn(this.LOG_TAG,`startRecord() windowIndex ${i} is not exist`),r(`windowIndex ${i} is not exist`))}))}stopRecordAndSave(e,t,i){return new Promise(((s,r)=>{const o=this._getWindowItem(i);o&&o.player?o.player.stopRecordAndSave(e,t).then((e=>{s(e)})).catch((e=>{r(e)})):(this.debug.warn(this.LOG_TAG,`stopRecordAndSave() windowIndex ${i} is not exist`),r(`windowIndex ${i} is not exist`))}))}isPlaying(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isPlaying():(this.debug.warn(this.LOG_TAG,`isPlaying() windowIndex ${e} is not exist`),!1)}isLoading(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isLoading():(this.debug.warn(this.LOG_TAG,`isLoading() windowIndex ${e} is not exist`),!1)}isPaused(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isPaused():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),!1)}isMute(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isMute():(this.debug.warn(this.LOG_TAG,`isMute() windowIndex ${e} is not exist`),!1)}isRecording(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isRecording():(this.debug.warn(this.LOG_TAG,`isRecording() windowIndex ${e} is not exist`),!1)}clearBufferDelay(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearBufferDelay():this.debug.warn(this.LOG_TAG,`clearBufferDelay() windowIndex ${e} is not exist`)}setNetworkDelayTime(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setNetworkDelayTime(e):this.debug.warn(this.LOG_TAG,`setNetworkDelayTime() windowIndex ${t} is not exist`)}getDecodeType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getDecodeType():(this.debug.warn(this.LOG_TAG,`getDecodeType() windowIndex ${e} is not exist`),null)}getRenderType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getRenderType():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getAudioEngineType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getAudioEngineType():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getPlayingTimestamp(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getPlayingTimestamp():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getStatus(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getStatus():(this.debug.warn(this.LOG_TAG,`getStatus() windowIndex ${e} is not exist`),null)}getPlayType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getPlayType():(this.debug.warn(this.LOG_TAG,`getPlayType() windowIndex ${e} is not exist`),null)}togglePerformancePanel(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.togglePerformancePanel(e):this.debug.warn(this.LOG_TAG,`togglePerformancePanel() windowIndex ${t} is not exist`)}openZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.openZoom():this.debug.warn(this.LOG_TAG,`openZoom() windowIndex ${e} is not exist`)}closeZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.closeZoom():this.debug.warn(this.LOG_TAG,`closeZoom() windowIndex ${e} is not exist`)}isZoomOpen(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isZoomOpen():(this.debug.warn(this.LOG_TAG,`isZoomOpen() windowIndex ${e} is not exist`),!1)}expandZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.expandZoom():this.debug.warn(this.LOG_TAG,`expandZoom() windowIndex ${e} is not exist`)}narrowZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.narrowZoom():this.debug.warn(this.LOG_TAG,`narrowZoom() windowIndex ${e} is not exist`)}getCurrentZoomIndex(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getCurrentZoomIndex():(this.debug.warn(this.LOG_TAG,`getCurrentZoomIndex() windowIndex ${e} is not exist`),0)}setNakedFlowFps(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setNakedFlowFps(e):this.debug.warn(this.LOG_TAG,`setNakedFlowFps() windowIndex ${t} is not exist`)}updateDebugLevel(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateDebugLevel(e):this.debug.warn(this.LOG_TAG,`updateDebugLevel() windowIndex ${t} is not exist`)}updateWatermark(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateWatermark(e):this.debug.warn(this.LOG_TAG,`updateWatermark() windowIndex ${t} is not exist`)}removeWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeWatermark():this.debug.warn(this.LOG_TAG,`removeWatermark() windowIndex ${e} is not exist`)}updateFullscreenWatermark(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateFullscreenWatermark(e):this.debug.warn(this.LOG_TAG,`updateFullscreenWatermark() windowIndex ${t} is not exist`)}removeFullscreenWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeFullscreenWatermark():this.debug.warn(this.LOG_TAG,`removeFullscreenWatermark() windowIndex ${e} is not exist`)}faceDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectOpen():this.debug.warn(this.LOG_TAG,`faceDetectOpen() windowIndex ${e} is not exist`)}faceDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectClose():this.debug.warn(this.LOG_TAG,`faceDetectClose() windowIndex ${e} is not exist`)}objectDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectOpen():this.debug.warn(this.LOG_TAG,`objectDetectOpen() windowIndex ${e} is not exist`)}objectDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectClose():this.debug.warn(this.LOG_TAG,`objectDetectClose() windowIndex ${e} is not exist`)}sendWebsocketMessage(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.sendWebsocketMessage(e):this.debug.warn(this.LOG_TAG,`sendWebsocketMessage() windowIndex ${t} is not exist`)}addContentToCanvas(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.addContentToCanvas(e):this.debug.warn(this.LOG_TAG,`addContentToCanvas() windowIndex ${t} is not exist`)}clearContentToCanvas(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearContentToCanvas():this.debug.warn(this.LOG_TAG,`clearContentToCanvas() windowIndex ${e} is not exist`)}setControlHtml(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setControlHtml(e):this.debug.warn(this.LOG_TAG,`setControlHtml() windowIndex ${t} is not exist`)}clearControlHtml(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearControlHtml():this.debug.warn(this.LOG_TAG,`clearControlHtml() windowIndex ${e} is not exist`)}getFlvMetaData(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getFlvMetaData():(this.debug.warn(this.LOG_TAG,`getFlvMetaData() windowIndex ${e} is not exist`),null)}getExtendBtnList(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getExtendBtnList():(this.debug.warn(this.LOG_TAG,`getExtendBtnList() windowIndex ${e} is not exist`),null)}updateAiFaceDetectInterval(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiFaceDetectInterval() windowIndex ${t} is not exist`),null;i.player.updateAiFaceDetectInterval(e)}updateAiFaceDetectLevel(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiFaceDetectLevel() windowIndex ${t} is not exist`),null;i.player.updateAiFaceDetectLevel(e)}updateAiObjectDetectInterval(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiObjectDetectInterval() windowIndex ${t} is not exist`),null;i.player.updateAiObjectDetectInterval(e)}updateAiObjectDetectLevel(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiObjectDetectLevel() windowIndex ${t} is not exist`),null;i.player.updateAiObjectDetectLevel(e)}setCryptoKeyUrl(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`setCryptoKeyUrl() windowIndex ${t} is not exist`),null;i.player.setCryptoKeyUrl(e)}showErrorMessageTips(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`showErrorMessageTips() windowIndex ${t} is not exist`),null;i.player.showErrorMessageTips(e)}hideErrorMessageTips(e){const t=this._getWindowItem(e);if(!t||!t.player)return this.debug.warn(this.LOG_TAG,`hideErrorMessageTips() windowIndex ${e} is not exist`),null;t.player.hideErrorMessageTips()}destroySingle(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);s?s.player&&s.player.destroy().then((()=>{s.player=null,t()})).catch((e=>{i(e)})):(i("windowIndex is not exist"),this.debug.warn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`))}))}initSingle(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);if(s)if(s.player)s.player.destroy().then((()=>{s.player=null;const e=this._createPlayer(s);s.player=e,t()})).catch((e=>{i(e)}));else{const e=this._createPlayer(s);s.player=e,t()}else i("windowIndex is not exist"),this.debug.warn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`)}))}setFullscreenMulti(e){return new Promise(((t,i)=>{if(this.debug.log(this.LOG_TAG,"setFullscreenMulti",e),e)try{Rr.request(this.$container).then((()=>{t()})).catch((e=>{this.debug.error(this.LOG_TAG,"fullscreen request inner error",e),i(e)}))}catch(e){this.debug.error(this.LOG_TAG,"fullscreen request error",e),i(e)}else try{Rr.exit().then((()=>{t()})).catch((e=>{this.debug.error(this.LOG_TAG,"fullscreen exit inner error",e),i(e)}))}catch(e){this.debug.error(this.LOG_TAG,"fullscreen exit error",e),i(e)}}))}toggleSingleWindowContainerFullscreen(e,t){this.debug.log(this.LOG_TAG,"setSingleWindowContainerFullscreen",t);const i=this._getWindowItem(t);this.windowList.forEach((e=>{e.uuid!==i.uuid&&this._handleWindowContainerFullscreen(e.uuid,!1)})),this._handleWindowContainerFullscreen(i.uuid,e)}selectWindow(e){this.debug.log(this.LOG_TAG,"selectWindow",e),this._handleWindowSelect(e)}arrangeWindow(e){this.debug.log(this.LOG_TAG,"arrangeWindow",e),this._innerArrangeWindow(e)}_innerArrangeWindow(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return void this.debug.warn(this.LOG_TAG,`arrangeWindow() split ${e} is not valid`);if([ks,Cs].includes(e))this._arrangeSpecialWindow(e);else{if(this._opt.split===e&&null===this.specialLayoutType&&ya(t))return void this.debug.warn(this.LOG_TAG,`arrangeWindow() split ${e} is not changed`);this.specialLayoutType=null,this._arrangeWindow(e)}}_arrangeWindow(e){(e=wo(e))<1||!ko(e)?this.debug.warn(this.LOG_TAG,`arrangeWindow() split ${e} is not valid`):(e>this._opt.maxSplit&&(e=this._opt.maxSplit),this._opt.split=e,this.currentWindowIndex=0,this._opt.draggable?this._updateWindows$2():this._updateWindows(),this._handleWindowSelect(this.currentWindowIndex))}_arrangeSpecialWindow(e){this._opt.maxSplit<=3&&e===Cs||this._opt.maxSplit<=2&&e===ks?this.debug.warn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not valid because maxSplit is ${this._opt.maxSplit}`):this.specialLayoutType&&this.specialLayoutType===e?this.debug.warn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not changed`):(this.specialLayoutType=e,e===ks?this._arrangeWindow(3):e===Cs?this._arrangeWindow(4):this.debug.warn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not valid`))}getCurrentSplit(){return this.specialLayoutType?this.specialLayoutType:this._opt.split}_getCurrentMaxSplit(){if(this.specialLayoutType){let e=0;return this.specialLayoutType===ks?e=9:this.specialLayoutType===Cs&&(e=16),e}return this._opt.split*this._opt.split}_getCurrentMaxSplitV2(){return this.specialLayoutType?this._getSpecialMaxSplit():this._opt.split*this._opt.split}_getSpecialMaxSplit(){let e=0;return this.specialLayoutType===ks?e=6:this.specialLayoutType===Cs&&(e=8),e}getSelectedWindowIndex(){return this.currentWindowIndex}getSelectedWindowUuid(){return this.currentWindowUuid}getWindowItem(e){let t=this._getWindowItem(e),i=null;return t&&(i={index:e,$player:t.$player,$playerContainer:t.$playerContainer,player:t.player,uuid:t.uuid}),i}getNextWindowItem(e){let t=null,i=this._getWindowItem(e);if(i){const e=this._getWindowUuidList()||[],s=e.findIndex((e=>e===i.uuid));if(se===i.uuid));if(s>0){const i=s-1,r=this._findWindowItemByUuid(e[i]);r&&(t={index:i,$player:r.$player,$playerContainer:r.$playerContainer,player:r.player,uuid:r.uuid})}}return t}isWindowItemHasInitPlayer(e){let t=!1,i=this._getWindowItem(e);return i&&i.player&&(t=!0),t}_getWindowItem(e){let t=null;const i=qo(e)&&16===e.length;return t=i||!ko(e)?this._findWindowItemByUuid(i?e:this.currentWindowUuid):this.windowList[e]||this.windowList[this.currentWindowIndex],t}_getWindowUuidList(){return this.windowList.filter(((e,t)=>te.uuid))}_findWindowItemIndex(e){return e&&e.uuid?this._findWindowItemIndexByUuid(e.uuid):null}_findWindowItemIndexByUuid(e){return this.windowList.findIndex((t=>t.uuid===e))}_findWindowItemByUuid(e){return this.windowList.find((t=>t.uuid===e))}}return s_.MULTI_EVENTS=Ts,s_.EVENTS={...at,...Ts},s_.ERROR=lt,window.JessibucaProMulti=s_,window.JbProMulti=s_,window.WebPlayerProMulti=s_,s_})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-object-detector-decoder.wasm b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-object-detector-decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e43d0a73b5720b96b7e0cb9187143491b867e1bf Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-object-detector-decoder.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-object-detector-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-object-detector-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..299bd83c9c0b161768e064693f40357870ac7278 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-object-detector-demo.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e,t){return e(t={exports:{}},t.exports),t.exports}var r=e(t((function(e){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports}))),n=t((function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})),o=e(n),i=t((function(e){var t=n.default;e.exports=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,r||"default");if("object"!==t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(i);var a=t((function(e){var t=n.default;e.exports=function(e){var r=i(e,"string");return"symbol"===t(r)?r:String(r)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(a);var s=e(t((function(e){function t(e,t){for(var r=0;r1&&(d=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof te))throw e})),process.on("unhandledRejection",(function(e){throw e})),e.inspect=function(){return"[Emscripten Module object]"}):(p||h)&&(h?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),l&&(v=l),v=0!==v.indexOf("blob:")?v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(a=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),i=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)});var y=e.print||console.log.bind(console),g=e.printErr||console.warn.bind(console);Object.assign(e,f),f=null,e.arguments&&e.arguments,e.thisProgram&&(d=e.thisProgram),e.quit&&e.quit;var w,_,b=4;e.wasmBinary&&(w=e.wasmBinary),e.noExitRuntime,"object"!=("undefined"==typeof WebAssembly?"undefined":o(WebAssembly))&&q("no native wasm support detected");var E=!1;function k(e,t){e||q(t)}var P,T,C,S,D,F,A,x,j,M,O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function $(e,t,r){for(var n=t+r,o=t;e[o]&&!(o>=n);)++o;if(o-t>16&&e.buffer&&O)return O.decode(e.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function R(e,t){return e?$(C,e,t):""}function B(e,t,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-o}function W(e){for(var t=0,r=0;r=55296&&n<=57343?(t+=4,++r):t+=3}return t}e.INITIAL_MEMORY;var z=[],N=[],U=[],I=0,L=null;function H(t){I++,e.monitorRunDependencies&&e.monitorRunDependencies(I)}function V(t){if(I--,e.monitorRunDependencies&&e.monitorRunDependencies(I),0==I&&L){var r=L;L=null,r()}}function q(t){e.onAbort&&e.onAbort(t),g(t="Aborted("+t+")"),E=!0,t+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(t);throw r(n),n}var Y,X,G,J,K="data:application/octet-stream;base64,";function Z(e){return e.startsWith(K)}function Q(e){return e.startsWith("file://")}function ee(e){try{if(e==Y&&w)return new Uint8Array(w);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){q(e)}}function te(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function re(t){for(;t.length>0;)t.shift()(e)}function ne(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){A[this.ptr+4>>2]=e},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(e){A[this.ptr+8>>2]=e},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_refcount=function(e){F[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,T[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=T[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,T[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=T[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=F[this.ptr>>2];F[this.ptr>>2]=e+1},this.release_ref=function(){var e=F[this.ptr>>2];return F[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){A[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ar(this.get_type()))return A[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}e.locateFile?Z(Y="jessibuca-pro-object-detector-decoder.wasm")||(X=Y,Y=e.locateFile?e.locateFile(X,v):v+X):Y=new URL("jessibuca-pro-object-detector-decoder.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("jessibuca-pro-object-detector-demo.js",document.baseURI).href).toString();var oe={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t=oe.isAbs(e),r="/"===e.substr(-1);return(e=oe.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=oe.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=oe.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return oe.normalize(e.join("/"))},join2:function(e,t){return oe.normalize(e+"/"+t)}},ie={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:fe.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t=oe.isAbs(n)}return(t?"/":"")+(e=oe.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ie.resolve(e).substr(1),t=ie.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?r:W(e)+1,o=new Array(n),i=B(e,o,0,o.length);return t&&(o.length=i),o}var se={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){se.ttys[e]={input:[],output:[],ops:t},fe.registerDevice(e,se.stream_ops)},stream_ops:{open:function(e){var t=se.ttys[e.node.rdev];if(!t)throw new fe.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,n,o){if(!e.tty||!e.tty.ops.get_char)throw new fe.ErrnoError(60);for(var i=0,a=0;a0?r.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ae(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(y($(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y($(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(g($(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g($(e.output,0)),e.output=[])}}};function ue(e){q()}var ce={ops_table:null,mount:function(e){return ce.createNode(null,"/",16895,0)},createNode:function(e,t,r,n){if(fe.isBlkdev(r)||fe.isFIFO(r))throw new fe.ErrnoError(63);ce.ops_table||(ce.ops_table={dir:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr,lookup:ce.node_ops.lookup,mknod:ce.node_ops.mknod,rename:ce.node_ops.rename,unlink:ce.node_ops.unlink,rmdir:ce.node_ops.rmdir,readdir:ce.node_ops.readdir,symlink:ce.node_ops.symlink},stream:{llseek:ce.stream_ops.llseek}},file:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr},stream:{llseek:ce.stream_ops.llseek,read:ce.stream_ops.read,write:ce.stream_ops.write,allocate:ce.stream_ops.allocate,mmap:ce.stream_ops.mmap,msync:ce.stream_ops.msync}},link:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr,readlink:ce.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr},stream:fe.chrdev_stream_ops}});var o=fe.createNode(e,t,r,n);return fe.isDir(o.mode)?(o.node_ops=ce.ops_table.dir.node,o.stream_ops=ce.ops_table.dir.stream,o.contents={}):fe.isFile(o.mode)?(o.node_ops=ce.ops_table.file.node,o.stream_ops=ce.ops_table.file.stream,o.usedBytes=0,o.contents=null):fe.isLink(o.mode)?(o.node_ops=ce.ops_table.link.node,o.stream_ops=ce.ops_table.link.stream):fe.isChrdev(o.mode)&&(o.node_ops=ce.ops_table.chrdev.node,o.stream_ops=ce.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[t]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=fe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,fe.isDir(e.mode)?t.size=4096:fe.isFile(e.mode)?t.size=e.usedBytes:fe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&ce.resizeFileStorage(e,t.size)},lookup:function(e,t){throw fe.genericErrors[44]},mknod:function(e,t,r,n){return ce.createNode(e,t,r,n)},rename:function(e,t,r){if(fe.isDir(e.mode)){var n;try{n=fe.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new fe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=fe.lookupNode(e,t);for(var n in r.contents)throw new fe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var n=ce.createNode(e,t,41471,0);return n.link=r,n},readlink:function(e){if(!fe.isLink(e.mode))throw new fe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),r);else for(var s=0;s0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ie.resolve(fe.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new fe.ErrnoError(32);for(var r=oe.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),n=fe.root,o="/",i=0;i40)throw new fe.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var t;;){if(fe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,n=0;n>>0)%fe.nameTable.length},hashAddNode:function(e){var t=fe.hashName(e.parent.id,e.name);e.name_next=fe.nameTable[t],fe.nameTable[t]=e},hashRemoveNode:function(e){var t=fe.hashName(e.parent.id,e.name);if(fe.nameTable[t]===e)fe.nameTable[t]=e.name_next;else for(var r=fe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=fe.mayLookup(e);if(r)throw new fe.ErrnoError(r,e);for(var n=fe.hashName(e.id,t),o=fe.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===t)return o}return fe.lookup(e,t)},createNode:function(e,t,r,n){var o=new fe.FSNode(e,t,r,n);return fe.hashAddNode(o),o},destroyNode:function(e){fe.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=fe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return fe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2},mayLookup:function(e){var t=fe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{return fe.lookupNode(e,t),20}catch(e){}return fe.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var n;try{n=fe.lookupNode(e,t)}catch(e){return e.errno}var o=fe.nodePermissions(e,"wx");if(o)return o;if(r){if(!fe.isDir(n.mode))return 54;if(fe.isRoot(n)||fe.getPath(n)===fe.cwd())return 10}else if(fe.isDir(n.mode))return 31;return 0},mayOpen:function(e,t){return e?fe.isLink(e.mode)?32:fe.isDir(e.mode)&&("r"!==fe.flagsToPermissionString(t)||512&t)?31:fe.nodePermissions(e,fe.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:fe.MAX_OPEN_FDS,r=e;r<=t;r++)if(!fe.streams[r])return r;throw new fe.ErrnoError(33)},getStream:function(e){return fe.streams[e]},createStream:function(e,t,r){fe.FSStream||(fe.FSStream=function(){this.shared={}},fe.FSStream.prototype={},Object.defineProperties(fe.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new fe.FSStream,e);var n=fe.nextfd(t,r);return e.fd=n,fe.streams[n]=e,e},closeStream:function(e){fe.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=fe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new fe.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){fe.devices[e]={stream_ops:t}},getDevice:function(e){return fe.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),fe.syncFSRequests++,fe.syncFSRequests>1&&g("warning: "+fe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=fe.getMounts(fe.root.mount),n=0;function o(e){return fe.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:function(e,t,r){var n,o="/"===r,i=!r;if(o&&fe.root)throw new fe.ErrnoError(10);if(!o&&!i){var a=fe.lookupPath(r,{follow_mount:!1});if(r=a.path,n=a.node,fe.isMountpoint(n))throw new fe.ErrnoError(10);if(!fe.isDir(n.mode))throw new fe.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?fe.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var t=fe.lookupPath(e,{follow_mount:!1});if(!fe.isMountpoint(t.node))throw new fe.ErrnoError(28);var r=t.node,n=r.mounted,o=fe.getMounts(n);Object.keys(fe.nameTable).forEach((function(e){for(var t=fe.nameTable[e];t;){var r=t.name_next;o.includes(t.mount)&&fe.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(n);r.mount.mounts.splice(i,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var n=fe.lookupPath(e,{parent:!0}).node,o=oe.basename(e);if(!o||"."===o||".."===o)throw new fe.ErrnoError(28);var i=fe.mayCreate(n,o);if(i)throw new fe.ErrnoError(i);if(!n.node_ops.mknod)throw new fe.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,fe.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,fe.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),n="",o=0;o1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var n=fe.open(e,r.flags),o=fe.stat(e).size,i=new Uint8Array(o);return fe.read(n,i,0,o,0),"utf8"===r.encoding?t=$(i,0):"binary"===r.encoding&&(t=i),fe.close(n),t},writeFile:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var n=fe.open(e,r.flags,r.mode);if("string"==typeof t){var o=new Uint8Array(W(t)+1),i=B(t,o,0,o.length);fe.write(n,o,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");fe.write(n,t,0,t.byteLength,void 0,r.canOwn)}fe.close(n)},cwd:function(){return fe.currentPath},chdir:function(e){var t=fe.lookupPath(e,{follow:!0});if(null===t.node)throw new fe.ErrnoError(44);if(!fe.isDir(t.node.mode))throw new fe.ErrnoError(54);var r=fe.nodePermissions(t.node,"x");if(r)throw new fe.ErrnoError(r);fe.currentPath=t.path},createDefaultDirectories:function(){fe.mkdir("/tmp"),fe.mkdir("/home"),fe.mkdir("/home/web_user")},createDefaultDevices:function(){fe.mkdir("/dev"),fe.registerDevice(fe.makedev(1,3),{read:function(){return 0},write:function(e,t,r,n,o){return n}}),fe.mkdev("/dev/null",fe.makedev(1,3)),se.register(fe.makedev(5,0),se.default_tty_ops),se.register(fe.makedev(6,0),se.default_tty1_ops),fe.mkdev("/dev/tty",fe.makedev(5,0)),fe.mkdev("/dev/tty1",fe.makedev(6,0));var e=function(){if("object"==("undefined"==typeof crypto?"undefined":o(crypto))&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(m)try{var t=require("crypto");return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){return q("randomDevice")}}();fe.createDevice("/dev","random",e),fe.createDevice("/dev","urandom",e),fe.mkdir("/dev/shm"),fe.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){fe.mkdir("/proc");var e=fe.mkdir("/proc/self");fe.mkdir("/proc/self/fd"),fe.mount({mount:function(){var t=fe.createNode(e,"fd",16895,73);return t.node_ops={lookup:function(e,t){var r=+t,n=fe.getStream(r);if(!n)throw new fe.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){e.stdin?fe.createDevice("/dev","stdin",e.stdin):fe.symlink("/dev/tty","/dev/stdin"),e.stdout?fe.createDevice("/dev","stdout",null,e.stdout):fe.symlink("/dev/tty","/dev/stdout"),e.stderr?fe.createDevice("/dev","stderr",null,e.stderr):fe.symlink("/dev/tty1","/dev/stderr"),fe.open("/dev/stdin",0),fe.open("/dev/stdout",1),fe.open("/dev/stderr",1)},ensureErrnoError:function(){fe.ErrnoError||(fe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},fe.ErrnoError.prototype=new Error,fe.ErrnoError.prototype.constructor=fe.ErrnoError,[44].forEach((function(e){fe.genericErrors[e]=new fe.ErrnoError(e),fe.genericErrors[e].stack=""})))},staticInit:function(){fe.ensureErrnoError(),fe.nameTable=new Array(4096),fe.mount(ce,{},"/"),fe.createDefaultDirectories(),fe.createDefaultDevices(),fe.createSpecialDirectories(),fe.filesystems={MEMFS:ce}},init:function(t,r,n){fe.init.initialized=!0,fe.ensureErrnoError(),e.stdin=t||e.stdin,e.stdout=r||e.stdout,e.stderr=n||e.stderr,fe.createStandardStreams()},quit:function(){fe.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var t=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+t),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ae(o.responseText||"",!0)}(t,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:r};var u=fe.createFile(e,t,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function f(e,t,r,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s>2]=n.dev,F[r+4>>2]=0,F[r+8>>2]=n.ino,F[r+12>>2]=n.mode,F[r+16>>2]=n.nlink,F[r+20>>2]=n.uid,F[r+24>>2]=n.gid,F[r+28>>2]=n.rdev,F[r+32>>2]=0,J=[n.size>>>0,(G=n.size,+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],F[r+40>>2]=J[0],F[r+44>>2]=J[1],F[r+48>>2]=4096,F[r+52>>2]=n.blocks,J=[Math.floor(n.atime.getTime()/1e3)>>>0,(G=Math.floor(n.atime.getTime()/1e3),+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],F[r+56>>2]=J[0],F[r+60>>2]=J[1],F[r+64>>2]=0,J=[Math.floor(n.mtime.getTime()/1e3)>>>0,(G=Math.floor(n.mtime.getTime()/1e3),+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],F[r+72>>2]=J[0],F[r+76>>2]=J[1],F[r+80>>2]=0,J=[Math.floor(n.ctime.getTime()/1e3)>>>0,(G=Math.floor(n.ctime.getTime()/1e3),+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],F[r+88>>2]=J[0],F[r+92>>2]=J[1],F[r+96>>2]=0,J=[n.ino>>>0,(G=n.ino,+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],F[r+104>>2]=J[0],F[r+108>>2]=J[1],0},doMsync:function(e,t,r,n,o){var i=C.slice(e,e+r);fe.msync(t,i,o,r,n)},varargs:void 0,get:function(){return le.varargs+=4,F[le.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var t=fe.getStream(e);if(!t)throw new fe.ErrnoError(8);return t}},de={};function pe(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function he(e){return this.fromWireType(F[e>>2])}var me={},ve={},ye={},ge=48,we=57;function _e(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ge&&t<=we?"_"+e:e}function be(e,t){return e=_e(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function Ee(e,t){var r=be(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ke=void 0;function Pe(e){throw new ke(e)}function Te(e,t,r){function n(t){var n=r(t);n.length!==e.length&&Pe("Mismatched type converter count");for(var o=0;o2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=t.name;if(e||Ae('type "'+n+'" must have a positive integer typeid pointer'),ve.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ae("Cannot register type '"+n+"' twice")}if(ve[e]=t,delete ye[e],me.hasOwnProperty(e)){var o=me[e];delete me[e],o.forEach((function(e){return e()}))}}function je(e){if(!(this instanceof et))return!1;if(!(e instanceof et))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return t===n&&r===o}function Me(e){Ae(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Oe=!1;function $e(e){}function Re(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Be(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var n=Be(e,t,r.baseClass);return null===n?null:r.downcast(n)}var We={};function ze(){return Object.keys(Ve).length}function Ne(){var e=[];for(var t in Ve)Ve.hasOwnProperty(t)&&e.push(Ve[t]);return e}var Ue=[];function Ie(){for(;Ue.length;){var e=Ue.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function He(e){Le=e,Ue.length&&Le&&Le(Ie)}var Ve={};function qe(e,t){return t=function(e,t){for(void 0===t&&Ae("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Ve[t]}function Ye(e,t){return t.ptrType&&t.ptr||Pe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Pe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ge(Object.create(e,{$$:{value:t}}))}function Xe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=qe(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var n=r.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?Ye(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ye(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(t),s=We[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var u=Be(t,this.registeredClass,i.registeredClass);return null===u?o.call(this):this.isSmartPointer?Ye(i.registeredClass.instancePrototype,{ptrType:i,ptr:u,smartPtrType:this,smartPtr:e}):Ye(i.registeredClass.instancePrototype,{ptrType:i,ptr:u})}function Ge(e){return"undefined"==typeof FinalizationRegistry?(Ge=function(e){return e},e):(Oe=new FinalizationRegistry((function(e){Re(e.$$)})),Ge=function(e){var t=e.$$;if(t.smartPtr){var r={$$:t};Oe.register(e,r,e)}return e},$e=function(e){return Oe.unregister(e)},Ge(e))}function Je(){if(this.$$.ptr||Me(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Ge(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ke(){this.$$.ptr||Me(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ae("Object already scheduled for deletion"),$e(this),Re(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ze(){return!this.$$.ptr}function Qe(){return this.$$.ptr||Me(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ae("Object already scheduled for deletion"),Ue.push(this),1===Ue.length&&Le&&Le(Ie),this.$$.deleteScheduled=!0,this}function et(){}function tt(e,t,r){if(void 0===e[t].overloadTable){var n=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ae("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[n.argCount]=n}}function rt(e,t,r,n,o,i,a,s){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=a,this.downcast=s,this.pureVirtualFunctions=[]}function nt(e,t,r){for(;t!==r;)t.upcast||Ae("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function ot(e,t){if(null===t)return this.isReference&&Ae("null is not a valid "+this.name),0;t.$$||Ae('Cannot pass "'+St(t)+'" as a '+this.name),t.$$.ptr||Ae("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return nt(t.$$.ptr,r,this.registeredClass)}function it(e,t){var r;if(null===t)return this.isReference&&Ae("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ae('Cannot pass "'+St(t)+'" as a '+this.name),t.$$.ptr||Ae("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ae("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var n=t.$$.ptrType.registeredClass;if(r=nt(t.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ae("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ae("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var o=t.clone();r=this.rawShare(r,Ct.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ae("Unsupporting sharing policy")}return r}function at(e,t){if(null===t)return this.isReference&&Ae("null is not a valid "+this.name),0;t.$$||Ae('Cannot pass "'+St(t)+'" as a '+this.name),t.$$.ptr||Ae("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ae("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return nt(t.$$.ptr,r,this.registeredClass)}function st(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function ut(e){this.rawDestructor&&this.rawDestructor(e)}function ct(e){null!==e&&e.delete()}function ft(e,t,r,n,o,i,a,s,u,c,f){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=f,o||void 0!==t.baseClass?this.toWireType=it:n?(this.toWireType=ot,this.destructorFunction=null):(this.toWireType=at,this.destructorFunction=null)}var lt=[];function dt(e){var t=lt[e];return t||(e>=lt.length&&(lt.length=e+1),lt[e]=t=M.get(e)),t}function pt(t,r,n){return t.includes("j")?function(t,r,n){var o=e["dynCall_"+t];return n&&n.length?o.apply(null,[r].concat(n)):o.call(null,r)}(t,r,n):dt(r).apply(null,n)}function ht(e,t){var r,n,o,i=(e=De(e)).includes("j")?(r=e,n=t,o=[],function(){return o.length=0,Object.assign(o,arguments),pt(r,n,o)}):dt(t);return"function"!=typeof i&&Ae("unknown function pointer with signature "+e+": "+t),i}var mt=void 0;function vt(e){var t=or(e),r=De(t);return rr(t),r}function yt(e,t){var r=[],n={};throw t.forEach((function e(t){n[t]||ve[t]||(ye[t]?ye[t].forEach(e):(r.push(t),n[t]=!0))})),new mt(e+": "+r.map(vt).join([", "]))}function gt(e,t){for(var r=[],n=0;n>2]);return r}function wt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+o(e)+" which is not a function");var r=be(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var n=new r,i=e.apply(n,t);return i instanceof Object?i:n}function _t(e,t,r,n,o){var i=t.length;i<2&&Ae("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,s=!1,u=1;u0?", ":"")+l),d+=(c?"var rv = ":"")+"invoker(fn"+(l.length>0?", ":"")+l+");\n",s)d+="runDestructors(destructors);\n";else for(u=a?1:2;u4&&0==--Et[e].refcount&&(Et[e]=void 0,bt.push(e))}function Pt(){for(var e=0,t=5;t>2])};case 3:return function(e){return this.fromWireType(j[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Ft(e,t,r){switch(t){case 0:return r?function(e){return T[e]}:function(e){return C[e]};case 1:return r?function(e){return S[e>>1]}:function(e){return D[e>>1]};case 2:return r?function(e){return F[e>>2]}:function(e){return A[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function xt(e,t){for(var r=e,n=r>>1,o=n+t/2;!(n>=o)&&D[n];)++n;if((r=n<<1)-e>32&&At)return At.decode(C.subarray(e,r));for(var i="",a=0;!(a>=t/2);++a){var s=S[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function jt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,o=(r-=2)<2*e.length?r/2:e.length,i=0;i>1]=a,t+=2}return S[t>>1]=0,t-n}function Mt(e){return 2*e.length}function Ot(e,t){for(var r=0,n="";!(r>=t/4);){var o=F[e+4*r>>2];if(0==o)break;if(++r,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function $t(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var n=t,o=n+r-4,i=0;i=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i)),F[t>>2]=a,(t+=4)+4>o)break}return F[t>>2]=0,t-n}function Rt(e){for(var t=0,r=0;r=55296&&n<=57343&&++r,t+=4}return t}var Bt=!0;function Wt(e,t){var r=ve[e];return void 0===r&&Ae(t+" has unknown type "+vt(e)),r}var zt={};function Nt(e){var t=zt[e];return void 0===t?De(e):t}var Ut=[];function It(){return"object"==("undefined"==typeof globalThis?"undefined":o(globalThis))?globalThis:Function("return this")()}var Lt,Ht=[];Lt=m?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:function(){return performance.now()};var Vt={};function qt(){if(!qt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":o(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:d||"./this.program"};for(var t in Vt)void 0===Vt[t]?delete e[t]:e[t]=Vt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);qt.strings=r}return qt.strings}function Yt(e){return e%4==0&&(e%100!=0||e%400==0)}var Xt=[31,29,31,30,31,30,31,31,30,31,30,31],Gt=[31,28,31,30,31,30,31,31,30,31,30,31];function Jt(e,t,r,n){var o=F[n+40>>2],i={tm_sec:F[n>>2],tm_min:F[n+4>>2],tm_hour:F[n+8>>2],tm_mday:F[n+12>>2],tm_mon:F[n+16>>2],tm_year:F[n+20>>2],tm_wday:F[n+24>>2],tm_yday:F[n+28>>2],tm_isdst:F[n+32>>2],tm_gmtoff:F[n+36>>2],tm_zone:o?R(o):""},a=R(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)a=a.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"];function l(e,t,r){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}var n;return 0===(n=r(e.getFullYear()-t.getFullYear()))&&0===(n=r(e.getMonth()-t.getMonth()))&&(n=r(e.getDate()-t.getDate())),n}function h(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var n=Yt(r.getFullYear()),o=r.getMonth(),i=(n?Xt:Gt)[o];if(!(t>i-r.getDate()))return r.setDate(r.getDate()+t),r;t-=i-r.getDate()+1,r.setDate(1),o<11?r.setMonth(o+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=h(r),i=h(n);return p(o,t)<=0?p(i,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var v={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return f[e.tm_mon].substring(0,3)},"%B":function(e){return f[e.tm_mon]},"%C":function(e){return d((e.tm_year+1900)/100|0,2)},"%d":function(e){return d(e.tm_mday,2)},"%e":function(e){return l(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return d(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(e){return d(e.tm_mday+function(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}(Yt(e.tm_year+1900)?Xt:Gt,e.tm_mon-1),3)},"%m":function(e){return d(e.tm_mon+1,2)},"%M":function(e){return d(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return d(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return d(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&Yt(e.tm_year)||(t=1)}}else{t=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&Yt(e.tm_year%400-1))&&t++}return d(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return d(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in a=a.replace(/%%/g,"\0\0"),v)a.includes(u)&&(a=a.replace(new RegExp(u,"g"),v[u](i)));var y=ae(a=a.replace(/\0\0/g,"%"),!1);return y.length>t?0:(function(e,t){T.set(e,t)}(y,e),y.length-1)}var Kt=function(e,t,r,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=fe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n},Zt=365,Qt=146;Object.defineProperties(Kt.prototype,{read:{get:function(){return(this.mode&Zt)===Zt},set:function(e){e?this.mode|=Zt:this.mode&=-366}},write:{get:function(){return(this.mode&Qt)===Qt},set:function(e){e?this.mode|=Qt:this.mode&=-147}},isFolder:{get:function(){return fe.isDir(this.mode)}},isDevice:{get:function(){return fe.isChrdev(this.mode)}}}),fe.FSNode=Kt,fe.staticInit(),e.FS_createPath=fe.createPath,e.FS_createDataFile=fe.createDataFile,e.FS_createPreloadedFile=fe.createPreloadedFile,e.FS_unlink=fe.unlink,e.FS_createLazyFile=fe.createLazyFile,e.FS_createDevice=fe.createDevice,ke=e.InternalError=Ee(Error,"InternalError"),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Se=e}(),Fe=e.BindingError=Ee(Error,"BindingError"),et.prototype.isAliasOf=je,et.prototype.clone=Je,et.prototype.delete=Ke,et.prototype.isDeleted=Ze,et.prototype.deleteLater=Qe,e.getInheritedInstanceCount=ze,e.getLiveInheritedInstances=Ne,e.flushPendingDeletes=Ie,e.setDelayFunction=He,ft.prototype.getPointee=st,ft.prototype.destructor=ut,ft.prototype.argPackAdvance=8,ft.prototype.readValueFromPointer=he,ft.prototype.deleteObject=ct,ft.prototype.fromWireType=Xe,mt=e.UnboundTypeError=Ee(Error,"UnboundTypeError"),e.count_emval_handles=Pt,e.get_first_emval=Tt;var er={j:function(e){return tr(e+24)+24},i:function(e,t,r){throw new ne(e).init(t,r),e},v:function(e,t,r){le.varargs=r;try{var n=le.getStreamFromFD(e);switch(t){case 0:return(o=le.get())<0?-28:fe.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=le.get();return n.flags|=o,0;case 5:return o=le.get(),S[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return i=28,F[nr()>>2]=i,-1}}catch(e){if(void 0===fe||!(e instanceof fe.ErrnoError))throw e;return-e.errno}var i},I:function(e,t,r){le.varargs=r;try{var n=le.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=le.get();return F[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:return o=le.get(),fe.ioctl(n,t,o);default:q("bad ioctl syscall "+t)}}catch(e){if(void 0===fe||!(e instanceof fe.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,n){le.varargs=n;try{t=le.getStr(t),t=le.calculateAt(e,t);var o=n?le.get():0;return fe.open(t,r,o).fd}catch(e){if(void 0===fe||!(e instanceof fe.ErrnoError))throw e;return-e.errno}},y:function(e){var t=de[e];delete de[e];var r=t.rawConstructor,n=t.rawDestructor,o=t.fields;Te([e],o.map((function(e){return e.getterReturnType})).concat(o.map((function(e){return e.setterArgumentType}))),(function(e){var i={};return o.forEach((function(t,r){var n=t.fieldName,a=e[r],s=t.getter,u=t.getterContext,c=e[r+o.length],f=t.setter,l=t.setterContext;i[n]={read:function(e){return a.fromWireType(s(u,e))},write:function(e,t){var r=[];f(l,e,c.toWireType(r,t)),pe(r)}}})),[{name:t.name,fromWireType:function(e){var t={};for(var r in i)t[r]=i[r].read(e);return n(e),t},toWireType:function(e,t){for(var o in i)if(!(o in t))throw new TypeError('Missing field: "'+o+'"');var a=r();for(o in i)i[o].write(a,t[o]);return null!==e&&e.push(n,a),a},argPackAdvance:8,readValueFromPointer:he,destructorFunction:n}]}))},D:function(e,t,r,n,o){},O:function(e,t,r,n,o){var i=Ce(r);xe(e,{name:t=De(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===r)n=T;else if(2===r)n=S;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);n=F}return this.fromWireType(n[e>>i])},destructorFunction:null})},T:function(t,r,n,o,i,a,s,u,c,f,l,d,p){l=De(l),a=ht(i,a),u&&(u=ht(s,u)),f&&(f=ht(c,f)),p=ht(d,p);var h=_e(l);!function(t,r,n){e.hasOwnProperty(t)?((void 0===n||void 0!==e[t].overloadTable&&void 0!==e[t].overloadTable[n])&&Ae("Cannot register public name '"+t+"' twice"),tt(e,t,t),e.hasOwnProperty(n)&&Ae("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),e[t].overloadTable[n]=r):(e[t]=r,void 0!==n&&(e[t].numArguments=n))}(h,(function(){yt("Cannot construct "+l+" due to unbound types",[o])})),Te([t,r,n],o?[o]:[],(function(r){var n,i;r=r[0],i=o?(n=r.registeredClass).instancePrototype:et.prototype;var s=be(h,(function(){if(Object.getPrototypeOf(this)!==c)throw new Fe("Use 'new' to construct "+l);if(void 0===d.constructor_body)throw new Fe(l+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new Fe("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),c=Object.create(i,{constructor:{value:s}});s.prototype=c;var d=new rt(l,s,c,p,n,a,u,f),m=new ft(l,d,!0,!1,!1),v=new ft(l+"*",d,!1,!1,!1),y=new ft(l+" const*",d,!1,!0,!1);return We[t]={pointerType:v,constPointerType:y},function(t,r,n){e.hasOwnProperty(t)||Pe("Replacing nonexistant public symbol"),void 0!==e[t].overloadTable&&void 0!==n?e[t].overloadTable[n]=r:(e[t]=r,e[t].argCount=n)}(h,s),[m,v,y]}))},S:function(e,t,r,n,o,i){k(t>0);var a=gt(t,r);o=ht(n,o),Te([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Fe("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=function(){yt("Cannot construct "+e.name+" due to unbound types",a)},Te([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[t-1]=_t(r,n,null,o,i),[]})),[]}))},k:function(e,t,r,n,o,i,a,s){var u=gt(r,n);t=De(t),i=ht(o,i),Te([],[e],(function(e){var n=(e=e[0]).name+"."+t;function o(){yt("Cannot call "+n+" due to unbound types",u)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,f=c[t];return void 0===f||void 0===f.overloadTable&&f.className!==e.name&&f.argCount===r-2?(o.argCount=r-2,o.className=e.name,c[t]=o):(tt(c,t,n),c[t].overloadTable[r-2]=o),Te([],u,(function(o){var s=_t(n,o,e,i,a);return void 0===c[t].overloadTable?(s.argCount=r-2,c[t]=s):c[t].overloadTable[r-2]=s,[]})),[]}))},N:function(e,t){xe(e,{name:t=De(t),fromWireType:function(e){var t=Ct.toValue(e);return kt(e),t},toWireType:function(e,t){return Ct.toHandle(t)},argPackAdvance:8,readValueFromPointer:he,destructorFunction:null})},x:function(e,t,r){var n=Ce(r);xe(e,{name:t=De(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:Dt(t,n),destructorFunction:null})},e:function(e,t,r,n,o){t=De(t);var i=Ce(r),a=function(e){return e};if(0===n){var s=32-8*r;a=function(e){return e<>>s}}var u=t.includes("unsigned");xe(e,{name:t,fromWireType:a,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Ft(t,i,0!==n),destructorFunction:null})},b:function(e,t,r){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(e){var t=A,r=t[e>>=2],o=t[e+1];return new n(P,o,r)}xe(e,{name:r=De(r),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},w:function(e,t){var r="std::string"===(t=De(t));xe(e,{name:t,fromWireType:function(e){var t,n=A[e>>2],o=e+4;if(r)for(var i=o,a=0;a<=n;++a){var s=o+a;if(a==n||0==C[s]){var u=R(i,s-i);void 0===t?t=u:(t+=String.fromCharCode(0),t+=u),i=s+1}}else{var c=new Array(n);for(a=0;a>2]=n,r&&o)B(t,C,a,n+1);else if(o)for(var s=0;s255&&(rr(a),Ae("String has UTF-16 code units that do not fit in 8 bits")),C[a+s]=u}else for(s=0;s>2],a=i(),u=e+4,c=0;c<=o;++c){var f=e+4+c*t;if(c==o||0==a[f>>s]){var l=n(u,f-u);void 0===r?r=l:(r+=String.fromCharCode(0),r+=l),u=f+t}}return rr(e),r},toWireType:function(e,n){"string"!=typeof n&&Ae("Cannot pass non-string to C++ string type "+r);var i=a(n),u=tr(4+i+t);return A[u>>2]=i>>s,o(n,u+4,i+t),null!==e&&e.push(rr,u),u},argPackAdvance:8,readValueFromPointer:he,destructorFunction:function(e){rr(e)}})},z:function(e,t,r,n,o,i){de[e]={name:De(t),rawConstructor:ht(r,n),rawDestructor:ht(o,i),fields:[]}},h:function(e,t,r,n,o,i,a,s,u,c){de[e].fields.push({fieldName:De(t),getterReturnType:r,getter:ht(n,o),getterContext:i,setterArgumentType:a,setter:ht(s,u),setterContext:c})},P:function(e,t){xe(e,{isVoid:!0,name:t=De(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},L:function(){return Date.now()},Q:function(e){do{var t=A[e>>2],r=A[(e+=4)>>2],n=A[(e+=4)>>2];e+=4;var o=R(t);fe.createPath("/",oe.dirname(o),!0,!0),fe.createDataFile(o,null,T.subarray(n,n+r),!0,!0,!0)}while(A[e>>2])},K:function(){return Bt},g:function(e,t,r){e=Ct.toValue(e),t=Wt(t,"emval::as");var n=[],o=Ct.toHandle(n);return A[r>>2]=o,t.toWireType(n,e)},A:function(e,t,r,n,o){return(e=Ut[e])(t=Ct.toValue(t),r=Nt(r),function(e){var t=[];return A[e>>2]=Ct.toHandle(t),t}(n),o)},s:function(e,t,r,n){(e=Ut[e])(t=Ct.toValue(t),r=Nt(r),null,n)},a:kt,B:function(e){return 0===e?Ct.toHandle(It()):(e=Nt(e),Ct.toHandle(It()[e]))},m:function(e,t){var r=function(e,t){for(var r=new Array(e),n=0;n>2],"parameter "+n);return r}(e,t),n=r[0],o=n.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",i=Ht[o];if(void 0!==i)return i;for(var a=["retType"],s=[n],u="",c=0;c4&&(Et[e].refcount+=1)},R:function(){return Ct.toHandle([])},c:function(e){return Ct.toHandle(Nt(e))},f:function(e){pe(Ct.toValue(e)),kt(e)},o:function(){q("")},J:Lt,M:function(e,t,r){C.copyWithin(e,t,t+r)},F:function(e){C.length,q("OOM")},G:function(e,t){var r=0;return qt().forEach((function(n,o){var i=t+r;A[e+4*o>>2]=i,function(e,t,r){for(var n=0;n>0]=e.charCodeAt(n);r||(T[t>>0]=0)}(n,i),r+=n.length+1})),0},H:function(e,t){var r=qt();A[e>>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),A[t>>2]=n,0},q:function(e){try{var t=le.getStreamFromFD(e);return fe.close(t),0}catch(e){if(void 0===fe||!(e instanceof fe.ErrnoError))throw e;return e.errno}},t:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=A[t+4>>2];t+=8;var u=fe.read(e,T,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===fe||!(e instanceof fe.ErrnoError))throw e;return e.errno}},C:function(e,t,r,n,o){try{var i=(u=r)+2097152>>>0<4194305-!!(s=t)?(s>>>0)+4294967296*u:NaN;if(isNaN(i))return 61;var a=le.getStreamFromFD(e);return fe.llseek(a,i,n),J=[a.position>>>0,(G=a.position,+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],F[o>>2]=J[0],F[o+4>>2]=J[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===fe||!(e instanceof fe.ErrnoError))throw e;return e.errno}var s,u},p:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=A[t+4>>2];t+=8;var u=fe.write(e,T,a,s,n);if(u<0)return-1;o+=u}return o}(le.getStreamFromFD(e),t,r);return A[n>>2]=o,0}catch(e){if(void 0===fe||!(e instanceof fe.ErrnoError))throw e;return e.errno}},n:function(e){},E:function(e,t,r,n){return Jt(e,t,r,n)}};!function(){var t={a:er};function n(t,r){var n,o,i=t.exports;e.asm=i,_=e.asm.U,n=_.buffer,P=n,e.HEAP8=T=new Int8Array(n),e.HEAP16=S=new Int16Array(n),e.HEAP32=F=new Int32Array(n),e.HEAPU8=C=new Uint8Array(n),e.HEAPU16=D=new Uint16Array(n),e.HEAPU32=A=new Uint32Array(n),e.HEAPF32=x=new Float32Array(n),e.HEAPF64=j=new Float64Array(n),M=e.asm.X,o=e.asm.V,N.unshift(o),V()}function o(e){n(e.instance)}function a(e){return function(){if(!w&&(p||h)){if("function"==typeof fetch&&!Q(Y))return fetch(Y,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Y+"'";return e.arrayBuffer()})).catch((function(){return ee(Y)}));if(i)return new Promise((function(e,t){i(Y,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return ee(Y)}))}().then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(e,(function(e){g("failed to asynchronously prepare wasm: "+e),q(e)}))}if(H(),e.instantiateWasm)try{return e.instantiateWasm(t,n)}catch(e){return g("Module.instantiateWasm callback failed with error: "+e),!1}(w||"function"!=typeof WebAssembly.instantiateStreaming||Z(Y)||Q(Y)||m||"function"!=typeof fetch?a(o):fetch(Y,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(o,(function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),a(o)}))}))).catch(r)}(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.V).apply(null,arguments)};var tr=e._malloc=function(){return(tr=e._malloc=e.asm.W).apply(null,arguments)},rr=e._free=function(){return(rr=e._free=e.asm.Y).apply(null,arguments)},nr=e.___errno_location=function(){return(nr=e.___errno_location=e.asm.Z).apply(null,arguments)},or=e.___getTypeName=function(){return(or=e.___getTypeName=e.asm._).apply(null,arguments)};e.___embind_register_native_and_builtin_types=function(){return(e.___embind_register_native_and_builtin_types=e.asm.$).apply(null,arguments)};var ir,ar=e.___cxa_is_pointer_type=function(){return(ar=e.___cxa_is_pointer_type=e.asm.aa).apply(null,arguments)};function sr(r){function n(){ir||(ir=!0,e.calledRun=!0,E||(e.noFSInit||fe.init.initialized||fe.init(),fe.ignorePermissions=!1,re(N),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)t=e.postRun.shift(),U.unshift(t);var t;re(U)}()))}I>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)t=e.preRun.shift(),z.unshift(t);var t;re(z)}(),I>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),n()}),1)):n()))}if(e.dynCall_ji=function(){return(e.dynCall_ji=e.asm.ba).apply(null,arguments)},e.dynCall_jiii=function(){return(e.dynCall_jiii=e.asm.ca).apply(null,arguments)},e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.da).apply(null,arguments)},e.dynCall_viijii=function(){return(e.dynCall_viijii=e.asm.ea).apply(null,arguments)},e.dynCall_iiiiij=function(){return(e.dynCall_iiiiij=e.asm.fa).apply(null,arguments)},e.dynCall_iiiiijj=function(){return(e.dynCall_iiiiijj=e.asm.ga).apply(null,arguments)},e.dynCall_iiiiiijj=function(){return(e.dynCall_iiiiiijj=e.asm.ha).apply(null,arguments)},e.___emscripten_embedded_file_data=3932636,e.addRunDependency=H,e.removeRunDependency=V,e.FS_createPath=fe.createPath,e.FS_createDataFile=fe.createDataFile,e.FS_createPreloadedFile=fe.createPreloadedFile,e.FS_createLazyFile=fe.createLazyFile,e.FS_createDevice=fe.createDevice,e.FS_unlink=fe.unlink,L=function e(){ir||sr(),ir||(L=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return sr(),e.ready}),y=function(){function e(){r(this,e)}return s(e,[{key:"on",value:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this}},{key:"once",value:function(e,t,r){var n=this;function o(){n.off(e,o);for(var i=arguments.length,a=new Array(i),s=0;s1?r-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:{};return r(this,n),(e=t.call(this)).module=null,e.detector=null,e.startTimestamp=null,e.detectWidth=o.detectWidth||192,e.showRect=!1!==o.showRect,e.textColor=o.textColor||{r:0,g:255,b:0},e.rectangleColor=o.rectangleColor||{r:0,g:0,b:255},e.currentTs=null,e}return s(n,[{key:"destroy",value:function(){this.off(),this.detector&&(this.detector.clear(),this.detector.delete()),this.module&&(this.module=null),this.startTimestamp=null,this.currentTs=null}},{key:"load",value:function(){var e=this;return new Promise((function(t,r){v().then((function(n){e.module=n,e.module.ObjectDetector?(e.detector=new e.module.ObjectDetector(e),e.detector.setDetectWidth(e.detectWidth),e.detector.setParams({showInfo:e.showRect,rectangleColor:e.rectangleColor,textColor:e.textColor}),t()):r("load jessibuca object detector fail")})).catch((function(e){console.error(e),r("load jessibuca object detector error")}))}))}},{key:"updateConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.detectWidth&&(this.detectWidth=e.detectWidth,this.detector&&this.detector.setDetectWidth(this.detectWidth));var t={};g(e.showRect)&&(this.showRect=e.showRect,t.showInfo=e.showRect),g(e.rectangleColor)&&(this.rectangleColor=e.rectangleColor,t.rectangleColor=e.rectangleColor),g(e.textColor)&&(this.textColor=e.textColor,t.textColor=e.textColor),w(t)&&this.detector&&this.detector.setParams(t)}},{key:"notifyDetectInfo",value:function(e){if(this.detector){var t={list:[],ts:this.currentTs||0};t.list=(e||[]).map((function(e){return{en:e.className,zh:b[e.className]||e.className,rect:e.box,confidence:e.confidence}})),this.emit("jessibuca-pro-object-detector-info",t)}}},{key:"detect",value:function(e){if(!this.detector)return e.data;if(null===this.startTimestamp&&(this.startTimestamp=Date.now()),Date.now()-this.startTimestamp>6e5)return e.data;this.currentTs=e.ts;var t=this.detector.detect(e.data,e.width,e.height),r=t+3*(e.width*e.height)/2;return this.module.HEAPU8.subarray(t,r)}}]),n}(y);window.JessibucaProObjectDetector=E})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-occlusion-detector-decoder.wasm b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-occlusion-detector-decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7768d838dc0772975ab55653c187068084c13e50 Binary files /dev/null and b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-occlusion-detector-decoder.wasm differ diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-occlusion-detector-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-occlusion-detector-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..7cbab554d267294f7ea90850f1f4e6cb15f6ed0f --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-occlusion-detector-demo.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e,t){return e(t={exports:{}},t.exports),t.exports}var r=e(t((function(e){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports}))),n=t((function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})),o=e(n),i=t((function(e){var t=n.default;e.exports=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,r||"default");if("object"!==t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(i);var a=t((function(e){var t=n.default;e.exports=function(e){var r=i(e,"string");return"symbol"===t(r)?r:String(r)},e.exports.__esModule=!0,e.exports.default=e.exports}));e(a);var s=e(t((function(e){function t(e,t){for(var r=0;r1&&(d=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),e.inspect=function(){return"[Emscripten Module object]"}):(p||h)&&(h?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),l&&(v=l),v=0!==v.indexOf("blob:")?v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(a=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),i=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)});var y,w,g=e.print||console.log.bind(console),_=e.printErr||console.warn.bind(console);Object.assign(e,f),f=null,e.arguments&&e.arguments,e.thisProgram&&(d=e.thisProgram),e.quit&&e.quit,e.wasmBinary&&(y=e.wasmBinary),e.noExitRuntime,"object"!=("undefined"==typeof WebAssembly?"undefined":o(WebAssembly))&&V("no native wasm support detected");var E=!1;function b(e,t){e||V(t)}var k,P,T,S,D,C,A,F,M,O,x="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function j(e,t,r){for(var n=t+r,o=t;e[o]&&!(o>=n);)++o;if(o-t>16&&e.buffer&&x)return x.decode(e.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function $(e,t){return e?j(T,e,t):""}function R(e,t,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-o}function N(e){for(var t=0,r=0;r=55296&&n<=57343?(t+=4,++r):t+=3}return t}e.INITIAL_MEMORY;var B=[],U=[],z=[],I=0,L=null;function W(t){I++,e.monitorRunDependencies&&e.monitorRunDependencies(I)}function H(t){if(I--,e.monitorRunDependencies&&e.monitorRunDependencies(I),0==I&&L){var r=L;L=null,r()}}function V(t){e.onAbort&&e.onAbort(t),_(t="Aborted("+t+")"),E=!0,t+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(t);throw r(n),n}var q,Y,G,J,X="data:application/octet-stream;base64,";function K(e){return e.startsWith(X)}function Z(e){return e.startsWith("file://")}function Q(e){try{if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(t){for(;t.length>0;)t.shift()(e)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){A[this.ptr+4>>2]=e},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(e){A[this.ptr+8>>2]=e},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_refcount=function(e){C[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,P[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=P[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,P[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=P[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=C[this.ptr>>2];C[this.ptr>>2]=e+1},this.release_ref=function(){var e=C[this.ptr>>2];return C[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){A[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return A[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function ne(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}e.locateFile?K(q="jessibuca-pro-occlusion-detector-decoder.wasm")||(Y=q,q=e.locateFile?e.locateFile(Y,v):v+Y):q=new URL("jessibuca-pro-occlusion-detector-decoder.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("jessibuca-pro-occlusion-detector-demo.js",document.baseURI).href).toString();var oe=void 0;function ie(e){for(var t="",r=e;T[r];)t+=oe[T[r++]];return t}var ae={},se={},ue={},ce=48,fe=57;function le(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ce&&t<=fe?"_"+e:e}function de(e,t){return e=le(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function pe(e,t){var r=de(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var he=void 0;function me(e){throw new he(e)}var ve=void 0;function ye(e){throw new ve(e)}function we(e,t,r){function n(t){var n=r(t);n.length!==e.length&&ye("Mismatched type converter count");for(var o=0;o2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=t.name;if(e||me('type "'+n+'" must have a positive integer typeid pointer'),se.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;me("Cannot register type '"+n+"' twice")}if(se[e]=t,delete ue[e],ae.hasOwnProperty(e)){var o=ae[e];delete ae[e],o.forEach((function(e){return e()}))}}function _e(e){if(!(this instanceof Le))return!1;if(!(e instanceof Le))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return t===n&&r===o}function Ee(e){me(e.$$.ptrType.registeredClass.name+" instance already deleted")}var be=!1;function ke(e){}function Pe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Te(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var n=Te(e,t,r.baseClass);return null===n?null:r.downcast(n)}var Se={};function De(){return Object.keys(xe).length}function Ce(){var e=[];for(var t in xe)xe.hasOwnProperty(t)&&e.push(xe[t]);return e}var Ae=[];function Fe(){for(;Ae.length;){var e=Ae.pop();e.$$.deleteScheduled=!1,e.delete()}}var Me=void 0;function Oe(e){Me=e,Ae.length&&Me&&Me(Fe)}var xe={};function je(e,t){return t=function(e,t){for(void 0===t&&me("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),xe[t]}function $e(e,t){return t.ptrType&&t.ptr||ye("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&ye("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ne(Object.create(e,{$$:{value:t}}))}function Re(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=je(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var n=r.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?$e(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):$e(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(t),s=Se[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var u=Te(t,this.registeredClass,i.registeredClass);return null===u?o.call(this):this.isSmartPointer?$e(i.registeredClass.instancePrototype,{ptrType:i,ptr:u,smartPtrType:this,smartPtr:e}):$e(i.registeredClass.instancePrototype,{ptrType:i,ptr:u})}function Ne(e){return"undefined"==typeof FinalizationRegistry?(Ne=function(e){return e},e):(be=new FinalizationRegistry((function(e){Pe(e.$$)})),Ne=function(e){var t=e.$$;if(t.smartPtr){var r={$$:t};be.register(e,r,e)}return e},ke=function(e){return be.unregister(e)},Ne(e))}function Be(){if(this.$$.ptr||Ee(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Ne(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ue(){this.$$.ptr||Ee(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),ke(this),Pe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ze(){return!this.$$.ptr}function Ie(){return this.$$.ptr||Ee(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),Ae.push(this),1===Ae.length&&Me&&Me(Fe),this.$$.deleteScheduled=!0,this}function Le(){}function We(e,t,r){if(void 0===e[t].overloadTable){var n=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||me("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[n.argCount]=n}}function He(e,t,r,n,o,i,a,s){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=a,this.downcast=s,this.pureVirtualFunctions=[]}function Ve(e,t,r){for(;t!==r;)t.upcast||me("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function qe(e,t){if(null===t)return this.isReference&&me("null is not a valid "+this.name),0;t.$$||me('Cannot pass "'+vt(t)+'" as a '+this.name),t.$$.ptr||me("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ve(t.$$.ptr,r,this.registeredClass)}function Ye(e,t){var r;if(null===t)return this.isReference&&me("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||me('Cannot pass "'+vt(t)+'" as a '+this.name),t.$$.ptr||me("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&me("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var n=t.$$.ptrType.registeredClass;if(r=Ve(t.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&me("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:me("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var o=t.clone();r=this.rawShare(r,mt.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:me("Unsupporting sharing policy")}return r}function Ge(e,t){if(null===t)return this.isReference&&me("null is not a valid "+this.name),0;t.$$||me('Cannot pass "'+vt(t)+'" as a '+this.name),t.$$.ptr||me("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&me("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ve(t.$$.ptr,r,this.registeredClass)}function Je(e){return this.fromWireType(C[e>>2])}function Xe(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Ke(e){this.rawDestructor&&this.rawDestructor(e)}function Ze(e){null!==e&&e.delete()}function Qe(e,t,r,n,o,i,a,s,u,c,f){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=f,o||void 0!==t.baseClass?this.toWireType=Ye:n?(this.toWireType=qe,this.destructorFunction=null):(this.toWireType=Ge,this.destructorFunction=null)}var et=[];function tt(e){var t=et[e];return t||(e>=et.length&&(et.length=e+1),et[e]=t=O.get(e)),t}function rt(t,r,n){return t.includes("j")?function(t,r,n){var o=e["dynCall_"+t];return n&&n.length?o.apply(null,[r].concat(n)):o.call(null,r)}(t,r,n):tt(r).apply(null,n)}function nt(e,t){var r,n,o,i=(e=ie(e)).includes("j")?(r=e,n=t,o=[],function(){return o.length=0,Object.assign(o,arguments),rt(r,n,o)}):tt(t);return"function"!=typeof i&&me("unknown function pointer with signature "+e+": "+t),i}var ot=void 0;function it(e){var t=Gt(e),r=ie(t);return Yt(t),r}function at(e,t){var r=[],n={};throw t.forEach((function e(t){n[t]||se[t]||(ue[t]?ue[t].forEach(e):(r.push(t),n[t]=!0))})),new ot(e+": "+r.map(it).join([", "]))}function st(e,t){for(var r=[],n=0;n>2]);return r}function ut(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ct(e,t,r,n,i){var a=t.length;a<2&&me("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=null!==t[1]&&null!==r,u=!1,c=1;c0?", ":"")+d),p+=(f?"var rv = ":"")+"invoker(fn"+(d.length>0?", ":"")+d+");\n",u)p+="runDestructors(destructors);\n";else for(c=s?1:2;c4&&0==--lt[e].refcount&&(lt[e]=void 0,ft.push(e))}function pt(){for(var e=0,t=5;t>2])};case 3:return function(e){return this.fromWireType(M[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function wt(e,t,r){switch(t){case 0:return r?function(e){return P[e]}:function(e){return T[e]};case 1:return r?function(e){return S[e>>1]}:function(e){return D[e>>1]};case 2:return r?function(e){return C[e>>2]}:function(e){return A[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var gt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function _t(e,t){for(var r=e,n=r>>1,o=n+t/2;!(n>=o)&&D[n];)++n;if((r=n<<1)-e>32&>)return gt.decode(T.subarray(e,r));for(var i="",a=0;!(a>=t/2);++a){var s=S[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function Et(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,o=(r-=2)<2*e.length?r/2:e.length,i=0;i>1]=a,t+=2}return S[t>>1]=0,t-n}function bt(e){return 2*e.length}function kt(e,t){for(var r=0,n="";!(r>=t/4);){var o=C[e+4*r>>2];if(0==o)break;if(++r,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function Pt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var n=t,o=n+r-4,i=0;i=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i)),C[t>>2]=a,(t+=4)+4>o)break}return C[t>>2]=0,t-n}function Tt(e){for(var t=0,r=0;r=55296&&n<=57343&&++r,t+=4}return t}var St,Dt={};St=m?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:function(){return performance.now()};var Ct={};function At(){if(!At.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":o(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:d||"./this.program"};for(var t in Ct)void 0===Ct[t]?delete e[t]:e[t]=Ct[t];var r=[];for(var t in e)r.push(t+"="+e[t]);At.strings=r}return At.strings}var Ft={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t=Ft.isAbs(e),r="/"===e.substr(-1);return(e=Ft.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=Ft.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=Ft.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ft.normalize(e.join("/"))},join2:function(e,t){return Ft.normalize(e+"/"+t)}},Mt={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:Rt.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t=Ft.isAbs(n)}return(t?"/":"")+(e=Ft.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=Mt.resolve(e).substr(1),t=Mt.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?r:N(e)+1,o=new Array(n),i=R(e,o,0,o.length);return t&&(o.length=i),o}var xt={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){xt.ttys[e]={input:[],output:[],ops:t},Rt.registerDevice(e,xt.stream_ops)},stream_ops:{open:function(e){var t=xt.ttys[e.node.rdev];if(!t)throw new Rt.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,n,o){if(!e.tty||!e.tty.ops.get_char)throw new Rt.ErrnoError(60);for(var i=0,a=0;a0?r.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=Ot(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(g(j(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g(j(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(_(j(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(j(e.output,0)),e.output=[])}}};function jt(e){V()}var $t={ops_table:null,mount:function(e){return $t.createNode(null,"/",16895,0)},createNode:function(e,t,r,n){if(Rt.isBlkdev(r)||Rt.isFIFO(r))throw new Rt.ErrnoError(63);$t.ops_table||($t.ops_table={dir:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr,lookup:$t.node_ops.lookup,mknod:$t.node_ops.mknod,rename:$t.node_ops.rename,unlink:$t.node_ops.unlink,rmdir:$t.node_ops.rmdir,readdir:$t.node_ops.readdir,symlink:$t.node_ops.symlink},stream:{llseek:$t.stream_ops.llseek}},file:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr},stream:{llseek:$t.stream_ops.llseek,read:$t.stream_ops.read,write:$t.stream_ops.write,allocate:$t.stream_ops.allocate,mmap:$t.stream_ops.mmap,msync:$t.stream_ops.msync}},link:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr,readlink:$t.node_ops.readlink},stream:{}},chrdev:{node:{getattr:$t.node_ops.getattr,setattr:$t.node_ops.setattr},stream:Rt.chrdev_stream_ops}});var o=Rt.createNode(e,t,r,n);return Rt.isDir(o.mode)?(o.node_ops=$t.ops_table.dir.node,o.stream_ops=$t.ops_table.dir.stream,o.contents={}):Rt.isFile(o.mode)?(o.node_ops=$t.ops_table.file.node,o.stream_ops=$t.ops_table.file.stream,o.usedBytes=0,o.contents=null):Rt.isLink(o.mode)?(o.node_ops=$t.ops_table.link.node,o.stream_ops=$t.ops_table.link.stream):Rt.isChrdev(o.mode)&&(o.node_ops=$t.ops_table.chrdev.node,o.stream_ops=$t.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[t]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=Rt.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Rt.isDir(e.mode)?t.size=4096:Rt.isFile(e.mode)?t.size=e.usedBytes:Rt.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&$t.resizeFileStorage(e,t.size)},lookup:function(e,t){throw Rt.genericErrors[44]},mknod:function(e,t,r,n){return $t.createNode(e,t,r,n)},rename:function(e,t,r){if(Rt.isDir(e.mode)){var n;try{n=Rt.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new Rt.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=Rt.lookupNode(e,t);for(var n in r.contents)throw new Rt.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var n=$t.createNode(e,t,41471,0);return n.link=r,n},readlink:function(e){if(!Rt.isLink(e.mode))throw new Rt.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),r);else for(var s=0;s0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=Mt.resolve(Rt.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new Rt.ErrnoError(32);for(var r=Ft.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),n=Rt.root,o="/",i=0;i40)throw new Rt.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var t;;){if(Rt.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,n=0;n>>0)%Rt.nameTable.length},hashAddNode:function(e){var t=Rt.hashName(e.parent.id,e.name);e.name_next=Rt.nameTable[t],Rt.nameTable[t]=e},hashRemoveNode:function(e){var t=Rt.hashName(e.parent.id,e.name);if(Rt.nameTable[t]===e)Rt.nameTable[t]=e.name_next;else for(var r=Rt.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=Rt.mayLookup(e);if(r)throw new Rt.ErrnoError(r,e);for(var n=Rt.hashName(e.id,t),o=Rt.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===t)return o}return Rt.lookup(e,t)},createNode:function(e,t,r,n){var o=new Rt.FSNode(e,t,r,n);return Rt.hashAddNode(o),o},destroyNode:function(e){Rt.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=Rt.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return Rt.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2},mayLookup:function(e){var t=Rt.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{return Rt.lookupNode(e,t),20}catch(e){}return Rt.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var n;try{n=Rt.lookupNode(e,t)}catch(e){return e.errno}var o=Rt.nodePermissions(e,"wx");if(o)return o;if(r){if(!Rt.isDir(n.mode))return 54;if(Rt.isRoot(n)||Rt.getPath(n)===Rt.cwd())return 10}else if(Rt.isDir(n.mode))return 31;return 0},mayOpen:function(e,t){return e?Rt.isLink(e.mode)?32:Rt.isDir(e.mode)&&("r"!==Rt.flagsToPermissionString(t)||512&t)?31:Rt.nodePermissions(e,Rt.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Rt.MAX_OPEN_FDS,r=e;r<=t;r++)if(!Rt.streams[r])return r;throw new Rt.ErrnoError(33)},getStream:function(e){return Rt.streams[e]},createStream:function(e,t,r){Rt.FSStream||(Rt.FSStream=function(){this.shared={}},Rt.FSStream.prototype={},Object.defineProperties(Rt.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new Rt.FSStream,e);var n=Rt.nextfd(t,r);return e.fd=n,Rt.streams[n]=e,e},closeStream:function(e){Rt.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=Rt.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new Rt.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){Rt.devices[e]={stream_ops:t}},getDevice:function(e){return Rt.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),Rt.syncFSRequests++,Rt.syncFSRequests>1&&_("warning: "+Rt.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Rt.getMounts(Rt.root.mount),n=0;function o(e){return Rt.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:function(e,t,r){var n,o="/"===r,i=!r;if(o&&Rt.root)throw new Rt.ErrnoError(10);if(!o&&!i){var a=Rt.lookupPath(r,{follow_mount:!1});if(r=a.path,n=a.node,Rt.isMountpoint(n))throw new Rt.ErrnoError(10);if(!Rt.isDir(n.mode))throw new Rt.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?Rt.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var t=Rt.lookupPath(e,{follow_mount:!1});if(!Rt.isMountpoint(t.node))throw new Rt.ErrnoError(28);var r=t.node,n=r.mounted,o=Rt.getMounts(n);Object.keys(Rt.nameTable).forEach((function(e){for(var t=Rt.nameTable[e];t;){var r=t.name_next;o.includes(t.mount)&&Rt.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(n);r.mount.mounts.splice(i,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var n=Rt.lookupPath(e,{parent:!0}).node,o=Ft.basename(e);if(!o||"."===o||".."===o)throw new Rt.ErrnoError(28);var i=Rt.mayCreate(n,o);if(i)throw new Rt.ErrnoError(i);if(!n.node_ops.mknod)throw new Rt.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,Rt.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,Rt.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),n="",o=0;o1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var n=Rt.open(e,r.flags),o=Rt.stat(e).size,i=new Uint8Array(o);return Rt.read(n,i,0,o,0),"utf8"===r.encoding?t=j(i,0):"binary"===r.encoding&&(t=i),Rt.close(n),t},writeFile:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var n=Rt.open(e,r.flags,r.mode);if("string"==typeof t){var o=new Uint8Array(N(t)+1),i=R(t,o,0,o.length);Rt.write(n,o,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Rt.write(n,t,0,t.byteLength,void 0,r.canOwn)}Rt.close(n)},cwd:function(){return Rt.currentPath},chdir:function(e){var t=Rt.lookupPath(e,{follow:!0});if(null===t.node)throw new Rt.ErrnoError(44);if(!Rt.isDir(t.node.mode))throw new Rt.ErrnoError(54);var r=Rt.nodePermissions(t.node,"x");if(r)throw new Rt.ErrnoError(r);Rt.currentPath=t.path},createDefaultDirectories:function(){Rt.mkdir("/tmp"),Rt.mkdir("/home"),Rt.mkdir("/home/web_user")},createDefaultDevices:function(){Rt.mkdir("/dev"),Rt.registerDevice(Rt.makedev(1,3),{read:function(){return 0},write:function(e,t,r,n,o){return n}}),Rt.mkdev("/dev/null",Rt.makedev(1,3)),xt.register(Rt.makedev(5,0),xt.default_tty_ops),xt.register(Rt.makedev(6,0),xt.default_tty1_ops),Rt.mkdev("/dev/tty",Rt.makedev(5,0)),Rt.mkdev("/dev/tty1",Rt.makedev(6,0));var e=function(){if("object"==("undefined"==typeof crypto?"undefined":o(crypto))&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(m)try{var t=require("crypto");return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){return V("randomDevice")}}();Rt.createDevice("/dev","random",e),Rt.createDevice("/dev","urandom",e),Rt.mkdir("/dev/shm"),Rt.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Rt.mkdir("/proc");var e=Rt.mkdir("/proc/self");Rt.mkdir("/proc/self/fd"),Rt.mount({mount:function(){var t=Rt.createNode(e,"fd",16895,73);return t.node_ops={lookup:function(e,t){var r=+t,n=Rt.getStream(r);if(!n)throw new Rt.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){e.stdin?Rt.createDevice("/dev","stdin",e.stdin):Rt.symlink("/dev/tty","/dev/stdin"),e.stdout?Rt.createDevice("/dev","stdout",null,e.stdout):Rt.symlink("/dev/tty","/dev/stdout"),e.stderr?Rt.createDevice("/dev","stderr",null,e.stderr):Rt.symlink("/dev/tty1","/dev/stderr"),Rt.open("/dev/stdin",0),Rt.open("/dev/stdout",1),Rt.open("/dev/stderr",1)},ensureErrnoError:function(){Rt.ErrnoError||(Rt.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Rt.ErrnoError.prototype=new Error,Rt.ErrnoError.prototype.constructor=Rt.ErrnoError,[44].forEach((function(e){Rt.genericErrors[e]=new Rt.ErrnoError(e),Rt.genericErrors[e].stack=""})))},staticInit:function(){Rt.ensureErrnoError(),Rt.nameTable=new Array(4096),Rt.mount($t,{},"/"),Rt.createDefaultDirectories(),Rt.createDefaultDevices(),Rt.createSpecialDirectories(),Rt.filesystems={MEMFS:$t}},init:function(t,r,n){Rt.init.initialized=!0,Rt.ensureErrnoError(),e.stdin=t||e.stdin,e.stdout=r||e.stdout,e.stderr=n||e.stderr,Rt.createStandardStreams()},quit:function(){Rt.init.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var t=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+t),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):Ot(o.responseText||"",!0)}(t,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,g("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:r};var u=Rt.createFile(e,t,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function f(e,t,r,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s>2]=n.dev,C[r+4>>2]=0,C[r+8>>2]=n.ino,C[r+12>>2]=n.mode,C[r+16>>2]=n.nlink,C[r+20>>2]=n.uid,C[r+24>>2]=n.gid,C[r+28>>2]=n.rdev,C[r+32>>2]=0,J=[n.size>>>0,(G=n.size,+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],C[r+40>>2]=J[0],C[r+44>>2]=J[1],C[r+48>>2]=4096,C[r+52>>2]=n.blocks,J=[Math.floor(n.atime.getTime()/1e3)>>>0,(G=Math.floor(n.atime.getTime()/1e3),+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],C[r+56>>2]=J[0],C[r+60>>2]=J[1],C[r+64>>2]=0,J=[Math.floor(n.mtime.getTime()/1e3)>>>0,(G=Math.floor(n.mtime.getTime()/1e3),+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],C[r+72>>2]=J[0],C[r+76>>2]=J[1],C[r+80>>2]=0,J=[Math.floor(n.ctime.getTime()/1e3)>>>0,(G=Math.floor(n.ctime.getTime()/1e3),+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],C[r+88>>2]=J[0],C[r+92>>2]=J[1],C[r+96>>2]=0,J=[n.ino>>>0,(G=n.ino,+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],C[r+104>>2]=J[0],C[r+108>>2]=J[1],0},doMsync:function(e,t,r,n,o){var i=T.slice(e,e+r);Rt.msync(t,i,o,r,n)},varargs:void 0,get:function(){return Nt.varargs+=4,C[Nt.varargs-4>>2]},getStr:function(e){return $(e)},getStreamFromFD:function(e){var t=Rt.getStream(e);if(!t)throw new Rt.ErrnoError(8);return t}};function Bt(e){return e%4==0&&(e%100!=0||e%400==0)}var Ut=[31,29,31,30,31,30,31,31,30,31,30,31],zt=[31,28,31,30,31,30,31,31,30,31,30,31];function It(e,t,r,n){var o=C[n+40>>2],i={tm_sec:C[n>>2],tm_min:C[n+4>>2],tm_hour:C[n+8>>2],tm_mday:C[n+12>>2],tm_mon:C[n+16>>2],tm_year:C[n+20>>2],tm_wday:C[n+24>>2],tm_yday:C[n+28>>2],tm_isdst:C[n+32>>2],tm_gmtoff:C[n+36>>2],tm_zone:o?$(o):""},a=$(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)a=a.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"];function l(e,t,r){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}var n;return 0===(n=r(e.getFullYear()-t.getFullYear()))&&0===(n=r(e.getMonth()-t.getMonth()))&&(n=r(e.getDate()-t.getDate())),n}function h(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var n=Bt(r.getFullYear()),o=r.getMonth(),i=(n?Ut:zt)[o];if(!(t>i-r.getDate()))return r.setDate(r.getDate()+t),r;t-=i-r.getDate()+1,r.setDate(1),o<11?r.setMonth(o+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=h(r),i=h(n);return p(o,t)<=0?p(i,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var v={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return f[e.tm_mon].substring(0,3)},"%B":function(e){return f[e.tm_mon]},"%C":function(e){return d((e.tm_year+1900)/100|0,2)},"%d":function(e){return d(e.tm_mday,2)},"%e":function(e){return l(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return d(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(e){return d(e.tm_mday+function(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}(Bt(e.tm_year+1900)?Ut:zt,e.tm_mon-1),3)},"%m":function(e){return d(e.tm_mon+1,2)},"%M":function(e){return d(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return d(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return d(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&Bt(e.tm_year)||(t=1)}}else{t=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&Bt(e.tm_year%400-1))&&t++}return d(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return d(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in a=a.replace(/%%/g,"\0\0"),v)a.includes(u)&&(a=a.replace(new RegExp(u,"g"),v[u](i)));var y=Ot(a=a.replace(/\0\0/g,"%"),!1);return y.length>t?0:(function(e,t){P.set(e,t)}(y,e),y.length-1)}!function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);oe=e}(),he=e.BindingError=pe(Error,"BindingError"),ve=e.InternalError=pe(Error,"InternalError"),Le.prototype.isAliasOf=_e,Le.prototype.clone=Be,Le.prototype.delete=Ue,Le.prototype.isDeleted=ze,Le.prototype.deleteLater=Ie,e.getInheritedInstanceCount=De,e.getLiveInheritedInstances=Ce,e.flushPendingDeletes=Fe,e.setDelayFunction=Oe,Qe.prototype.getPointee=Xe,Qe.prototype.destructor=Ke,Qe.prototype.argPackAdvance=8,Qe.prototype.readValueFromPointer=Je,Qe.prototype.deleteObject=Ze,Qe.prototype.fromWireType=Re,ot=e.UnboundTypeError=pe(Error,"UnboundTypeError"),e.count_emval_handles=pt,e.get_first_emval=ht;var Lt=function(e,t,r,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Rt.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n},Wt=365,Ht=146;Object.defineProperties(Lt.prototype,{read:{get:function(){return(this.mode&Wt)===Wt},set:function(e){e?this.mode|=Wt:this.mode&=-366}},write:{get:function(){return(this.mode&Ht)===Ht},set:function(e){e?this.mode|=Ht:this.mode&=-147}},isFolder:{get:function(){return Rt.isDir(this.mode)}},isDevice:{get:function(){return Rt.isChrdev(this.mode)}}}),Rt.FSNode=Lt,Rt.staticInit();var Vt={c:function(e){return qt(e+24)+24},d:function(e,t,r){throw new re(e).init(t,r),e},r:function(e,t,r,n,o){},E:function(e,t,r,n,o){var i=ne(r);ge(e,{name:t=ie(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===r)n=P;else if(2===r)n=S;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);n=C}return this.fromWireType(n[e>>i])},destructorFunction:null})},o:function(t,r,n,o,i,a,s,u,c,f,l,d,p){l=ie(l),a=nt(i,a),u&&(u=nt(s,u)),f&&(f=nt(c,f)),p=nt(d,p);var h=le(l);!function(t,r,n){e.hasOwnProperty(t)?((void 0===n||void 0!==e[t].overloadTable&&void 0!==e[t].overloadTable[n])&&me("Cannot register public name '"+t+"' twice"),We(e,t,t),e.hasOwnProperty(n)&&me("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),e[t].overloadTable[n]=r):(e[t]=r,void 0!==n&&(e[t].numArguments=n))}(h,(function(){at("Cannot construct "+l+" due to unbound types",[o])})),we([t,r,n],o?[o]:[],(function(r){var n,i;r=r[0],i=o?(n=r.registeredClass).instancePrototype:Le.prototype;var s=de(h,(function(){if(Object.getPrototypeOf(this)!==c)throw new he("Use 'new' to construct "+l);if(void 0===d.constructor_body)throw new he(l+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new he("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),c=Object.create(i,{constructor:{value:s}});s.prototype=c;var d=new He(l,s,c,p,n,a,u,f),m=new Qe(l,d,!0,!1,!1),v=new Qe(l+"*",d,!1,!1,!1),y=new Qe(l+" const*",d,!1,!0,!1);return Se[t]={pointerType:v,constPointerType:y},function(t,r,n){e.hasOwnProperty(t)||ye("Replacing nonexistant public symbol"),void 0!==e[t].overloadTable&&void 0!==n?e[t].overloadTable[n]=r:(e[t]=r,e[t].argCount=n)}(h,s),[m,v,y]}))},n:function(e,t,r,n,o,i){b(t>0);var a=st(t,r);o=nt(n,o),we([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new he("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=function(){at("Cannot construct "+e.name+" due to unbound types",a)},we([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[t-1]=ct(r,n,null,o,i),[]})),[]}))},h:function(e,t,r,n,o,i,a,s){var u=st(r,n);t=ie(t),i=nt(o,i),we([],[e],(function(e){var n=(e=e[0]).name+"."+t;function o(){at("Cannot call "+n+" due to unbound types",u)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,f=c[t];return void 0===f||void 0===f.overloadTable&&f.className!==e.name&&f.argCount===r-2?(o.argCount=r-2,o.className=e.name,c[t]=o):(We(c,t,n),c[t].overloadTable[r-2]=o),we([],u,(function(o){var s=ct(n,o,e,i,a);return void 0===c[t].overloadTable?(s.argCount=r-2,c[t]=s):c[t].overloadTable[r-2]=s,[]})),[]}))},D:function(e,t){ge(e,{name:t=ie(t),fromWireType:function(e){var t=mt.toValue(e);return dt(e),t},toWireType:function(e,t){return mt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Je,destructorFunction:null})},l:function(e,t,r){var n=ne(r);ge(e,{name:t=ie(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:yt(t,n),destructorFunction:null})},b:function(e,t,r,n,o){t=ie(t);var i=ne(r),a=function(e){return e};if(0===n){var s=32-8*r;a=function(e){return e<>>s}}var u=t.includes("unsigned");ge(e,{name:t,fromWireType:a,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:wt(t,i,0!==n),destructorFunction:null})},a:function(e,t,r){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(e){var t=A,r=t[e>>=2],o=t[e+1];return new n(k,o,r)}ge(e,{name:r=ie(r),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},k:function(e,t){var r="std::string"===(t=ie(t));ge(e,{name:t,fromWireType:function(e){var t,n=A[e>>2],o=e+4;if(r)for(var i=o,a=0;a<=n;++a){var s=o+a;if(a==n||0==T[s]){var u=$(i,s-i);void 0===t?t=u:(t+=String.fromCharCode(0),t+=u),i=s+1}}else{var c=new Array(n);for(a=0;a>2]=n,r&&o)R(t,T,a,n+1);else if(o)for(var s=0;s255&&(Yt(a),me("String has UTF-16 code units that do not fit in 8 bits")),T[a+s]=u}else for(s=0;s>2],a=i(),u=e+4,c=0;c<=o;++c){var f=e+4+c*t;if(c==o||0==a[f>>s]){var l=n(u,f-u);void 0===r?r=l:(r+=String.fromCharCode(0),r+=l),u=f+t}}return Yt(e),r},toWireType:function(e,n){"string"!=typeof n&&me("Cannot pass non-string to C++ string type "+r);var i=a(n),u=qt(4+i+t);return A[u>>2]=i>>s,o(n,u+4,i+t),null!==e&&e.push(Yt,u),u},argPackAdvance:8,readValueFromPointer:Je,destructorFunction:function(e){Yt(e)}})},F:function(e,t){ge(e,{isVoid:!0,name:t=ie(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},z:function(){return!0},e:dt,m:function(e){e>4&&(lt[e].refcount+=1)},B:function(e){return mt.toHandle(void 0===(r=Dt[t=e])?ie(t):r);var t,r},G:function(){return mt.toHandle({})},p:function(e,t,r){e=mt.toValue(e),t=mt.toValue(t),r=mt.toValue(r),e[t]=r},s:function(e,t){var r,n,o;n="_emval_take_value",void 0===(o=se[r=e])&&me(n+" has unknown type "+it(r));var i=(e=o).readValueFromPointer(t);return mt.toHandle(i)},f:function(){V("")},y:St,A:function(e,t,r){T.copyWithin(e,t,t+r)},u:function(e){T.length,V("OOM")},v:function(e,t){var r=0;return At().forEach((function(n,o){var i=t+r;A[e+4*o>>2]=i,function(e,t,r){for(var n=0;n>0]=e.charCodeAt(n);r||(P[t>>0]=0)}(n,i),r+=n.length+1})),0},w:function(e,t){var r=At();A[e>>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),A[t>>2]=n,0},C:function(e){try{var t=Nt.getStreamFromFD(e);return Rt.close(t),0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}},x:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=A[t+4>>2];t+=8;var u=Rt.read(e,P,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}},q:function(e,t,r,n,o){try{var i=(u=r)+2097152>>>0<4194305-!!(s=t)?(s>>>0)+4294967296*u:NaN;if(isNaN(i))return 61;var a=Nt.getStreamFromFD(e);return Rt.llseek(a,i,n),J=[a.position>>>0,(G=a.position,+Math.abs(G)>=1?G>0?(0|Math.min(+Math.floor(G/4294967296),4294967295))>>>0:~~+Math.ceil((G-+(~~G>>>0))/4294967296)>>>0:0)],C[o>>2]=J[0],C[o+4>>2]=J[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}var s,u},j:function(e,t,r,n){try{var o=function(e,t,r,n){for(var o=0,i=0;i>2],s=A[t+4>>2];t+=8;var u=Rt.write(e,P,a,s,n);if(u<0)return-1;o+=u}return o}(Nt.getStreamFromFD(e),t,r);return A[n>>2]=o,0}catch(e){if(void 0===Rt||!(e instanceof Rt.ErrnoError))throw e;return e.errno}},i:function(e){},t:function(e,t,r,n){return It(e,t,r,n)}};!function(){var t={a:Vt};function n(t,r){var n,o,i=t.exports;e.asm=i,w=e.asm.H,n=w.buffer,k=n,e.HEAP8=P=new Int8Array(n),e.HEAP16=S=new Int16Array(n),e.HEAP32=C=new Int32Array(n),e.HEAPU8=T=new Uint8Array(n),e.HEAPU16=D=new Uint16Array(n),e.HEAPU32=A=new Uint32Array(n),e.HEAPF32=F=new Float32Array(n),e.HEAPF64=M=new Float64Array(n),O=e.asm.J,o=e.asm.I,U.unshift(o),H()}function o(e){n(e.instance)}function a(e){return function(){if(!y&&(p||h)){if("function"==typeof fetch&&!Z(q))return fetch(q,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+q+"'";return e.arrayBuffer()})).catch((function(){return Q(q)}));if(i)return new Promise((function(e,t){i(q,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(q)}))}().then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(e,(function(e){_("failed to asynchronously prepare wasm: "+e),V(e)}))}if(W(),e.instantiateWasm)try{return e.instantiateWasm(t,n)}catch(e){return _("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||K(q)||Z(q)||m||"function"!=typeof fetch?a(o):fetch(q,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(o,(function(e){return _("wasm streaming compile failed: "+e),_("falling back to ArrayBuffer instantiation"),a(o)}))}))).catch(r)}(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.I).apply(null,arguments)};var qt=e._malloc=function(){return(qt=e._malloc=e.asm.K).apply(null,arguments)},Yt=e._free=function(){return(Yt=e._free=e.asm.L).apply(null,arguments)},Gt=e.___getTypeName=function(){return(Gt=e.___getTypeName=e.asm.M).apply(null,arguments)};e.___embind_register_native_and_builtin_types=function(){return(e.___embind_register_native_and_builtin_types=e.asm.N).apply(null,arguments)};var Jt,Xt=e.___cxa_is_pointer_type=function(){return(Xt=e.___cxa_is_pointer_type=e.asm.O).apply(null,arguments)};function Kt(r){function n(){Jt||(Jt=!0,e.calledRun=!0,E||(e.noFSInit||Rt.init.initialized||Rt.init(),Rt.ignorePermissions=!1,te(U),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)t=e.postRun.shift(),z.unshift(t);var t;te(z)}()))}I>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)t=e.preRun.shift(),B.unshift(t);var t;te(B)}(),I>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),n()}),1)):n()))}if(e.dynCall_ji=function(){return(e.dynCall_ji=e.asm.P).apply(null,arguments)},e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.Q).apply(null,arguments)},e.dynCall_viijii=function(){return(e.dynCall_viijii=e.asm.R).apply(null,arguments)},e.dynCall_iiiiij=function(){return(e.dynCall_iiiiij=e.asm.S).apply(null,arguments)},e.dynCall_iiiiijj=function(){return(e.dynCall_iiiiijj=e.asm.T).apply(null,arguments)},e.dynCall_iiiiiijj=function(){return(e.dynCall_iiiiiijj=e.asm.U).apply(null,arguments)},L=function e(){Jt||Kt(),Jt||(L=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return Kt(),e.ready}),w="debug",g="warn",_={debug:!1,debugLevel:g,debugUuid:""},E=s((function e(t){r(this,e),this.log=function(e){if(t._opt.debug&&t._opt.debugLevel==w){for(var r,n=t._opt.debugUuid?"[".concat(t._opt.debugUuid,"]"):"",o=arguments.length,i=new Array(o>1?o-1:0),a=1;a1?o-1:0),a=1;a1?o-1:0),a=1;a1?r-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:{};r(this,n),(e=t.call(this))._opt={},e.TAG_NAME="OcclusionDetector",Object.keys(o).forEach((function(e){if(void 0===o[e])throw new Error('JbProOcclusionDetector option "'.concat(e,'" can not be undefined'))})),e.originalOptions=o;var i=P(),a=Object.assign({},i,o);return e._opt=a,e.debug=new E(c(e)),e.module=null,e.detector=null,e.startTimestamp=null,e.width=o.width||0,e.height=o.height||0,e.debug.log(e.TAG_NAME,"init",JSON.stringify(e._opt)),e}return s(n,[{key:"destroy",value:function(){this.off(),this.detector&&(this.detector.clear(),this.detector.delete(),this.detector=null),this.module&&(this.module=null),this.startTimestamp=null,this.debug.log(this.TAG_NAME,"destroy")}},{key:"load",value:function(){var e=this;return new Promise((function(t,r){y().then((function(n){e.module=n,e.module.OcclusionDetector?(e.detector=new e.module.OcclusionDetector(e),t()):r("load jessibuca occlusion detector fail")})).catch((function(e){console.error(e),r("load jessibuca occlusion detector error")}))}))}},{key:"updateConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.width&&e.height&&(this.width=e.width,this.height=e.height)}},{key:"check",value:function(e){return this._isVideoOcclusion(e.data,e.width,e.height)}},{key:"_isVideoOcclusion",value:function(e,t,r){return this._check("isVideoOcclusion",e,t,r)}},{key:"_check",value:function(e,t,r,n){if(function(e){return null==e}(t)||!k(this.detector))return!1;if(!e||!this.detector[e])return!1;if(!(r&&n&&this.width&&this.height))return!1;var o=r||this.width,i=n||this.height;if(null===this.startTimestamp&&(this.startTimestamp=Date.now()),Date.now()-this.startTimestamp>6e5)return!1;var a=this.detector[e](t,o,i),s=!1;return a&&(s=a.result),s}}]),n}(b);window.JessibucaProOcclusionDetector=S})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-recorder-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-recorder-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..817bf01666ef1cc4aaa160ba070db1260ca1e9ed --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-recorder-demo.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("screenfull")):"function"==typeof define&&define.amd?define(["screenfull"],e):(t="undefined"!=typeof globalThis?globalThis:t||self)["jessibuca-pro-recorder"]=e()}(this,(function(){"use strict";class t{on(t,e,i){const s=this.e||(this.e={});return(s[t]||(s[t]=[])).push({fn:e,ctx:i}),this}once(t,e,i){const s=this;function r(){s.off(t,r);for(var a=arguments.length,n=new Array(a),o=0;o1?i-1:0),r=1;r{delete i[t]})),void delete this.e;const s=i[t],r=[];if(s&&e)for(let t=0,i=s.length;t>1,(1&i)<<7|s<<3])}function Tt(t){return t[0]>>4===H.AAC}const Et=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Bt=Et;function kt(t,e){if("mp4a.40.2"===t){if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}function Lt(t){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/t}class It{constructor(t){this.buffer=t,this.buflen=t.length,this.bufpos=0,this.bufoff=0,this.iserro=!1}read(t){let e=0,i=0;for(;t;){if(t<0||this.bufpos>=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+t>8?8-this.bufoff:t,e<<=i,e+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,t-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return e}look(t){let e=this.bufpos,i=this.bufoff,s=this.read(t);return this.bufpos=e,this.bufoff=i,s}read_golomb(){let t;for(t=0;0==this.read(1)&&!this.iserro;t++);return(1<{if(!function(t){const e=Object.prototype.toString;return"[object Number]"===e.call(t)}(s))return;e+=s;const r=Nt(),a=r-i;a>=1e3&&(t(e/a*1e3),i=r,e=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const t=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(t instanceof WebAssembly.Module)return new WebAssembly.Instance(t)instanceof WebAssembly.Instance}}catch(t){}})();const zt='"10-30-2023"';function Gt(){const t=window.navigator.userAgent;return!t.match(/Chrome/gi)&&!!t.match(/Safari/gi)}function Ot(t){if(null==t||""==t)return"0 Bytes";const e=new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");let i=0;const s=parseFloat(t);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+e[i]}function Ht(t,e){let i=window.URL.createObjectURL(e),s=window.document.createElement("a");s.download=t,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),function(){const t=window.navigator.userAgent.toLowerCase();return t&&/iphone|ipad|ipod|ios/.test(t)}()?1e3:0)}function Vt(t){return null==t}function Wt(t){return!Vt(t)}function Yt(t){var e;if(t>-1){var i=Math.floor(t/3600),s=Math.floor(t/60)%60,r=t%60;e=i<10?"0"+i+":":i+":",s<10&&(e+="0"),e+=s+":",(r=Math.round(r))<10&&(e+="0"),e+=r.toFixed(0)}return e}const $t=()=>{const t=window.navigator.userAgent;return/Chrome/i.test(t)};function jt(){return function(t){let e="";if("object"==typeof t)try{e=JSON.stringify(t),e=JSON.parse(e)}catch(i){e=t}else e=t;return e}(Ut)}function qt(t){return!0===t||"true"===t}function Kt(t){return!0!==t&&"true"!==t}function Xt(t){return t.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}class Jt{constructor(t){this.log=function(e){if(t._opt.debug&&t._opt.debugLevel==m){const a=t._opt.debugUuid?`[${t._opt.debugUuid}]`:"";for(var i=arguments.length,s=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),a=1;a3&&void 0!==arguments[3]?arguments[3]:{};if(!t)return;if(Array.isArray(e))return e.map((e=>this.proxy(t,e,i,s)));t.addEventListener(e,i,s);const r=()=>{"function"==typeof t.removeEventListener&&t.removeEventListener(e,i,s)};return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((t=>t())),this.destroys=[]}}class Qt{constructor(t){this.player=t,this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1}destroy(){this.isDestroyed=!0,this.resetInit()}resetInit(){this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1}updateVideoInfo(t){Wt(t.encTypeCode)&&(this.videoInfo.encType=N[t.encTypeCode],this.videoInfo.encTypeCode=t.encTypeCode),Wt(t.encType)&&(this.videoInfo.encType=t.encType),Wt(t.width)&&(this.videoInfo.width=t.width),Wt(t.height)&&(this.videoInfo.height=t.height),Wt(this.videoInfo.encType)&&Wt(this.videoInfo.height)&&Wt(this.videoInfo.width)&&!this.init&&(this.player.emit(k.videoInfo,this.videoInfo),this.init=!0)}hasInit(){return this.init}getVideoInfo(){return this.videoInfo}}class te{constructor(t){this.player=t,this.audioInfo={encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}destroy(){this.isDestroyed=!0,this.resetInit()}resetInit(){this.audioInfo={encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}updateAudioInfo(t){t.encTypeCode&&(this.audioInfo.encTypeCode=t.encTypeCode,this.audioInfo.encType=$[t.encTypeCode]),t.channels&&(this.audioInfo.channels=t.channels),t.sampleRate&&(this.audioInfo.sampleRate=t.sampleRate),t.depth&&(this.audioInfo.depth=t.depth),Wt(this.audioInfo.sampleRate)&&Wt(this.audioInfo.channels)&&Wt(this.audioInfo.encType)&&!this.init&&(this.player.emit(k.audioInfo,this.audioInfo),this.init=!0)}hasInit(){return this.init}getAudioInfo(){return this.audioInfo}}function ee(){function t(t){return!0===t||"true"===t}function e(t){return!1===t||"false"===t}const i="The user aborted a request",s="AbortError",r="AbortError",a="fetch",n="destroy",o="buffer",h="fetchError",l="fetchClose",d="fetchSuccess",u="idle",p="buffering",c="complete";let f=new class{constructor(){this._requestAbort=!1,this._status=u,this.writableStream=null,this.isChrome=!1,this.abortController=new AbortController}destroy(){this.abort(),this.writableStream&&e(this.writableStream.locked)&&this.writableStream.close().catch((t=>{})),this.writableStream=null,this._status=u}fetchStream(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=Object.assign({signal:this.abortController.signal},{headers:a.headers||{}});fetch(e,n).then((e=>{if(this._requestAbort)return this._status=u,void e.body.cancel();if(!function(t){return t.ok&&t.status>=200&&t.status<=299}(e))return this.abort(),void postMessage({cmd:h,message:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:d}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||t(this._requestAbort)?this._status=c:(this._status=p,postMessage({cmd:o,buffer:e},[e.buffer]))},close:()=>{this._status=c,postMessage({cmd:l})},abort:t=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=c);const e=t.toString();-1===e.indexOf(i)&&-1===e.indexOf(s)&&t.name!==r&&(this.abort(),postMessage({cmd:h,message:t.toString()}))}}),e.body.pipeTo(this.writableStream);else{const a=e.body.getReader(),n=()=>{a.read().then((e=>{let{done:i,value:s}=e;if(i)return this._status=c,void postMessage({cmd:l});this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||t(this._requestAbort)?this._status=c:(this._status=p,postMessage({cmd:o,buffer:s},[s.buffer]),n())})).catch((t=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=c);const e=t.toString();-1===e.indexOf(i)&&-1===e.indexOf(s)&&t.name!==r&&(this.abort(),postMessage({cmd:h,message:t.toString()}))}))};n()}})).catch((t=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==t.name&&(this.abort(),postMessage({cmd:h,message:t.toString()}))}))}abort(){if(this._requestAbort=!0,this._status!==p||e(f.isChrome)){if(this.abortController){try{this.abortController.abort()}catch(t){}this.abortController=null}}else this.abortController=null}};self.onmessage=e=>{const i=e.data;switch(i.cmd){case a:f.isChrome=t(i.isChrome),f.fetchStream(i.url,JSON.parse(i.options));break;case n:f.destroy(),f=null}}}class ie extends t{constructor(t){super(),this.TAG_NAME="FetchWorkerLoader",this.player=t,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.abortController=new AbortController,this.streamRate=Mt((e=>{t.emit(k.kBps,(e/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),t.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.fetchWorker&&(this.fetchWorker.postMessage({cmd:U}),this.fetchWorker.terminate(),this.fetchWorker=null),this._stopStreamRateInterval(),this.streamRate=null,this.player.debug.log(this.TAG_NAME,"destroy")}_initFetchWorker(){const t=Xt(ee.toString()),e=new Blob([t],{type:"text/javascript"});let i=URL.createObjectURL(e);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),1e4),s.onmessage=t=>{const{demux:e}=this.player,i=t.data;switch(i.cmd){case A:this.streamRate&&this.streamRate(i.buffer.byteLength),e.dispatch(i.buffer);break;case B:this.emit(k.streamSuccess),this._startStreamRateInterval();break;case E:e.close(),this.emit(k.streamEnd);break;case T:e.close(),this.emit(L.fetchError,i.message)}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.fetchWorker.postMessage({cmd:x,url:t,isChrome:$t(),options:JSON.stringify(e)})}getStreamType(){return a}}class se extends t{constructor(t){super(),this.player=t,this.socket=null,this.socketStatus=I,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=Mt((e=>{t.emit(k.kBps,(e/1024).toFixed(2))})),this.streamRateInterval=null,t.debug.log("WebsocketStream","init")}destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debug.log("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(){const t=this.player,{debug:e,events:{proxy:i},demux:s}=t;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer";const r=i(this.socket,"open",(()=>{e.log("WebsocketStream","socket open"),this.socketStatus=C,this.emit(k.streamSuccess),this.player.emit(k.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(t=>{this.streamRate&&this.streamRate(t.data.byteLength),this._handleMessage(t.data)})),n=i(this.socket,"close",(t=>{if(e.log("WebsocketStream",`socket close and code is ${t.code}`),1006===t.code&&e.error("WebsocketStream",`socket close abnormally and code is ${t.code}`),qt(this.requestAbort))return this.requestAbort=!1,void e.log("WebsocketStream","socket close and requestAbort is true");s.close(),this.socketStatus=D,this.player.emit(k.websocketClose),this.emit(k.streamEnd)})),o=i(this.socket,"error",(t=>{e.error("WebsocketStream","socket error",t),this.socketStatus=P,this.emit(L.websocketError,t),s.close(),e.log("WebsocketStream","socket error:",t.isTrusted?"websocket user aborted":"websocket error")}));this.socketDestroyFnList.push(r,a,n,o)}_closeWebSocket(){this.socketDestroyFnList.forEach((t=>t())),!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debug.log("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket=null,this.socketStatus=I,this.streamRate=null}_handleMessage(t){const{demux:e}=this.player;e?e.dispatch(t):this.player.debug.warn("WebsocketStream","websocket handle message demux is null")}fetchStream(t,e){this.wsUrl=t,this._createWebSocket()}sendMessage(t){this.socket?this.socketStatus===C?this.socket.send(t):this.player.debug.error("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debug.error("WebsocketStream","websocket send message socket is null")}resetFetchStream(){this._closeWebSocket(),this._createWebSocket()}getStreamType(){return o}}class re extends t{constructor(t){super(),this.player=t,this.transport=null,this.wtUrl=null,this.streamRate=Mt((e=>{t.emit(k.kBps,(e/1024).toFixed(2))})),this.streamRateInterval=null,t.debug.log("WebTransportLoader","init")}destroy(){this.abort(),this.off(),this.player.debug.log("WebTransportLoader","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebTransport(){const t=this.player,{debug:e,events:{proxy:i},demux:s}=t;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(k.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((t=>{t.readable.pipeTo(new WritableStream(s.input))}))})).catch((t=>{this.player.debug.warn("WebTransportLoader","_createWebTransport-ready",t)}))}catch(t){this.player.debug.warn("WebTransportLoader","_createWebTransport",t)}}fetchStream(t){this.wtUrl=t.replace(/^wt:/,"https:"),this._createWebTransport()}abort(){if(this.transport)try{this.transport.close(),this.transport=null}catch(t){this.transport=null}}getStreamType(){return h}}class ae extends t{constructor(t){super(),this.player=t,t.debug.log("HlsStream","init")}destroy(){this.off(),this.player.debug.log("HlsStream","destroy")}fetchStream(t){const{hlsDecoder:e}=this.player;e.loadSource(t).then((()=>{this.player.debug.log("HlsStream","loadSource success"),this.emit(k.streamSuccess)})).catch((t=>{this.emit(L.hlsError,t)}))}getStreamType(){return n}}class ne{constructor(t){return new(ne.getLoaderFactory(t._opt))(t)}static getLoaderFactory(t){const{protocol:a}=t;return a===i?ie:a===e?se:a===s?ae:a===r?re:void 0}}class oe{constructor(t){this._buffer=t,this._buffer_index=0,this._total_bytes=t.byteLength,this._total_bits=8*t.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let t=this._total_bytes-this._buffer_index;if(t<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let e=Math.min(4,t),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+e)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=e,this._current_word_bits_left=8*e}readBits(t){if(t>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),t<=this._current_word_bits_left){let e=this._current_word>>>32-t;return this._current_word<<=t,this._current_word_bits_left-=t,e}let e=this._current_word_bits_left?this._current_word:0;e>>>=32-this._current_word_bits_left;let i=t-this._current_word_bits_left;this._fillCurrentWord();let s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,e=e<>>t))return this._current_word<<=t,this._current_word_bits_left-=t,t;return this._fillCurrentWord(),t+this._skipLeadingZero()}readUEG(){let t=this._skipLeadingZero();return this.readBits(t+1)-1}readSEG(){let t=this.readUEG();return 1&t?t+1>>>1:-1*(t>>>1)}}class he{static _ebsp2rbsp(t){let e=t,i=e.byteLength,s=new Uint8Array(i),r=0;for(let t=0;t=2&&3===e[t]&&0===e[t-1]&&0===e[t-2]||(s[r]=e[t],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(t){let e=he._ebsp2rbsp(t),i=new oe(e);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let a=he.getProfileString(s),n=he.getLevelString(r),o=1,h=420,l=[0,420,422,444],d=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(o=i.readUEG(),3===o&&i.readBits(1),o<=3&&(h=l[o]),d=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let t=3!==o?8:12;for(let e=0;e0&&t<16?(S=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][t-1],v=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][t-1]):255===t&&(S=i.readByte()<<8|i.readByte(),v=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let t=i.readBits(32),e=i.readBits(32);x=i.readBool(),U=e,A=2*t,w=U/A}}let T=1;1===S&&1===v||(T=S/v);let E=0,B=0;if(0===o)E=1,B=2-_;else{E=3===o?1:2,B=(1===o?2:1)*(2-_)}let k=16*(c+1),L=16*(f+1)*(2-_);k-=(m+g)*E,L-=(y+b)*B;let I=Math.ceil(k*T);return i.destroy(),i=null,{profile_string:a,level_string:n,bit_depth:d,ref_frames:p,chroma_format:h,chroma_format_string:he.getChromaFormatString(h),frame_rate:{fixed:x,fps:w,fps_den:A,fps_num:U},sar_ratio:{width:S,height:v},codec_size:{width:k,height:L},present_size:{width:I,height:L}}}static parseSPS$2(t){let e=t.subarray(1,4),i="avc1.";for(let t=0;t<3;t++){let s=e[t].toString(16);s.length<2&&(s="0"+s),i+=s}let s=he._ebsp2rbsp(t),r=new oe(s);r.readByte();let a=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let o=he.getProfileString(a),h=he.getLevelString(n),l=1,d=420,u=[0,420,422,444],p=8,c=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(l=r.readUEG(),3===l&&r.readBits(1),l<=3&&(d=u[l]),p=r.readUEG()+8,c=r.readUEG()+8,r.readBits(1),r.readBool())){let t=3!==l?8:12;for(let e=0;e0&&t<16?(x=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][t-1],U=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][t-1]):255===t&&(x=r.readByte()<<8|r.readByte(),U=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let t=r.readBits(32),e=r.readBits(32);T=r.readBool(),E=e,B=2*t,A=E/B}}let k=1;1===x&&1===U||(k=x/U);let L=0,I=0;if(0===l)L=1,I=2-y;else{L=3===l?1:2,I=(1===l?2:1)*(2-y)}let C=16*(m+1),D=16*(g+1)*(2-y);C-=(b+S)*L,D-=(v+w)*I;let P=Math.ceil(C*k);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:a,level_idc:n,profile_string:o,level_string:h,chroma_format_idc:l,bit_depth:p,bit_depth_luma:p,bit_depth_chroma:c,ref_frames:_,chroma_format:d,chroma_format_string:he.getChromaFormatString(d),frame_rate:{fixed:T,fps:A,fps_den:B,fps_num:E},sar_ratio:{width:x,height:U},codec_size:{width:C,height:D},present_size:{width:P,height:D}}}static _skipScalingList(t,e){let i=8,s=8,r=0;for(let a=0;a=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+t>8?8-this.bufoff:t,e<<=i,e+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,t-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return e}look(t){let e=this.bufpos,i=this.bufoff,s=this.read(t);return this.bufpos=e,this.bufoff=i,s}read_golomb(){let t;for(t=0;0===this.read(1)&&!this.iserro;t++);return(1<>>8,n[7]=255&o;let h=8;n.set(e,8),h+=o,n[h]=1;let l=i.byteLength;n[h+1]=l>>>8,n[h+2]=255&l,n.set(i,h+3),h+=3+l,r&&(n[h]=252|a.chroma_format_idc,n[h+1]=248|a.bit_depth_luma-8,n[h+2]=248|a.bit_depth_chroma-8,n[h+3]=0,h+=4);const d=[23,0,0,0,0],u=new Uint8Array(d.length+n.byteLength);return u.set(d,0),u.set(n,d.length),u}function ue(t,e){let i=[];i[0]=e?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+t.byteLength);return s.set(i,0),s.set(t,i.length),s}function pe(t){return 31&t[0]}function ce(t){return t===j.kSliceSEI}function fe(t){return!function(t){return t===j.sps||t===j.pps}(t)&&!ce(t)}function _e(t){return t===j.iFrame}const me=t=>{let e=t,i=e.byteLength,s=new Uint8Array(i),r=0;for(let t=0;t=2&&3===e[t]&&0===e[t-1]&&0===e[t-2]||(s[r]=e[t],r++);return new Uint8Array(s.buffer,0,r)},ge=t=>{switch(t){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};function ye(t){const e=t.byteLength,i=new Uint8Array(4);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e;const s=new Uint8Array(e+4);return s.set(i,0),s.set(t,4),s}function be(t,e){let i={},s=t.length,r=[],a=new le(t);a.read(1),a.read(6),a.read(6),a.read(3);for(let t=2;t0)for(let e=i;e<8;e++)t.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let e=0;e{let e=me(t),i=new oe(e);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(e),n=(t=>{let e=me(t),i=new oe(e);i.readByte(),i.readByte();let s=0,r=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let h=i.readBits(2),l=i.readBool(),d=i.readBits(5),u=i.readByte(),p=i.readByte(),c=i.readByte(),f=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),S=i.readByte(),v=i.readByte(),w=[],x=[];for(let t=0;t0)for(let t=o;t<8;t++)i.readBits(2);for(let t=0;t1&&i.readSEG();for(let t=0;t0&&t<16?(P=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][t-1],F=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][t-1]):255===t&&(P=i.readBits(16),F=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),C=i.readBool(),C&&(s+=i.readUEG(),r+=i.readUEG(),a+=i.readUEG(),n+=i.readUEG()),i.readBool()&&(N=i.readBits(32),M=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let t=!1,e=!1,s=!1;t=i.readBool(),e=i.readBool(),(t||e)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=o;r++){let r=i.readBool();R=r;let a=!1,n=1;r||(a=i.readBool());let o=!1;if(a?i.readSEG():o=i.readBool(),o||(cpbcnt=i.readUEG()+1),t)for(let t=0;t{let e=me(t),i=new oe(e);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let s=i.readBool(),r=i.readBool(),a=1;return r&&s?a=0:r?a=3:s&&(a=2),{parallelismType:a}})(i);r=Object.assign(r,a,n,o);let h=23+(5+e.byteLength)+(5+s.byteLength)+(5+i.byteLength),l=new Uint8Array(h);l[0]=1,l[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,l[2]=r.general_profile_compatibility_flags_1||0,l[3]=r.general_profile_compatibility_flags_2||0,l[4]=r.general_profile_compatibility_flags_3||0,l[5]=r.general_profile_compatibility_flags_4||0,l[6]=r.general_constraint_indicator_flags_1||0,l[7]=r.general_constraint_indicator_flags_2||0,l[8]=r.general_constraint_indicator_flags_3||0,l[9]=r.general_constraint_indicator_flags_4||0,l[10]=r.general_constraint_indicator_flags_5||0,l[11]=r.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&r.min_spatial_segmentation_idc)>>8,l[14]=255&r.min_spatial_segmentation_idc,l[15]=252|3&r.parallelismType,l[16]=252|3&r.chroma_format_idc,l[17]=248|7&r.bit_depth_luma_minus8,l[18]=248|7&r.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&r.constant_frame_rate)<<6|(7&r.num_temporal_layers)<<3|(r.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|q,l[24]=0,l[25]=1,l[26]=(65280&e.byteLength)>>8,l[27]=(255&e.byteLength)>>0,l.set(e,28),l[23+(5+e.byteLength)+0]=128|K,l[23+(5+e.byteLength)+1]=0,l[23+(5+e.byteLength)+2]=1,l[23+(5+e.byteLength)+3]=(65280&s.byteLength)>>8,l[23+(5+e.byteLength)+4]=(255&s.byteLength)>>0,l.set(s,23+(5+e.byteLength)+5),l[23+(5+e.byteLength+5+s.byteLength)+0]=128|X,l[23+(5+e.byteLength+5+s.byteLength)+1]=0,l[23+(5+e.byteLength+5+s.byteLength)+2]=1,l[23+(5+e.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+e.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+e.byteLength+5+s.byteLength)+5);const d=[28,0,0,0,0],u=new Uint8Array(d.length+l.byteLength);return u.set(d,0),u.set(l,d.length),u}function ve(t,e){let i=[];i[0]=e?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+t.byteLength);return s.set(i,0),s.set(t,i.length),s}function we(t){return(126&t[0])>>1}function xe(t){return!function(t){return t>=32&&t<=40}(t)}function Ue(t){return t>=16&&t<=21}class Ae extends t{constructor(t){super(),this.TAG_NAME="recorderCommon",this.player=t,this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.recordingInterval=null,this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo={codecWidth:0,codecHeight:0,presentWidth:0,presentHeight:0,refSampleDuration:0,timescale:1e3,avcc:null,videoType:"",init:!1},this.audioMetaInfo={timescale:1e3,sampleRate:0,refSampleDuration:0,channelCount:0,codec:"",originalCodec:"",audioType:"",extraData:new Uint8Array(0),init:!1},this.startTimestamp=null}destroy(){this._reset(),this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo={},this.audioMetaInfo={}}get isH264(){return this.codecId===M}get isH265(){return this.codecId===z}setFileName(t){this.fileName=t}get isRecording(){return this._isRecording}get recording(){return this._isRecording}get recordTime(){return this._recordingTimestamp}startRecord(){}handleAddNaluTrack(t,e,i,s){}handleAddAudioTrack(t,e){}handleAddTrack(t){}stopRecordAndSave(){}startRecordingInterval(){}isWasmMp4(){return!1}stopRecordingInterval(){this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}getToTalByteLength(){return 0}_reset(){this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.stopRecordingInterval()}initMetaData(t,e){if(this.metaInfo.init)return;let i;const s=t.slice(5);if(this.codecId=e,this.metaInfo.avcc=s,e===M)i=function(t){const e={},i=new DataView(t.buffer);let s=i.getUint8(0),r=i.getUint8(1);if(i.getUint8(2),i.getUint8(3),1!==s||0===r)return{};const a=1+(3&i.getUint8(4));if(3!==a&&4!==a)return{};let n=31&i.getUint8(5);if(0===n)return{};let o=6;for(let s=0;s>>24&255,t>>>16&255,t>>>8&255,255&t]),s=new Uint8Array(t+4);s.set(i,0),s.set(e.sps,4),e.sps=s}if(e.pps){const t=e.pps.byteLength,i=new Uint8Array([t>>>24&255,t>>>16&255,t>>>8&255,255&t]),s=new Uint8Array(t+4);s.set(i,0),s.set(e.pps,4),e.pps=s}return e}(s);else if(e===z){i=function(t){let e=23;const i=t[e];if((63&i)!==q)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};e+=2,e+=1;const s=t[e+1]|t[e]<<8;e+=2;const r=t.slice(e,e+s);e+=s;const a=t[e];if((63&a)!==K)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${a}`),{};e+=2,e+=1;const n=t[e+1]|t[e]<<8;e+=2;const o=t.slice(e,e+n);e+=n;const h=t[e];if((63&h)!==X)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and pps tag is ${h}`),{};e+=2,e+=1;const l=t[e+1]|t[e]<<8;e+=2;const d=t.slice(e,e+l),u=new Uint8Array([n>>>24&255,n>>>16&255,n>>>8&255,255&n]),p=new Uint8Array([l>>>24&255,l>>>16&255,l>>>8&255,255&l]),c=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(n+4);f.set(u,0),f.set(o,4);const _=new Uint8Array(l+4);_.set(p,0),_.set(d,4);const m=new Uint8Array(s+4);return m.set(c,0),m.set(r,4),{sps:f,pps:_,vps:m}}(s);const e=function(t){let e={width:0,height:0,profile:0,level:0};t=t.slice(5);do{let i={};if(t.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${t.length} < 23`);break}if(i.configurationVersion=t[0],1!=i.configurationVersion)break;i.general_profile_space=t[1]>>6&3,i.general_tier_flag=t[1]>>5&1,i.general_profile_idc=31&t[1],i.general_profile_compatibility_flags=t[2]<<24|t[3]<<16|t[4]<<8|t[5],i.general_constraint_indicator_flags=t[6]<<24|t[7]<<16|t[8]<<8|t[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|t[10]<<8|t[11],i.general_level_idc=t[12],i.min_spatial_segmentation_idc=(15&t[13])<<8|t[14],i.parallelismType=3&t[15],i.chromaFormat=3&t[16],i.bitDepthLumaMinus8=7&t[17],i.bitDepthChromaMinus8=7&t[18],i.avgFrameRate=t[19]<<8|t[20],i.constantFrameRate=t[21]>>6&3,i.numTemporalLayers=t[21]>>3&7,i.temporalIdNested=t[21]>>2&1,i.lengthSizeMinusOne=3&t[21];let s=t[22],r=t.slice(23);for(let t=0;t>1&1;let s=null;e===H.AAC?(s=function(t){let e={},i=new It(t);return i.read(16),e.object_type=Ct(i),e.sample_rate=Dt(i,e),e.chan_config=i.read(4),e.chan_config{this.player.emit(k.recordingTimestamp,this.getTotalDuration())}),1e3)}addMetaData(t){this.flvMetaData=t}addAACSequenceHeader(t){this.aacSequenceHeader=t}addVideoSequenceHeader(t){this.videoSequenceHeader=t}addVideo(t,e){null===this.startTimestamp&&(this.startTimestamp=Rt());if(Rt()-this.startTimestamp>6e5)return;this._setStartTime(e);const i=this._getBufferTs(e);this.hasVideo=!0,this._createBufferItem(t,v,i)}addAudio(t,e){null===this.startTimestamp&&(this.startTimestamp=Rt());if(Rt()-this.startTimestamp>6e5)return;this._setStartTime(e);const i=this._getBufferTs(e);this.hasAudio=!0,this._createBufferItem(t,S,i)}_setStartTime(t){null===this.startTime&&this._isRecording&&(this.startTime=t,this.player.debug.log(this.TAG_NAME,`_setStartTime is ${t}`))}_getBufferTs(t){t>this.currentTime&&(this.currentTime=t);let e=0;return this.startTime&&t>=this.startTime&&(e=t-this.startTime),e>this.prevTimestamp?this.prevTimestamp=e:e=this.prevTimestamp,e}_createBufferItem(t,e,i){const s=this._createFlvPacket(t,e,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(t){let e=11+t.header.length,i=new Uint8Array(e+4);i[0]=t.header.type;let s=new DataView(i.buffer);return i[1]=t.header.length>>16&255,i[2]=t.header.length>>8&255,i[3]=255&t.header.length,i[4]=t.header.timestamp>>16&255,i[5]=t.header.timestamp>>8&255,i[6]=255&t.header.timestamp,i[7]=t.header.timestamp>>24&255,i[8]=0,i[9]=0,i[10]=0,s.setUint32(e,e),i.set(t.payload.subarray(0,t.header.length),11),i}_createFlvPacket(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:t?t.length:0,timestamp:i,type:e},payload:t}}stopRecordAndSave(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:F,e=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");e&&this.setFileName(e);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let a=[r];if(this.flvMetaData){const t=this._createFlvPacket(this.flvMetaData,w),e=this._createFlvTag(t);a.push(e)}if(this.videoSequenceHeader){const t=this._createFlvPacket(this.videoSequenceHeader,v),e=this._createFlvTag(t);a.push(e)}if(this.aacSequenceHeader){const t=this._createFlvPacket(this.aacSequenceHeader,S),e=this._createFlvTag(t);a.push(e)}const n=function(t){const e=t[0].constructor;return t.reduce(((t,i)=>{const s=new e((0|t.byteLength)+(0|i.byteLength));return s.set(t,0),s.set(i,0|t.byteLength),s}),new e)}(a.concat(this.bufferList));this.player.debug.log(this.TAG_NAME,"stop recording");const o=new Blob([n],{type:"application/octet-stream"});if(t===R)i(o),this.player.emit(k.recordBlob,o);else{i();Ht((this.fileName||Rt())+"."+l.flv,o)}this._reset(),this.player.emit(k.recording,!1)}))}getTotalDuration(){let t=0;return null!==this.startTime&&null!==this.currentTime&&(t=this.currentTime-this.startTime),Math.round(t/1e3)}getType(){return l.flv}getToTalByteLength(){return this.totalByteLength}}const Ee={init:0,findFirstStartCode:1,findSecondStartCode:2};class Be extends t{constructor(t){super(),this.player=t,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=Ee.init,this.tempBuffer=new Uint8Array(0),this.parsedOffset=0,this.versionLayer=0}dispatch(t,e){let i=new Uint8Array(this.tempBuffer.length+t.length);for(i.set(this.tempBuffer,0),i.set(t,this.tempBuffer.length),this.tempBuffer=i;!this.isDestroyed;){if(this.state==Ee.Init){let t=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Ee.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,t=!0;break}this.parsedOffset++}else this.parsedOffset++;if(t)continue;break}if(this.state==Ee.findFirstStartCode){let t=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Ee.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,t=!0;break}this.parsedOffset++}else this.parsedOffset++;if(t)continue;break}if(this.state==Ee.findSecondStartCode){let t=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",t,e),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Ee.findFirstStartCode}}}}class ke extends Ae{constructor(t){super(t),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:t._opt.debug,debugLevel:t._opt.debugLevel,debugUuid:t._opt.debugUuid,decoder:t._opt.wasmMp4RecorderDecoder}),this.mp3Demuxer=null,t.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.cacheTrack={},this.audioCacheTrack={},this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.hasAudio=!1,this.hasVideo=!1}getType(){return l.mp4}isWasmMp4(){return!0}getTotalDuration(){return Math.round(this.totalDuration/1e3)}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const t=this.player.debug,e=this.player.audio.getAudioInfo(),i=this.player.video.getVideoInfo(),s={};if(this.codecId){const t={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};s.video=t,this.hasVideo=!0}if(e.encTypeCode&&(e.encTypeCode===H.AAC||e.encTypeCode===H.MP3)){const t={type:e.encTypeCode,sampleRate:e.sampleRate,channels:e.channels,extraData:this.audioMetaInfo.extraData,depth:e.depth};this.audioCodeId=e.encTypeCode,s.audio=t,this.hasAudio=!0}this.player.debug.log(this.TAG_NAME,`startRecord(), hasAudio is ${this.hasAudio}, hasVideo is ${this.hasVideo}`),this._isRecording=!0,this.wasmMp4Recorder.startRecord(s).then((()=>{this.player.emit(k.recording,!0),t.log(this.TAG_NAME,"start recording"),this.player.emit(k.recordStart),this.startRecordingInterval()})).catch((e=>{t.error(this.TAG_NAME,"startRecord error",e),this.player._emitError(k.recordCreateError,e)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(k.recordingTimestamp,this.getTotalDuration())}),1e3)}stopRecordAndSave(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:F,e=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debug.error(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(e&&this.setFileName(e),void this.wasmMp4Recorder.stopRecord().then((e=>{if(t===R)i(e),this.player.emit(k.recordBlob,e);else{i();Ht((this.fileName||Rt())+"."+l.mp4,e)}})).catch((t=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",t),s(t)})).finally((()=>{this._reset(),this.player.emit(k.recording,!1)}))):(this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}handleAddAudioTrack(t,e){this.audioCodeId===H.MP3?(this.mp3Demuxer||(this.mp3Demuxer=new Be(this.player),this.mp3Demuxer.on("data",((t,e)=>{this._handleAddAudioTrack(t,e)}))),this.mp3Demuxer.dispatch(t,ts)):this._handleAddAudioTrack(t,e)}_handleAddAudioTrack(t,e){if(Kt(this.hasAudio))return void this.player.debug.warn(this.TAG_NAME,"handleAddAudioTrack fail, hasAudio is false");null===this.startTimestamp&&(this.startTimestamp=Rt());Rt()-this.startTimestamp>6e5||(this.audioCacheTrack.id&&e>=this.audioCacheTrack.dts?(this.audioCacheTrack.duration=e-this.audioCacheTrack.dts,this.totalAudioDuration+=this.audioCacheTrack.duration,this.totalAudioByteLength+=this.audioCacheTrack.payload.byteLength,this.wasmMp4Recorder.sendAudioFrame(this.audioCacheTrack.payload,this.audioCacheTrack.dts)):this.audioCacheTrack={},this.audioCacheTrack={id:2,payload:t,dts:e})}handleAddNaluTrack(t,e,i,s){if(Kt(this.hasVideo))return void this.player.debug.warn(this.TAG_NAME,"handleAddNaluTrack fail, hasVideo is false");null===this.startTimestamp&&(this.startTimestamp=Rt());Rt()-this.startTimestamp>6e5||(this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.totalDuration+=this.cacheTrack.duration,this.totalByteLength+=this.cacheTrack.payload.byteLength,this.wasmMp4Recorder.sendVideoFrame(this.cacheTrack.payload,this.cacheTrack.isIFrame,this.cacheTrack.dts)):this.cacheTrack={},this.cacheTrack={id:1,payload:t,isIFrame:e,dts:i,cts:s})}}class Le{constructor(t){return new(Le.getLoaderFactory(t._opt))(t)}static getLoaderFactory(t){if(t.recordType===l.mp4){if(window.JessibucaProMp4Recorder)return ke;throw new Error("JessibucaProMp4Recorder is not defined")}if(t.recordType===l.flv)return Te;throw new Error("recordType is not defined")}}class Ie extends t{constructor(t){super(),this.player=t,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.preDelayTimestamp=null,this.preLoopTimestamp=null,this.bufferStartDts=null,this.bufferStartLocalTs=null,this.preIframeTs=null,this.preFrameTs=null,this.preTimestamp=null,this.preTimestampDuration=0,this.prevPayloadBufferSize=0,this.isStreamTsMoreThanLocal=!1,this.delay=-1,this.pushLatestDelay=-1,this.bufferList=[],this.historyIntervalDiffTimeList=[],this.playbackStreamFps=null,this.playbackStreamAudioFps=null,this.playbackStreamVideoFps=null,this.dropping=!1,this.isPushDropping=!1,this.player.debug.log("CommonDemux","init")}destroy(){this.bufferList=[],this.historyIntervalDiffTimeList=[],this.playbackStreamFps=null,this.playbackStreamAudioFps=null,this.playbackStreamVideoFps=null,this.firstTimestamp=null,this.startTimestamp=null,this.bufferStartDts=null,this.bufferStartLocalTs=null,this.preDelayTimestamp=null,this.preLoopTimestamp=null,this.preIframeTs=null,this.preTimestamp=null,this.preTimestampDuration=0,this.prevPayloadBufferSize=0,this.isStreamTsMoreThanLocal=!1,this.delay=-1,this.pushLatestDelay=-1,this.dropping=!1,this.isPushDropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}_doDecode(t,e,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this.player;let a={ts:i,cts:r,type:e,isIFrame:!1};e===b&&(a.isIFrame=s),this.pushBuffer(t,a)}_doDecodeByHls(t,e,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(t,e,i,s,r)}_doDecodeByFmp4(t,e,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(t,e,i,s,r)}pushBuffer(t,e){if(this.player._updateStats({ts:e.ts}),e.type===y&&function(t){return Tt(t)&&t[1]===Q}(t)){this.player.debug.log("CommonDemux",`pushBuffer audio ts is ${e.ts}, isAacCodecPacket is true`);const i=t[0]>>4;if(this.player.recorder.initAudioMetaData(t,i),this.player.isRecordTypeFlv()){const i=new Uint8Array(t);this.player.recorder.addAACSequenceHeader(i,e.ts)}}else if(e.type===b&&e.isIFrame&&function(t){return t[0]>>4===tt&&t[1]===Q}(t)){this.player.debug.log("CommonDemux",`pushBuffer video ts is ${e.ts}, isVideoSequenceHeader is true`);const i=15&t[0];if(this.player.recorder.initMetaData(t,i),this.player.isRecordTypeFlv()){const i=new Uint8Array(t);this.player.recorder.addVideoSequenceHeader(i,e.ts)}}else if((this.player._hasVideoAndAudioInit()&&this.player.isRecordTypeMp4()||this.player.isRecordTypeFlv())&&Kt(this.player.recorder.isRecording)&&this.player.recorder.startRecord(),this.player.isRecordTypeFlv()){const i=new Uint8Array(t);e.type===b?this.player.recorder.addVideo(i,e.ts):e.type===y&&this.player.recorder.addAudio(i,e.ts)}else if(this.player.isRecordTypeMp4()){const i=new Uint8Array(t);if(e.type===b)this.player.recorder.handleAddNaluTrack(i.slice(5),e.isIFrame,e.ts,e.cts);else if(e.type===y){const i=new Uint8Array(t);this.player.recorder.handleAddAudioTrack(Tt(i)?i.slice(2):i.slice(1),e.ts)}}}close(){}reset(){}calcIframeIntervalTimestamp(){}}var Ce=function(t,e,i,s){return new(i||(i=Promise))((function(r,a){function n(t){try{h(s.next(t))}catch(t){a(t)}}function o(t){try{h(s.throw(t))}catch(t){a(t)}}function h(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(n,o)}h((s=s.apply(t,e||[])).next())}))};const De=Symbol(32),Pe=Symbol(16),Fe=Symbol(8);class Re{constructor(t){this.g=t,this.consumed=0,t&&(this.need=t.next().value)}setG(t){this.g=t,this.demand(t.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(t,e){return e&&this.consume(),this.need=t,this.flush()}read(t){return Ce(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((e,i)=>{var s;this.reject=i,this.resolve=t=>{delete this.lastReadPromise,delete this.resolve,delete this.need,e(t)};this.demand(t,!0)||null===(s=this.pull)||void 0===s||s.call(this,t)}))}))}readU32(){return this.read(De)}readU16(){return this.read(Pe)}readU8(){return this.read(Fe)}close(){var t;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(t=this.reject)||void 0===t||t.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let t=null;const e=this.buffer.subarray(this.consumed);let i=0;const s=t=>e.length<(i=t);if("number"==typeof this.need){if(s(this.need))return;t=e.subarray(0,i)}else if(this.need===De){if(s(4))return;t=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===Pe){if(s(2))return;t=e[0]<<8|e[1]}else if(this.need===Fe){if(s(1))return;t=e[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(e.subarray(0,i)),t=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(s(this.need.byteLength))return;new Uint8Array(this.need).set(e.subarray(0,i)),t=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(t).value,!0):this.resolve&&this.resolve(t),t}write(t){if(t instanceof Uint8Array?this.malloc(t.length).set(t):"buffer"in t?this.malloc(t.byteLength).set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)):this.malloc(t.byteLength).set(new Uint8Array(t)),!this.g&&!this.resolve)return new Promise((t=>this.pull=t));this.flush()}writeU32(t){this.malloc(4).set([t>>24&255,t>>16&255,t>>8&255,255&t]),this.flush()}writeU16(t){this.malloc(2).set([t>>8&255,255&t]),this.flush()}writeU8(t){this.malloc(1)[0]=t,this.flush()}malloc(t){if(this.buffer){const e=this.buffer.length,i=e+t;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const t=new Uint8Array(i);t.set(this.buffer),this.buffer=t}return this.buffer.subarray(e,i)}return this.buffer=new Uint8Array(t),this.buffer}}Re.U32=De,Re.U16=Pe,Re.U8=Fe;class Ne extends Ie{constructor(t){super(t),this.input=new Re(this.demux()),t.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.player.debug.log("FlvDemux","destroy")}dispatch(t){this.input?this.input.write(t):this.player&&this.player.debug.warn("FlvDemux","dispatch() this.input is null")}*demux(){yield 9;const t=new ArrayBuffer(4),e=new Uint8Array(t),i=new Uint32Array(t),s=this.player;for(;;){if(!this.input)return;e[3]=0;const t=yield 15,r=t[4];e[0]=t[7],e[1]=t[6],e[2]=t[5];const a=i[0];e[0]=t[10],e[1]=t[9],e[2]=t[8],e[3]=t[11];let n=i[0];const o=(yield a).slice();if(!s)return;switch(r){case S:s._opt.hasAudio&&(s._updateStats({abps:o.byteLength}),o.byteLength>0&&this._doDecode(o,y,n));break;case v:if(s._opt.hasVideo){let t=n;s._updateStats({vbps:o.byteLength,dts:t});const e=o[0]>>4&15;o[0];const r=o[1];let a=e===et;a&&this.calcIframeIntervalTimestamp(n);if(e===et&&r===st||(e===et&&r===rt||e===it&&r===rt))if(o.byteLength>0){i[0]=o[4],i[1]=o[3],i[2]=o[2],i[3]=0;let t=i[0],e=o;this._doDecode(e,b,n,a,t)}else this.player.debug.log("FlvDemux",`payload.byteLength is ${o.byteLength} is not > 0`);else this.player.debug.log("FlvDemux",`frameType is ${e} and packageType is ${r} is not sequenceHeader or nalu`)}break;case w:break;default:s.debug.log("FlvDemux",`demux() type is ${r}`)}}}close(){this.input=null}}class Me extends Ie{constructor(t){super(t),t.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy")}dispatch(t){const e=this.player,i=new DataView(t),s=i.getUint8(0),r=i.getUint32(1,!1);switch(s){case y:if(e._opt.hasAudio){const i=new Uint8Array(t,5);e._updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case b:if(e._opt.hasVideo)if(i.byteLength>5){const a=new Uint8Array(t,5),n=i.getUint8(5)>>4==1;let o=r;e._updateStats({vbps:a.byteLength,dts:o}),a.byteLength>0&&(n&&this.calcIframeIntervalTimestamp(r),this._doDecode(a,s,r,n))}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class ze extends Ne{constructor(t){super(t),t.debug.log("WebTransportDemux","init")}destroy(){this.player.debug.log("WebTransportDemux","destroy"),super.destroy()}}class Ge extends Ie{TAG_NAME="NakedFlowDemux";constructor(t){super(t),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,t.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(t){this.player;const e=new Uint8Array(t);this.extractNALu$2(e)}addNaluToBuffer(t){const e=t.byteLength+this.tempNaluBufferList.byteLength,i=new Uint8Array(e);i.set(this.tempNaluBufferList,0),i.set(t,this.tempNaluBufferList.byteLength),this.tempNaluBufferList=i}getNaluDts(){const t=this.player._opt.nakedFlowFps;return this.localDts=this.localDts+parseInt(1e3/t),this.localDts}getNaluAudioDts(){return this.localDts+parseInt(1024/48e3*1e3)}extractNALu(t){let e,i,s=0,r=t.byteLength,a=0,n=[];for(;s1)for(let t=0;t>1,i!==q&&i!==K&&i!==X||(e=O)),e}(e)),this.streamVideoType===G){const t=this.handleAddNaluStartCode(e),i=this.extractNALu(t);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","naluList.length === 0");const s=[];if(i.forEach((t=>{const e=pe(t);e===j.pps||e===j.sps?this.handleVideoH264Nalu(t):fe(e)&&s.push(t)})),1===s.length)this.handleVideoH264Nalu(s[0]);else{const t=function(t){if(0===t.length)return!1;const e=pe(t[0]);for(let i=1;i{this.handleVideoH264Nalu(t)}))}}else if(this.streamVideoType===O){const t=this.handleAddNaluStartCode(e),i=this.extractNALu(t);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((t=>{const e=we(t);e===X||e===K||e===q?this.handleVideoH265Nalu(t):xe(e)&&s.push(t)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const t=function(t){if(0===t.length)return!1;const e=we(t[0]);for(let i=1;i{this.handleVideoH265Nalu(t)}))}}else this.player.debug.error(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(t){const e=this.handleAddNaluStartCode(t);this.extractNALu(e).forEach((t=>{ce(pe(t))?this.extractH264SEI(t):this.handleVideoH264Nalu(t)}))}extractH265PPS(t){const e=this.handleAddNaluStartCode(t);this.extractNALu(e).forEach((t=>{const e=we(t);e===J?this.extractH265SEI(t):this.handleVideoH265Nalu(t)}))}extractH264SEI(t){const e=this.handleAddNaluStartCode(t);this.extractNALu(e).forEach((t=>{this.handleVideoH264Nalu(t)}))}extractH265SEI(t){const e=this.handleAddNaluStartCode(t);this.extractNALu(e).forEach((t=>{this.handleVideoH265Nalu(t)}))}handleAddNaluStartCode(t){const e=[0,0,0,1],i=new Uint8Array(t.length+e.length);return i.set(e),i.set(t,e.length),i}handleAudioAACNalu(t){if(!t||t.byteLength<1)return;this.streamAudioType||(this.streamAudioType=V);let e=new Uint8Array(t);const i=e.slice(0,7);if(e=e.slice(7),!this.isSendAACSeqHeader){const t=(192&i[2])>>6,e=(60&i[2])>>2,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,t<<3|(14&e)>>1,(1&e)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,y,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(e.length+2);r.set([175,1],0),r.set(e,2),this._doDecode(r,y,s,!1,0)}handleAudioG711ANalu(t){if(!t||t.byteLength<1)return;this.streamAudioType||(this.streamAudioType=W);let e=new Uint8Array(t);const i=this.getNaluAudioDts(),s=new Uint8Array(e.length+1);s.set([114],0),s.set(e,1),this._doDecode(s,y,i,!1,0)}handleAudioG711UNalu(t){if(!t||t.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Y);let e=new Uint8Array(t);const i=this.getNaluAudioDts(),s=new Uint8Array(e.length+1);s.set([130],0),s.set(e,1),this._doDecode(s,y,i,!1,0)}handleVideoH264Nalu(t){const e=pe(t);switch(e){case j.sps:this.sps=t;break;case j.pps:this.pps=t}if(this.isSendSeqHeader){if(this.sps&&this.pps){const t=de({sps:this.sps,pps:this.pps}),e=this.getNaluDts();this._doDecode(t,b,e,!0,0),this.sps=null,this.pps=null}if(fe(e)){const i=_e(e),s=this.getNaluDts(),r=function(t,e){let i=[];i[0]=e?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=t.byteLength>>24&255,i[6]=t.byteLength>>16&255,i[7]=t.byteLength>>8&255,i[8]=255&t.byteLength;const s=new Uint8Array(i.length+t.byteLength);return s.set(i,0),s.set(t,i.length),s}(t,i);this._preDoDecode(r,b,s,i,0)}else this.player.debug.warn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${e}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const t=de({sps:this.sps,pps:this.pps});this._doDecode(t,b,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(t,e,i){if(this.isSendSeqHeader){const i=this.getNaluDts(),s=ue(t.reduce(((t,e)=>{const i=ye(t),s=ye(e),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),e);this._preDoDecode(s,b,i,e,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(t){const e=we(t);switch(e){case q:this.vps=t;break;case K:this.sps=t;break;case X:this.pps=t}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const t=Se({vps:this.vps,sps:this.sps,pps:this.pps}),e=this.getNaluDts();this._doDecode(t,b,e,!0,0),this.vps=null,this.sps=null,this.pps=null}if(xe(e)){const i=Ue(e),s=this.getNaluDts(),r=function(t,e){let i=[];i[0]=e?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=t.byteLength>>24&255,i[6]=t.byteLength>>16&255,i[7]=t.byteLength>>8&255,i[8]=255&t.byteLength;const s=new Uint8Array(i.length+t.byteLength);return s.set(i,0),s.set(t,i.length),s}(t,i);this._preDoDecode(r,b,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const t=Se({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(t,b,0,!0,0),this.vps=null,this.sps=null,this.pps=null}}handleVideoH265NaluList(t,e,i){if(this.isSendSeqHeader){const i=this.getNaluDts(),s=ve(t.reduce(((t,e)=>{const i=ye(t),s=ye(e),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),e);this._preDoDecode(s,b,i,e,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(t,e,i,s,r){this.player._updateStats({vbps:t.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(t,b,i,s,r)}getInputByteLength(){let t=0;return this.lastBuf&&(t=this.lastBuf.byteLength),t}}class Oe extends Ie{constructor(t){super(t),this.player=t,t.debug.log("EmptyDemux","init")}destroy(){super.destroy(),this.player.debug.log("EmptyDemux","destroy")}}var He=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){var i,s,r,a=(i=new Date,s=4,r={setLogLevel:function(t){s=t==this.debug?1:t==this.info?2:t==this.warn?3:(this.error,4)},debug:function(t,e){void 0===console.debug&&(console.debug=console.log),1>=s&&console.debug("["+a.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)},log:function(t,e){this.debug(t.msg)},info:function(t,e){2>=s&&console.info("["+a.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)},warn:function(t,e){3>=s&&console.warn("["+a.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)},error:function(t,e){4>=s&&console.error("["+a.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)}},r);a.getDurationString=function(t,e){var i;function s(t,e){for(var i=(""+t).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+a.getDurationString(t.start(s))+","+a.getDurationString(t.end(s))+"]";return i}return"(empty)"},e.Log=a;var n=function(t){if(!(t instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=t,this.dataview=new DataView(t),this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(t){var e=Math.max(0,Math.min(this.buffer.byteLength,t));return this.position=isNaN(e)||!isFinite(e)?0:e,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(t,e){var i=0;if(this.position+t<=this.buffer.byteLength){switch(t){case 1:i=e?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=e?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(e)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=e?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(e)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+t}return this.position+=t,i}throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(t){if(this.position+t<=this.buffer.byteLength){for(var e="",i=0;ithis._byteLength&&(this._byteLength=e);else{for(i<1&&(i=1);e>i;)i*=2;var s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=e}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var t=new ArrayBuffer(this._byteLength),e=new Uint8Array(t),i=new Uint8Array(this._buffer,0,e.length);e.set(i),this.buffer=t}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(t){this._buffer=t,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(t){this._byteOffset=t,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(t){this._byteOffset=t.byteOffset,this._buffer=t.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+t.byteLength}}),o.prototype.seek=function(t){var e=Math.max(0,Math.min(this.byteLength,t));this.position=isNaN(e)||!isFinite(e)?0:e},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(t){this._realloc(1*t);var e=new Uint8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=1*t,e},o.prototype.readInt32Array=function(t,e){t=null==t?this.byteLength-this.position/4:t;var i=new Int32Array(t);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},o.prototype.readInt16Array=function(t,e){t=null==t?this.byteLength-this.position/2:t;var i=new Int16Array(t);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},o.prototype.readInt8Array=function(t){t=null==t?this.byteLength-this.position:t;var e=new Int8Array(t);return o.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e},o.prototype.readUint32Array=function(t,e){t=null==t?this.byteLength-this.position/4:t;var i=new Uint32Array(t);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},o.prototype.readUint16Array=function(t,e){t=null==t?this.byteLength-this.position/2:t;var i=new Uint16Array(t);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},o.prototype.readUint8Array=function(t){t=null==t?this.byteLength-this.position:t;var e=new Uint8Array(t);return o.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e},o.prototype.readFloat64Array=function(t,e){t=null==t?this.byteLength-this.position/8:t;var i=new Float64Array(t);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},o.prototype.readFloat32Array=function(t,e){t=null==t?this.byteLength-this.position/4:t;var i=new Float32Array(t);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},o.prototype.readInt32=function(t){var e=this._dataView.getInt32(this.position,null==t?this.endianness:t);return this.position+=4,e},o.prototype.readInt16=function(t){var e=this._dataView.getInt16(this.position,null==t?this.endianness:t);return this.position+=2,e},o.prototype.readInt8=function(){var t=this._dataView.getInt8(this.position);return this.position+=1,t},o.prototype.readUint32=function(t){var e=this._dataView.getUint32(this.position,null==t?this.endianness:t);return this.position+=4,e},o.prototype.readUint16=function(t){var e=this._dataView.getUint16(this.position,null==t?this.endianness:t);return this.position+=2,e},o.prototype.readUint8=function(){var t=this._dataView.getUint8(this.position);return this.position+=1,t},o.prototype.readFloat32=function(t){var e=this._dataView.getFloat32(this.position,null==t?this.endianness:t);return this.position+=4,e},o.prototype.readFloat64=function(t){var e=this._dataView.getFloat64(this.position,null==t?this.endianness:t);return this.position+=8,e},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(t,e,i,s,r){var a=new Uint8Array(t,e,r),n=new Uint8Array(i,s,r);a.set(n)},o.arrayToNative=function(t,e){return e==this.endianness?t:this.flipArrayEndianness(t)},o.nativeToEndian=function(t,e){return this.endianness==e?t:this.flipArrayEndianness(t)},o.flipArrayEndianness=function(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),i=0;ir;s--,r++){var a=e[r];e[r]=e[s],e[s]=a}return t},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(t){for(var e=[],i=0;i>16),this.writeUint8((65280&t)>>8),this.writeUint8(255&t)},o.prototype.adjustUint32=function(t,e){var i=this.position;this.seek(t),this.writeUint32(e),this.seek(i)},o.prototype.mapInt32Array=function(t,e){this._realloc(4*t);var i=new Int32Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(i,null==e?this.endianness:e),this.position+=4*t,i},o.prototype.mapInt16Array=function(t,e){this._realloc(2*t);var i=new Int16Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(i,null==e?this.endianness:e),this.position+=2*t,i},o.prototype.mapInt8Array=function(t){this._realloc(1*t);var e=new Int8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=1*t,e},o.prototype.mapUint32Array=function(t,e){this._realloc(4*t);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(i,null==e?this.endianness:e),this.position+=4*t,i},o.prototype.mapUint16Array=function(t,e){this._realloc(2*t);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(i,null==e?this.endianness:e),this.position+=2*t,i},o.prototype.mapFloat64Array=function(t,e){this._realloc(8*t);var i=new Float64Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(i,null==e?this.endianness:e),this.position+=8*t,i},o.prototype.mapFloat32Array=function(t,e){this._realloc(4*t);var i=new Float32Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(i,null==e?this.endianness:e),this.position+=4*t,i};var l=function(t){this.buffers=[],this.bufferIndex=-1,t&&(this.insertBuffer(t),this.bufferIndex=0)};(l.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var t;return this.bufferIndex>-1||(this.buffers.length>0?0===(t=this.buffers[0]).fileStart?(this.buffer=t,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(t,e){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(t.byteLength+e.byteLength));var i=new Uint8Array(t.byteLength+e.byteLength);return i.set(new Uint8Array(t),0),i.set(new Uint8Array(e),t.byteLength),i.buffer},l.prototype.reduceBuffer=function(t,e,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(t,e,i)),s.buffer.fileStart=t.fileStart+e,s.buffer.usedBytes=0,s.buffer},l.prototype.insertBuffer=function(t){for(var e=!0,i=0;is.byteLength){this.buffers.splice(i,1),i--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+") already appended, ignoring")}else t.fileStart+t.byteLength<=s.fileStart||(t=this.reduceBuffer(t,0,s.fileStart-t.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+")"),this.buffers.splice(i,0,t),0===i&&(this.buffer=t);e=!1;break}if(t.fileStart0)){e=!1;break}t=this.reduceBuffer(t,r,n)}}e&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+")"),this.buffers.push(t),0===i&&(this.buffer=t))},l.prototype.logBufferLevel=function(t){var e,i,s,r,n,o=[],h="";for(s=0,r=0,e=0;e0&&(h+=n.end-1+"]");var l=t?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+s+"/"+r+" bytes), continuous ranges: "+h)},l.prototype.cleanBuffers=function(){var t,e;for(t=0;t"+this.buffer.byteLength+")"),!0}return!1}return!1},l.prototype.findPosition=function(t,e,i){var s,r=null,n=-1;for(s=!0===t?0:this.bufferIndex;s=e?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},l.prototype.findEndContiguousBuf=function(t){var e,i,s,r=void 0!==t?t:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(e=r+1;e>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}return null},i.DecoderConfigDescriptor=function(t){i.Descriptor.call(this,4,t)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(t){this.oti=t.readUint8(),this.streamType=t.readUint8(),this.bufferSize=t.readUint24(),this.maxBitrate=t.readUint32(),this.avgBitrate=t.readUint32(),this.size-=13,this.parseRemainingDescriptors(t)},i.DecoderSpecificInfo=function(t){i.Descriptor.call(this,5,t)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(t){i.Descriptor.call(this,6,t)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};e.MPEG4DescriptorParser=d;var u={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(t){u.createBoxCtor(t)})),u.FULL_BOXES.forEach((function(t){u.createFullBoxCtor(t)})),u.CONTAINER_BOXES.forEach((function(t){u.createContainerBoxCtor(t[0],null,t[1])}))},Box:function(t,e,i){this.type=t,this.size=e,this.uuid=i},FullBox:function(t,e,i){u.Box.call(this,t,e,i),this.flags=0,this.version=0},ContainerBox:function(t,e,i){u.Box.call(this,t,e,i),this.boxes=[]},SampleEntry:function(t,e,i,s){u.ContainerBox.call(this,t,e),this.hdr_size=i,this.start=s},SampleGroupEntry:function(t){this.grouping_type=t},TrackGroupTypeBox:function(t,e){u.FullBox.call(this,t,e)},createBoxCtor:function(t,e){u.boxCodes.push(t),u[t+"Box"]=function(e){u.Box.call(this,t,e)},u[t+"Box"].prototype=new u.Box,e&&(u[t+"Box"].prototype.parse=e)},createFullBoxCtor:function(t,e){u[t+"Box"]=function(e){u.FullBox.call(this,t,e)},u[t+"Box"].prototype=new u.FullBox,u[t+"Box"].prototype.parse=function(t){this.parseFullHeader(t),e&&e.call(this,t)}},addSubBoxArrays:function(t){if(t){this.subBoxNames=t;for(var e=t.length,i=0;ii?(a.error("BoxParser","Box of type '"+d+"' has a size "+l+" greater than its container size "+i),{code:u.ERR_NOT_ENOUGH_DATA,type:d,size:l,hdr_size:h,start:o}):0!==l&&o+l>t.getEndPosition()?(t.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+d+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:d,size:l,hdr_size:h,start:o}):e?{code:u.OK,type:d,size:l,hdr_size:h,start:o}:(u[d+"Box"]?s=new u[d+"Box"](l):"uuid"!==d?(a.warn("BoxParser","Unknown box type: '"+d+"'"),(s=new u.Box(d,l)).has_unparsed_data=!0):u.UUIDBoxes[n]?s=new u.UUIDBoxes[n](l):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(s=new u.Box(d,l)).uuid=n,s.has_unparsed_data=!0),s.hdr_size=h,s.start=o,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(a.info("BoxParser","'"+p+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(t)),s.parse(t),(r=t.getPosition()-(s.start+s.size))<0?(a.warn("BoxParser","Parsing of box '"+p+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),t.seek(s.start+s.size)):r>0&&(a.error("BoxParser","Parsing of box '"+p+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&t.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.Box.prototype.parse=function(t){"mdat"!=this.type?this.data=t.readUint8Array(this.size-this.hdr_size):0===this.size?t.seek(t.getEndPosition()):t.seek(this.start+this.size)},u.Box.prototype.parseDataAndRewind=function(t){this.data=t.readUint8Array(this.size-this.hdr_size),t.position-=this.size-this.hdr_size},u.FullBox.prototype.parseDataAndRewind=function(t){this.parseFullHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,t.position-=this.size-this.hdr_size},u.FullBox.prototype.parseFullHeader=function(t){this.version=t.readUint8(),this.flags=t.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(t){this.parseFullHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size)},u.ContainerBox.prototype.parse=function(t){for(var e,i;t.getPosition()>10&31,e[1]=this.language>>5&31,e[2]=31&this.language,this.languageString=String.fromCharCode(e[0]+96,e[1]+96,e[2]+96)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(t){t.readUint8Array(6),this.data_reference_index=t.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size)},u.SampleEntry.prototype.parseDataAndRewind=function(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,t.position-=this.size-this.hdr_size},u.SampleEntry.prototype.parseFooter=function(t){u.ContainerBox.prototype.parse.call(this,t)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,(function(t){var e;this.parseHeader(t),t.readUint16(),t.readUint16(),t.readUint32Array(3),this.width=t.readUint16(),this.height=t.readUint16(),this.horizresolution=t.readUint32(),this.vertresolution=t.readUint32(),t.readUint32(),this.frame_count=t.readUint16(),e=Math.min(31,t.readUint8()),this.compressorname=t.readString(e),e<31&&t.readString(31-e),this.depth=t.readUint16(),t.readUint16(),this.parseFooter(t)})),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,(function(t){this.parseHeader(t),t.readUint32Array(2),this.channel_count=t.readUint16(),this.samplesize=t.readUint16(),t.readUint16(),t.readUint16(),this.samplerate=t.readUint32()/65536,this.parseFooter(t)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.createBoxCtor("a1lx",(function(t){var e=16*(1+(1&(1&t.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==e?t.readUint16():t.readUint32()})),u.createBoxCtor("a1op",(function(t){this.op_index=t.readUint8()})),u.createFullBoxCtor("auxC",(function(t){this.aux_type=t.readCString();var e=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=t.readUint8Array(e)})),u.createBoxCtor("av1C",(function(t){var e=t.readUint8();if(e>>7&!1)a.error("av1C marker problem");else if(this.version=127&e,1===this.version)if(e=t.readUint8(),this.seq_profile=e>>5&7,this.seq_level_idx_0=31&e,e=t.readUint8(),this.seq_tier_0=e>>7&1,this.high_bitdepth=e>>6&1,this.twelve_bit=e>>5&1,this.monochrome=e>>4&1,this.chroma_subsampling_x=e>>3&1,this.chroma_subsampling_y=e>>2&1,this.chroma_sample_position=3&e,e=t.readUint8(),this.reserved_1=e>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=e>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&e;else if(this.reserved_2=15&e,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=t.readUint8Array(i)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),u.createBoxCtor("avcC",(function(t){var e,i;for(this.configurationVersion=t.readUint8(),this.AVCProfileIndication=t.readUint8(),this.profile_compatibility=t.readUint8(),this.AVCLevelIndication=t.readUint8(),this.lengthSizeMinusOne=3&t.readUint8(),this.nb_SPS_nalus=31&t.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],e=0;e0&&(this.ext=t.readUint8Array(i))})),u.createBoxCtor("btrt",(function(t){this.bufferSizeDB=t.readUint32(),this.maxBitrate=t.readUint32(),this.avgBitrate=t.readUint32()})),u.createBoxCtor("clap",(function(t){this.cleanApertureWidthN=t.readUint32(),this.cleanApertureWidthD=t.readUint32(),this.cleanApertureHeightN=t.readUint32(),this.cleanApertureHeightD=t.readUint32(),this.horizOffN=t.readUint32(),this.horizOffD=t.readUint32(),this.vertOffN=t.readUint32(),this.vertOffD=t.readUint32()})),u.createBoxCtor("clli",(function(t){this.max_content_light_level=t.readUint16(),this.max_pic_average_light_level=t.readUint16()})),u.createFullBoxCtor("co64",(function(t){var e,i;if(e=t.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=t.readUint8Array(this.size-4))})),u.createFullBoxCtor("cprt",(function(t){this.parseLanguage(t),this.notice=t.readCString()})),u.createFullBoxCtor("cslg",(function(t){0===this.version&&(this.compositionToDTSShift=t.readInt32(),this.leastDecodeToDisplayDelta=t.readInt32(),this.greatestDecodeToDisplayDelta=t.readInt32(),this.compositionStartTime=t.readInt32(),this.compositionEndTime=t.readInt32())})),u.createFullBoxCtor("ctts",(function(t){var e,i;if(e=t.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=e>>1&31,this.bsmod=(1&e)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|s>>5&7})),u.createBoxCtor("dec3",(function(t){var e=t.readUint16();this.data_rate=e>>3,this.num_ind_sub=7&e,this.ind_subs=[];for(var i=0;i>6,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|a>>4&15,s.acmod=a>>1&7,s.lfeon=1&a,s.num_dep_sub=n>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&n)<<8|t.readUint8())}})),u.createFullBoxCtor("dfLa",(function(t){var e=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(t);;){var s=t.readUint8(),r=Math.min(127&s,i.length-1);if(r?t.readUint8Array(t.readUint24()):(t.readUint8Array(13),this.samplerate=t.readUint32()>>12,t.readUint8Array(20)),e.push(i[r]),128&s)break}this.numMetadataBlocks=e.length+" ("+e.join(", ")+")"})),u.createBoxCtor("dimm",(function(t){this.bytessent=t.readUint64()})),u.createBoxCtor("dmax",(function(t){this.time=t.readUint32()})),u.createBoxCtor("dmed",(function(t){this.bytessent=t.readUint64()})),u.createBoxCtor("dOps",(function(t){if(this.Version=t.readUint8(),this.OutputChannelCount=t.readUint8(),this.PreSkip=t.readUint16(),this.InputSampleRate=t.readUint32(),this.OutputGain=t.readInt16(),this.ChannelMappingFamily=t.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=t.readUint8(),this.CoupledCount=t.readUint8(),this.ChannelMapping=[];for(var e=0;e=4;)this.compatible_brands[i]=t.readString(4),e-=4,i++})),u.createFullBoxCtor("hdlr",(function(t){0===this.version&&(t.readUint32(),this.handler=t.readString(4),t.readUint32Array(3),this.name=t.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),u.createBoxCtor("hvcC",(function(t){var e,i,s,r;this.configurationVersion=t.readUint8(),r=t.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,this.general_profile_compatibility=t.readUint32(),this.general_constraint_indicator=t.readUint8Array(6),this.general_level_idc=t.readUint8(),this.min_spatial_segmentation_idc=4095&t.readUint16(),this.parallelismType=3&t.readUint8(),this.chroma_format_idc=3&t.readUint8(),this.bit_depth_luma_minus8=7&t.readUint8(),this.bit_depth_chroma_minus8=7&t.readUint8(),this.avgFrameRate=t.readUint16(),r=t.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var a=t.readUint8();for(e=0;e>7,n.nalu_type=63&r;var o=t.readUint16();for(i=0;i>4&15,this.length_size=15&e,e=t.readUint8(),this.base_offset_size=e>>4&15,1===this.version||2===this.version?this.index_size=15&e:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=t.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=t.readUint32()}for(var s=0;s>7,this.axis=1&e})),u.createFullBoxCtor("infe",(function(t){if(0!==this.version&&1!==this.version||(this.item_ID=t.readUint16(),this.item_protection_index=t.readUint16(),this.item_name=t.readCString(),this.content_type=t.readCString(),this.content_encoding=t.readCString()),1===this.version)return this.extension_type=t.readString(4),a.warn("BoxParser","Cannot parse extension type"),void t.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=t.readUint16():3===this.version&&(this.item_ID=t.readUint32()),this.item_protection_index=t.readUint16(),this.item_type=t.readString(4),this.item_name=t.readCString(),"mime"===this.item_type?(this.content_type=t.readCString(),this.content_encoding=t.readCString()):"uri "===this.item_type&&(this.item_uri_type=t.readCString()))})),u.createFullBoxCtor("ipma",(function(t){var e,i;for(entry_count=t.readUint32(),this.associations=[],e=0;e>7==1,1&this.flags?n.property_index=(127&a)<<8|t.readUint8():n.property_index=127&a}}})),u.createFullBoxCtor("iref",(function(t){var e,i;for(this.references=[];t.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=t.readString(4);break;case 1:s.grouping_type=t.readString(4),s.grouping_type_parameter=t.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=t.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(t){this.layer_id=t.readUint16()})),u.createBoxCtor("maxr",(function(t){this.period=t.readUint32(),this.bytes=t.readUint32()})),u.createBoxCtor("mdcv",(function(t){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=t.readUint16(),this.display_primaries[0].y=t.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=t.readUint16(),this.display_primaries[1].y=t.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=t.readUint16(),this.display_primaries[2].y=t.readUint16(),this.white_point={},this.white_point.x=t.readUint16(),this.white_point.y=t.readUint16(),this.max_display_mastering_luminance=t.readUint32(),this.min_display_mastering_luminance=t.readUint32()})),u.createFullBoxCtor("mdhd",(function(t){1==this.version?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.parseLanguage(t),t.readUint16()})),u.createFullBoxCtor("mehd",(function(t){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=t.readUint64():this.fragment_duration=t.readUint32()})),u.createFullBoxCtor("meta",(function(t){this.boxes=[],u.ContainerBox.prototype.parse.call(this,t)})),u.createFullBoxCtor("mfhd",(function(t){this.sequence_number=t.readUint32()})),u.createFullBoxCtor("mfro",(function(t){this._size=t.readUint32()})),u.createFullBoxCtor("mvhd",(function(t){1==this.version?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.rate=t.readUint32(),this.volume=t.readUint16()>>8,t.readUint16(),t.readUint32Array(2),this.matrix=t.readUint32Array(9),t.readUint32Array(6),this.next_track_id=t.readUint32()})),u.createBoxCtor("npck",(function(t){this.packetssent=t.readUint32()})),u.createBoxCtor("nump",(function(t){this.packetssent=t.readUint64()})),u.createFullBoxCtor("padb",(function(t){var e=t.readUint32();this.padbits=[];for(var i=0;i0){var e=t.readUint32();this.kid=[];for(var i=0;i0&&(this.data=t.readUint8Array(s))})),u.createFullBoxCtor("clef",(function(t){this.width=t.readUint32(),this.height=t.readUint32()})),u.createFullBoxCtor("enof",(function(t){this.width=t.readUint32(),this.height=t.readUint32()})),u.createFullBoxCtor("prof",(function(t){this.width=t.readUint32(),this.height=t.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(t){this.descriptionformat=t.readString(4),this.sdptext=t.readString(this.size-this.hdr_size-4)})),u.createFullBoxCtor("saio",(function(t){1&this.flags&&(this.aux_info_type=t.readUint32(),this.aux_info_type_parameter=t.readUint32());var e=t.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=e>>6&1,this.durationFlag&&(this.duration=t.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=t.readUint8(),this.avgBitRate=t.readUint16(),this.avgFrameRate=t.readUint16()),this.dependency=[];for(var i=t.readUint8(),s=0;s>7,this.num_leading_samples=127&e})),u.createSampleGroupCtor("rash",(function(t){if(this.operation_point_count=t.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=t.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=t.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var e=0;e>4,this.skip_byte_block=15&e,this.isProtected=t.readUint8(),this.Per_Sample_IV_Size=t.readUint8(),this.KID=u.parseHex16(t),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=t.readUint8(),this.constant_IV=t.readUint8Array(this.constant_IV_size))})),u.createSampleGroupCtor("stsa",(function(t){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(t){var e=t.readUint8();this.NAL_unit_type=63&e})),u.createSampleGroupCtor("tele",(function(t){var e=t.readUint8();this.level_independently_decodable=e>>7})),u.createSampleGroupCtor("tsas",(function(t){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(t){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(t){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createFullBoxCtor("sbgp",(function(t){this.grouping_type=t.readString(4),1===this.version?this.grouping_type_parameter=t.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var e=t.readUint32(),i=0;i>6,this.sample_depends_on[s]=e>>4&3,this.sample_is_depended_on[s]=e>>2&3,this.sample_has_redundancy[s]=3&e})),u.createFullBoxCtor("senc"),u.createFullBoxCtor("sgpd",(function(t){this.grouping_type=t.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=t.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=t.readUint32()),this.entries=[];for(var e=t.readUint32(),i=0;i>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=t.readUint32(),r=t.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(t,e,i,s){u.Box.call(this,t,e),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.SingleItemTypeReferenceBox.prototype.parse=function(t){this.from_item_ID=t.readUint16();var e=t.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[e+1]=15&s}else if(8===this.field_size)for(e=0;e0)for(i=0;i>4&15,this.default_skip_byte_block=15&e}this.default_isProtected=t.readUint8(),this.default_Per_Sample_IV_Size=t.readUint8(),this.default_KID=u.parseHex16(t),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=t.readUint8(),this.default_constant_IV=t.readUint8Array(this.default_constant_IV_size))})),u.createFullBoxCtor("tfdt",(function(t){1==this.version?this.baseMediaDecodeTime=t.readUint64():this.baseMediaDecodeTime=t.readUint32()})),u.createFullBoxCtor("tfhd",(function(t){var e=0;this.track_id=t.readUint32(),this.size-this.hdr_size>e&&this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=t.readUint64(),e+=8):this.base_data_offset=0,this.size-this.hdr_size>e&&this.flags&u.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=t.readUint32(),e+=4):this.default_sample_description_index=0,this.size-this.hdr_size>e&&this.flags&u.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=t.readUint32(),e+=4):this.default_sample_duration=0,this.size-this.hdr_size>e&&this.flags&u.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=t.readUint32(),e+=4):this.default_sample_size=0,this.size-this.hdr_size>e&&this.flags&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=t.readUint32(),e+=4):this.default_sample_flags=0})),u.createFullBoxCtor("tfra",(function(t){this.track_ID=t.readUint32(),t.readUint24();var e=t.readUint8();this.length_size_of_traf_num=e>>4&3,this.length_size_of_trun_num=e>>2&3,this.length_size_of_sample_num=3&e,this.entries=[];for(var i=t.readUint32(),s=0;s>8,t.readUint16(),this.matrix=t.readInt32Array(9),this.width=t.readUint32(),this.height=t.readUint32()})),u.createBoxCtor("tmax",(function(t){this.time=t.readUint32()})),u.createBoxCtor("tmin",(function(t){this.time=t.readUint32()})),u.createBoxCtor("totl",(function(t){this.bytessent=t.readUint32()})),u.createBoxCtor("tpay",(function(t){this.bytessent=t.readUint32()})),u.createBoxCtor("tpyl",(function(t){this.bytessent=t.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(t){this.parseFullHeader(t),this.track_group_id=t.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(t,e,i,s){u.Box.call(this,t,e),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(t){this.track_ids=t.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(t){for(var e,i;t.getPosition()e&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=t.readInt32(),e+=4):this.data_offset=0,this.size-this.hdr_size>e&&this.flags&u.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=t.readUint32(),e+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>e)for(var i=0;i0&&(this.location=t.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(t){this.LiveServerManifest=t.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(t){this.system_id=u.parseHex16(t);var e=t.readUint32();e>0&&(this.data=t.readUint8Array(e))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(t){this.default_AlgorithmID=t.readUint24(),this.default_IV_size=t.readUint8(),this.default_KID=u.parseHex16(t)})),u.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(t){this.fragment_count=t.readUint8(),this.entries=[];for(var e=0;e>4,this.chromaSubsampling=e>>1&7,this.videoFullRangeFlag=1&e,this.colourPrimaries=t.readUint8(),this.transferCharacteristics=t.readUint8(),this.matrixCoefficients=t.readUint8(),this.codecIntializationDataSize=t.readUint16(),this.codecIntializationData=t.readUint8Array(this.codecIntializationDataSize)):(this.profile=t.readUint8(),this.level=t.readUint8(),e=t.readUint8(),this.bitDepth=e>>4&15,this.colorSpace=15&e,e=t.readUint8(),this.chromaSubsampling=e>>4&15,this.transferFunction=e>>1&7,this.videoFullRangeFlag=1&e,this.codecIntializationDataSize=t.readUint16(),this.codecIntializationData=t.readUint8Array(this.codecIntializationDataSize))})),u.createBoxCtor("vttC",(function(t){this.text=t.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(t){var e,i,s={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(t){this.held_bits=t.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(t){this.held_bits=t.readUint16(),this.num_held_bits=16},extract_bits:function(t){var e=this.held_bits>>this.num_held_bits-t&(1<=0;--i){var n=s.extract_bits(1);this.ptl_sublayer_present_mask|=n<1;++i)s.extract_bits(1);for(i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;e+=u.decimalToHex(s,0),e+=".",0===this.hvcC.general_tier_flag?e+="L":e+="H",e+=this.hvcC.general_level_idc;var r=!1,a="";for(t=5;t>=0;t--)(this.hvcC.general_constraint_indicator[t]||r)&&(a="."+u.decimalToHex(this.hvcC.general_constraint_indicator[t],0)+a,r=!0);e+=a}return e},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var t,e=u.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){e+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?e+=".H":e+=".L",e+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var s,r=[],a=0;for(a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6,t=0;t>2&63,r.push(a),a&&(s=t),a=this.vvcC.general_constraint_info[t]>>2&3;if(void 0===s)i=".CA";else{i=".C";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,h=0;for(t=0;t<=s;++t)for(o=o<<8|r[t],h+=8;h>=5;){i+=n[o>>h-5&31],o&=(1<<(h-=5))-1}h&&(i+=n[31&(o<<=5-h)])}}e+=i}return e},u.mp4aSampleEntry.prototype.getCodec=function(){var t=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var e=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return t+"."+u.decimalToHex(e)+(i?"."+i:"")}return t},u.stxtSampleEntry.prototype.getCodec=function(){var t=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?t+"."+this.mime_format:t},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var t=u.SampleEntry.prototype.getCodec.call(this),e=this.vpcC.level;0==e&&(e="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),t+".0"+this.vpcC.profile+"."+e+"."+i},u.av01SampleEntry.prototype.getCodec=function(){var t,e=u.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?t=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(t=1===this.av1C.high_bitdepth?"10":"08"),e+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+t},u.Box.prototype.writeHeader=function(t,e){this.size+=8,this.size>h&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+t.getPosition()+(e||"")),this.size>h?t.writeUint32(1):(this.sizePosition=t.getPosition(),t.writeUint32(this.size)),t.writeString(this.type,null,4),"uuid"===this.type&&t.writeUint8Array(this.uuid),this.size>h&&t.writeUint64(this.size)},u.FullBox.prototype.writeHeader=function(t){this.size+=4,u.Box.prototype.writeHeader.call(this,t," v="+this.version+" f="+this.flags),t.writeUint8(this.version),t.writeUint24(this.flags)},u.Box.prototype.write=function(t){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(t),t.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(t),this.data&&t.writeUint8Array(this.data))},u.ContainerBox.prototype.write=function(t){this.size=0,this.writeHeader(t);for(var e=0;e=2&&t.writeUint32(this.default_sample_description_index),t.writeUint32(this.entries.length),e=0;e0)for(e=0;e+1e?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(t),1===this.version?t.writeUint64(this.baseMediaDecodeTime):t.writeUint32(this.baseMediaDecodeTime)},u.tfhdBox.prototype.write=function(t){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(t),t.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&t.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&t.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&t.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&t.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&t.writeUint32(this.default_sample_flags)},u.tkhdBox.prototype.write=function(t){this.version=0,this.size=80,this.writeHeader(t),t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.track_id),t.writeUint32(0),t.writeUint32(this.duration),t.writeUint32(0),t.writeUint32(0),t.writeInt16(this.layer),t.writeInt16(this.alternate_group),t.writeInt16(this.volume<<8),t.writeUint16(0),t.writeInt32Array(this.matrix),t.writeUint32(this.width),t.writeUint32(this.height)},u.trexBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=20,this.writeHeader(t),t.writeUint32(this.track_id),t.writeUint32(this.default_sample_description_index),t.writeUint32(this.default_sample_duration),t.writeUint32(this.default_sample_size),t.writeUint32(this.default_sample_flags)},u.trunBox.prototype.write=function(t){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(t),t.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=t.getPosition(),t.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&t.writeUint32(this.first_sample_flags);for(var e=0;e-1||t[i]instanceof u.Box||e[i]instanceof u.Box||void 0===t[i]||void 0===e[i]||"function"==typeof t[i]||"function"==typeof e[i]||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||t[i]===e[i]))return!1;return!0},u.boxEqual=function(t,e){if(!u.boxEqualFields(t,e))return!1;for(var i=0;i1)for(e=1;e-1&&this.fragmentedTracks.splice(e,1)},f.prototype.setExtractionOptions=function(t,e,i){var s=this.getTrackById(t);if(s){var r={};this.extractedTracks.push(r),r.id=t,r.user=e,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},f.prototype.unsetExtractionOptions=function(t){for(var e=-1,i=0;i-1&&this.extractedTracks.splice(e,1)},f.prototype.parse=function(){var t,e;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(t=u.parseOneBox(this.stream,false)).code===u.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(t))continue;return}return}var i;switch(i="uuid"!==(e=t.box).type?e.type:e.uuid,this.boxes.push(e),i){case"mdat":this.mdats.push(e);break;case"moof":this.moofs.push(e);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&a.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=e}this.updateUsedBytes&&this.updateUsedBytes(e,t)}},f.prototype.checkBuffer=function(t){if(null==t)throw"Buffer must be defined and non empty";if(void 0===t.fileStart)throw"Buffer must have a fileStart property";return 0===t.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+t.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+t.fileStart+")"),t.usedBytes=0,this.stream.insertBuffer(t),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},f.prototype.appendBuffer=function(t,e){var i;if(this.checkBuffer(t))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(e),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+t.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},f.prototype.getInfo=function(){var t,e,i,s,r,a,n={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(n.hasMoov=!0,n.duration=this.moov.mvhd.duration,n.timescale=this.moov.mvhd.timescale,n.isFragmented=null!=this.moov.mvex,n.isFragmented&&this.moov.mvex.mehd&&(n.fragment_duration=this.moov.mvex.mehd.fragment_duration),n.isProgressive=this.isProgressive,n.hasIOD=null!=this.moov.iods,n.brands=[],n.brands.push(this.ftyp.major_brand),n.brands=n.brands.concat(this.ftyp.compatible_brands),n.created=new Date(o+1e3*this.moov.mvhd.creation_time),n.modified=new Date(o+1e3*this.moov.mvhd.modification_time),n.tracks=[],n.audioTracks=[],n.videoTracks=[],n.subtitleTracks=[],n.metadataTracks=[],n.hintTracks=[],n.otherTracks=[],t=0;t0?n.mime+='video/mp4; codecs="':n.audioTracks&&n.audioTracks.length>0?n.mime+='audio/mp4; codecs="':n.mime+='application/mp4; codecs="',t=0;t=i.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,t||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[e]))break}}if(null!==this.onSamples)for(e=0;e=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[e]))break}}}},f.prototype.getBox=function(t){var e=this.getBoxes(t,!0);return e.length?e[0]:null},f.prototype.getBoxes=function(t,e){var i=[];return f._sweep.call(this,t,i,e),i},f._sweep=function(t,e,i){for(var s in this.type&&this.type==t&&e.push(this),this.boxes){if(e.length&&i)return;f._sweep.call(this.boxes[s],t,e,i)}},f.prototype.getTrackSamplesInfo=function(t){var e=this.getTrackById(t);return e?e.samples:void 0},f.prototype.getTrackSample=function(t,e){var i=this.getTrackById(t);return this.getSample(i,e)},f.prototype.releaseUsedSamples=function(t,e){var i=0,s=this.getTrackById(t);s.lastValidSample||(s.lastValidSample=0);for(var r=s.lastValidSample;rt*r.timescale){l=s-1;break}e&&r.is_sync&&(h=s)}for(e&&(l=h),t=i.samples[l].cts,i.nextSample=l;i.samples[l].alreadyRead===i.samples[l].size&&i.samples[l+1];)l++;return n=i.samples[l].offset+i.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(e?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+a.getDurationString(t,o)+" and offset: "+n),{offset:n,time:t/o}},f.prototype.seek=function(t,e){var i,s,r,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(r=0;r-1){o=h;break}switch(o){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),a.set("width",e.width).set("height",e.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",e.type+" Compressor").set("depth",24),e.avcDecoderConfigRecord){var p=new u.avcCBox,c=new n(e.avcDecoderConfigRecord);p.parse(c),a.addBox(p)}break;case"Audio":r.add("smhd").set("balance",e.balance||0),a.set("channel_count",e.channel_count||2).set("samplesize",e.samplesize||16).set("samplerate",e.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===e.type)a.set("namespace",e.namespace||"nonamespace").set("schema_location",e.schema_location||"").set("auxiliary_mime_types",e.auxiliary_mime_types||"");break;default:r.add("nmhd")}e.description&&a.addBox(e.description),e.description_boxes&&e.description_boxes.forEach((function(t){a.addBox(t)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(a),f.add("stts").set("sample_counts",[]).set("sample_deltas",[]),f.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),f.add("stco").set("chunk_offsets",[]),f.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",e.id).set("default_sample_description_index",e.default_sample_description_index||1).set("default_sample_duration",e.default_sample_duration||0).set("default_sample_size",e.default_sample_size||0).set("default_sample_flags",e.default_sample_flags||0),this.buildTrakSampleLists(i),e.id}},u.Box.prototype.computeSize=function(t){var e=t||new o;e.endianness=o.BIG_ENDIAN,this.write(e)},f.prototype.addSample=function(t,e,i){var s=i||{},r={},a=this.getTrackById(t);if(null!==a){r.number=a.samples.length,r.track_id=a.tkhd.track_id,r.timescale=a.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=a.mdia.minf.stbl.stsd.entries[r.description_index],r.data=e,r.size=e.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,a.samples.push(r),a.samples_size+=r.size,a.samples_duration+=r.duration,a.first_dts||(a.first_dts=s.dts),this.processSamples();var n=this.createSingleSampleMoof(r);return this.addBox(n),n.computeSize(),n.trafs[0].truns[0].data_offset=n.size+8,this.add("mdat").data=new Uint8Array(e),r}},f.prototype.createSingleSampleMoof=function(t){var e=0;e=t.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(t.track_id);return s.add("tfhd").set("track_id",t.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",t.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[t.duration]).set("sample_size",[t.size]).set("sample_flags",[e]).set("sample_composition_time_offset",[t.cts-t.dts]),i},f.prototype.lastMoofIndex=0,f.prototype.samplesDataSize=0,f.prototype.resetTables=function(){var t,e,i,s,r,a;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,t=0;t=2&&(h=r[n].grouping_type+"/0",(o=new l(r[n].grouping_type,0)).is_fragment=!0,e.sample_groups_info[h]||(e.sample_groups_info[h]=o))}else for(n=0;n=2&&(h=s[n].grouping_type+"/0",o=new l(s[n].grouping_type,0),t.sample_groups_info[h]||(t.sample_groups_info[h]=o))},f.setSampleGroupProperties=function(t,e,i,s){var r,a;for(r in e.sample_groups=[],s){var n;if(e.sample_groups[r]={},e.sample_groups[r].grouping_type=s[r].grouping_type,e.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?e.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:e.sample_groups[r].group_description_index=-1,0!==e.sample_groups[r].group_description_index)n=s[r].fragment_description?s[r].fragment_description:s[r].description,e.sample_groups[r].group_description_index>0?(a=e.sample_groups[r].group_description_index>65535?(e.sample_groups[r].group_description_index>>16)-1:e.sample_groups[r].group_description_index-1,n&&a>=0&&(e.sample_groups[r].description=n.entries[a])):n&&n.version>=2&&n.default_group_description_index>0&&(e.sample_groups[r].description=n.entries[n.default_group_description_index-1])}},f.process_sdtp=function(t,e,i){e&&(t?(e.is_leading=t.is_leading[i],e.depends_on=t.sample_depends_on[i],e.is_depended_on=t.sample_is_depended_on[i],e.has_redundancy=t.sample_has_redundancy[i]):(e.is_leading=0,e.depends_on=0,e.is_depended_on=0,e.has_redundancy=0))},f.prototype.buildSampleLists=function(){var t,e;for(t=0;tb&&(S++,b<0&&(b=0),b+=a.sample_counts[S]),e>0?(t.samples[e-1].duration=a.sample_deltas[S],t.samples_duration+=t.samples[e-1].duration,T.dts=t.samples[e-1].dts+t.samples[e-1].duration):T.dts=0,n?(e>=v&&(w++,v<0&&(v=0),v+=n.sample_counts[w]),T.cts=t.samples[e].dts+n.sample_offsets[w]):T.cts=T.dts,o?(e==o.sample_numbers[x]-1?(T.is_sync=!0,x++):(T.is_sync=!1,T.degradation_priority=0),l&&l.entries[U].sample_delta+A==e+1&&(T.subsamples=l.entries[U].subsamples,A+=l.entries[U].sample_delta,U++)):T.is_sync=!0,f.process_sdtp(t.mdia.minf.stbl.sdtp,T,T.number),T.degradation_priority=p?p.priority[e]:0,l&&l.entries[U].sample_delta+A==e&&(T.subsamples=l.entries[U].subsamples,A+=l.entries[U].sample_delta),(d.length>0||u.length>0)&&f.setSampleGroupProperties(t,T,e,t.sample_groups_info)}e>0&&(t.samples[e-1].duration=Math.max(t.mdia.mdhd.duration-t.samples[e-1].dts,0),t.samples_duration+=t.samples[e-1].duration)}},f.prototype.updateSampleLists=function(){var t,e,i,s,r,a,n,o,h,l,d,p,c,_,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&f.initSampleGroups(p,d,d.sbgps,p.mdia.minf.stbl.sgpds,d.sgpds),e=0;e0?_.dts=p.samples[p.samples.length-2].dts+p.samples[p.samples.length-2].duration:(d.tfdt?_.dts=d.tfdt.baseMediaDecodeTime:_.dts=0,p.first_traf_merged=!0),_.cts=_.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(_.cts=_.dts+g.sample_composition_time_offset[i]),m=n,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),_.is_sync=!(m>>16&1),_.is_leading=m>>26&3,_.depends_on=m>>24&3,_.is_depended_on=m>>22&3,_.has_redundancy=m>>20&3,_.degradation_priority=65535&m;var y=!!(d.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(d.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),S=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),v=0;v=y?d.tfhd.base_data_offset:b||0===e?l.start:o,_.offset=0===e&&0===i?S?v+g.data_offset:v:o,o=_.offset+_.size,(d.sbgps.length>0||d.sgpds.length>0||p.mdia.minf.stbl.sbgps.length>0||p.mdia.minf.stbl.sgpds.length>0)&&f.setSampleGroupProperties(p,_,_.number_in_traf,d.sample_groups_info)}}if(d.subs){p.has_fragment_subsamples=!0;var w=d.first_sample_index;for(e=0;e-1))return null;var n=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=n)return a.debug("ISOFile","Getting sample #"+e+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),o.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===n)return null;a.debug("ISOFile","Getting sample #"+e+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+n+" full size: "+s.size+")"),o.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,n),s.alreadyRead+=n,i.usedBytes+=n,this.stream.logBufferLevel()}},f.prototype.releaseSample=function(t,e){var i=t.samples[e];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.alreadyRead=0,i.size):0},f.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},f.prototype.getCodecs=function(){var t,e="";for(t=0;t0&&(e+=","),e+=this.moov.traks[t].mdia.minf.stbl.stsd.entries[0].getCodec()}return e},f.prototype.getTrexById=function(t){var e;if(!this.moov||!this.moov.mvex)return null;for(e=0;e0&&(i.protection=r.ipro.protections[r.iinf.item_infos[t].protection_index-1]),r.iinf.item_infos[t].item_type?i.type=r.iinf.item_infos[t].item_type:i.type="mime",i.content_type=r.iinf.item_infos[t].content_type,i.content_encoding=r.iinf.item_infos[t].content_encoding;if(r.iloc)for(t=0;t0&&u.property_index-1-1))return null;var h=(e=this.stream.buffers[n]).byteLength-(r.offset+r.alreadyRead-e.fileStart);if(!(r.length-r.alreadyRead<=h))return a.debug("ISOFile","Getting item #"+t+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-e.fileStart)+" read size: "+h+" full extent size: "+r.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,e,r.offset+r.alreadyRead-e.fileStart,h),r.alreadyRead+=h,i.alreadyRead+=h,e.usedBytes+=h,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+t+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-e.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,e,r.offset+r.alreadyRead-e.fileStart,r.length-r.alreadyRead),e.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},f.prototype.releaseItem=function(t){var e=this.items[t];if(e.data){this.itemsDataSize-=e.size,e.data=null,e.alreadyRead=0;for(var i=0;i0?this.moov.traks[t].samples[0].duration:0),e.push(s)}return e},u.Box.prototype.printHeader=function(t){this.size+=8,this.size>h&&(this.size+=8),"uuid"===this.type&&(this.size+=16),t.log(t.indent+"size:"+this.size),t.log(t.indent+"type:"+this.type)},u.FullBox.prototype.printHeader=function(t){this.size+=4,u.Box.prototype.printHeader.call(this,t),t.log(t.indent+"version:"+this.version),t.log(t.indent+"flags:"+this.flags)},u.Box.prototype.print=function(t){this.printHeader(t)},u.ContainerBox.prototype.print=function(t){this.printHeader(t);for(var e=0;e>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"next_track_id: "+this.next_track_id)},u.tkhdBox.prototype.print=function(t){u.FullBox.prototype.printHeader.call(this,t),t.log(t.indent+"creation_time: "+this.creation_time),t.log(t.indent+"modification_time: "+this.modification_time),t.log(t.indent+"track_id: "+this.track_id),t.log(t.indent+"duration: "+this.duration),t.log(t.indent+"volume: "+(this.volume>>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"layer: "+this.layer),t.log(t.indent+"alternate_group: "+this.alternate_group),t.log(t.indent+"width: "+this.width),t.log(t.indent+"height: "+this.height)};var _={createFile:function(t,e){var i=void 0===t||t,s=new f(e);return s.discardMdatData=!i,s}};e.createFile=_.createFile}));He.Log,He.MP4BoxStream,He.DataStream,He.MultiBufferStream,He.MPEG4DescriptorParser,He.BoxParser,He.XMLSubtitlein4Parser,He.Textin4Parser,He.ISOFile,He.createFile;class Ve extends Ie{constructor(t){super(t),this.TAG_NAME="Fmp4Loader",this.player=t,this.mp4Box=He.createFile(),this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this._listenMp4Box(),t.debug.log(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.flush(),this.mp4Box=null),this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.player.debug.log(this.TAG_NAME,"destroy")}_listenMp4Box(){this.mp4Box.onReady=this.onReady.bind(this),this.mp4Box.onError=this.onError.bind(this),this.mp4Box.onSamples=this.onSamples.bind(this)}onReady(t){this.player.debug.log(this.TAG_NAME,"onReady",t);const e=t.videoTracks[0],i=t.audioTracks[0];if(e){this.videoTrackId=e.id;const t=this.getSeqHeader(e);t&&(this.player.debug.log(this.TAG_NAME,"seqHeader",t),this._doDecodeByFmp4(t,b,0,!0,0)),this.mp4Box.setExtractionOptions(e.id)}if(i){this.audioTrackId=i.id;const t=i.audio||{},e=Bt.indexOf(t.sample_rate),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:e,channel:t.channel_count},a=At(r);this.player.debug.log(this.TAG_NAME,"aacADTSHeader",a,"config",r),this._doDecodeByFmp4(a,y,0,!1,0)}this.mp4Box.start()}onError(t){this.player.debug.error(this.TAG_NAME,"mp4Box onError",t)}onSamples(t,e,i){if(t===this.videoTrackId)for(const t of i){const e=t.data,i=t.is_sync,s=1e3*t.cts/t.timescale;t.duration,t.timescale,this.player._updateStats({vbps:e.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?ve(e,i):ue(e,i),this._doDecodeByFmp4(r,b,s,i,0)}else if(t===this.audioTrackId)for(const t of i){const e=t.data;this.player._updateStats({abps:e.byteLength});const i=1e3*t.cts/t.timescale;t.duration,t.timescale;const s=new Uint8Array(e.byteLength+2);s.set([175,1],0),s.set(e,2),this._doDecodeByFmp4(s,y,i,!1,0)}else this.player.debug.warn(this.TAG_NAME,"onSamples() trackId error",t)}getSeqHeader(t){const e=this.mp4Box.getTrackById(t.id);for(const t of e.mdia.minf.stbl.stsd.entries)if(t.avcC||t.hvcC){const e=new He.DataStream(void 0,0,He.DataStream.BIG_ENDIAN);let i=[];t.avcC?(t.avcC.write(e),i=[23,0,0,0,0]):(this.isHevc=!0,t.hvcC.write(e),i=[28,0,0,0,0]);const s=new Uint8Array(e.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(t){let e=new Uint8Array(t);"string"!=typeof t?"object"==typeof t?(e.buffer.fileStart=this.offset,this.offset+=e.byteLength,this.mp4Box.appendBuffer(e.buffer)):this.player.debug.warn(this.TAG_NAME,"dispatch()","data is not object",t):this.player.debug.warn(this.TAG_NAME,"dispatch()","data is string",t)}}class We{constructor(t){return new(We.getLoaderFactory(t))(t)}static getLoaderFactory(t){const e=t._opt.demuxType;return e===u?Me:e===d?Ne:e===c?ze:e===f?Ge:e===_?Ve:Oe}}const Ye=2097152,$e="fetch",je="xhr",qe="arraybuffer",Ke="text",Xe="json",Je="real_time_speed",Ze=Object.prototype.toString;function Qe(t){if("[object Object]"!==Ze.call(t))return!1;const e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function ti(t){if(!t||null===t[0]||void 0===t[0]||0===t[0]&&(null===t[1]||void 0===t[1]))return;let e="bytes="+t[0]+"-";return t[1]&&(e+=t[1]),e}function ei(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ii(t,e){if(!t)return;if(!e)return t;let i;const s=Object.keys(e).map((t=>{if(i=e[t],null!=i)return Array.isArray(i)?t+="[]":i=[i],i.map((e=>{var i;return i=e,"[object Date]"===Ze.call(i)?e=e.toISOString():function(t){return null!==t&&"object"==typeof t}(e)&&(e=JSON.stringify(e)),`${ei(t)}=${ei(e)}`})).join("&")})).filter(Boolean).join("&");if(s){const e=t.indexOf("#");-1!==e&&(t=t.slice(0,e)),t+=(-1===t.indexOf("?")?"?":"&")+s}return t}function si(t,e,i,s,r,a,n,o,h,l,d){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:t,done:e,option:{range:h,vid:l,index:o,contentLength:s,age:r,startTime:a,firstByteTime:n,endTime:Date.now(),priOptions:d},response:i}}function ri(t,e){return Math.round(8*t*1e3/e/1024)}class ai extends Error{retryCount=0;isTimeout=!1;loaderType=$e;startTime=0;endTime=0;options={};constructor(t,e,i,s){super(s),this.url=t,this.request=e,this.response=i}}class ni extends t{_abortController=null;_timeoutTimer=null;_reader=null;_response=null;_aborted=!1;_index=-1;_range=null;_receivedLength=0;_running=!1;_logger=null;_vid="";_onProcessMinLen=0;_onCancel=null;_priOptions=null;TAG_NAME="FetchLoader";constructor(t){super(),this.player=t}load(t){let{url:e,vid:i,timeout:s,responseType:r,onProgress:a,index:n,onTimeout:o,onCancel:h,range:l,transformResponse:d,request:u,params:p,logger:c,method:f,headers:_,body:m,mode:g,credentials:y,cache:b,redirect:S,referrer:v,referrerPolicy:w,onProcessMinLen:x,priOptions:U}=t;this._aborted=!1,this._onProcessMinLen=x,this._onCancel=h,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=l||[0,0],this._vid=i||e,this._priOptions=U||{};const A={method:f,headers:_,body:m,mode:g,credentials:y,cache:b,redirect:S,referrer:v,referrerPolicy:w,signal:this._abortController?.signal};let T=!1;clearTimeout(this._timeoutTimer),e=ii(e,p);const E=ti(l);E&&(_=u?u.headers:A.headers=A.headers||(Headers?new Headers:{}),Headers&&_ instanceof Headers?_.append("Range",E):_.Range=E),s&&(this._timeoutTimer=setTimeout((()=>{if(T=!0,this.cancel(),o){const t=new ai(e,A,null,"timeout");t.isTimeout=!0,o(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),s));const B=Date.now();return(Wt(n)||Wt(l))&&this.player.debug.log(this.TAG_NAME,"[fetch load start], index,",n,",range,",l),new Promise(((t,i)=>{fetch(u||e,u?void 0:A).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(d&&(s=d(s,e)||s),!s.ok)throw new ai(e,A,s,"bad network response");const o=Date.now();let h;if(r===Ke)h=await s.text(),this._running=!1;else if(r===Xe)h=await s.json(),this._running=!1;else{if(a)return this.resolve=t,this.reject=i,void this._loadChunk(s,a,B,o);{h=await s.arrayBuffer(),h=new Uint8Array(h),this._running=!1;const t=Date.now()-B,e=ri(h.byteLength,t);this.emit(Je,{speed:e,len:h.byteLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(Wt(n)||Wt(l))&&this.player.debug.log(this.TAG_NAME,"[fetch load end], index,",n,",range,",l),t(si(h,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),B,o,n,l,this._vid,this._priOptions))})).catch((t=>{clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!T||((t=t instanceof ai?t:new ai(e,A,null,t?.message)).startTime=B,t.endTime=Date.now(),t.isTimeout=T,t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},i(t))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(t){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(t,e,i,s){if(!t.body||!t.body.getReader){this._running=!1;const e=new ai(t.url,"",t,"onProgress of bad response.body.getReader");return e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(e)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(Ye),this._writeIdx=0);const r=this._reader=t.body.getReader();let a,n,o;const h=async()=>{n=Date.now();try{a=await r.read(),o=Date.now()}catch(t){return o=Date.now(),void(this._aborted||(this._running=!1,t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(t)))}const l=this._range?.length>0?this._range[0]:0,d=l+this._receivedLength;if(this._aborted)return this._running=!1,void e(void 0,!1,{range:[d,d],vid:this._vid,index:this._index,startTime:n,endTime:o,st:i,firstByteTime:s,priOptions:this._priOptions},t);const u=a.value?a.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",d,", end,",l+this._receivedLength,", done,",a.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||a.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(a.value,this._writeIdx),this._writeIdx=0,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",a.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const t=new Uint8Array(this._writeIdx+u+2048);this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),t.set(this._cache.slice(0,this._writeIdx),0),u>0&&t.set(a.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=t,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=a.value;if((p&&p.byteLength>0||a.done)&&e(p,a.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:n,endTime:o,st:i,firstByteTime:s,priOptions:this._priOptions},t),a.done){const e=Date.now()-i,r=ri(this._receivedLength,e);this.emit(Je,{speed:r,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debug.log(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",a.done),this.resolve(si(a,!0,t,t.headers.get("Content-Length"),t.headers.get("age"),i,s,this._index,this._range,this._vid,this._priOptions))}else h()};h()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(t){this._running=t}static isSupported(){return!("undefined"==typeof fetch)}}class oi{TAG_NAME="Task";constructor(t,e,i){this.promise=function(){let t,e;const i=new Promise(((i,s)=>{t=i,e=s}));return i.used=!1,i.resolve=function(){return i.used=!0,t(...arguments)},i.reject=function(){return i.used=!0,e(...arguments)},i}(),this.alive=!!e.onProgress,this._loaderType=t,this.player=i,this._loader=t===$e&&window.fetch?new ni(i):new hi(i),this._config=e,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=e.retryCheckFunc}exec(){const{retry:t,retryDelay:e,onRetryError:i,transformError:s,...r}=this._config,a=async()=>{try{const t=await this._loader.load(r);this.promise.resolve(t)}catch(n){if(this._loader.running=!1,this.player.debug.log(this.TAG_NAME,"[task request catch err]",n),this._canceled)return;n.loaderType=this._loaderType,n.retryCount=this._retryCount;let o=n;s&&(o=s(o)||o),i&&this._retryCount>0&&i(o,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let h=!0;if(this._retryCheckFunc&&(h=this._retryCheckFunc(n)),h&&this._retryCount<=t)return clearTimeout(this._retryTimer),this.player.debug.log(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(a,e));this.promise.reject(o)}};return a(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}class hi extends t{_xhr=null;_aborted=!1;_timeoutTimer=null;_range=null;_receivedLength=0;_url=null;_onProgress=null;_index=-1;_headers=null;_currentChunkSizeKB=384;_timeout=null;_xhr=null;_withCredentials=null;_startTime=-1;_loadCompleteResolve=null;_loadCompleteReject=null;_runing=!1;_logger=!1;_vid="";_responseType;_credentials;_method;_transformResponse;_firstRtt;_onCancel=null;_priOptions=null;TAG_NAME="XhrLoader";constructor(t){super(),this.player=t}load(t){clearTimeout(this._timeoutTimer),this._range=t.range,this._onProgress=t.onProgress,this._index=t.index,this._headers=t.headers,this._withCredentials="include"===t.credentials||"same-origin"===t.credentials,this._body=t.body||null,t.method&&(this._method=t.method),this._timeout=t.timeout||null,this._runing=!0,this._vid=t.vid||t.url,this._responseType=t.responseType,this._firstRtt=-1,this._onTimeout=t.onTimeout,this._onCancel=t.onCancel,this._request=t.request,this._priOptions=t.priOptions||{},this.player.debug.log(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=ii(t.url,t.params);const e=Date.now();return new Promise(((t,e)=>{this._loadCompleteResolve=t,this._loadCompleteReject=e,this._startLoad()})).catch((t=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(t=t instanceof ai?t:new ai(this._url,this._request)).startTime=e,t.endTime=Date.now(),t.options={index:this._index,vid:this._vid,priOptions:this._priOptions},t}))}_startLoad(){let t=null;if(this._responseType===qe&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const e=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];e],tast :",this._range,", SubRange, ",t)}else t=this._range,this.player.debug.log(this.TAG_NAME,"[xhr_loader->],tast :",this._range,", allRange, ",t);this._internalOpen(t)}_internalOpen(t){try{this._startTime=Date.now();const e=this._xhr=new XMLHttpRequest;e.open(this._method||"GET",this._url,!0),e.responseType=this._responseType,this._timeout&&(e.timeout=this._timeout),e.withCredentials=this._withCredentials,e.onload=this._onLoad.bind(this),e.onreadystatechange=this._onReadyStatechange.bind(this),e.onerror=t=>{this._running=!1;const e=new ai(this._url,this._request,t?.currentTarget?.response,"xhr.onerror.status:"+t?.currentTarget?.status+",statusText,"+t?.currentTarget?.statusText);e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(e)},e.ontimeout=t=>{this.cancel();const e=new ai(this._url,this._request,{status:408},"timeout");this._onTimeout&&(e.isTimeout=!0,this._onTimeout(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(e)};const i=this._headers||{},s=ti(t);s&&(i.Range=s),i&&Object.keys(i).forEach((t=>{e.setRequestHeader(t,i[t])})),this.player.debug.log(this.TAG_NAME,"[xhr.send->] tast,",this._range,",load sub range, ",t),e.send(this._body)}catch(e){e.options={index:this._index,range:t,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(e)}}_onReadyStatechange(t){2===t.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(t){const e=t.target.status;if(e<200||e>299){const i=new ai(this._url,null,{...t.target.response,status:e},"bad response,status:"+e);return i.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(i)}let i,s=null,r=!1;const a=this._range?.length>0?this._range[0]:0;if(this._responseType===qe){const e=new Uint8Array(t.target.response);if(i=a+this._receivedLength,e&&e.byteLength>0){this._receivedLength+=e.byteLength;const t=Date.now()-this._startTime,s=ri(this._receivedLength,t);this.emit(Je,{speed:s,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:[i,a+this._receivedLength],priOptions:this._priOptions})}s=e,r=!(this._range?.length>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",i,"end ",a+this._receivedLength,",dataLen,",e?e.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",r)}else r=!0,s=t.target.response;let n={ok:e>=200&&e<300,status:e,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(n=this._transformResponse(n,this._url)||n),this._onProgress&&this._onProgress(s,r,{index:this._index,vid:this._vid,range:[i,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},n),r?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(si(this._onProgress?null:s,r,n,n.headers["content-length"],n.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(t){this._running=t}_getHeaders(t){const e=t.getAllResponseHeaders().trim().split("\r\n"),i={};for(const t of e){const e=t.split(": ");i[e[0].toLowerCase()]=e.slice(1).join(": ")}return i}}class li extends t{type=$e;_queue=[];_alive=[];_currentTask=null;_config;constructor(t,e){super(),this.player=e,this._config=function(t){return{loaderType:$e,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:Ke,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...t}}(t),this._config.loaderType!==je&&ni.isSupported()||(this.type=je)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===$e}static isFetchSupport(){return ni.isSupported()}load(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof t&&t?e=t:e.url=t||e.url||this._config.url,e=Object.assign({},this._config,e),e.params&&(e.params=Object.assign({},e.params)),e.headers&&Qe(e.headers)&&(e.headers=Object.assign({},e.headers)),e.body&&Qe(e.body)&&(e.body=Object.assign({},e.body)),e.transformRequest&&(e=e.transformRequest(e)||e);const i=new oi(this.type,e,this.player);return i.loader.on(Je,(t=>{this.emit(Je,t)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const t=this._queue.map((t=>t.cancel())).concat(this._alive.map((t=>t.cancel())));this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(t),await function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((e=>setTimeout(e,t)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const t=this._currentTask.exec().catch((t=>{}));t&&"function"==typeof t.finally&&t.finally((()=>{this._currentTask?.alive&&this._alive?.length>0&&(this._alive=this._alive.filter((t=>t&&t!==this._currentTask))),this._processTask()}))}}const di="network",ui="network_timeout",pi="other",ci="manifest",fi="hls",_i="demux";class mi extends Error{constructor(t,e,i,s,r){super(r||i?.message),this.errorType=t===ui?di:t,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(t,e,i,s,r){return t instanceof mi?t:(t instanceof Error&&(i=t,t=""),t||(t=pi),new mi(t,e,i,s,r))}static network(t){return new mi(t?.isTimeout?ui:di,null,t instanceof Error?t:null,{url:t?.url,response:t?.response,httpCode:t?.response?.status})}}const gi=/^#(EXT[^:]*)(?::(.*))?$/,yi=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,bi=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,Si=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function vi(t){const e=t.match(gi);if(e&&e[1])return[e[1].replace("EXT-X-",""),e[2]]}function wi(t){const e={};let i=yi.exec(t);for(;i;)e[i[1]]=i[2]||i[3],i=yi.exec(t);return e}function xi(t,e){if(!e||!t||bi.test(t))return t;const i=Si.exec(e);return i?"/"===t[0]?i[1]+t:i[1]+i[2]+t:t}const Ui={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function Ai(t,e){const i=Ui[t];if(i&&e&&e.length)for(let t=0;t>8*(15-e)&255}}}class Ri{static parse(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;if(!t.includes("#EXTM3U"))throw new Error("Invalid m3u8 file");const i=function(t){return t.split(/[\r\n]/).map((t=>t.trim())).filter(Boolean)}(t);return Ri.isMediaPlaylist(t)?function(t,e){const i=new Di;i.url=e;let s,r=new Pi,a=null,n=null,o=0,h=0,l=0,d=0,u=!1;for(;(s=t[d++])&&!u;){if("#"!==s[0]){r.sn=h,r.cc=l,r.url=xi(s,e),n&&(r.key=n.clone(h)),a&&(r.initSegment=a),i.segments.push(r),r=new Pi,h++;continue}const t=vi(s);if(!t)continue;const[d,p]=t;switch(d){case"VERSION":i.version=parseInt(p);break;case"PLAYLIST-TYPE":i.type=p?.toUpperCase();break;case"TARGETDURATION":i.targetDuration=parseFloat(p);break;case"ENDLIST":{const t=i.segments[i.segments.length-1];t&&(t.isLast=!0),i.live=!1,u=!0}break;case"MEDIA-SEQUENCE":h=i.startSN=parseInt(p);break;case"DISCONTINUITY-SEQUENCE":l=i.startCC=parseInt(p);break;case"DISCONTINUITY":l++;break;case"BYTERANGE":r.setByteRange(p,i.segments[i.segments.length-1]);break;case"EXTINF":{const[t,e]=p.split(",");r.start=o,r.duration=parseFloat(t),o+=r.duration,r.title=e}break;case"KEY":{const t=wi(p);if("NONE"===t.METHOD){n=null;break}if("AES-128"!==t.METHOD)throw new Error(`encrypt ${t.METHOD}/${t.KEYFORMAT} is not supported`);if(n=new Fi,n.method=t.METHOD,n.url=/^blob:/.test(t.URI)?t.URI:xi(t.URI,e),n.keyFormat=t.KEYFORMAT||"identity",n.keyFormatVersions=t.KEYFORMATVERSIONS,t.IV){let e=t.IV.slice(2);e=(1&e.length?"0":"")+e,n.iv=new Uint8Array(e.length/2);for(let t=0,i=e.length/2;t{t.id=e})),a.length&&(a.forEach(((t,e)=>{t.id=e})),i.streams.forEach((t=>{t.audioGroup&&(t.audioStreams=a.filter((e=>e.group===t.audioGroup)))}))),n.length&&(n.forEach(((t,e)=>{t.id=e})),i.streams.forEach((t=>{t.subtitleGroup&&(t.subtitleStreams=n.filter((e=>e.group===t.subtitleGroup)))}))),i}(i,e)}static isMediaPlaylist(t){return t.includes("#EXTINF:")||t.includes("#EXT-X-TARGETDURATION:")}}class Ni{constructor(t){this.hls=t,this.player=t.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:e,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new li({...r,responseType:"text",retry:e,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new li({...r,responseType:"text",retry:e,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new li({...r,responseType:"text",retry:e,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}async destroy(){await this.stopPoll(),this._audioLoader&&(this._audioLoader.destroy(),this._audioLoader=null),this._subtitleLoader&&(this._subtitleLoader.destroy(),this._subtitleLoader=null),this._loader&&(this._loader.destroy(),this._loader=null)}async load(t,e,i){this.player.debug.log(this.TAG_NAME,"load()",t,e,i);const s=[this._loader.load(t)];let r,a,n,o,h,l;e&&s.push(this._audioLoader.load(e)),i&&s.push(this._subtitleLoader.load(i));try{const[t,i,o]=await Promise.all(s);if(!t)return[];r=t.data,e?(a=i?.data,n=o?.data):n=i?.data}catch(t){throw mi.network(t)}try{if(o=Ri.parse(r,t),!1===o?.live&&o.segments&&!o.segments.length)throw new Error("empty segments list");a&&(h=Ri.parse(a,e)),n&&(l=Ri.parse(n,i))}catch(t){throw new mi(ci,fi,t)}return o&&(o.isMaster?this.hls.emit(nt,{playlist:o}):this.hls.emit(ot,{playlist:o})),[o,h,l]}poll(t,e,i,s,r,a){clearTimeout(this._timer),a=a||3e3;let n=this.hls.config.pollRetryCount;const o=async()=>{clearTimeout(this._timer);try{const r=await this.load(t,e,i);if(!r[0])return;n=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(t){n--,n<=0&&r(t)}this._timer=setTimeout(o,a)};this._timer=setTimeout(o,a)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}_onLoaderRetry=(t,e)=>{this.hls.emit(pt,{error:mi.network(t),retryTime:e})}}class Mi{_chunkSpeeds=[];_speeds=[];addRecord(t,e){t&&e&&(this._speeds.push(8e3*t/e),this._speeds=this._speeds.slice(-3))}addChunkRecord(t,e){t&&e&&(this._chunkSpeeds.push(8e3*t/e),this._chunkSpeeds=this._chunkSpeeds.slice(-100))}getAvgSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds.reduce(((t,e)=>t+e))/this._speeds.length:this._chunkSpeeds.reduce(((t,e)=>t+e))/this._chunkSpeeds.length:0}getLatestSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds[this._speeds.length-1]:this._chunkSpeeds[this._chunkSpeeds.length-1]:0}reset(){this._chunkSpeeds=[],this._speeds=[]}}class zi{constructor(t){this.hls=t,this.player=t.player,this._bandwidthService=new Mi;const{retryCount:e,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new li({...r,responseType:"arraybuffer",retry:e,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new li({...r,responseType:"arraybuffer",retry:e,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new li({...r,responseType:"arraybuffer",retry:e,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}destroy(){this.reset(),this._keyLoader&&(this._keyLoader.destroy(),this._keyLoader=null),this._audioSegmentLoader&&(this._audioSegmentLoader.destroy(),this._audioSegmentLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null)}speedInfo(){return{speed:this._bandwidthService.getLatestSpeed(),avgSpeed:this._bandwidthService.getAvgSpeed()}}load(t,e,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return t&&(r[0]=this.loadVideoSegment(t,i)),e&&(r[1]=this.loadAudioSegment(e,s)),Promise.all(r)}loadVideoSegment(t,e){return this._loadSegment(this._segmentLoader,t,e)}loadAudioSegment(t,e){return this._loadSegment(this._audioSegmentLoader,t,e)}async _loadSegment(t,e,i){let s,r,a,n,o;const h=[];if(this.hls.emit(ct,{url:e.url}),h[0]=t.load(e.url),i&&e.initSegment){const i=e.initSegment.url;s=this._mapCache[i],s||(this.hls.emit(ct,{url:i}),h[1]=t.load(i).then((t=>{if(t){Object.keys(this._mapCache)>30&&(this._mapCache={}),s=this._mapCache[i]=t.data,this._emitOnLoaded(t,i)}})));const r=e.initSegment.key?.url;r&&(o=e.initSegment.key.iv,n=this._keyCache[r],n||(this.hls.emit(ct,{url:r}),h[2]=this._keyLoader.load(r).then((t=>{t&&(n=this._keyCache[r]=t.data,this._emitOnLoaded(t,r))}))))}const l=e.key?.url;l&&(a=e.key.iv,r=this._keyCache[l],r||(this.hls.emit(ct,{url:l}),h[3]=this._keyLoader.load(l).then((t=>{t&&(r=this._keyCache[l]=t.data,this._emitOnLoaded(t,l))}))));const[d]=await Promise.all(h);if(!d)return;const u=d.data;return this._emitOnLoaded(d,e.url),{data:u,map:s,key:r,mapKey:n,keyIv:a,mapKeyIv:o}}reset(){this.error=null,this._mapCache={},this._keyCache={},this._bandwidthService.reset()}async cancel(){await Promise.all([this._keyLoader.cancel(),this._segmentLoader.cancel(),this._audioSegmentLoader.cancel()])}_emitOnLoaded=(t,e)=>{const{data:i,response:s,option:r}=t,{firstByteTime:a,startTime:n,endTime:o,contentLength:h}=r||{},l=o-n;this._bandwidthService.addRecord(h||i.byteLength,l),this.hls.emit(ft,{time:l,byteLength:h,url:e}),this.hls.emit(_t,{url:e,elapsed:l||0}),this.hls.emit(ut,{url:e,responseUrl:s.url,elapsed:a-n}),this.hls.emit(mt,{headers:s.headers})};_onLoaderRetry=(t,e)=>{this.hls.emit(pt,{error:mi.network(t),retryTime:e})}}class Gi{constructor(t,e,i){this.live=void 0,this.id=0,this.bitrate=0,this.width=0,this.height=0,this.name="",this.url="",this.audioCodec="",this.videoCodec="",this.textCodec="",this.startCC=0,this.endCC=0,this.startSN=0,this.endSN=-1,this.totalDuration=0,this.targetDuration=0,this.snDiff=null,this.segments=[],this.audioStreams=[],this.subtitleStreams=[],this.closedCaptions=[],this.currentAudioStream=null,this.currentSubtitleStream=null,this.TAG_NAME="HlsStream",this.update(t,e,i)}get lastSegment(){return this.segments.length?this.segments[this.segments.length-1]:null}get segmentDuration(){return this.targetDuration||this.segments[0]?.duration||0}get liveEdge(){return this.endTime}get endTime(){return this.lastSegment?.end||0}get currentSubtitleEndSn(){return this.currentSubtitleStream?.endSN||0}clearOldSegment(t,e){return this._clearSegments(t,e)}getAudioSegment(t){if(!t||!this.currentAudioStream)return;const e=t.sn-this.snDiff;return this.currentAudioStream.segments.find((t=>t.sn===e))}update(t,e){this.url=t.url,Array.isArray(t.segments)?(null!==this.live&&void 0!==this.live||(this.live=t.live),this._updateSegments(t,this),this.startCC=t.startCC,this.endCC=t.endCC,this.startSN=t.startSN,this.endSN=t.endSN||-1,this.totalDuration=t.totalDuration,this.targetDuration=t.targetDuration,this.live=t.live,e&&this.currentAudioStream&&Array.isArray(e.segments)&&(this._updateSegments(e,this.currentAudioStream),(null===this.snDiff||void 0===this.snDiff)&&t.segments.length&&e.segments.length&&(this.snDiff=t.segments[0].sn-e.segments[0].sn))):(this.id=t.id,this.bitrate=t.bitrate,this.width=t.width,this.height=t.height,this.name=t.name,this.audioCodec=t.audioCodec,this.videoCodec=t.videoCodec,this.textCodec=t.textCodec,this.audioStreams=t.audioStreams,this.subtitleStreams=t.subtitleStreams,!this.currentAudioStream&&this.audioStreams.length&&(this.currentAudioStream=this.audioStreams.find((t=>t.default))||this.audioStreams[0]),!this.currentSubtitleStream&&this.subtitleStreams.length&&(this.currentSubtitleStream=this.subtitleStreams.find((t=>t.default))||this.subtitleStreams[0]))}updateSubtitle(t){if(!(t&&this.currentSubtitleStream&&Array.isArray(t.segments)))return;const e=this._updateSegments(t,this.currentSubtitleStream),i=this.currentSubtitleStream.segments;return i.length>100&&(this.currentSubtitleStream.segments=i.slice(100)),e?e.map((t=>({sn:t.sn,url:t.url,duration:t.duration,start:t.start,end:t.end,lang:this.currentSubtitleStream.lang}))):void 0}switchSubtitle(t){const e=this.subtitleStreams.find((e=>e.lang===t)),i=this.currentSubtitleStream;e&&(this.currentSubtitleStream=e,i.segments=[])}_clearSegments(t,e){let i=0;const s=this.segments;for(let e=0,r=s.length;e=t){i=e;break}return i>e&&(i=e),i&&(this.segments=this.segments.slice(i),this.currentAudioStream&&(this.currentAudioStream.segments=this.currentAudioStream.segments.slice(i))),e-i}_updateSegments(t,e){const i=e.segments;if(this.live){const s=i[i.length-1],r=s?.sn||-1;if(rt.sn===r)),n=a<0?t.segments:t.segments.slice(a+1);if(i.length&&n.length){let t=s.end;n.forEach((e=>{e.start=t,t=e.end}));const e=s?.cc||-1;e>n[0].cc&&n.forEach((t=>t.cc+=e))}return e.endSN=t.endSN,e.segments=i.concat(n),n}}else e.segments=t.segments}}class Oi{constructor(t){this.hls=t,this.player=t.player,this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1,this.TAG_NAME="HlsPlaylist"}destroy(){this.reset()}get lastSegment(){return this.currentStream?.lastSegment}get currentSegment(){return this.currentSegments?.[this._segmentPointer]}get nextSegment(){return this.currentSegments?.[this._segmentPointer+1]}get currentSegments(){return this.currentStream?.segments}get currentSubtitleEndSn(){return this.currentStream?.currentSubtitleEndSn}get liveEdge(){return this.currentStream?.liveEdge}get totalDuration(){return this.currentStream?.totalDuration||0}get seekRange(){const t=this.currentSegments;if(t&&t.length)return[t[0].start,t[t.length-1].end]}get isEmpty(){return!this.currentSegments?.length}get isLive(){return this.currentStream?.live}get hasSubtitle(){return!!this.currentStream?.currentSubtitleStream}getAudioSegment(t){return this.currentStream?.getAudioSegment(t)}moveSegmentPointer(t){var e,i,s;null==t&&(t=this._segmentPointer+1),this._segmentPointer=(e=t,i=-1,s=this.currentSegments?.length,Math.max(Math.min(e,Math.max(i,s)),Math.min(i,s))),this.player.debug.log(this.TAG_NAME,"moveSegmentPointer()",t,this._segmentPointer)}reset(){this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1}getSegmentByIndex(t){return this.currentSegments?.[t]}setNextSegmentByIndex(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=t-1,this.player.debug.log(this.TAG_NAME,"setNextSegmentByIndex()",t,this._segmentPointer)}findSegmentIndexByTime(t){const e=this.currentSegments;if(e){for(let i,s=0,r=e.length;s=i.start&&tt.url)).forEach(((t,e)=>{this.streams[e]?this.streams[e].update(t):this.streams[e]=new Gi(t)})),this.currentStream=this.streams[0];else if(Array.isArray(t.segments)){const s=this.currentStream;if(s){s.update(t,e,i);const r=s.updateSubtitle(i);r&&this.hls.emit(at,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new Gi(t,e,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((t,e)=>t+=e.duration),0))}switchSubtitle(t){this.currentStream?.switchSubtitle(t)}clearOldSegment(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const e=this.currentStream;if(!this.dvrWindow||!e)return;const i=e.endTime-this.dvrWindow;if(i<=0)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() stream.endTime:${e.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=e.segments;if(s.length<=t)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${t}`);const r=this._segmentPointer;this._segmentPointer=e.clearOldSegment(i,r),this.player.debug.log(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debug.log(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(t,e){const i=this.findSegmentIndexByTime(t),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==e&&s.hasAudio&&s.hasVideo)return s;if(s.end-t>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}function Hi(){for(var t=arguments.length,e=new Array(t),i=0;it+e.byteLength),0));let r=0;return e.forEach((t=>{s.set(t,r),r+=t.byteLength})),s}class Vi{constructor(){const t=window.crypto||window.msCrypto;this.subtle=t&&(t.subtle||t.webkitSubtle),this.externalDecryptor=null}decrypt(t,e){if(!t&&!e)return;const i=[];return t&&(i[0]=this._decryptSegment(t)),e&&(i[1]=this._decryptSegment(e)),Promise.all(i)}async _decryptSegment(t){let e=t.data;return t.key&&(e=await this._decryptData(t.data,t.key,t.keyIv)),t.map?Hi(t.map,e):e}async _decryptData(t,e,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(t,e,i);{if(!this.subtle)throw new Error("crypto is not defined");const s=await this.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt","decrypt"]);return new Uint8Array(await this.subtle.decrypt({name:"AES-CBC",iv:i},s,t))}}}const Wi=9e4,Yi=45e4,$i=9e4;class ji extends Ie{constructor(t){super(t),this.player=t,this._pmtId=-1,this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[],this._gopId=0,this._videoPid=-1,this._audioPid=-1,this._codecType=M,this._audioCodecType=H.AAC,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="TsLoader",this.videoTrack=ji.initVideoTrack(),this.audioTrack=ji.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._baseFpsInterval=null,this._tempSampleTsList=[],this._hasAudio=!1,this._hasVideo=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this.tempSampleListInfo={},this._initLoopWorker(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._stopDecodeLoopInterval(),this.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=50,this._hasCalcFps=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}static initVideoTrack(){return{samples:[]}}static initAudioTrack(){return{samples:[]}}static probe(t){return!!t.length&&(71===t[0]&&71===t[188]&&71===t[376])}static _parsePES(t){const e=t[8];if(null==e||t.lengtht.length-6)return;let s,r;const a=t[7];return 192&a&&(s=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&a?(r=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,s-r>54e5&&(s=r)):r=s),{data:t.subarray(9+e),pts:s,dts:r,originalPts:s,originalDts:r}}_demux(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e&&(this._pmtId=-1,this.videoTrack=ji.initVideoTrack(),this.audioTrack=ji.initAudioTrack()),!i||e?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(t=Hi(this._remainingPacketData,t),this._remainingPacketData=null));let s=t.length;const r=s%188;r&&(this._remainingPacketData=t.subarray(s-r),s-=r);for(let e=0;e>4>1){if(r=e+5+t[e+4],r===e+188)continue}else r=e+4;switch(s){case 0:i&&(r+=t[r]+1),this._pmtId=(31&t[r+10])<<8|t[r+11];break;case this._pmtId:{i&&(r+=t[r]+1);const e=r+3+((15&t[r+1])<<8|t[r+2])-4;for(r+=12+((15&t[r+10])<<8|t[r+11]);r=e)return[];const r=[];for(;s{const e=s?t[0]>>>1&63:31&t[0];switch(e){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!s&&5!==e||s&&5===e)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==e||s&&6===e)break;return void function(t,e){const i=t.length;let s=e?2:1,r=0,a=0,n="";for(;255===t[s];)r+=255,s++;for(r+=t[s++];255===t[s];)a+=255,s++;if(a+=t[s++],5===r&&i>s+16)for(let e=0;e<16;e++)n+=t[s].toString(16),s++;t.subarray(s)}(function(t){const e=t.byteLength,i=[];let s=1;for(;s=i)return;const r=s,a=[],n=(60&t[s+2])>>>2,o=Et[n];if(!o)throw new Error(`Invalid sampling index: ${n}`);const h=1+((192&t[s+2])>>>6),l=(1&t[s+2])<<2|(192&t[s+3])>>>6;let d,u,p=0;const c=Lt(o);for(;s+7>5,i-s=i?void 0:t.subarray(s),frames:a,samplingFrequencyIndex:n,sampleRate:o,objectType:h,channelCount:l,originCodec:`mp4a.40.${h}`}}(t.data,t.originalPts);if(e){if(this.audioTrack.codec=e.codec,this.audioTrack.sampleRate=e.sampleRate,this.audioTrack.channelCount=e.channelCount,!this._isSendAACSeqHeader){const t=At({profile:e.objectType,sampleRate:e.samplingFrequencyIndex,channel:e.channelCount});this._isSendAACSeqHeader=!0,this.player.debug.log(this.TAG_NAME,"aac seq header",`profile: ${e.objectType}, sampleRate:${e.sampleRate},sampleRateIndex: ${e.samplingFrequencyIndex}, channel: ${e.channelCount}`),this._doDecodeByHls(t,y,0,!1,0)}if(this._isSendAACSeqHeader){const t=[];e.frames.forEach((e=>{const i=e.pts,s=new Uint8Array(e.data.length+2);s.set([175,1],0),s.set(e.data,2);const r={type:y,pts:i,dts:i,payload:s};t.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(t)}else this.player.debug.warn(this.TAG_NAME,"aac seq header not send")}else this.player.debug.warn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}}else console.warn("Cannot parse audio pes",this._audioPesData)}_fix(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t=Math.round(9e4*t);const s=this.videoTrack,r=this.audioTrack,a=s.samples,n=r.samples;if(!a.length&&!n.length)return;const o=a[0],h=n[0];let l=0;if(a.length&&n.length&&(l=o.dts-h.pts),this._baseDtsInited||this._calculateBaseDts(),e&&(this._calculateBaseDts(),this._baseDts-=t),!i){this._videoNextDts=l>0?t+l:t,this._audioNextPts=l>0?t:t-l;const e=o?o.dts-this._baseDts-this._videoNextDts:0,i=h?h.pts-this._baseDts-this._audioNextPts:0;Math.abs(e||i)>$i&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=t)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let d=s.samples.concat(r.samples);d=d.map((t=>(t.dts=t.dts/90,t.pts=t.pts/90,t.cts=t.pts-t.dts,t))).sort(((t,e)=>t.dts-e.dts)),d.forEach((t=>{const e=new Uint8Array(t.payload);delete t.payload,this.loopWorker.postMessage({...t,payload:e,cmd:"sample"},[e.buffer])})),Kt(this._hasCalcFps)&&(this._hasCalcFps=!0,this._calcDecodeFps(d))}_calculateBaseDts(){const t=this.audioTrack,e=this.videoTrack,i=t.samples,s=e.samples;if(!i.length&&!s.length)return!1;let r=1/0,a=1/0;i.length&&(t.baseDts=r=i[0].pts),s.length&&(e.baseDts=a=s[0].dts),this._baseDts=Math.min(r,a);const n=a-r;return Number.isFinite(n)&&Math.abs(n)>45e3&&this.player.debug.warn(this.TAG_NAME,`large av first frame gap,\n video pts: ${a},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${n}`),this._baseDtsInited=!0,!0}_resetBaseDtsWhenStreamBreaked(){if(this._baseDtsInited&&this._videoTimestampBreak&&this._audioTimestampBreak){if(!this._calculateBaseDts(this.audioTrack,this.videoTrack))return;this._baseDts-=Math.min(this._audioNextPts,this._videoNextDts),this._audioLastSample=null,this._videoLastSample=null,this._videoTimestampBreak=!1,this._audioTimestampBreak=!1}}_fixAudio(t){const e=t.samples;e.length&&(e.forEach((t=>{t.pts-=this._baseDts,t.dts=t.pts})),this._doFixAudioInternal(t,e,9e4))}_fixVideo(t){const e=t.samples;if(!e.length)return;if(e.forEach((t=>{t.dts-=this._baseDts,t.pts-=this._baseDts})),void 0===this._videoNextDts){const t=e[0];this._videoNextDts=t.dts}const i=e.length;let s=0;const r=e[0],a=e[1],n=this._videoNextDts-r.dts;let o;Math.abs(n)>45e3&&(r.dts+=n,r.pts+=n,this.player.debug.warn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${a.dts},\n duration is ${n}`),a&&Math.abs(a.dts-r.dts)>$i&&(this._videoTimestampBreak=!0,e.forEach(((t,e)=>{0!==e&&(t.dts+=n,t.pts+=n)}))));const h=t.samples[0],l=t.samples[i-1];o=1===i?9e3:Math.floor((l.dts-h.dts)/(i-1));for(let r=0;r$i||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?o:Math.max(s,2700);const i=this._audioNextPts||0;n&&n.dts>i&&(s=o),this.player.debug.warn(this.TAG_NAME,`large video gap between frames,\n time is ${a/t.timescale},\n dts is ${a},\n origin dts is ${e[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${o}`)}e[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(t,e,i){t.sampleDuration||(t.sampleDuration=Lt(t.timescale,i));const s=t.sampleDuration;if(void 0===this._audioNextPts){const t=e[0];this._audioNextPts=t.pts}for(let i=0;i=3*s&&n<=Wi&&!Gt()){kt(t.codec,t.channelCount)||e[0].data.subarray();const o=Math.floor(n/s);Math.abs(a.pts-this._lastAudioExceptionGapDot)>Yi&&(this._lastAudioExceptionGapDot=a.pts),this.player.debug.warn(this.TAG_NAME,`audio gap detected,\n pts is ${e.pts},\n originPts is ${e.originalPts},\n count is ${o},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let t=0;t=-9e4?(Math.abs(a.pts-this._lastAudioExceptionOverlapDot)>Yi&&(this._lastAudioExceptionOverlapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`audio overlap detected,\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),e.splice(i,1),i--):(Math.abs(n)>=Wi&&(this._audioTimestampBreak=!0,Math.abs(a.pts-this._lastAudioExceptionLargeGapDot)>Yi&&(this._lastAudioExceptionLargeGapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`large audio gap detected,\n time is ${a.pts/1e3}\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${r},\n sample duration is ${n}\n ref sample duration is ${s}`))),a.dts=a.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(t){const e=function(t,e){e&&(t=t.filter((t=>t.type===e)));let i=t[0],s=null,r=1;if(t.length>0){let e=t[1];e&&e.ts-i.ts>1e5&&(i=e,r=2)}if(i)for(let a=r;a=1e3&&t[a-1].ts-i.ts<1e3&&(s=a+1)}return s}(t.map((t=>({ts:t.dts||t.pts,type:t.type}))),b);e&&(this._basefps=e,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${e}, update base fps is ${this._basefps}`))}_initLoopWorker(){const t=Xt(function(){const t=1,e=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(t){this.baseFps=t,this._clearInterval(),this._startInterval()}pushSample(t){delete t.cmd,this.allSampleList.push(t)}_startInterval(){const t=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e),this.startBpsTime||(this.startBpsTime=e);const i=e-this.preLoopTimestamp;if(i>2*t&&console.warn(`JbPro:[TsLoader LoopWorker] loop interval is ${i}ms, more than ${t} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){e-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=e)}}),t)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((s=>{s.type===e?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration/90)):s.type===t&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===e){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let e=this.allSampleList[0];for(;e&&e.type===t;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),e=this.allSampleList[0]}else i.type===t&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),this.allSampleList.length&&this.allSampleList[0].type===e&&(i=this.allSampleList.shift(),postMessage({cmd:"decodeVideo",...i},[i.payload.buffer])))}};self.onmessage=t=>{const e=t.data;switch(e.cmd){case"updateBaseFps":i.updateBaseFps(e.baseFps);break;case"sample":i.pushSample(e);break;case"destroy":i.destroy(),i=null}}}.toString()),e=new Blob([t],{type:"text/javascript"}),i=URL.createObjectURL(e);let s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),1e4),s.onmessage=t=>{const e=t.data;switch(e.cmd){case"decodeVideo":this._doDecodeVideo(e);break;case"decodeAudio":this._doDecodeAudio(e);break;case"sampleListInfo":this.tempSampleListInfo=e}},this.loopWorker=s}_postMessageToLoopWorker(t,e){this.loopWorker?this.loopWorker.postMessage({cmd:t,...e}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message")}_doDecodeAudio(t){const e=new Uint8Array(t.payload);this._doDecodeByHls(e,y,t.dts,!1,0)}_doDecodeVideo(t){const e=new Uint8Array(t.payload);let i=null;i=t.isHevc?ve(e,t.isIFrame):ue(e,t.isIFrame),this.player._updateStats({dts:t.dts});const s=t.pts-t.dts;this._doDecodeByHls(i,b,t.dts,t.isIFrame,s)}_stopDecodeLoopInterval(){this._baseFpsInterval&&(clearInterval(this._baseFpsInterval),this._baseFpsInterval=null)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}}class qi extends Ie{constructor(t){super(t),this.player=t,this.TAG_NAME="HlsFmp4Loader",this.tempSampleListInfo={},this.isInitVideo=!1,this.isInitAudio=!1,t.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.isInitVideo=!1,this.isInitAudio=!1,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(t){let e=He.createFile();e.onReady=t=>{const i=t.videoTracks[0],s=t.audioTracks[0];if(i&&Kt(this.isInitVideo)){this.videoTrackId=i.id;const t=this.getSeqHeader(e,i);t&&(this.player.debug.log(this.TAG_NAME,"seqHeader",t),this._doDecodeByFmp4(t,b,0,!0,0),this.isInitVideo=!0),e.setExtractionOptions(i.id)}if(s&&Kt(this.isInitAudio)){this.audioTrackId=s.id;const t=s.audio||{},i=Bt.indexOf(t.sample_rate),r=s.codec.replace("mp4a.40.","");e.setExtractionOptions(s.id);const a={profile:parseInt(r,10),sampleRate:i,channel:t.channel_count},n=At(a);this.player.debug.log(this.TAG_NAME,"aacADTSHeader",n,"config",a),this._doDecodeByFmp4(n,y,0,!1,0),this.isInitAudio=!0}e.start()},e.onError=t=>{this.player.debug.error(this.TAG_NAME,"mp4Box onError",t)},e.onSamples=(t,e,i)=>{if(t===this.videoTrackId)for(const t of i){const e=t.data,i=t.is_sync,s=1e3*t.cts/t.timescale;t.duration,t.timescale,this.player.updateStats({vbps:e.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?ve(e,i):ue(e,i),this.player.debug.log(this.TAG_NAME,"onSamples: video","timestamp",s),this._doDecodeByFmp4(r,b,s,i,0)}else if(t===this.audioTrackId)for(const t of i){const e=t.data;this.player.updateStats({abps:e.byteLength});const i=1e3*t.cts/t.timescale,s=1e3*t.duration/t.timescale,r=new Uint8Array(e.byteLength+2);r.set([175,1],0),r.set(e,2),this.player.debug.log(this.TAG_NAME,"onSamples: audio","timestamp",i,"duration",s),this._doDecodeByFmp4(r,y,i,!1,0)}else this.player.debug.warn(this.TAG_NAME,"onSamples() trackId error",t)};let i=new Uint8Array(t);i.buffer.fileStart=0,e.appendBuffer(i.buffer),e.flush()}getSeqHeader(t,e){if(t){const i=t.getTrackById(e.id);for(const t of i.mdia.minf.stbl.stsd.entries)if(t.avcC||t.hvcC){const e=new He.DataStream(void 0,0,He.DataStream.BIG_ENDIAN);let i=[];t.avcC?(t.avcC.write(e),i=[23,0,0,0,0]):(this.isHevc=!0,t.hvcC.write(e),i=[28,0,0,0,0]);const s=new Uint8Array(e.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}}return null}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}}class Ki{constructor(t,e){this.hls=t,this.player=this.hls.player,this.isMP4=e,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this.hlsV2Mp4NotSupport=!1,this._demuxer=e?new qi(this.hls.player):new ji(this.hls.player)}destroy(){this.hlsV2Mp4NotSupport=!1,this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(t,e,i,s,r,a){this.player.debug.log(this.TAG_NAME,`transmux videoChunk:${t&&t.byteLength}, audioChunk:${e&&e.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${a}`);const n=this._demuxer;try{if(this.isMP4){if(this.hlsV2Mp4NotSupport)return;this.player.debug.warn(this.TAG_NAME,"transmuxer isMP4"),this.player._emitError(L.hlsV2Mp4NotSupport),this.hlsV2Mp4NotSupport=!0}else n.demuxAndFix(Hi(t,e),i,s,r)}catch(t){throw new mi(_i,fi,t)}}}function Xi(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(t[e]<<24>>>0)+(t[e+1]<<16)+(t[e+2]<<8)+(t[e+3]||0)}function Ji(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return Xi(t,e)*i+Xi(t,e+4)}class Zi{static probe(t){return!!Zi.findBox(t,["ftyp"])}static findBox(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!t)return s;let r=0,a="",n=0;for(;t.length>7;){if(r=Xi(t),a=String.fromCharCode.apply(null,t.subarray(4,8)),n=8,1===r?(r=Ji(t,8),n+=8):r||(r=t.length),!e[0]||a===e[0]){const o=t.subarray(0,r);if(!(e.length<2))return Zi.findBox(o.subarray(n),e.slice(1),i+n);s.push({start:i,size:r,headerSize:n,type:a,data:o})}i+=r,t=t.subarray(r)}return s}}class Qi{constructor(t){this.hls=t,this.player=t.player,this._decryptor=new Vi,this._transmuxer=null,this._mse=null,this._softVideo=null,this._sourceCreated=!1,this._needInitSegment=!0,this._directAppend=!1,this.TAG_NAME="HlsBufferService"}async destroy(){this._softVideo=null,this._transmuxer&&(this._transmuxer.destroy(),this._transmuxer=null)}get baseDts(){return this._transmuxer?._demuxer?._baseDts}get nbSb(){return 0}async updateDuration(t){this.player.debug.log(this.TAG_NAME,"updateDuration()",t)}getBuferredDuration(){return this._transmuxer?._demuxer?.getBuferredDuration()}getBufferedSegments(){return this._transmuxer?._demuxer?.getSampleListLength()}getBufferedAudioSegments(){return this._transmuxer?._demuxer?.getSampleAudioListLength()}getBufferedVideoSegments(){return this._transmuxer?._demuxer?.getSampleVideoListLength()}createSource(t,e,i,s){if(this._sourceCreated)return;const r=t||e;r&&(ji.probe(r)?this._transmuxer||(this._transmuxer=new Ki(this.hls,!1)):Zi.probe(r)?this._transmuxer||(this._transmuxer=new Ki(this.hls,!0)):this.player.debug.error(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(t,e,i,s,r,a,n){if(i?.length||s?.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,a,n,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debug.log(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(t,e){return this._decryptor.decrypt(t,e)}async reset(){this._transmuxer=null,this._needInitSegment=!0,this._directAppend=!1}async endOfStream(){this._softVideo&&this._softVideo.endOfStream()}async setLiveSeekableRange(t,e){}seamlessSwitch(){this._needInitSegment=!0}}class es{constructor(t){this.emitter=t,this._seiSet=new Set,t.on(gt,(t=>{t&&this._seiSet.add(t)}))}throw(t){if(null==t||!this._seiSet.size)return;const e=t-.2,i=t+.2,s=[];this._seiSet.forEach((t=>{t.time>=e&&t.time<=i&&s.push(t)})),s.forEach((t=>{this._seiSet.delete(t),this.emitter.emit(yt,t)}))}reset(){this._seiSet.clear()}}class is{constructor(t){this._timescale=t,this.encodeType="",this.audioCodec="",this.videoCodec="",this.domain="",this.fps=0,this.bitrate=0,this.width=0,this.height=0,this.samplerate=0,this.channelCount=0,this.gop=0,this._bitsAccumulateSize=0,this._bitsAccumulateDuration=0}getStats(){return{encodeType:this.encodeType,audioCodec:this.audioCodec,videoCodec:this.videoCodec,domain:this.domain,fps:this.fps,bitrate:this.bitrate,width:this.width,height:this.height,samplerate:this.samplerate,channelCount:this.channelCount,gop:this.gop}}setEncodeType(t){this.encodeType=t}setFpsFromScriptData(t){let{data:e}=t;const i=e?.onMetaData?.framerate;i&&i>0&&i<100&&(this.fps=i)}setVideoMeta(t){if(this.width=t.width,this.height=t.height,this.videoCodec=t.codec,this.encodeType=t.codecType,t.fpsNum&&t.fpsDen){const e=t.fpsNum/t.fpsDen;e>0&&e<100&&(this.fps=e)}}setAudioMeta(t){this.audioCodec=t.codec,this.samplerate=t.sampleRate,this.channelCount=t.channelCount}setDomain(t){this.domain=t.split("/").slice(2,3)[0]}updateBitrate(t){if((!this.fps||this.fps>=100)&&t.length){const e=t.reduce(((t,e)=>t+e.duration),0)/t.length;this.fps=Math.round(this._timescale/e)}t.forEach((t=>{1===t.gopId&&this.gop++,this._bitsAccumulateDuration+=t.duration/(this._timescale/1e3),this._bitsAccumulateSize+=t.units.reduce(((t,e)=>t+e.length),0),this._bitsAccumulateDuration>=1e3&&(this.bitrate=8*this._bitsAccumulateSize,this._bitsAccumulateDuration=0,this._bitsAccumulateSize=0)}))}}class ss{_core=null;_samples=[];constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;this._core=t,this._timescale=e,this._stats=new is(e),this._bindEvents()}getStats(){const{currentTime:t=0,decodeFps:e=0}=this._core?.media||{};return{...this._stats.getStats(),downloadSpeed:this._core?.speedInfo?.().speed||0,avgSpeed:this._core?.speedInfo?.().avgSpeed||0,currentTime:t,bufferEnd:this._core?.bufferInfo()?.remaining||0,decodeFps:e}}_bindEvents(){this._core.on(ht,(t=>this._stats.updateBitrate(t.samples))),this._core.on(lt,(t=>{this._stats.setFpsFromScriptData(t)})),this._core.on(dt,(t=>{"video"===t.type?this._stats.setVideoMeta(t.track):this._stats.setAudioMeta(t.track)})),this._core.on(ut,(t=>{this._stats.setDomain(t.responseUrl)}))}reset(){this._samples=[],this._stats=new is(this._timescale)}}class rs extends t{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.player=t,this.config=null,this._manifestLoader=null,this._segmentLoader=null,this._playlist=null,this._bufferService=null,this._seiService=null,this._stats=null,this._prevSegSn=null,this._prevSegCc=null,this._tickTimer=null,this._tickInterval=500,this._segmentProcessing=!1,this._reloadOnPlay=!1,this._switchUrlOpts=null,this._disconnectTimer=null,this.TAG_NAME="Hls256",this.config=e=function(t){return{isLive:!0,maxPlaylistSize:50,retryCount:3,retryDelay:1e3,pollRetryCount:2,loadTimeout:1e4,preloadTime:30,softDecode:!1,bufferBehind:10,maxJumpDistance:3,startTime:0,targetLatency:10,maxLatency:20,allowedStreamTrackChange:!0,...t}}(e),this._manifestLoader=new Ni(this),this._segmentLoader=new zi(this),this._playlist=new Oi(this),this._bufferService=new Qi(this),this._seiService=new es(this),this._stats=new ss(this,9e4),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){this.player.debug.log(this.TAG_NAME,"destroy()"),this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),await Promise.all([this._clear(),this._bufferService.destroy()]),this._manifestLoader&&(await this._manifestLoader.destroy(),this._manifestLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null),this._playlist&&(this._playlist.destroy(),this._playlist=null),this.player.debug.log(this.TAG_NAME,"destroy end")}_startTick(){this._stopTick(),this._tickTimer=setTimeout((()=>{this._tick()}),this._tickInterval)}_stopTick(){this._tickTimer&&clearTimeout(this._tickTimer),this._tickTimer=null}_tick(){this._startTick(),this._loadSegment()}get isLive(){return this._playlist.isLive}get streams(){return this._playlist.streams}get currentStream(){return this._playlist.currentStream}get hasSubtitle(){return this._playlist.hasSubtitle}get baseDts(){return this._bufferService?.baseDts}speedInfo(){return this._segmentLoader.speedInfo()}getStats(){return this._stats.getStats()}async loadSource(t){return this.player.debug.log(this.TAG_NAME,`loadSource() ${t}`),await this._reset(),await this._loadData(t),this._startTick(),!0}async _loadData(t){this.player.debug.log(this.TAG_NAME,`_loadData() ${t}`);try{t&&(t=t.trim())}catch(t){}if(!t)throw this._emitError(new mi(pi,pi,null,null,"m3u8 url is missing"));const e=await this._loadM3U8(t),{currentStream:i}=this._playlist;if(this._urlSwitching){0===i.bitrate&&this._switchUrlOpts?.bitrate&&(i.bitrate=this._switchUrlOpts?.bitrate);const t=this._getSeamlessSwitchPoint();this.config.startTime=t;const e=this._playlist.findSegmentIndexByTime(t),s=this._playlist.getSegmentByIndex(e+1);if(s){const t=s.start;this.player.debug.warn(this.TAG_NAME,`clear buffer from ${t}`)}}e&&(this.isLive?(this.player.debug.log(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[r,a,n]=t;r?(this._playlist.upsertPlaylist(r,a,n),this.isLive&&this._pollM3U8(e,i,s)):this.player.debug.warn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((t=>{throw this._emitError(mi.create(t))}))}_pollM3U8(t,e,i){let s=this._playlist.isEmpty;this._manifestLoader.poll(t,e,i,((t,e,i)=>{this._playlist.upsertPlaylist(t,e,i),this._playlist.clearOldSegment(),t&&s&&!this._playlist.isEmpty&&this._loadSegment(),s&&(s=this._playlist.isEmpty)}),(t=>{this._emitError(mi.create(t))}),1e3*(this._playlist.lastSegment?.duration||0))}_loadSegment=async()=>{if(this.player.debug.log(this.TAG_NAME,"_loadSegment()","_segmentProcessing",this._segmentProcessing),this._segmentProcessing)return void this.player.debug.warn("_loadSegment()","_segmentProcessing is ture and return");const t=this._playlist.currentSegment,e=this._playlist.nextSegment;if(this.player.debug.log(this.TAG_NAME,"_loadSegment()","curSeg",t,"nextSeg",e),e)return this._loadSegmentDirect();this.player.debug.log(this.TAG_NAME,"nextSeg is null and return")};async _loadSegmentDirect(){this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()");const t=this._playlist.nextSegment;if(!t)return void this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() !seg");let e=!1,i=null;try{this._segmentProcessing=!0,e=await this._reqAndBufferSegment(t,this._playlist.getAudioSegment(t))}catch(t){i=t}finally{this._segmentProcessing=!1}return i?this._emitError(mi.create(i)):(e?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(St,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",t.isLast),t.isLast?(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() not appended"),e)}async _reqAndBufferSegment(t,e){this.player.debug.log(this.TAG_NAME,"video seg",t&&t.url,"audio seg",e&&e.url);const i=t?t.cc:e.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(t,e,s)}catch(t){throw t.fatal=!1,this._segmentLoader.error=t,t}if(!r[0])return;const a=await this._bufferService.decryptBuffer(...r);if(!a)return void this.player.debug.log(this.TAG_NAME,"decryptBuffer return null");const n=t?t.sn:e.sn,o=t?t.start:e.start,h=this._playlist.currentStream;return this._bufferService.createSource(a[0],a[1],h?.videoCodec,h?.audioCodec),await this._bufferService.appendBuffer(t,e,a[0],a[1],s,this._prevSegSn===n-1,o),this._prevSegCc=i,this._prevSegSn=n,!0}async _clear(){this.player.debug.log(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debug.log(this.TAG_NAME,"_reset()"),this._reloadOnPlay=!1,this._prevSegSn=null,this._prevSegCc=null,this._switchUrlOpts=null,this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),this._stats.reset(),await this._clear(),this._bufferService.reset(t)}_end(){this.player.debug.log(this.TAG_NAME,"_end()"),this._clear()}_emitError(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!1===t.originError?.fatal?console.warn(t):(console.table(t),console.error(t),console.error(this.media?.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(bt,t)),e&&this._end(),this._seiService.reset(),this.emit(xt,t)),t}_getSeamlessSwitchPoint(){const{media:t}=this;let e=t.currentTime;if(!t.paused){const i=this._playlist.findSegmentIndexByTime(t.currentTime),s=this._playlist.getSegmentByIndex(i),r=this._stats?.getStats().downloadSpeed;if(r&&s){e+=s.duration*this._playlist.currentStream.bitrate/r+1}else e+=5}return e}getDemuxBuferredDuration(){return this._bufferService.getBuferredDuration()||0}getDemuxBufferedListLength(){return this._bufferService.getBufferedSegments()||0}getDemuxAudioBufferedListLength(){return this._bufferService.getBufferedAudioSegments()||0}getDemuxVideoBufferedListLength(){return this._bufferService.getBufferedVideoSegments()||0}}class as extends t{constructor(t){super(),this.TAG_NAME="Hls256Decoder",this.player=t,this.canVideoPlay=!1,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new rs(t),this._bindEvents()}async destroy(){return this._stopBandwidthEstimateInterval(),this.hls&&(await this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((t=>t())),this.eventsDestroy=[]),this.player.debug.log(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(xt,(t=>{this.player._emitError(L.hlsError,t)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const t=this.hls.speedInfo();this.player.emit(k.kBps,(t.avgSpeed/1024/8).toFixed(2))}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}async loadSource(t){return this.player.debug.log(this.TAG_NAME,`loadSource() ${t}`),this.url=t,await this.hls.loadSource(t),!0}checkHlsBufferedDelay(){let t=0;return this.hls&&(t=this.hls.getDemuxBuferredDuration()),t}getDemuxBufferedListLength(){let t=0;return this.hls&&(t=this.hls.getDemuxBufferedListLength()),t}getDemuxAudioBufferedListLength(){let t=0;return this.hls&&(t=this.hls.getDemuxAudioBufferedListLength()),t}getDemuxVideoBufferedListLength(){let t=0;return this.hls&&(t=this.hls.getDemuxVideoBufferedListLength()),t}}class ns extends t{constructor(t){super(),this._opt={},this.TAG_NAME="JbProRecorder",Object.keys(t).forEach((e=>{if(void 0===t[e])throw new Error(`JbPro option "${e}" can not be undefined`)}));const e=jt();let i=Object.assign({},e,t);Wt(i.timeout)&&(Vt(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),Vt(i.heartTimeout)&&(i.heartTimeout=i.timeout)),i.debugUuid="xxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)})),this._opt=i,this._destroyed=!1,this._loadingTimeoutReplayTimes=0,this.debug=new Jt(this),this.events=new Zt(this),this.audio=new te(this),this.video=new Qt(this),this.recorder=null,this.stream=null,this.demux=null,this.hlsDecoder=null,this._stats={},this._initDebug(),this.debug.log(this.TAG_NAME,`init success and version is ${zt}`),console.log(`JbProRecorder version is ${zt}`)}destroy(){return new Promise(((t,e)=>{this.stop().then((()=>{this.audio&&(this.audio.destroy(),this.audio=null),this.video&&(this.video.destroy(),this.video=null),t()})).catch((t=>{e(t)}))}))}_init(){return new Promise(((t,e)=>{this.stream||(this.stream=new ne(this)),this.demux||(this.demux=new We(this)),this.recorder||(this.recorder=new Le(this)),this._opt.isHls&&!this.hlsDecoder&&(this.hlsDecoder=new as(this)),t()}))}_initDebug(){if(this._opt.debug){const t=[],e=[k.stats,k.playbackStats,k.playbackTimestamp,k.flvMetaData,k.playToRenderTimes];Object.keys(k).forEach((i=>{this.on(k[i],(s=>{t.includes(i)||(e.includes(i)&&(s=JSON.stringify(s)),this.debug.log("player events",k[i],s))}))})),Object.keys(L).forEach((t=>{this.on(L[t],(e=>{this.debug.warn("player event error",L[t],e)}))}))}}_checkLoadingTimeout(){}_startCheckStatsInterval(){this._checkStatsInterval=setInterval((()=>{this._updateStats()}),1e3)}_stopCheckStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}_updateStats(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this._startBpsTime||(this._startBpsTime=Rt()),Wt(t.ts)){const e=parseInt(t.ts,10);this._stats.ts=e}t.abps&&(this._stats.abps+=t.abps),t.vbps&&(this._stats.vbps+=t.vbps);const e=Rt();if(e-this._startBpsTime<1e3)return;const i=this.recorder.getTotalDuration(),s=this.recorder.getToTalByteLength();this.emit(k.stats,{...this._stats,duration:i,durationShow:Yt(i),size:s,sizeShow:Ot(s)}),this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=e}_resetStats(){this._stats={abps:0,vbps:0,ts:0}}_resetDemuxType(t){this._opt.isFlv=!1,this._opt.isFmp4=!1,this._opt.isNakedFlow=!1,this._opt.isHls=!1,t&&(this._opt[t]=!0)}_updateOption(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._opt=Object.assign({},this._opt,t)}startRecord(t){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((n,o)=>{if(!t)return o("url is required");this.loading=!0,this.playing=!1,this._opt.url=t,this._opt.playOptions=a;const h=0===t.indexOf("http"),l=0===t.indexOf("wt:"),m=-1!==t.indexOf(".m3u8"),g=-1!==t.indexOf(".flv"),y=-1!==t.indexOf(".fmp4")||-1!==t.indexOf(".mp4"),b=-1!==t.indexOf(".h264")||-1!==t.indexOf(".h265");let S=null,v=null;if(g&&!this._opt.isFlv&&this._resetDemuxType("isFlv"),y&&!this._opt.isFmp4&&this._resetDemuxType("isFmp4"),b&&!this._opt.isNakedFlow&&this._resetDemuxType("isNakedFlow"),S=h?m?s:i:l?r:e,v=this._opt.isNakedFlow?f:this._opt.isFmp4?_:h&&!m||g||this._opt.isFlv?d:m?p:l?c:u,!S||!v)return o(`play protocol is ${S}, demuxType is ${v}`);this._updateOption({protocol:S,demuxType:v,isHls:m}),this._init().then((()=>{this._checkLoadingTimeout(),this.stream&&(this.stream.once(k.streamSuccess,(()=>{n(),this._startCheckStatsInterval(),this.debug.log(this.TAG_NAME,"stream success and start play")})),this.stream.fetchStream(t))}))}))}stopRecordAndSave(t,e){return new Promise(((i,s)=>{this.recorder.stopRecordAndSave(t,e).then((t=>{setTimeout((()=>{i(t)}),0)})).catch((t=>{s(t)})).finally((()=>{this.stop()}))}))}async stop(){this._stopCheckStatsInterval(),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.stream&&(this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.audio&&this.audio.resetInit(),this.video&&this.video.resetInit()}clear(){this.stop()}isRecordTypeFlv(){return this.recorder&&this._opt.recordType===l.flv}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===l.mp4}_hasVideoAndAudioInit(){let t=Kt(this._opt.hasVideo),e=Kt(this._opt.hasAudio);return qt(this._opt.hasVideo)&&this.video&&this.video.hasInit()&&(t=!0),qt(this._opt.hasAudio)&&this.audio&&this.audio.hasInit()&&(e=!0),t&&e}_emitError(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(k.error,t,e),this.emit(t,e)}downloadBlob(t,e,i){if(![l.mp4,l.flv].includes(i))throw new Error(`downloadBlob type is ${i}, must be ${l.mp4} or ${l.flv}`);Ht((e||Rt())+"."+i,t)}}return ns.ERROR=L,ns.EVENTS=k,window.JessibucaProRecorder=ns,window.WebPlayerProRecorder=ns,ns})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-talk-demo.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-talk-demo.js new file mode 100644 index 0000000000000000000000000000000000000000..852d3bf0cd17dca6fb391a58ccb24b026f34880e --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca-pro-talk-demo.js @@ -0,0 +1 @@ +!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self)["jessibuca-talk"]=i()}(this,(function(){"use strict";class Emitter{on(e,i,r){const t=this.e||(this.e={});return(t[e]||(t[e]=[])).push({fn:i,ctx:r}),this}once(e,i,r){const t=this;function n(){t.off(e,n);for(var a=arguments.length,f=new Array(a),o=0;o1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const t=r[e],n=[];if(t&&i)for(let e=0,r=t.length;e>8&255,i>>16&255,i>>24&255,255&r,r>>8&255,0,0,0,0]),a=new Uint8Array(t.length+n.length+e.length);return a.set(t),a.set(n,t.length),a.set(e,t.length+n.length),a}screenfull.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class Resampler{constructor(e){const{fromSampleRate:i,toSampleRate:r,channels:t,inputBufferSize:n}=e;if(!i||!r||!t)throw new Error("Invalid settings specified for the resampler.");this.resampler=null,this.fromSampleRate=i,this.toSampleRate=r,this.channels=t||0,this.inputBufferSize=n,this.initialize()}destroy(){this.resampler=null,this.fromSampleRate=null,this.toSampleRate=null,this.channels=null,this.inputBufferSize=null}initialize(){this.fromSampleRate==this.toSampleRate?(this.resampler=e=>e,this.ratioWeight=1):(this.fromSampleRate{let i,r,t,n,a,f,o,s,l,u=e.length,h=this.channels;if(u%h!=0)throw new Error("Buffer was of incorrect sample length.");if(u<=0)return[];for(i=this.outputBufferSize,r=this.ratioWeight,t=this.lastWeight,n=0,a=0,f=0,o=0,s=this.outputBuffer;t<1;t+=r)for(a=t%1,n=1-a,this.lastWeight=t%1,l=0;l0?l:0)]*n+e[f+(h+l)]*a;t+=r,f=Math.floor(t)*h}for(l=0;l{let i,r,t,n,a,f,o,s,l,u,h,c=e.length,d=this.channels;if(c%d!=0)throw new Error("Buffer was of incorrect sample length.");if(c<=0)return[];for(i=this.outputBufferSize,r=[],t=this.ratioWeight,n=0,f=0,o=0,s=!this.tailExists,this.tailExists=!1,l=this.outputBuffer,u=0,h=0,a=0;a0&&f=o)){for(a=0;a0?a:0)]*n;h+=n,n=0;break}for(a=0;a=0?i=213:(i=85,(e=-e-1)<0&&(e=32767)),r=_search(e,segEnd,8),r>=8?127^i:(t=r<>4&QUANT_MASK:e>>r+3&QUANT_MASK,t^i)}function _linear2ulaw(e){let i=0;e<0?(e=BIAS-e,i=127):(e+=BIAS,i=255);let r=_search(e,segEnd,8);if(r>=8)return 127^i;return(r<<4|e>>r+3&15)^i}function g711aEncoder(e){const i=[];return Array.prototype.slice.call(e).forEach(((e,r)=>{i[r]=_linear2alaw(e)})),i}function g711uEncoder(e){const i=[];return Array.prototype.slice.call(e).forEach(((e,r)=>{i[r]=_linear2ulaw(e)})),i}class Debug{constructor(e){this.log=function(i){if(e._opt.debug&&e._opt.debugLevel==DEBUG_LEVEL.debug){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?t-1:0),a=1;a3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(i))return i.map((i=>this.proxy(e,i,r,t)));e.addEventListener(i,r,t);const n=()=>{isFunction(e.removeEventListener)&&e.removeEventListener(i,r,t)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}var Module;Module||(Module=(void 0!==Module?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(console.log(ENVIRONMENT_IS_NODE),ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),"undefined"!=typeof printErr&&(Module.printErr=printErr),"undefined"!=typeof read?Module.read=read:Module.read=function(){throw"no read() available (jsc?)"},Module.readBinary=function(e){if("function"==typeof readbuffer)return new Uint8Array(readbuffer(e));var i=read(e,"binary");return assert("object"==typeof i),i},"undefined"!=typeof scriptArgs?Module.arguments=scriptArgs:void 0!==arguments&&(Module.arguments=arguments),(void 0).Module=Module;else{if(!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw"Unknown runtime environment. Where are we?";if(Module.read=function(e){var i=new XMLHttpRequest;return i.open("GET",e,!1),i.send(null),i.responseText},void 0!==arguments&&(Module.arguments=arguments),"undefined"!=typeof console)Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.log(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&"undefined"!=typeof dump?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WEB?window.Module=Module:Module.load=importScripts}function globalEval(e){eval.call(null,e)}for(var key in!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[],moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);var Runtime={setTempRet0:function(e){tempRet0=e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if("*"===e[e.length-1])return Runtime.QUANTUM_SIZE;if("i"===e[0]){var i=parseInt(e.substr(1));return assert(i%8==0),i/8}return 0}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,getAlignSize:function(e,i,r){return r||"i64"!=e&&"double"!=e?e?Math.min(i||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(i,8):8},dynCall:function(e,i,r){return r&&r.length?(r.splice||(r=Array.prototype.slice.call(r)),r.splice(0,0,i),Module["dynCall_"+e].apply(null,r)):Module["dynCall_"+e].call(null,i)},functionPointers:[],addFunction:function(e){for(var i=0;i0))return"";var t,n=e[0],a=e[1],f=e[2],o=e[3];if(2==e.length)t=String.fromCharCode((31&n)<<6|63&a);else if(3==e.length)t=String.fromCharCode((15&n)<<12|(63&a)<<6|63&f);else{var s=(7&n)<<18|(63&a)<<12|(63&f)<<6|63&o;t=String.fromCharCode(55296+((s-65536)/1024|0),(s-65536)%1024+56320)}return e.length=0,t},this.processJSString=function(e){e=unescape(encodeURIComponent(e));for(var i=[],r=0;r=TOTAL_MEMORY&&enlargeMemory(),i},alignMemory:function(e,i){return e=Math.ceil(e/(i||16))*(i||16)},makeBigInt:function(e,i,r){return r?+(e>>>0)+4294967296*+(i>>>0):+(e>>>0)+4294967296*+(0|i)},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=!1,tempDouble,tempI64,tempRet0,cwrap,ccall;function assert(e,i){e||abort("Assertion failed: "+i)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}function setValue(e,i,r,t){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":HEAP8[e>>0]=i;break;case"i16":HEAP16[e>>1]=i;break;case"i32":HEAP32[e>>2]=i;break;case"i64":tempI64=[i>>>0,(tempDouble=i,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=i;break;case"double":HEAPF64[e>>3]=i;break;default:abort("invalid type for setValue: "+r)}}function getValue(e,i,r){switch("*"===(i=i||"i8").charAt(i.length-1)&&(i="i32"),i){case"i1":case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+i)}return null}(function(){var stack=0,JSfuncs={stackSave:function(){stack=Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore(stack)},arrayToC:function(e){var i=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,i),i},stringToC:function(e){var i=0;return null!=e&&0!==e&&writeStringToMemory(e,i=Runtime.stackAlloc(1+(e.length<<2))),i}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,i,r,t){var n=getCFunc(e),a=[];if(t)for(var f=0;f>2]=0;for(s=f+a;t>0]=0;return f}if("i8"===o)return e.subarray||e.slice?HEAPU8.set(e,f):HEAPU8.set(new Uint8Array(e),f),f;for(var l,u,h,c=0;c>0])>=128)t=!0;else if(0==r&&!i)break;if(n++,i&&n==i)break}i||(i=n);var a="";if(!t){for(var f,o=1024;i>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(i,o))),a=a?a+f:f,e+=o,i-=o;return a}var s=new Runtime.UTF8Processor;for(n=0;n>0],a+=s.processCChar(r);return a}function UTF16ToString(e){for(var i=0,r="";;){var t=HEAP16[e+2*i>>1];if(0==t)return r;++i,r+=String.fromCharCode(t)}}function stringToUTF16(e,i){for(var r=0;r>1]=t}HEAP16[i+2*e.length>>1]=0}function UTF32ToString(e){for(var i=0,r="";;){var t=HEAP32[e+4*i>>2];if(0==t)return r;if(++i,t>=65536){var n=t-65536;r+=String.fromCharCode(55296|n>>10,56320|1023&n)}else r+=String.fromCharCode(t)}}function stringToUTF32(e,i){for(var r=0,t=0;t=55296&&n<=57343)n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t);HEAP32[i+4*r>>2]=n,++r}HEAP32[i+4*r>>2]=0}function demangle(e){var i=!!Module.___cxa_demangle;if(i)try{var r=_malloc(e.length);writeStringToMemory(e.substr(1),r);var t=_malloc(4),n=Module.___cxa_demangle(r,0,0,t);if(0===getValue(t,"i32")&&n)return Pointer_stringify(n)}catch(e){}finally{r&&_free(r),t&&_free(t),n&&_free(n)}var a=3,f={v:"void",b:"bool",c:"char",s:"short",i:"int",l:"long",f:"float",d:"double",w:"wchar_t",a:"signed char",h:"unsigned char",t:"unsigned short",j:"unsigned int",m:"unsigned long",x:"long long",y:"unsigned long long",z:"..."},o=[],s=!0;var l=e;try{if("Object._main"==e||"_main"==e)return"main()";if("number"==typeof e&&(e=Pointer_stringify(e)),"_"!==e[0])return e;if("_"!==e[1])return e;if("Z"!==e[2])return e;switch(e[3]){case"n":return"operator new()";case"d":return"operator delete()"}l=function i(r,t,n){t=t||1/0;var l,u="",h=[];if("N"===e[a]){if(l=function(){a++,"K"===e[a]&&a++;for(var i=[];"E"!==e[a];)if("S"!==e[a])if("C"!==e[a]){var r=parseInt(e.substr(a)),t=r.toString().length;if(!r||!t){a--;break}var n=e.substr(a+t,r);i.push(n),o.push(n),a+=t+r}else i.push(i[i.length-1]),a+=2;else{a++;var f=e.indexOf("_",a),s=e.substring(a,f)||0;i.push(o[s]||"?"),a=f+1}return a++,i}().join("::"),0==--t)return r?[l]:l}else if(("K"===e[a]||s&&"L"===e[a])&&a++,k=parseInt(e.substr(a))){var c=k.toString().length;l=e.substr(a+c,k),a+=c+k}if(s=!1,"I"===e[a]){a++;var d=i(!0);u+=i(!0,1,!0)[0]+" "+l+"<"+d.join(", ")+">"}else u=l;e:for(;a0;){var b=e[a++];if(b in f)h.push(f[b]);else switch(b){case"P":h.push(i(!0,1,!0)[0]+"*");break;case"R":h.push(i(!0,1,!0)[0]+"&");break;case"L":a++;var k=e.indexOf("E",a)-a;h.push(e.substr(a,k)),a+=k+2;break;case"A":if(k=parseInt(e.substr(a)),a+=k.toString().length,"_"!==e[a])throw"?";a++,h.push(i(!0,1,!0)[0]+" ["+k+"]");break;case"E":break e;default:u+="?"+b;break e}}return n||1!==h.length||"void"!==h[0]||(h=[]),r?(u&&h.push(u+"?"),h):u+"("+h.join(", ")+")"}()}catch(e){l+="?"}return l.indexOf("?")>=0&&!i&&Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),l}function demangleAll(e){return e.replace(/__Z[\w\d_]+/g,(function(e){var i=demangle(e);return e===i?e:e+" ["+i+"]"}))}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(i){e=i}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE,Module.allocate=allocate,Module.Pointer_stringify=Pointer_stringify,Module.UTF16ToString=UTF16ToString,Module.stringToUTF16=stringToUTF16,Module.UTF32ToString=UTF32ToString,Module.stringToUTF32=stringToUTF32,Module.stackTrace=stackTrace;var PAGE_SIZE=4096,HEAP,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function alignMemoryPage(e){return e+4095&-4096}var STATIC_BASE=0,STATICTOP=0,STACK_BASE=0,STACKTOP=0,STACK_MAX=0,DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||16777216;Module.FAST_MEMORY;for(var totalMemory=65536;totalMemory0;){var i=e.shift();if("function"!=typeof i){var r=i.func;"number"==typeof r?void 0===i.arg?Runtime.dynCall("v",r):Runtime.dynCall("vi",r,[i.arg]):r(void 0===i.arg?null:i.arg)}else i()}}HEAP8=new Int8Array(buffer),HEAP16=new Int16Array(buffer),HEAP32=new Int32Array(buffer),HEAPU8=new Uint8Array(buffer),HEAPU16=new Uint16Array(buffer),HEAPU32=new Uint32Array(buffer),HEAPF32=new Float32Array(buffer),HEAPF64=new Float64Array(buffer),HEAP32[0]=255,assert(255===HEAPU8[0]&&0===HEAPU8[3],"Typed arrays 2 must be run on a little-endian system"),Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__)}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPreMain(e){__ATMAIN__.unshift(e)}function addOnExit(e){__ATEXIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}function intArrayFromString(e,i,r){var t=(new Runtime.UTF8Processor).processJSString(e);return r&&(t.length=r),i||t.push(0),t}function intArrayToString(e){for(var i=[],r=0;r255&&(t&=255),i.push(String.fromCharCode(t))}return i.join("")}function writeStringToMemory(e,i,r){for(var t=intArrayFromString(e,r),n=0;n>0]=a,n+=1}}function writeArrayToMemory(e,i){for(var r=0;r>0]=e[r]}function writeAsciiToMemory(e,i,r){for(var t=0;t>0]=e.charCodeAt(t);r||(HEAP8[i+e.length>>0]=0)}Module.addOnPreRun=Module.addOnPreRun=addOnPreRun,Module.addOnInit=Module.addOnInit=addOnInit,Module.addOnPreMain=Module.addOnPreMain=addOnPreMain,Module.addOnExit=Module.addOnExit=addOnExit,Module.addOnPostRun=Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,i){var r=65535&e,t=65535&i;return r*t+((e>>>16)*t+r*(i>>>16)<<16)|0}),Math.imul=Math.imul;var Math_abs=Math.abs,Math_cos=Math.cos,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_min=Math.min,runDependencies=0,dependenciesFulfilled=null;function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&dependenciesFulfilled){var i=dependenciesFulfilled;dependenciesFulfilled=null,i()}}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={},STATIC_BASE=8,STATICTOP=STATIC_BASE+31120,__ATINIT__.push(),allocate([0,64,202,69,27,76,255,82,130,90,179,98,162,107,96,117,0,1,1,1,2,3,3,3,2,3,3,3,2,3,3,3,0,3,12,15,48,51,60,63,192,195,204,207,240,243,252,255,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,15,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,12,0,0,0,3,0,0,0,11,0,0,0,4,0,0,0,14,0,0,0,1,0,0,0,9,0,0,0,6,0,0,0,13,0,0,0,2,0,0,0,10,0,0,0,5,0,0,0,0,0,157,62,0,64,94,62,0,192,4,62,0,128,237,62,0,64,137,62,0,0,0,0,0,192,76,63,0,0,205,61,0,0,0,0,0,0,0,0,0,255,0,255,0,255,0,255,0,255,0,254,1,0,1,255,0,254,0,253,2,0,1,255,0,254,0,253,3,0,1,255,108,105,98,111,112,117,115,32,49,46,49,46,49,45,98,101,116,97,0,0,0,0,0,0,2,1,0,0,0,0,0,0,25,23,2,0,0,0,0,0,126,124,119,109,87,41,19,9,4,2,0,0,0,0,0,0,2,1,0,0,0,0,0,0,25,23,2,0,0,0,0,0,0,0,128,63,0,0,0,64,0,0,64,64,0,0,128,64,0,0,160,64,0,0,192,64,0,0,224,64,0,0,0,65,0,0,128,65,0,0,192,65,0,0,16,66,0,0,48,66,0,0,72,66,0,0,96,66,0,0,120,66,0,0,134,66,0,0,144,66,0,0,158,66,0,0,176,66,0,0,212,66,0,0,6,67,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,64,64,0,0,64,64,0,0,128,64,0,0,160,64,0,0,192,64,0,0,0,65,0,0,0,65,0,0,0,0,126,124,119,109,87,41,19,9,4,2,0,0,0,0,0,0,255,255,156,110,86,70,59,51,45,40,37,33,31,28,26,25,23,22,21,20,19,18,17,16,16,15,15,14,13,13,12,12,12,12,11,11,11,10,10,10,9,9,9,9,9,9,8,8,8,8,8,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,192,2,0,0,128,5,0,0,60,8,0,0,244,10,0,0,168,13,0,0,88,16,0,0,4,19,0,0,108,20,0,0,40,21,0,0,156,21,0,0,232,21,0,0,32,22,0,0,64,22,0,0,88,22,0,0,100,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,9,0,0,0,11,0,0,0,13,0,0,0,15,0,0,0,17,0,0,0,19,0,0,0,21,0,0,0,23,0,0,0,25,0,0,0,27,0,0,0,29,0,0,0,31,0,0,0,33,0,0,0,35,0,0,0,37,0,0,0,39,0,0,0,41,0,0,0,43,0,0,0,45,0,0,0,47,0,0,0,49,0,0,0,51,0,0,0,53,0,0,0,55,0,0,0,57,0,0,0,59,0,0,0,61,0,0,0,63,0,0,0,65,0,0,0,67,0,0,0,69,0,0,0,71,0,0,0,73,0,0,0,75,0,0,0,77,0,0,0,79,0,0,0,81,0,0,0,83,0,0,0,85,0,0,0,87,0,0,0,89,0,0,0,91,0,0,0,93,0,0,0,95,0,0,0,97,0,0,0,99,0,0,0,101,0,0,0,103,0,0,0,105,0,0,0,107,0,0,0,109,0,0,0,111,0,0,0,113,0,0,0,115,0,0,0,117,0,0,0,119,0,0,0,121,0,0,0,123,0,0,0,125,0,0,0,127,0,0,0,129,0,0,0,131,0,0,0,133,0,0,0,135,0,0,0,137,0,0,0,139,0,0,0,141,0,0,0,143,0,0,0,145,0,0,0,147,0,0,0,149,0,0,0,151,0,0,0,153,0,0,0,155,0,0,0,157,0,0,0,159,0,0,0,161,0,0,0,163,0,0,0,165,0,0,0,167,0,0,0,169,0,0,0,171,0,0,0,173,0,0,0,175,0,0,0,177,0,0,0,179,0,0,0,181,0,0,0,183,0,0,0,185,0,0,0,187,0,0,0,189,0,0,0,191,0,0,0,193,0,0,0,195,0,0,0,197,0,0,0,199,0,0,0,201,0,0,0,203,0,0,0,205,0,0,0,207,0,0,0,209,0,0,0,211,0,0,0,213,0,0,0,215,0,0,0,217,0,0,0,219,0,0,0,221,0,0,0,223,0,0,0,225,0,0,0,227,0,0,0,229,0,0,0,231,0,0,0,233,0,0,0,235,0,0,0,237,0,0,0,239,0,0,0,241,0,0,0,243,0,0,0,245,0,0,0,247,0,0,0,249,0,0,0,251,0,0,0,253,0,0,0,255,0,0,0,1,1,0,0,3,1,0,0,5,1,0,0,7,1,0,0,9,1,0,0,11,1,0,0,13,1,0,0,15,1,0,0,17,1,0,0,19,1,0,0,21,1,0,0,23,1,0,0,25,1,0,0,27,1,0,0,29,1,0,0,31,1,0,0,33,1,0,0,35,1,0,0,37,1,0,0,39,1,0,0,41,1,0,0,43,1,0,0,45,1,0,0,47,1,0,0,49,1,0,0,51,1,0,0,53,1,0,0,55,1,0,0,57,1,0,0,59,1,0,0,61,1,0,0,63,1,0,0,65,1,0,0,67,1,0,0,69,1,0,0,71,1,0,0,73,1,0,0,75,1,0,0,77,1,0,0,79,1,0,0,81,1,0,0,83,1,0,0,85,1,0,0,87,1,0,0,89,1,0,0,91,1,0,0,93,1,0,0,95,1,0,0,13,0,0,0,25,0,0,0,41,0,0,0,61,0,0,0,85,0,0,0,113,0,0,0,145,0,0,0,181,0,0,0,221,0,0,0,9,1,0,0,57,1,0,0,109,1,0,0,165,1,0,0,225,1,0,0,33,2,0,0,101,2,0,0,173,2,0,0,249,2,0,0,73,3,0,0,157,3,0,0,245,3,0,0,81,4,0,0,177,4,0,0,21,5,0,0,125,5,0,0,233,5,0,0,89,6,0,0,205,6,0,0,69,7,0,0,193,7,0,0,65,8,0,0,197,8,0,0,77,9,0,0,217,9,0,0,105,10,0,0,253,10,0,0,149,11,0,0,49,12,0,0,209,12,0,0,117,13,0,0,29,14,0,0,201,14,0,0,121,15,0,0,45,16,0,0,229,16,0,0,161,17,0,0,97,18,0,0,37,19,0,0,237,19,0,0,185,20,0,0,137,21,0,0,93,22,0,0,53,23,0,0,17,24,0,0,241,24,0,0,213,25,0,0,189,26,0,0,169,27,0,0,153,28,0,0,141,29,0,0,133,30,0,0,129,31,0,0,129,32,0,0,133,33,0,0,141,34,0,0,153,35,0,0,169,36,0,0,189,37,0,0,213,38,0,0,241,39,0,0,17,41,0,0,53,42,0,0,93,43,0,0,137,44,0,0,185,45,0,0,237,46,0,0,37,48,0,0,97,49,0,0,161,50,0,0,229,51,0,0,45,53,0,0,121,54,0,0,201,55,0,0,29,57,0,0,117,58,0,0,209,59,0,0,49,61,0,0,149,62,0,0,253,63,0,0,105,65,0,0,217,66,0,0,77,68,0,0,197,69,0,0,65,71,0,0,193,72,0,0,69,74,0,0,205,75,0,0,89,77,0,0,233,78,0,0,125,80,0,0,21,82,0,0,177,83,0,0,81,85,0,0,245,86,0,0,157,88,0,0,73,90,0,0,249,91,0,0,173,93,0,0,101,95,0,0,33,97,0,0,225,98,0,0,165,100,0,0,109,102,0,0,57,104,0,0,9,106,0,0,221,107,0,0,181,109,0,0,145,111,0,0,113,113,0,0,85,115,0,0,61,117,0,0,41,119,0,0,25,121,0,0,13,123,0,0,5,125,0,0,1,127,0,0,1,129,0,0,5,131,0,0,13,133,0,0,25,135,0,0,41,137,0,0,61,139,0,0,85,141,0,0,113,143,0,0,145,145,0,0,181,147,0,0,221,149,0,0,9,152,0,0,57,154,0,0,109,156,0,0,165,158,0,0,225,160,0,0,33,163,0,0,101,165,0,0,173,167,0,0,249,169,0,0,73,172,0,0,157,174,0,0,245,176,0,0,81,179,0,0,177,181,0,0,21,184,0,0,125,186,0,0,233,188,0,0,89,191,0,0,205,193,0,0,69,196,0,0,193,198,0,0,65,201,0,0,197,203,0,0,77,206,0,0,217,208,0,0,105,211,0,0,253,213,0,0,149,216,0,0,49,219,0,0,209,221,0,0,117,224,0,0,29,227,0,0,201,229,0,0,121,232,0,0,45,235,0,0,229,237,0,0,161,240,0,0,63,0,0,0,129,0,0,0,231,0,0,0,121,1,0,0,63,2,0,0,65,3,0,0,135,4,0,0,25,6,0,0,255,7,0,0,65,10,0,0,231,12,0,0,249,15,0,0,127,19,0,0,129,23,0,0,7,28,0,0,25,33,0,0,191,38,0,0,1,45,0,0,231,51,0,0,121,59,0,0,191,67,0,0,193,76,0,0,135,86,0,0,25,97,0,0,127,108,0,0,193,120,0,0,231,133,0,0,249,147,0,0,255,162,0,0,1,179,0,0,7,196,0,0,25,214,0,0,63,233,0,0,129,253,0,0,231,18,1,0,121,41,1,0,63,65,1,0,65,90,1,0,135,116,1,0,25,144,1,0,255,172,1,0,65,203,1,0,231,234,1,0,249,11,2,0,127,46,2,0,129,82,2,0,7,120,2,0,25,159,2,0,191,199,2,0,1,242,2,0,231,29,3,0,121,75,3,0,191,122,3,0,193,171,3,0,135,222,3,0,25,19,4,0,127,73,4,0,193,129,4,0,231,187,4,0,249,247,4,0,255,53,5,0,1,118,5,0,7,184,5,0,25,252,5,0,63,66,6,0,129,138,6,0,231,212,6,0,121,33,7,0,63,112,7,0,65,193,7,0,135,20,8,0,25,106,8,0,255,193,8,0,65,28,9,0,231,120,9,0,249,215,9,0,127,57,10,0,129,157,10,0,7,4,11,0,25,109,11,0,191,216,11,0,1,71,12,0,231,183,12,0,121,43,13,0,191,161,13,0,193,26,14,0,135,150,14,0,25,21,15,0,127,150,15,0,193,26,16,0,231,161,16,0,249,43,17,0,255,184,17,0,1,73,18,0,7,220,18,0,25,114,19,0,63,11,20,0,129,167,20,0,231,70,21,0,121,233,21,0,63,143,22,0,65,56,23,0,135,228,23,0,25,148,24,0,255,70,25,0,65,253,25,0,231,182,26,0,249,115,27,0,127,52,28,0,129,248,28,0,7,192,29,0,25,139,30,0,191,89,31,0,1,44,32,0,231,1,33,0,121,219,33,0,191,184,34,0,193,153,35,0,135,126,36,0,25,103,37,0,127,83,38,0,193,67,39,0,231,55,40,0,249,47,41,0,255,43,42,0,1,44,43,0,7,48,44,0,25,56,45,0,63,68,46,0,129,84,47,0,231,104,48,0,121,129,49,0,63,158,50,0,65,191,51,0,135,228,52,0,25,14,54,0,255,59,55,0,65,110,56,0,231,164,57,0,249,223,58,0,127,31,60,0,129,99,61,0,7,172,62,0,25,249,63,0,191,74,65,0,1,161,66,0,231,251,67,0,121,91,69,0,191,191,70,0,193,40,72,0,135,150,73,0,25,9,75,0,127,128,76,0,193,252,77,0,231,125,79,0,249,3,81,0,255,142,82,0,1,31,84,0,7,180,85,0,25,78,87,0,63,237,88,0,129,145,90,0,231,58,92,0,121,233,93,0,63,157,95,0,65,86,97,0,135,20,99,0,25,216,100,0,255,160,102,0,65,111,104,0,231,66,106,0,249,27,108,0,127,250,109,0,65,1,0,0,169,2,0,0,9,5,0,0,193,8,0,0,65,14,0,0,9,22,0,0,169,32,0,0,193,46,0,0,1,65,0,0,41,88,0,0,9,117,0,0,129,152,0,0,129,195,0,0,9,247,0,0,41,52,1,0,1,124,1,0,193,207,1,0,169,48,2,0,9,160,2,0,65,31,3,0,193,175,3,0,9,83,4,0,169,10,5,0,65,216,5,0,129,189,6,0,41,188,7,0,9,214,8,0,1,13,10,0,1,99,11,0,9,218,12,0,41,116,14,0,129,51,16,0,65,26,18,0,169,42,20,0,9,103,22,0,193,209,24,0,65,109,27,0,9,60,30,0,169,64,33,0,193,125,36,0,1,246,39,0,41,172,43,0,9,163,47,0,129,221,51,0,129,94,56,0,9,41,61,0,41,64,66,0,1,167,71,0,193,96,77,0,169,112,83,0,9,218,89,0,65,160,96,0,193,198,103,0,9,81,111,0,169,66,119,0,65,159,127,0,129,106,136,0,41,168,145,0,9,92,155,0,1,138,165,0,1,54,176,0,9,100,187,0,41,24,199,0,129,86,211,0,65,35,224,0,169,130,237,0,9,121,251,0,193,10,10,1,65,60,25,1,9,18,41,1,169,144,57,1,193,188,74,1,1,155,92,1,41,48,111,1,9,129,130,1,129,146,150,1,129,105,171,1,9,11,193,1,41,124,215,1,1,194,238,1,193,225,6,2,169,224,31,2,9,196,57,2,65,145,84,2,193,77,112,2,9,255,140,2,169,170,170,2,65,86,201,2,129,7,233,2,41,196,9,3,9,146,43,3,1,119,78,3,1,121,114,3,9,158,151,3,41,236,189,3,129,105,229,3,65,28,14,4,169,10,56,4,9,59,99,4,193,179,143,4,65,123,189,4,9,152,236,4,169,16,29,5,193,235,78,5,1,48,130,5,41,228,182,5,9,15,237,5,129,183,36,6,129,228,93,6,9,157,152,6,41,232,212,6,1,205,18,7,193,82,82,7,169,128,147,7,9,94,214,7,65,242,26,8,193,68,97,8,9,93,169,8,169,66,243,8,65,253,62,9,129,148,140,9,41,16,220,9,9,120,45,10,1,212,128,10,1,44,214,10,9,136,45,11,41,240,134,11,129,108,226,11,65,5,64,12,169,194,159,12,9,173,1,13,193,204,101,13,65,42,204,13,9,206,52,14,169,192,159,14,193,10,13,15,1,181,124,15,41,200,238,15,9,77,99,16,129,76,218,16,129,207,83,17,9,223,207,17,41,132,78,18,1,200,207,18,193,179,83,19,169,80,218,19,9,168,99,20,65,195,239,20,193,171,126,21,9,107,16,22,169,10,165,22,65,148,60,23,129,17,215,23,41,140,116,24,9,14,21,25,1,161,184,25,1,79,95,26,9,34,9,27,41,36,182,27,129,95,102,28,65,222,25,29,169,170,208,29,9,207,138,30,193,85,72,31,65,73,9,32,9,180,205,32,169,160,149,33,193,25,97,34,1,42,48,35,41,220,2,36,9,59,217,36,129,81,179,37,147,6,0,0,69,14,0,0,15,28,0,0,17,51,0,0,91,87,0,0,13,142,0,0,119,221,0,0,57,77,1,0,99,230,1,0,149,179,2,0,31,193,3,0,33,29,5,0,171,215,6,0,221,2,9,0,7,179,11,0,201,254,14,0,51,255,18,0,229,207,23,0,47,143,29,0,49,94,36,0,251,96,44,0,173,190,53,0,151,161,64,0,89,55,77,0,3,177,91,0,53,67,108,0,63,38,127,0,65,150,148,0,75,211,172,0,125,33,200,0,39,201,230,0,233,22,9,1,211,91,47,1,133,237,89,1,79,38,137,1,81,101,189,1,155,14,247,1,77,139,54,2,183,73,124,2,121,189,200,2,163,95,28,3,213,174,119,3,95,47,219,3,97,107,71,4,235,242,188,4,29,92,60,5,71,67,198,5,9,75,91,6,115,28,252,6,37,103,169,7,111,225,99,8,113,72,44,9,59,96,3,10,237,243,233,10,215,213,224,11,153,223,232,12,67,242,2,14,117,246,47,15,127,220,112,16,129,156,198,17,139,54,50,19,189,178,180,20,103,33,79,22,41,155,2,24,19,65,208,25,197,60,185,27,143,192,190,29,145,7,226,31,219,85,36,34,141,248,134,36,247,69,11,39,185,157,178,41,227,104,126,44,21,26,112,47,159,45,137,50,161,41,203,53,43,158,55,57,93,37,208,60,135,99,150,64,73,7,140,68,179,201,178,72,101,110,12,77,175,195,154,81,177,162,95,86,123,239,92,91,45,153,148,96,23,154,8,102,217,247,186,107,131,195,173,113,181,25,227,119,191,34,93,126,29,35,0,0,113,77,0,0,145,156,0,0,253,38,1,0,101,12,2,0,233,119,3,0,153,162,5,0,53,214,8,0,45,112,13,0,225,228,19,0,33,195,28,0,237,183,40,0,117,146,56,0,89,72,77,0,41,250,103,0,37,248,137,0,61,199,180,0,81,38,234,0,177,19,44,1,221,210,124,1,133,242,222,1,201,82,85,2,185,43,227,2,21,20,140,3,77,8,84,4,193,113,63,5,65,46,83,6,205,151,148,7,149,140,9,9,57,119,184,10,73,87,168,12,5,202,224,14,93,19,106,17,49,39,77,20,209,178,147,23,189,38,72,27,165,192,117,31,169,149,40,36,217,156,109,41,245,185,82,47,109,200,230,53,161,166,57,61,97,65,92,69,173,159,96,78,181,238,89,88,25,142,92,99,105,28,126,111,229,131,213,124,255,189,0,0,1,168,1,0,143,107,3,0,241,158,6,0,63,35,12,0,193,61,21,0,143,182,35,0,241,252,57,0,255,81,91,0,1,250,139,0,15,117,209,0,113,191,50,1,63,154,184,1,193,220,109,2,15,207,95,3,113,142,158,4,255,123,61,6,1,182,83,8,143,156,252,10,241,97,88,14,63,167,140,18,193,37,197,23,143,101,52,30,241,129,20,38,255,251,167,47,1,156,58,59,15,98,34,73,113,134,192,89,63,138,130,109,193,88,227,132,1,14,4,0,145,33,9,0,17,44,19,0,65,238,37,0,65,79,71,0,145,67,128,0,17,247,221,0,1,70,115,1,1,146,90,2,17,1,184,3,145,53,188,5,65,143,167,8,65,6,206,12,17,178,155,18,145,15,154,26,1,26,118,37,1,76,7,52,145,158,87,71,17,157,172,96,65,166,145,129,35,81,22,0,197,158,50,0,23,185,107,0,153,246,216,0,107,137,160,1,13,196,254,2,31,1,80,5,33,217,29,9,51,108,48,15,213,162,164,24,167,103,8,39,41,253,125,60,123,181,231,91,29,119,29,137,175,160,45,201,173,142,123,0,137,230,25,1,57,150,94,2,61,22,216,4,181,99,119,9,225,40,198,17,33,3,52,32,117,72,130,56,125,87,87,96,191,91,175,2,129,216,39,6,247,132,94,13,233,254,173,27,127,139,235,54,129,183,229,104,23,3,156,193,193,12,255,14,57,106,133,34,25,238,145,75,129,120,43,158,51,225,9,84,149,139,0,0,55,152,0,0,255,165,0,0,4,181,0,0,103,197,0,0,69,215,0,0,193,234,0,0,255,255,0,0,200,22,0,0,0,0,0,0,128,187,0,0,120,0,0,0,21,0,0,0,21,0,0,0,0,154,89,63,0,0,0,0,0,0,128,63,0,0,128,63,56,23,0,0,3,0,0,0,8,0,0,0,120,0,0,0,11,0,0,0,104,23,0,0,80,24,0,0,128,24,0,0,128,7,0,0,3,0,0,0,96,26,0,0,152,26,0,0,208,26,0,0,8,27,0,0,64,27,0,0,136,1,0,0,96,55,0,0,56,56,0,0,192,57,0,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,10,0,12,0,14,0,16,0,20,0,24,0,28,0,34,0,40,0,48,0,60,0,78,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,80,75,69,63,56,49,40,34,29,20,18,10,0,0,0,0,0,0,0,0,110,100,90,84,78,71,65,58,51,45,39,32,26,20,12,0,0,0,0,0,0,118,110,103,93,86,80,75,70,65,59,53,47,40,31,23,15,4,0,0,0,0,126,119,112,104,95,89,83,78,72,66,60,54,47,39,32,25,17,12,1,0,0,134,127,120,114,103,97,91,85,78,72,66,60,54,47,41,35,29,23,16,10,1,144,137,130,124,113,107,101,95,88,82,76,70,64,57,51,45,39,33,26,15,1,152,145,138,132,123,117,111,105,98,92,86,80,74,67,61,55,49,43,36,20,1,162,155,148,142,133,127,121,115,108,102,96,90,84,77,71,65,59,53,46,30,1,172,165,158,152,143,137,131,125,118,112,106,100,94,87,81,75,69,63,56,45,20,200,200,200,200,200,200,200,200,198,193,188,183,178,173,168,163,158,153,148,129,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,8,0,8,0,16,0,16,0,16,0,21,0,21,0,24,0,29,0,34,0,36,0,0,0,0,0,0,0,106,28,141,56,82,187,30,58,8,105,220,58,130,237,87,59,137,99,178,59,3,42,5,60,48,220,57,60,180,62,119,60,28,163,158,60,209,242,197,60,254,134,241,60,155,171,16,61,5,173,42,61,132,194,70,61,83,230,100,61,17,137,130,61,135,159,147,61,203,178,165,61,209,190,184,61,58,191,204,61,84,175,225,61,20,138,247,61,14,37,7,62,217,244,18,62,95,49,31,62,104,215,43,62,138,227,56,62,48,82,70,62,148,31,84,62,191,71,98,62,142,198,112,62,176,151,127,62,82,91,135,62,96,15,143,62,152,229,150,62,121,219,158,62,112,238,166,62,216,27,175,62,251,96,183,62,17,187,191,62,70,39,200,62,183,162,208,62,120,42,217,62,148,187,225,62,12,83,234,62,222,237,242,62,6,137,251,62,190,16,2,63,31,90,6,63,36,159,10,63,80,222,14,63,43,22,19,63,65,69,23,63,37,106,27,63,115,131,31,63,206,143,35,63,230,141,39,63,116,124,43,63,63,90,47,63,25,38,51,63,231,222,54,63,153,131,58,63,51,19,62,63,197,140,65,63,119,239,68,63,127,58,72,63,39,109,75,63,206,134,78,63,229,134,81,63,241,108,84,63,142,56,87,63,105,233,89,63,69,127,92,63,250,249,94,63,115,89,97,63,175,157,99,63,193,198,101,63,207,212,103,63,17,200,105,63,210,160,107,63,110,95,109,63,80,4,111,63,244,143,112,63,230,2,114,63,189,93,115,63,31,161,116,63,191,205,117,63,87,228,118,63,176,229,119,63,151,210,120,63,227,171,121,63,115,114,122,63,39,39,123,63,231,202,123,63,157,94,124,63,53,227,124,63,156,89,125,63,189,194,125,63,134,31,126,63,222,112,126,63,171,183,126,63,207,244,126,63,38,41,127,63,134,85,127,63,190,122,127,63,150,153,127,63,204,178,127,63,20,199,127,63,28,215,127,63,130,227,127,63,221,236,127,63,182,243,127,63,138,248,127,63,200,251,127,63,214,253,127,63,7,255,127,63,165,255,127,63,232,255,127,63,253,255,127,63,0,0,128,63,224,1,0,0,135,136,8,59,255,255,255,255,5,0,96,0,3,0,32,0,4,0,8,0,2,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,176,76,0,0,224,58,0,0,0,0,0,0,240,0,0,0,137,136,136,59,1,0,0,0,5,0,48,0,3,0,16,0,4,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,74,0,0,224,58,0,0,0,0,0,0,120,0,0,0,136,136,8,60,2,0,0,0,5,0,24,0,3,0,8,0,2,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,73,0,0,224,58,0,0,0,0,0,0,60,0,0,0,137,136,136,60,3,0,0,0,5,0,12,0,3,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,58,0,0,224,58,0,0,0,0,0,0,255,255,127,63,142,255,127,63,106,254,127,63,147,252,127,63,7,250,127,63,200,246,127,63,214,242,127,63,48,238,127,63,214,232,127,63,200,226,127,63,7,220,127,63,147,212,127,63,107,204,127,63,143,195,127,63,0,186,127,63,189,175,127,63,199,164,127,63,29,153,127,63,192,140,127,63,176,127,127,63,236,113,127,63,118,99,127,63,75,84,127,63,110,68,127,63,222,51,127,63,154,34,127,63,163,16,127,63,250,253,126,63,157,234,126,63,141,214,126,63,203,193,126,63,86,172,126,63,46,150,126,63,83,127,126,63,198,103,126,63,134,79,126,63,148,54,126,63,239,28,126,63,152,2,126,63,143,231,125,63,211,203,125,63,102,175,125,63,70,146,125,63,116,116,125,63,241,85,125,63,188,54,125,63,213,22,125,63,60,246,124,63,242,212,124,63,246,178,124,63,73,144,124,63,235,108,124,63,219,72,124,63,27,36,124,63,169,254,123,63,135,216,123,63,180,177,123,63,48,138,123,63,252,97,123,63,23,57,123,63,130,15,123,63,61,229,122,63,72,186,122,63,162,142,122,63,77,98,122,63,72,53,122,63,148,7,122,63,48,217,121,63,29,170,121,63,90,122,121,63,233,73,121,63,200,24,121,63,249,230,120,63,123,180,120,63,78,129,120,63,115,77,120,63,234,24,120,63,178,227,119,63,205,173,119,63,58,119,119,63,249,63,119,63,10,8,119,63,110,207,118,63,37,150,118,63,47,92,118,63,140,33,118,63,60,230,117,63,64,170,117,63,151,109,117,63,66,48,117,63,65,242,116,63,148,179,116,63,59,116,116,63,55,52,116,63,135,243,115,63,44,178,115,63,38,112,115,63,118,45,115,63,26,234,114,63,20,166,114,63,100,97,114,63,10,28,114,63,5,214,113,63,87,143,113,63,0,72,113,63,255,255,112,63,85,183,112,63,2,110,112,63,6,36,112,63,98,217,111,63,21,142,111,63,32,66,111,63,132,245,110,63,63,168,110,63,83,90,110,63,192,11,110,63,134,188,109,63,165,108,109,63,29,28,109,63,239,202,108,63,27,121,108,63,161,38,108,63,128,211,107,63,187,127,107,63,80,43,107,63,64,214,106,63,140,128,106,63,50,42,106,63,53,211,105,63,147,123,105,63,77,35,105,63,100,202,104,63,216,112,104,63,168,22,104,63,213,187,103,63,96,96,103,63,72,4,103,63,143,167,102,63,51,74,102,63,54,236,101,63,151,141,101,63,87,46,101,63,119,206,100,63,245,109,100,63,212,12,100,63,18,171,99,63,177,72,99,63,176,229,98,63,16,130,98,63,209,29,98,63,243,184,97,63,119,83,97,63,92,237,96,63,164,134,96,63,78,31,96,63,91,183,95,63,203,78,95,63,158,229,94,63,213,123,94,63,112,17,94,63,110,166,93,63,210,58,93,63,154,206,92,63,198,97,92,63,89,244,91,63,81,134,91,63,174,23,91,63,114,168,90,63,157,56,90,63,46,200,89,63,39,87,89,63,135,229,88,63,79,115,88,63,127,0,88,63,23,141,87,63,24,25,87,63,130,164,86,63,86,47,86,63,147,185,85,63,58,67,85,63,75,204,84,63,199,84,84,63,174,220,83,63,1,100,83,63,191,234,82,63,233,112,82,63,127,246,81,63,130,123,81,63,242,255,80,63,207,131,80,63,26,7,80,63,210,137,79,63,250,11,79,63,144,141,78,63,148,14,78,63,9,143,77,63,237,14,77,63,65,142,76,63,5,13,76,63,59,139,75,63,225,8,75,63,249,133,74,63,131,2,74,63,127,126,73,63,238,249,72,63,207,116,72,63,36,239,71,63,237,104,71,63,41,226,70,63,218,90,70,63,0,211,69,63,155,74,69,63,172,193,68,63,50,56,68,63,47,174,67,63,162,35,67,63,141,152,66,63,239,12,66,63,200,128,65,63,26,244,64,63,229,102,64,63,40,217,63,63,229,74,63,63,27,188,62,63,204,44,62,63,247,156,61,63,157,12,61,63,190,123,60,63,92,234,59,63,117,88,59,63,10,198,58,63,29,51,58,63,173,159,57,63,187,11,57,63,71,119,56,63,81,226,55,63,218,76,55,63,227,182,54,63,107,32,54,63,116,137,53,63,253,241,52,63,7,90,52,63,147,193,51,63,160,40,51,63,48,143,50,63,66,245,49,63,216,90,49,63,241,191,48,63,142,36,48,63,175,136,47,63,85,236,46,63,129,79,46,63,50,178,45,63,105,20,45,63,39,118,44,63,107,215,43,63,55,56,43,63,139,152,42,63,103,248,41,63,204,87,41,63,186,182,40,63,50,21,40,63,51,115,39,63,191,208,38,63,214,45,38,63,121,138,37,63,167,230,36,63,97,66,36,63,169,157,35,63,125,248,34,63,223,82,34,63,207,172,33,63,77,6,33,63,91,95,32,63,248,183,31,63,37,16,31,63,226,103,30,63,48,191,29,63,16,22,29,63,129,108,28,63,132,194,27,63,26,24,27,63,67,109,26,63,0,194,25,63,81,22,25,63,54,106,24,63,177,189,23,63,193,16,23,63,103,99,22,63,163,181,21,63,118,7,21,63,225,88,20,63,228,169,19,63,127,250,18,63,179,74,18,63,128,154,17,63,231,233,16,63,232,56,16,63,132,135,15,63,187,213,14,63,142,35,14,63,254,112,13,63,10,190,12,63,179,10,12,63,250,86,11,63,223,162,10,63,99,238,9,63,134,57,9,63,73,132,8,63,172,206,7,63,175,24,7,63,84,98,6,63,155,171,5,63,131,244,4,63,15,61,4,63,61,133,3,63,15,205,2,63,134,20,2,63,161,91,1,63,97,162,0,63,143,209,255,62,167,93,254,62,14,233,252,62,194,115,251,62,198,253,249,62,27,135,248,62,193,15,247,62,186,151,245,62,6,31,244,62,168,165,242,62,158,43,241,62,236,176,239,62,145,53,238,62,144,185,236,62,232,60,235,62,154,191,233,62,169,65,232,62,21,195,230,62,223,67,229,62,8,196,227,62,145,67,226,62,124,194,224,62,200,64,223,62,120,190,221,62,140,59,220,62,6,184,218,62,230,51,217,62,46,175,215,62,223,41,214,62,249,163,212,62,125,29,211,62,110,150,209,62,204,14,208,62,151,134,206,62,210,253,204,62,125,116,203,62,153,234,201,62,39,96,200,62,40,213,198,62,159,73,197,62,138,189,195,62,236,48,194,62,198,163,192,62,25,22,191,62,230,135,189,62,45,249,187,62,241,105,186,62,50,218,184,62,241,73,183,62,47,185,181,62,238,39,180,62,47,150,178,62,242,3,177,62,57,113,175,62,4,222,173,62,86,74,172,62,47,182,170,62,144,33,169,62,122,140,167,62,239,246,165,62,239,96,164,62,124,202,162,62,151,51,161,62,64,156,159,62,122,4,158,62,68,108,156,62,161,211,154,62,145,58,153,62,22,161,151,62,48,7,150,62,225,108,148,62,41,210,146,62,11,55,145,62,135,155,143,62,158,255,141,62,81,99,140,62,162,198,138,62,145,41,137,62,32,140,135,62,80,238,133,62,34,80,132,62,151,177,130,62,176,18,129,62,222,230,126,62,169,167,123,62,195,103,120,62,47,39,117,62,238,229,113,62,4,164,110,62,115,97,107,62,60,30,104,62,98,218,100,62,232,149,97,62,207,80,94,62,26,11,91,62,204,196,87,62,230,125,84,62,107,54,81,62,93,238,77,62,191,165,74,62,146,92,71,62,218,18,68,62,151,200,64,62,206,125,61,62,128,50,58,62,174,230,54,62,93,154,51,62,141,77,48,62,66,0,45,62,125,178,41,62,66,100,38,62,145,21,35,62,110,198,31,62,219,118,28,62,218,38,25,62,109,214,21,62,152,133,18,62,91,52,15,62,186,226,11,62,183,144,8,62,84,62,5,62,148,235,1,62,240,48,253,61,6,138,246,61,113,226,239,61,51,58,233,61,79,145,226,61,207,231,219,61,181,61,213,61,3,147,206,61,192,231,199,61,242,59,193,61,156,143,186,61,195,226,179,61,108,53,173,61,155,135,166,61,85,217,159,61,159,42,153,61,126,123,146,61,246,203,139,61,11,28,133,61,135,215,124,61,70,118,111,61,93,20,98,61,214,177,84,61,185,78,71,61,16,235,57,61,229,134,44,61,64,34,31,61,44,189,17,61,178,87,4,61,181,227,237,60,96,23,211,60,118,74,184,60,11,125,157,60,50,175,130,60,250,193,79,60,254,36,26,60,42,15,201,59,153,167,59,59,46,125,214,185,210,70,113,187,171,222,227,187,166,140,39,188,129,41,93,188,225,98,137,188,160,48,164,188,236,253,190,188,179,202,217,188,224,150,244,188,49,177,7,189,147,22,21,189,140,123,34,189,19,224,47,189,30,68,61,189,165,167,74,189,157,10,88,189,254,108,101,189,190,206,114,189,234,23,128,189,27,200,134,189,237,119,141,189,92,39,148,189,99,214,154,189,253,132,161,189,38,51,168,189,217,224,174,189,17,142,181,189,202,58,188,189,254,230,194,189,170,146,201,189,200,61,208,189,84,232,214,189,74,146,221,189,164,59,228,189,93,228,234,189,114,140,241,189,221,51,248,189,154,218,254,189,82,192,2,190,252,18,6,190,71,101,9,190,50,183,12,190,186,8,16,190,221,89,19,190,152,170,22,190,234,250,25,190,208,74,29,190,71,154,32,190,78,233,35,190,225,55,39,190,0,134,42,190,166,211,45,190,211,32,49,190,131,109,52,190,181,185,55,190,101,5,59,190,147,80,62,190,58,155,65,190,90,229,68,190,240,46,72,190,249,119,75,190,116,192,78,190,93,8,82,190,179,79,85,190,115,150,88,190,156,220,91,190,42,34,95,190,27,103,98,190,109,171,101,190,31,239,104,190,44,50,108,190,148,116,111,190,84,182,114,190,106,247,117,190,211,55,121,190,141,119,124,190,150,182,127,190,117,122,129,190,69,25,131,190,185,183,132,190,208,85,134,190,136,243,135,190,225,144,137,190,218,45,139,190,112,202,140,190,164,102,142,190,116,2,144,190,223,157,145,190,228,56,147,190,129,211,148,190,182,109,150,190,129,7,152,190,226,160,153,190,215,57,155,190,95,210,156,190,121,106,158,190,35,2,160,190,94,153,161,190,38,48,163,190,125,198,164,190,96,92,166,190,206,241,167,190,198,134,169,190,71,27,171,190,80,175,172,190,224,66,174,190,245,213,175,190,143,104,177,190,173,250,178,190,77,140,180,190,110,29,182,190,16,174,183,190,48,62,185,190,207,205,186,190,234,92,188,190,130,235,189,190,148,121,191,190,31,7,193,190,35,148,194,190,159,32,196,190,145,172,197,190,248,55,199,190,211,194,200,190,34,77,202,190,226,214,203,190,19,96,205,190,181,232,206,190,197,112,208,190,66,248,209,190,45,127,211,190,131,5,213,190,67,139,214,190,109,16,216,190,255,148,217,190,249,24,219,190,89,156,220,190,29,31,222,190,70,161,223,190,211,34,225,190,193,163,226,190,16,36,228,190,190,163,229,190,204,34,231,190,56,161,232,190,0,31,234,190,36,156,235,190,162,24,237,190,122,148,238,190,171,15,240,190,51,138,241,190,18,4,243,190,70,125,244,190,207,245,245,190,170,109,247,190,217,228,248,190,88,91,250,190,40,209,251,190,71,70,253,190,181,186,254,190,56,23,0,191,187,208,0,191,228,137,1,191,178,66,2,191,37,251,2,191,59,179,3,191,246,106,4,191,83,34,5,191,83,217,5,191,245,143,6,191,56,70,7,191,29,252,7,191,162,177,8,191,199,102,9,191,140,27,10,191,240,207,10,191,243,131,11,191,147,55,12,191,209,234,12,191,172,157,13,191,36,80,14,191,56,2,15,191,232,179,15,191,50,101,16,191,24,22,17,191,151,198,17,191,176,118,18,191,99,38,19,191,174,213,19,191,145,132,20,191,13,51,21,191,31,225,21,191,200,142,22,191,8,60,23,191,221,232,23,191,72,149,24,191,72,65,25,191,220,236,25,191,4,152,26,191,192,66,27,191,15,237,27,191,240,150,28,191,99,64,29,191,104,233,29,191,254,145,30,191,37,58,31,191,220,225,31,191,35,137,32,191,250,47,33,191,95,214,33,191,82,124,34,191,212,33,35,191,227,198,35,191,127,107,36,191,167,15,37,191,92,179,37,191,157,86,38,191,104,249,38,191,191,155,39,191,160,61,40,191,11,223,40,191,255,127,41,191,125,32,42,191,131,192,42,191,17,96,43,191,39,255,43,191,196,157,44,191,232,59,45,191,146,217,45,191,195,118,46,191,121,19,47,191,180,175,47,191,115,75,48,191,183,230,48,191,127,129,49,191,203,27,50,191,153,181,50,191,234,78,51,191,189,231,51,191,18,128,52,191,232,23,53,191,63,175,53,191,22,70,54,191,110,220,54,191,69,114,55,191,156,7,56,191,113,156,56,191,197,48,57,191,150,196,57,191,230,87,58,191,178,234,58,191,252,124,59,191,194,14,60,191,3,160,60,191,193,48,61,191,250,192,61,191,173,80,62,191,219,223,62,191,131,110,63,191,165,252,63,191,64,138,64,191,83,23,65,191,224,163,65,191,228,47,66,191,96,187,66,191,83,70,67,191,190,208,67,191,158,90,68,191,246,227,68,191,194,108,69,191,5,245,69,191,188,124,70,191,232,3,71,191,137,138,71,191,157,16,72,191,37,150,72,191,32,27,73,191,142,159,73,191,111,35,74,191,193,166,74,191,134,41,75,191,188,171,75,191,99,45,76,191,122,174,76,191,2,47,77,191,250,174,77,191,98,46,78,191,57,173,78,191,126,43,79,191,51,169,79,191,85,38,80,191,230,162,80,191,228,30,81,191,80,154,81,191,40,21,82,191,109,143,82,191,30,9,83,191,59,130,83,191,195,250,83,191,183,114,84,191,22,234,84,191,223,96,85,191,18,215,85,191,176,76,86,191,183,193,86,191,39,54,87,191,0,170,87,191,66,29,88,191,236,143,88,191,254,1,89,191,120,115,89,191,89,228,89,191,162,84,90,191,81,196,90,191,102,51,91,191,226,161,91,191,195,15,92,191,10,125,92,191,183,233,92,191,200,85,93,191,62,193,93,191,24,44,94,191,87,150,94,191,249,255,94,191,255,104,95,191,104,209,95,191,51,57,96,191,98,160,96,191,243,6,97,191,229,108,97,191,58,210,97,191,240,54,98,191,8,155,98,191,128,254,98,191,89,97,99,191,146,195,99,191,44,37,100,191,37,134,100,191],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE),allocate([126,230,100,191,55,70,101,191,78,165,101,191,197,3,102,191,154,97,102,191,205,190,102,191,94,27,103,191,77,119,103,191,154,210,103,191,68,45,104,191,75,135,104,191,174,224,104,191,111,57,105,191,139,145,105,191,4,233,105,191,217,63,106,191,9,150,106,191,148,235,106,191,123,64,107,191,188,148,107,191,89,232,107,191,79,59,108,191,160,141,108,191,75,223,108,191,79,48,109,191,173,128,109,191,101,208,109,191,117,31,110,191,223,109,110,191,161,187,110,191,187,8,111,191,46,85,111,191,248,160,111,191,27,236,111,191,149,54,112,191,103,128,112,191,144,201,112,191,15,18,113,191,230,89,113,191,19,161,113,191,151,231,113,191,113,45,114,191,160,114,114,191,38,183,114,191,1,251,114,191,50,62,115,191,184,128,115,191,148,194,115,191,196,3,116,191,73,68,116,191,34,132,116,191,80,195,116,191,210,1,117,191,168,63,117,191,210,124,117,191,80,185,117,191,33,245,117,191,69,48,118,191,189,106,118,191,136,164,118,191,166,221,118,191,22,22,119,191,217,77,119,191,239,132,119,191,87,187,119,191,17,241,119,191,29,38,120,191,122,90,120,191,42,142,120,191,43,193,120,191,125,243,120,191,33,37,121,191,22,86,121,191,92,134,121,191,242,181,121,191,218,228,121,191,18,19,122,191,154,64,122,191,115,109,122,191,157,153,122,191,22,197,122,191,223,239,122,191,248,25,123,191,97,67,123,191,26,108,123,191,34,148,123,191,122,187,123,191,32,226,123,191,23,8,124,191,92,45,124,191,240,81,124,191,211,117,124,191,5,153,124,191,134,187,124,191,85,221,124,191,115,254,124,191,223,30,125,191,154,62,125,191,163,93,125,191,250,123,125,191,159,153,125,191,146,182,125,191,211,210,125,191,98,238,125,191,63,9,126,191,105,35,126,191,225,60,126,191,167,85,126,191,186,109,126,191,27,133,126,191,201,155,126,191,196,177,126,191,13,199,126,191,162,219,126,191,133,239,126,191,181,2,127,191,50,21,127,191,252,38,127,191,19,56,127,191,118,72,127,191,39,88,127,191,36,103,127,191,110,117,127,191,5,131,127,191,232,143,127,191,25,156,127,191,149,167,127,191,95,178,127,191,116,188,127,191,215,197,127,191,133,206,127,191,129,214,127,191,200,221,127,191,93,228,127,191,61,234,127,191,106,239,127,191,227,243,127,191,169,247,127,191,187,250,127,191,25,253,127,191,196,254,127,191,187,255,127,191,250,255,127,63,57,254,127,63,169,249,127,63,75,242,127,63,30,232,127,63,35,219,127,63,89,203,127,63,193,184,127,63,91,163,127,63,40,139,127,63,39,112,127,63,90,82,127,63,191,49,127,63,88,14,127,63,37,232,126,63,38,191,126,63,92,147,126,63,200,100,126,63,105,51,126,63,65,255,125,63,79,200,125,63,150,142,125,63,20,82,125,63,203,18,125,63,188,208,124,63,231,139,124,63,77,68,124,63,239,249,123,63,205,172,123,63,233,92,123,63,67,10,123,63,221,180,122,63,182,92,122,63,209,1,122,63,46,164,121,63,206,67,121,63,178,224,120,63,220,122,120,63,76,18,120,63,4,167,119,63,4,57,119,63,79,200,118,63,228,84,118,63,198,222,117,63,246,101,117,63,117,234,116,63,68,108,116,63,101,235,115,63,218,103,115,63,163,225,114,63,194,88,114,63,57,205,113,63,9,63,113,63,52,174,112,63,187,26,112,63,160,132,111,63,228,235,110,63,138,80,110,63,147,178,109,63,1,18,109,63,213,110,108,63,17,201,107,63,183,32,107,63,201,117,106,63,73,200,105,63,57,24,105,63,155,101,104,63,111,176,103,63,186,248,102,63,124,62,102,63,184,129,101,63,111,194,100,63,164,0,100,63,90,60,99,63,145,117,98,63,76,172,97,63,142,224,96,63,89,18,96,63,174,65,95,63,145,110,94,63,3,153,93,63,8,193,92,63,160,230,91,63,207,9,91,63,152,42,90,63,251,72,89,63,253,100,88,63,159,126,87,63,229,149,86,63,208,170,85,63,99,189,84,63,161,205,83,63,140,219,82,63,39,231,81,63,117,240,80,63,121,247,79,63,52,252,78,63,171,254,77,63,223,254,76,63,212,252,75,63,140,248,74,63,10,242,73,63,82,233,72,63,101,222,71,63,71,209,70,63,251,193,69,63,132,176,68,63,229,156,67,63,32,135,66,63,58,111,65,63,52,85,64,63,19,57,63,63,216,26,62,63,136,250,60,63,38,216,59,63,180,179,58,63,54,141,57,63,175,100,56,63,34,58,55,63,147,13,54,63,5,223,52,63,124,174,51,63,249,123,50,63,130,71,49,63,25,17,48,63,194,216,46,63,127,158,45,63,86,98,44,63,72,36,43,63,90,228,41,63,144,162,40,63,235,94,39,63,113,25,38,63,37,210,36,63,9,137,35,63,35,62,34,63,117,241,32,63,4,163,31,63,210,82,30,63,228,0,29,63,61,173,27,63,225,87,26,63,211,0,25,63,25,168,23,63,180,77,22,63,170,241,20,63,253,147,19,63,178,52,18,63,204,211,16,63,80,113,15,63,66,13,14,63,164,167,12,63,124,64,11,63,205,215,9,63,154,109,8,63,233,1,7,63,189,148,5,63,25,38,4,63,3,182,2,63,126,68,1,63,28,163,255,62,110,186,252,62,250,206,249,62,202,224,246,62,228,239,243,62,81,252,240,62,26,6,238,62,71,13,235,62,224,17,232,62,237,19,229,62,119,19,226,62,135,16,223,62,36,11,220,62,88,3,217,62,42,249,213,62,164,236,210,62,205,221,207,62,175,204,204,62,82,185,201,62,191,163,198,62,254,139,195,62,24,114,192,62,22,86,189,62,0,56,186,62,224,23,183,62,189,245,179,62,161,209,176,62,149,171,173,62,162,131,170,62,207,89,167,62,39,46,164,62,178,0,161,62,121,209,157,62,133,160,154,62,223,109,151,62,143,57,148,62,160,3,145,62,26,204,141,62,5,147,138,62,107,88,135,62,86,28,132,62,205,222,128,62,182,63,123,62,16,191,116,62,187,59,110,62,201,181,103,62,77,45,97,62,89,162,90,62,255,20,84,62,81,133,77,62,99,243,70,62,70,95,64,62,13,201,57,62,202,48,51,62,144,150,44,62,114,250,37,62,130,92,31,62,210,188,24,62,118,27,18,62,127,120,11,62,1,212,4,62,29,92,252,61,114,13,239,61,41,188,225,61,102,104,212,61,78,18,199,61,8,186,185,61,184,95,172,61,132,3,159,61,146,165,145,61,7,70,132,61,18,202,109,61,122,5,83,61,145,62,56,61,164,117,29,61,252,170,2,61,202,189,207,60,86,35,154,60,97,14,73,60,197,167,187,59,61,122,86,186,9,70,241,187,18,221,99,188,80,138,167,188,65,36,221,188,227,93,9,189,35,40,36,189,150,240,62,189,242,182,89,189,234,122,116,189,26,158,135,189,66,253,148,189,200,90,162,189,134,182,175,189,87,16,189,189,22,104,202,189,155,189,215,189,195,16,229,189,105,97,242,189,101,175,255,189,74,125,6,190,104,33,13,190,250,195,19,190,237,100,26,190,46,4,33,190,172,161,39,190,83,61,46,190,16,215,52,190,210,110,59,190,134,4,66,190,25,152,72,190,121,41,79,190,148,184,85,190,86,69,92,190,174,207,98,190,137,87,105,190,214,220,111,190,128,95,118,190,120,223,124,190,84,174,129,190,129,235,132,190,56,39,136,190,114,97,139,190,36,154,142,190,69,209,145,190,205,6,149,190,179,58,152,190,238,108,155,190,116,157,158,190,61,204,161,190,64,249,164,190,115,36,168,190,207,77,171,190,73,117,174,190,218,154,177,190,120,190,180,190,27,224,183,190,186,255,186,190,75,29,190,190,199,56,193,190,37,82,196,190,91,105,199,190,97,126,202,190,48,145,205,190,188,161,208,190,0,176,211,190,241,187,214,190,135,197,217,190,186,204,220,190,129,209,223,190,211,211,226,190,169,211,229,190,250,208,232,190,189,203,235,190,234,195,238,190,120,185,241,190,96,172,244,190,154,156,247,190,28,138,250,190,223,116,253,190,109,46,0,191,3,161,1,191,45,18,3,191,230,129,4,191,44,240,5,191,250,92,7,191,76,200,8,191,30,50,10,191,108,154,11,191,50,1,13,191,108,102,14,191,23,202,15,191,45,44,17,191,172,140,18,191,144,235,19,191,213,72,21,191,118,164,22,191,113,254,23,191,192,86,25,191,98,173,26,191,81,2,28,191,138,85,29,191,9,167,30,191,203,246,31,191,204,68,33,191,9,145,34,191,124,219,35,191,36,36,37,191,253,106,38,191,2,176,39,191,48,243,40,191,132,52,42,191,250,115,43,191,143,177,44,191,63,237,45,191,7,39,47,191,227,94,48,191,208,148,49,191,202,200,50,191,206,250,51,191,218,42,53,191,232,88,54,191,247,132,55,191,2,175,56,191,7,215,57,191,3,253,58,191,241,32,60,191,207,66,61,191,154,98,62,191,79,128,63,191,233,155,64,191,104,181,65,191,198,204,66,191,1,226,67,191,23,245,68,191,3,6,70,191,196,20,71,191,86,33,72,191,182,43,73,191,225,51,74,191,212,57,75,191,141,61,76,191,9,63,77,191,68,62,78,191,61,59,79,191,240,53,80,191,90,46,81,191,121,36,82,191,74,24,83,191,202,9,84,191,247,248,84,191,206,229,85,191,77,208,86,191,112,184,87,191,55,158,88,191,156,129,89,191,160,98,90,191,62,65,91,191,117,29,92,191,65,247,92,191,162,206,93,191,148,163,94,191,20,118,95,191,34,70,96,191,186,19,97,191,217,222,97,191,127,167,98,191,169,109,99,191,84,49,100,191,126,242,100,191,38,177,101,191,73,109,102,191,229,38,103,191,248,221,103,191,128,146,104,191,123,68,105,191,232,243,105,191,195,160,106,191,12,75,107,191,192,242,107,191,222,151,108,191,100,58,109,191,80,218,109,191,160,119,110,191,83,18,111,191,102,170,111,191,217,63,112,191,169,210,112,191,213,98,113,191,91,240,113,191,58,123,114,191,113,3,115,191,253,136,115,191,222,11,116,191,17,140,116,191,150,9,117,191,107,132,117,191,143,252,117,191,0,114,118,191,189,228,118,191,198,84,119,191,24,194,119,191,178,44,120,191,147,148,120,191,187,249,120,191,40,92,121,191,217,187,121,191,205,24,122,191,2,115,122,191,121,202,122,191,47,31,123,191,36,113,123,191,88,192,123,191,201,12,124,191,118,86,124,191,95,157,124,191,130,225,124,191,224,34,125,191,119,97,125,191,71,157,125,191,79,214,125,191,142,12,126,191,4,64,126,191,176,112,126,191,146,158,126,191,169,201,126,191,245,241,126,191,117,23,127,191,41,58,127,191,16,90,127,191,43,119,127,191,120,145,127,191,248,168,127,191,170,189,127,191,143,207,127,191,165,222,127,191,237,234,127,191,102,244,127,191,17,251,127,191,237,254,127,191,234,255,127,63,229,248,127,63,166,230,127,63,45,201,127,63,124,160,127,63,149,108,127,63,121,45,127,63,44,227,126,63,177,141,126,63,11,45,126,63,63,193,125,63,82,74,125,63,72,200,124,63,40,59,124,63,247,162,123,63,189,255,122,63,128,81,122,63,72,152,121,63,30,212,120,63,9,5,120,63,19,43,119,63,70,70,118,63,172,86,117,63,78,92,116,63,56,87,115,63,118,71,114,63,19,45,113,63,28,8,112,63,158,216,110,63,165,158,109,63,64,90,108,63,126,11,107,63,107,178,105,63,25,79,104,63,150,225,102,63,242,105,101,63,62,232,99,63,139,92,98,63,234,198,96,63,109,39,95,63,38,126,93,63,40,203,91,63,133,14,90,63,83,72,88,63,163,120,86,63,139,159,84,63,32,189,82,63,118,209,80,63,163,220,78,63,189,222,76,63,219,215,74,63,19,200,72,63,124,175,70,63,46,142,68,63,65,100,66,63,206,49,64,63,236,246,61,63,180,179,59,63,66,104,57,63,173,20,55,63,16,185,52,63,134,85,50,63,41,234,47,63,21,119,45,63,101,252,42,63,53,122,40,63,161,240,37,63,198,95,35,63,192,199,32,63,172,40,30,63,169,130,27,63,212,213,24,63,74,34,22,63,42,104,19,63,147,167,16,63,164,224,13,63,123,19,11,63,57,64,8,63,253,102,5,63,231,135,2,63,45,70,255,62,91,113,249,62,151,145,243,62,36,167,237,62,69,178,231,62,60,179,225,62,76,170,219,62,186,151,213,62,201,123,207,62,190,86,201,62,223,40,195,62,112,242,188,62,183,179,182,62,251,108,176,62,129,30,170,62,146,200,163,62,115,107,157,62,108,7,151,62,197,156,144,62,199,43,138,62,185,180,131,62,199,111,122,62,33,107,109,62,17,92,96,62,41,67,83,62,253,32,70,62,32,246,56,62,38,195,43,62,164,136,30,62,45,71,17,62,87,255,3,62,110,99,237,61,194,189,210,61,218,14,184,61,222,87,157,61,251,153,130,61,188,172,79,61,101,28,26,61,153,10,201,60,42,167,59,60,193,120,214,186,45,68,113,188,87,215,227,188,76,129,39,189,148,15,93,189,21,74,137,189,90,6,164,189,109,187,190,189,34,104,217,189,78,11,244,189,227,81,7,190,47,152,20,190,247,215,33,190,165,16,47,190,166,65,60,190,100,106,73,190,77,138,86,190,205,160,99,190,80,173,112,190,69,175,125,190,13,83,133,190,158,200,139,190,13,56,146,190,18,161,152,190,102,3,159,190,191,94,165,190,216,178,171,190,105,255,177,190,43,68,184,190,216,128,190,190,42,181,196,190,219,224,202,190,165,3,209,190,69,29,215,190,117,45,221,190,241,51,227,190,118,48,233,190,192,34,239,190,141,10,245,190,155,231,250,190,211,92,0,191,56,64,3,191,219,29,6,191,155,245,8,191,90,199,11,191,247,146,14,191,84,88,17,191,80,23,20,191,205,207,22,191,172,129,25,191,208,44,28,191,26,209,30,191,109,110,33,191,171,4,36,191,183,147,38,191,116,27,41,191,199,155,43,191,147,20,46,191,187,133,48,191,38,239,50,191,183,80,53,191,85,170,55,191,227,251,57,191,74,69,60,191,110,134,62,191,55,191,64,191,139,239,66,191,83,23,69,191,117,54,71,191,218,76,73,191,107,90,75,191,16,95,77,191,179,90,79,191,62,77,81,191,154,54,83,191,179,22,85,191,114,237,86,191,197,186,88,191,149,126,90,191,208,56,92,191,98,233,93,191,56,144,95,191,64,45,97,191,103,192,98,191,156,73,100,191,206,200,101,191,235,61,103,191,227,168,104,191,167,9,106,191,39,96,107,191,84,172,108,191,31,238,109,191,122,37,111,191,88,82,112,191,171,116,113,191,103,140,114,191,127,153,115,191,231,155,116,191,149,147,117,191,126,128,118,191,150,98,119,191,212,57,120,191,47,6,121,191,158,199,121,191,23,126,122,191,148,41,123,191,13,202,123,191,122,95,124,191,213,233,124,191,24,105,125,191,62,221,125,191,64,70,126,191,28,164,126,191,204,246,126,191,77,62,127,191,156,122,127,191,182,171,127,191,153,209,127,191,67,236,127,191,180,251,127,191,166,255,127,63,148,227,127,63,156,154,127,63,204,36,127,63,56,130,126,63,253,178,125,63,63,183,124,63,42,143,123,63,243,58,122,63,212,186,120,63,17,15,119,63,246,55,117,63,213,53,115,63,8,9,113,63,241,177,110,63,249,48,108,63,144,134,105,63,47,179,102,63,83,183,99,63,132,147,96,63,78,72,93,63,69,214,89,63,3,62,86,63,43,128,82,63,101,157,78,63,94,150,74,63,204,107,70,63,106,30,66,63,249,174,61,63,64,30,57,63,13,109,52,63,50,156,47,63,135,172,42,63,235,158,37,63,63,116,32,63,109,45,27,63,97,203,21,63,13,79,16,63,104,185,10,63,107,11,5,63,46,140,254,62,221,212,242,62,241,242,230,62,127,232,218,62,166,183,206,62,136,98,194,62,78,235,181,62,42,84,169,62,81,159,156,62,253,206,143,62,109,229,130,62,206,201,107,62,98,159,81,62,48,80,55,62,211,224,28,62,241,85,2,62,98,104,207,61,124,0,154,61,36,251,72,61,27,164,187,60,243,119,86,187,100,61,241,188,187,192,99,189,103,93,167,189,20,189,220,189,3,251,8,190,115,127,35,190,52,231,61,190,164,45,88,190,38,78,114,190,18,34,134,190,137,5,147,190,52,207,159,190,213,124,172,190,51,12,185,190,26,123,197,190,91,199,209,190,205,238,221,190,80,239,233,190,199,198,245,190,144,185,0,191,38,121,6,191,36,33,12,191,141,176,17,191,102,38,23,191,186,129,28,191,152,193,33,191,21,229,38,191,74,235,43,191,86,211,48,191,91,156,53,191,131,69,58,191,253,205,62,191,252,52,67,191,188,121,71,191,125,155,75,191,132,153,79,191,31,115,83,191,161,39,87,191,99,182,90,191,198,30,94,191,48,96,97,191,15,122,100,191,216,107,103,191,7,53,106,191,31,213,108,191,169,75,111,191,55,152,113,191,98,186,115,191,201,177,117,191,22,126,119,191,246,30,121,191,33,148,122,191,85,221,123,191,89,250,124,191,250,234,125,191,14,175,126,191,116,70,127,191,15,177,127,191,206,238,127,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,41,0,41,0,41,0,82,0,82,0,123,0,164,0,200,0,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,41,0,41,0,41,0,123,0,123,0,123,0,164,0,164,0,240,0,10,1,27,1,39,1,41,0,41,0,41,0,41,0,41,0,41,0,41,0,41,0,123,0,123,0,123,0,123,0,240,0,240,0,240,0,10,1,10,1,49,1,62,1,72,1,80,1,123,0,123,0,123,0,123,0,123,0,123,0,123,0,123,0,240,0,240,0,240,0,240,0,49,1,49,1,49,1,62,1,62,1,87,1,95,1,102,1,108,1,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,49,1,49,1,49,1,49,1,87,1,87,1,87,1,95,1,95,1,114,1,120,1,126,1,131,1,0,0,0,0,0,0,40,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,40,15,23,28,31,34,36,38,39,41,42,43,44,45,46,47,47,49,50,51,52,53,54,55,55,57,58,59,60,61,62,63,63,65,66,67,68,69,70,71,71,40,20,33,41,48,53,57,61,64,66,69,71,73,75,76,78,80,82,85,87,89,91,92,94,96,98,101,103,105,107,108,110,112,114,117,119,121,123,124,126,128,40,23,39,51,60,67,73,79,83,87,91,94,97,100,102,105,107,111,115,118,121,124,126,129,131,135,139,142,145,148,150,153,155,159,163,166,169,172,174,177,179,35,28,49,65,78,89,99,107,114,120,126,132,136,141,145,149,153,159,165,171,176,180,185,189,192,199,205,211,216,220,225,229,232,239,245,251,21,33,58,79,97,112,125,137,148,157,166,174,182,189,195,201,207,217,227,235,243,251,17,35,63,86,106,123,139,152,165,177,187,197,206,214,222,230,237,250,25,31,55,75,91,105,117,128,138,146,154,161,168,174,180,185,190,200,208,215,222,229,235,240,245,255,16,36,65,89,110,128,144,159,173,185,196,207,217,226,234,242,250,11,41,74,103,128,151,172,191,209,225,241,255,9,43,79,110,138,163,186,207,227,246,12,39,71,99,123,144,164,182,198,214,228,241,253,9,44,81,113,142,168,192,214,235,255,7,49,90,127,160,191,220,247,6,51,95,134,170,203,234,7,47,87,123,155,184,212,237,6,52,97,137,174,208,240,5,57,106,151,192,231,5,59,111,158,202,243,5,55,103,147,187,224,5,60,113,161,206,248,4,65,122,175,224,4,67,127,182,234,224,224,224,224,224,224,224,224,160,160,160,160,185,185,185,178,178,168,134,61,37,224,224,224,224,224,224,224,224,240,240,240,240,207,207,207,198,198,183,144,66,40,160,160,160,160,160,160,160,160,185,185,185,185,193,193,193,183,183,172,138,64,38,240,240,240,240,240,240,240,240,207,207,207,207,204,204,204,193,193,180,143,66,40,185,185,185,185,185,185,185,185,193,193,193,193,193,193,193,183,183,172,138,65,39,207,207,207,207,207,207,207,207,204,204,204,204,201,201,201,188,188,176,141,66,40,193,193,193,193,193,193,193,193,193,193,193,193,194,194,194,184,184,173,139,65,39,204,204,204,204,204,204,204,204,201,201,201,201,198,198,198,187,187,175,140,66,40,0,0,12,0,24,0,36,0,48,0,4,0,16,0,28,0,40,0,52,0,8,0,20,0,32,0,44,0,56,0,1,0,13,0,25,0,37,0,49,0,5,0,17,0,29,0,41,0,53,0,9,0,21,0,33,0,45,0,57,0,2,0,14,0,26,0,38,0,50,0,6,0,18,0,30,0,42,0,54,0,10,0,22,0,34,0,46,0,58,0,3,0,15,0,27,0,39,0,51,0,7,0,19,0,31,0,43,0,55,0,11,0,23,0,35,0,47,0,59,0,0,0,128,63,0,0,0,128,99,250,127,63,191,117,86,188,139,233,127,63,10,113,214,188,121,205,127,63,231,206,32,189,47,166,127,63,58,94,86,189,175,115,127,63,19,242,133,189,249,53,127,63,42,175,160,189,18,237,126,63,51,101,187,189,253,152,126,63,4,19,214,189,188,57,126,63,115,183,240,189,85,207,125,63,168,168,5,190,203,89,125,63,187,239,18,190,37,217,124,63,92,48,32,190,103,77,124,63,245,105,45,190,152,182,123,63,243,155,58,190,190,20,123,63,194,197,71,190,226,103,122,63,205,230,84,190,9,176,121,63,130,254,97,190,60,237,120,63,77,12,111,190,132,31,120,63,156,15,124,190,234,70,119,63,238,131,132,190,119,99,118,63,62,250,138,190,54,117,117,63,117,106,145,190,48,124,116,63,76,212,151,190,113,120,115,63,122,55,158,190,3,106,114,63,183,147,164,190,244,80,113,63,188,232,170,190,79,45,112,63,65,54,177,190,33,255,110,63,1,124,183,190,118,198,109,63,180,185,189,190,94,131,108,63,21,239,195,190,231,53,107,63,222,27,202,190,30,222,105,63,201,63,208,190,18,124,104,63,146,90,214,190,212,15,103,63,243,107,220,190,116,153,101,63,170,115,226,190,1,25,100,63,113,113,232,190,141,142,98,63,7,101,238,190,40,250,96,63,39,78,244,190,230,91,95,63,144,44,250,190,215,179,93,63,0,0,0,191,15,2,92,63,27,228,2,191,160,70,90,63,119,194,5,191,158,129,88,63,246,154,8,191,29,179,86,63,119,109,11,191,49,219,84,63,218,57,14,191,239,249,82,63,0,0,17,191,108,15,81,63,202,191,19,191,189,27,79,63,24,121,22,191,248,30,77,63,205,43,25,191,52,25,75,63,202,215,27,191,136,10,73,63,241,124,30,191,10,243,70,63,36,27,33,191,209,210,68,63,70,178,35,191,247,169,66,63,58,66,38,191,147,120,64,63,227,202,40,191,189,62,62,63,37,76,43,191,143,252,59,63,227,197,45,191,34,178,57,63,1,56,48,191,144,95,55,63,101,162,50,191,243,4,53,63,243,4,53,191,101,162,50,63,144,95,55,191,1,56,48,63,34,178,57,191,227,197,45,63,143,252,59,191,37,76,43,63,189,62,62,191,227,202,40,63,147,120,64,191,58,66,38,63,247,169,66,191,70,178,35,63,209,210,68,191,36,27,33,63,10,243,70,191,241,124,30,63,136,10,73,191,202,215,27,63,52,25,75,191,205,43,25,63,248,30,77,191,24,121,22,63,189,27,79,191,202,191,19,63,108,15,81,191,0,0,17,63,239,249,82,191,218,57,14,63,49,219,84,191,119,109,11,63,29,179,86,191,246,154,8,63,158,129,88,191,119,194,5,63,160,70,90,191,27,228,2,63,15,2,92,191,0,0,0,63,215,179,93,191,144,44,250,62,230,91,95,191,39,78,244,62,40,250,96,191,7,101,238,62,141,142,98,191,113,113,232,62,1,25,100,191,170,115,226,62,116,153,101,191,243,107,220,62,212,15,103,191,146,90,214,62,18,124,104,191,201,63,208,62,30,222,105,191,222,27,202,62,231,53,107,191,21,239,195,62,94,131,108,191,180,185,189,62,118,198,109,191,1,124,183,62,33,255,110,191,65,54,177,62,79,45,112,191,188,232,170,62,244,80,113,191,183,147,164,62,3,106,114,191,122,55,158,62,113,120,115,191,76,212,151,62,48,124,116,191,117,106,145,62,54,117,117,191,62,250,138,62,119,99,118,191,238,131,132,62,234,70,119,191,156,15,124,62,132,31,120,191,77,12,111,62,60,237,120,191,130,254,97,62,9,176,121,191,205,230,84,62,226,103,122,191,194,197,71,62,190,20,123,191,243,155,58,62,152,182,123,191,245,105,45,62,103,77,124,191,92,48,32,62,37,217,124,191,187,239,18,62,203,89,125,191,168,168,5,62,85,207,125,191,115,183,240,61,188,57,126,191,4,19,214,61,253,152,126,191,51,101,187,61,18,237,126,191,42,175,160,61,249,53,127,191,19,242,133,61,175,115,127,191,58,94,86,61,47,166,127,191,231,206,32,61,121,205,127,191,10,113,214,60,139,233,127,191,191,117,86,60,99,250,127,191,0,48,141,36,0,0,128,191,191,117,86,188,99,250,127,191,10,113,214,188,139,233,127,191,231,206,32,189,121,205,127,191,58,94,86,189,47,166,127,191,19,242,133,189,175,115,127,191,42,175,160,189,249,53,127,191,51,101,187,189,18,237,126,191,4,19,214,189,253,152,126,191,115,183,240,189,188,57,126,191,168,168,5,190,85,207,125,191,187,239,18,190,203,89,125,191,92,48,32,190,37,217,124,191,245,105,45,190,103,77,124,191,243,155,58,190,152,182,123,191,194,197,71,190,190,20,123,191,205,230,84,190,226,103,122,191,130,254,97,190,9,176,121,191,77,12,111,190,60,237,120,191,156,15,124,190,132,31,120,191,238,131,132,190,234,70,119,191,62,250,138,190,119,99,118,191,117,106,145,190,54,117,117,191,76,212,151,190,48,124,116,191,122,55,158,190,113,120,115,191,183,147,164,190,3,106,114,191,188,232,170,190,244,80,113,191,65,54,177,190,79,45,112,191,1,124,183,190,33,255,110,191,180,185,189,190,118,198,109,191,21,239,195,190,94,131,108,191,222,27,202,190,231,53,107,191,201,63,208,190,30,222,105,191,146,90,214,190,18,124,104,191,243,107,220,190,212,15,103,191,170,115,226,190,116,153,101,191,113,113,232,190,1,25,100,191,7,101,238,190,141,142,98,191,39,78,244,190,40,250,96,191,144,44,250,190,230,91,95,191,0,0,0,191,215,179,93,191,27,228,2,191,15,2,92,191,119,194,5,191,160,70,90,191,246,154,8,191,158,129,88,191,119,109,11,191,29,179,86,191,218,57,14,191,49,219,84,191,0,0,17,191,239,249,82,191,202,191,19,191,108,15,81,191,24,121,22,191,189,27,79,191,205,43,25,191,248,30,77,191,202,215,27,191,52,25,75,191,241,124,30,191,136,10,73,191,36,27,33,191,10,243,70,191,70,178,35,191,209,210,68,191,58,66,38,191,247,169,66,191,227,202,40,191,147,120,64,191,37,76,43,191,189,62,62,191,227,197,45,191,143,252,59,191,1,56,48,191,34,178,57,191,101,162,50,191,144,95,55,191,243,4,53,191,243,4,53,191,144,95,55,191,101,162,50,191,34,178,57,191,1,56,48,191,143,252,59,191,227,197,45,191,189,62,62,191,37,76,43,191,147,120,64,191,227,202,40,191,247,169,66,191,58,66,38,191,209,210,68,191,70,178,35,191,10,243,70,191,36,27,33,191,136,10,73,191,241,124,30,191,52,25,75,191,202,215,27,191,248,30,77,191,205,43,25,191,189,27,79,191,24,121,22,191,108,15,81,191,202,191,19,191,239,249,82,191,0,0,17,191,49,219,84,191,218,57,14,191,29,179,86,191,119,109,11,191,158,129,88,191,246,154,8,191,160,70,90,191,119,194,5,191,15,2,92,191,27,228,2,191,215,179,93,191,0,0,0,191,230,91,95,191,144,44,250,190,40,250,96,191,39,78,244,190,141,142,98,191,7,101,238,190,1,25,100,191,113,113,232,190,116,153,101,191,170,115,226,190,212,15,103,191,243,107,220,190,18,124,104,191,146,90,214,190,30,222,105,191,201,63,208,190,231,53,107,191,222,27,202,190,94,131,108,191,21,239,195,190,118,198,109,191,180,185,189,190,33,255,110,191,1,124,183,190,79,45,112,191,65,54,177,190,244,80,113,191,188,232,170,190,3,106,114,191,183,147,164,190,113,120,115,191,122,55,158,190,48,124,116,191,76,212,151,190,54,117,117,191,117,106,145,190,119,99,118,191,62,250,138,190,234,70,119,191,238,131,132,190,132,31,120,191,156,15,124,190,60,237,120,191,77,12,111,190,9,176,121,191,130,254,97,190,226,103,122,191,205,230,84,190,190,20,123,191,194,197,71,190,152,182,123,191,243,155,58,190,103,77,124,191,245,105,45,190,37,217,124,191,92,48,32,190,203,89,125,191,187,239,18,190,85,207,125,191,168,168,5,190,188,57,126,191,115,183,240,189,253,152,126,191,4,19,214,189,18,237,126,191,51,101,187,189,249,53,127,191,42,175,160,189,175,115,127,191,19,242,133,189,47,166,127,191,58,94,86,189,121,205,127,191,231,206,32,189,139,233,127,191,10,113,214,188,99,250,127,191,191,117,86,188,0,0,128,191,0,48,13,165,99,250,127,191,191,117,86,60,139,233,127,191,10,113,214,60,121,205,127,191,231,206,32,61,47,166,127,191,58,94,86,61,175,115,127,191,19,242,133,61,249,53,127,191,42,175,160,61,18,237,126,191,51,101,187,61,253,152,126,191,4,19,214,61,188,57,126,191,115,183,240,61,85,207,125,191,168,168,5,62,203,89,125,191,187,239,18,62,37,217,124,191,92,48,32,62,103,77,124,191,245,105,45,62,152,182,123,191,243,155,58,62,190,20,123,191,194,197,71,62,226,103,122,191,205,230,84,62,9,176,121,191,130,254,97,62,60,237,120,191,77,12,111,62,132,31,120,191,156,15,124,62,234,70,119,191,238,131,132,62,119,99,118,191,62,250,138,62,54,117,117,191,117,106,145,62,48,124,116,191,76,212,151,62,113,120,115,191,122,55,158,62,3,106,114,191,183,147,164,62,244,80,113,191,188,232,170,62,79,45,112,191,65,54,177,62,33,255,110,191,1,124,183,62,118,198,109,191,180,185,189,62,94,131,108,191,21,239,195,62,231,53,107,191,222,27,202,62,30,222,105,191,201,63,208,62,18,124,104,191,146,90,214,62,212,15,103,191,243,107,220,62,116,153,101,191,170,115,226,62,1,25,100,191,113,113,232,62,141,142,98,191,7,101,238,62,40,250,96,191,39,78,244,62,230,91,95,191,144,44,250,62,215,179,93,191,0,0,0,63,15,2,92,191,27,228,2,63,160,70,90,191,119,194,5,63,158,129,88,191,246,154,8,63,29,179,86,191,119,109,11,63,49,219,84,191,218,57,14,63,239,249,82,191,0,0,17,63,108,15,81,191,202,191,19,63,189,27,79,191,24,121,22,63,248,30,77,191,205,43,25,63,52,25,75,191,202,215,27,63,136,10,73,191,241,124,30,63,10,243,70,191,36,27,33,63,209,210,68,191,70,178,35,63,247,169,66,191,58,66,38,63,147,120,64,191,227,202,40,63,189,62,62,191,37,76,43,63,143,252,59,191,227,197,45,63,34,178,57,191,1,56,48,63,144,95,55,191,101,162,50,63,243,4,53,191,243,4,53,63,101,162,50,191,144,95,55,63,1,56,48,191,34,178,57,63,227,197,45,191,143,252,59,63,37,76,43,191,189,62,62,63,227,202,40,191,147,120,64,63,58,66,38,191,247,169,66,63,70,178,35,191,209,210,68,63,36,27,33,191,10,243,70,63,241,124,30,191,136,10,73,63,202,215,27,191,52,25,75,63,205,43,25,191,248,30,77,63,24,121,22,191,189,27,79,63,202,191,19,191,108,15,81,63,0,0,17,191,239,249,82,63,218,57,14,191,49,219,84,63,119,109,11,191,29,179,86,63,246,154,8,191,158,129,88,63,119,194,5,191,160,70,90,63,27,228,2,191,15,2,92,63,0,0,0,191,215,179,93,63,144,44,250,190,230,91,95,63,39,78,244,190,40,250,96,63,7,101,238,190,141,142,98,63,113,113,232,190,1,25,100,63,170,115,226,190,116,153,101,63,243,107,220,190,212,15,103,63,146,90,214,190,18,124,104,63,201,63,208,190,30,222,105,63,222,27,202,190,231,53,107,63,21,239,195,190,94,131,108,63,180,185,189,190,118,198,109,63,1,124,183,190,33,255,110,63,65,54,177,190,79,45,112,63,188,232,170,190,244,80,113,63,183,147,164,190,3,106,114,63,122,55,158,190,113,120,115,63,76,212,151,190,48,124,116,63,117,106,145,190,54,117,117,63,62,250,138,190,119,99,118,63,238,131,132,190,234,70,119,63,156,15,124,190,132,31,120,63,77,12,111,190,60,237,120,63,130,254,97,190,9,176,121,63,205,230,84,190,226,103,122,63,194,197,71,190,190,20,123,63,243,155,58,190,152,182,123,63,245,105,45,190,103,77,124,63,92,48,32,190,37,217,124,63,187,239,18,190,203,89,125,63,168,168,5,190,85,207,125,63,115,183,240,189,188,57,126,63,4,19,214,189,253,152,126,63,51,101,187,189,18,237,126,63,42,175,160,189,249,53,127,63,19,242,133,189,175,115,127,63,58,94,86,189,47,166,127,63,231,206,32,189,121,205,127,63,10,113,214,188,139,233,127,63,191,117,86,188,99,250,127,63,0,200,83,165,0,0,128,63,191,117,86,60,99,250,127,63,10,113,214,60,139,233,127,63,231,206,32,61,121,205,127,63,58,94,86,61,47,166,127,63,19,242,133,61,175,115,127,63,42,175,160,61,249,53,127,63,51,101,187,61,18,237,126,63,4,19,214,61,253,152,126,63,115,183,240,61,188,57,126,63,168,168,5,62,85,207,125,63,187,239,18,62,203,89,125,63,92,48,32,62,37,217,124,63,245,105,45,62,103,77,124,63,243,155,58,62,152,182,123,63,194,197,71,62,190,20,123,63,205,230,84,62,226,103,122,63,130,254,97,62,9,176,121,63,77,12,111,62,60,237,120,63,156,15,124,62,132,31,120,63,238,131,132,62,234,70,119,63,62,250,138,62,119,99,118,63,117,106,145,62,54,117,117,63,76,212,151,62,48,124,116,63,122,55,158,62,113,120,115,63,183,147,164,62,3,106,114,63,188,232,170,62,244,80,113,63,65,54,177,62,79,45,112,63,1,124,183,62,33,255,110,63,180,185,189,62,118,198,109,63,21,239,195,62,94,131,108,63,222,27,202,62,231,53,107,63,201,63,208,62,30,222,105,63,146,90,214,62,18,124,104,63,243,107,220,62,212,15,103,63,170,115,226,62,116,153,101,63,113,113,232,62,1,25,100,63,7,101,238,62,141,142,98,63,39,78,244,62,40,250,96,63,144,44,250,62,230,91,95,63,0,0,0,63,215,179,93,63,27,228,2,63,15,2,92,63,119,194,5,63,160,70,90,63,246,154,8,63,158,129,88,63,119,109,11,63,29,179,86,63,218,57,14,63,49,219,84,63,0,0,17,63,239,249,82,63,202,191,19,63,108,15,81,63,24,121,22,63,189,27,79,63,205,43,25,63,248,30,77,63,202,215,27,63,52,25,75,63,241,124,30,63,136,10,73,63,36,27,33,63,10,243,70,63,70,178,35,63,209,210,68,63,58,66,38,63,247,169,66,63,227,202,40,63,147,120,64,63,37,76,43,63,189,62,62,63,227,197,45,63,143,252,59,63,1,56,48,63,34,178,57,63,101,162,50,63,144,95,55,63,243,4,53,63,243,4,53,63,144,95,55,63,101,162,50,63,34,178,57,63,1,56,48,63,143,252,59,63,227,197,45,63,189,62,62,63,37,76,43,63,147,120,64,63,227,202,40,63,247,169,66,63,58,66,38,63,209,210,68,63,70,178,35,63,10,243,70,63,36,27,33,63,136,10,73,63,241,124,30,63,52,25,75,63,202,215,27,63,248,30,77,63,205,43,25,63,189,27,79,63,24,121,22,63,108,15,81,63,202,191,19,63,239,249,82,63,0,0,17,63,49,219,84,63,218,57,14,63,29,179,86,63,119,109,11,63,158,129,88,63,246,154,8,63,160,70,90,63,119,194,5,63,15,2,92,63,27,228,2,63,215,179,93,63,0,0,0,63,230,91,95,63,144,44,250,62,40,250,96,63,39,78,244,62,141,142,98,63,7,101,238,62,1,25,100,63,113,113,232,62,116,153,101,63,170,115,226,62,212,15,103,63,243,107,220,62,18,124,104,63,146,90,214,62,30,222,105,63,201,63,208,62,231,53,107,63,222,27,202,62,94,131,108,63,21,239,195,62,118,198,109,63,180,185,189,62,33,255,110,63,1,124,183,62,79,45,112,63,65,54,177,62,244,80,113,63,188,232,170,62,3,106,114,63,183,147,164,62,113,120,115,63,122,55,158,62,48,124,116,63,76,212,151,62,54,117,117,63,117,106,145,62,119,99,118,63,62,250,138,62,234,70,119,63,238,131,132,62,132,31,120,63,156,15,124,62,60,237,120,63,77,12,111,62,9,176,121,63,130,254,97,62,226,103,122,63,205,230,84,62,190,20,123,63,194,197,71,62,152,182,123,63,243,155,58,62,103,77,124,63,245,105,45,62,37,217,124,63,92,48,32,62,203,89,125,63,187,239,18,62,85,207,125,63,168,168,5,62,188,57,126,63,115,183,240,61,253,152,126,63,4,19,214,61,18,237,126,63,51,101,187,61,249,53,127,63,42,175,160,61,175,115,127,63,19,242,133,61,47,166,127,63,58,94,86,61,121,205,127,63,231,206,32,61,139,233,127,63,10,113,214,60,99,250,127,63,191,117,86,60,0,0,24,0,48,0,72,0,96,0,8,0,32,0,56,0,80,0,104,0,16,0,40,0,64,0,88,0,112,0,4,0,28,0,52,0,76,0,100,0,12,0,36,0,60,0,84,0,108,0,20,0,44,0,68,0,92,0,116,0,1,0,25,0,49,0,73,0,97,0,9,0,33,0,57,0,81,0,105,0,17,0,41,0,65,0,89,0,113,0,5,0,29,0,53,0,77,0,101,0,13,0,37,0,61,0,85,0,109,0,21,0,45,0,69,0,93,0,117,0,2,0,26,0,50,0,74,0,98,0,10,0,34,0,58,0,82,0,106,0,18,0,42,0,66,0,90,0,114,0,6,0,30,0,54,0,78,0,102,0,14,0,38,0,62,0,86,0,110,0,22,0,46,0,70,0,94,0,118,0,3,0,27,0,51,0,75,0,99,0,11,0,35,0,59,0,83,0,107,0,19,0,43,0,67,0,91,0,115,0,7,0,31,0,55,0,79,0,103,0,15,0,39,0,63,0,87,0,111,0,23,0,47,0,71,0,95,0,119,0,0,0,48,0,96,0,144,0,192,0,16,0,64,0,112,0,160,0,208,0,32,0,80,0,128,0,176,0,224,0,4,0,52,0,100,0,148,0,196,0,20,0,68,0,116,0,164,0,212,0,36,0,84,0,132,0,180,0,228,0,8,0,56,0,104,0,152,0,200,0,24,0,72,0,120,0,168,0,216,0,40,0,88,0,136,0,184,0,232,0,12,0,60,0,108,0,156,0,204,0,28,0,76,0,124,0,172,0,220,0,44,0,92,0,140,0,188,0,236,0,1,0,49,0,97,0,145,0,193,0,17,0,65,0,113,0,161,0,209,0,33,0,81,0,129,0,177,0,225,0,5,0,53,0,101,0,149,0,197,0,21,0,69,0,117,0,165,0,213,0,37,0,85,0,133,0,181,0,229,0,9,0,57,0,105,0,153,0,201,0,25,0,73,0,121,0,169,0,217,0,41,0,89,0,137,0,185,0,233,0,13,0,61,0,109,0,157,0,205,0,29,0,77,0,125,0,173,0,221,0,45,0,93,0,141,0,189,0,237,0,2,0,50,0,98,0,146,0,194,0,18,0,66,0,114,0,162,0,210,0,34,0,82,0,130,0,178,0,226,0,6,0,54,0,102,0,150,0,198,0,22,0,70,0,118,0,166,0,214,0,38,0,86,0,134,0,182,0,230,0,10,0,58,0,106,0,154,0,202,0,26,0,74,0,122,0,170,0,218,0,42,0,90,0,138,0,186,0,234,0,14,0,62,0,110,0,158,0,206,0,30,0,78,0,126,0,174,0,222,0,46,0,94,0,142,0,190,0,238,0,3,0,51,0,99,0,147,0,195,0,19,0,67,0,115,0,163,0,211,0,35,0,83,0,131,0,179,0,227,0,7,0,55,0,103,0,151,0,199,0,23,0,71,0,119,0,167,0,215,0,39,0,87,0,135,0,183,0,231,0,11,0,59,0,107,0,155,0,203,0,27,0,75,0,123,0,171,0,219,0,43,0,91,0,139,0,187,0,235,0,15,0,63,0,111,0,159,0,207,0,31,0,79,0,127,0,175,0,223,0,47,0,95,0,143,0,191,0,239,0,0,0,96,0,192,0,32,1,128,1,32,0,128,0,224,0,64,1,160,1,64,0,160,0,0,1,96,1,192,1,8,0,104,0,200,0,40,1,136,1,40,0,136,0,232,0,72,1,168,1,72,0,168,0,8,1,104,1,200,1,16,0,112,0,208,0,48,1,144,1,48,0,144,0,240,0,80,1,176,1,80,0,176,0,16,1,112,1,208,1,24,0,120,0,216,0,56,1,152,1,56,0,152,0,248,0,88,1,184,1,88,0,184,0,24,1,120,1,216,1,4,0,100,0,196,0,36,1,132,1,36,0,132,0,228,0,68,1,164,1,68,0,164,0,4,1,100,1,196,1,12,0,108,0,204,0,44,1,140,1,44,0,140,0,236,0,76,1,172,1,76,0,172,0,12,1,108,1,204,1,20,0,116,0,212,0,52,1,148,1,52,0,148,0,244,0,84,1,180,1,84,0,180,0,20,1,116,1,212,1,28,0,124,0,220,0,60,1,156,1,60,0,156,0,252,0,92,1,188,1,92,0,188,0,28,1,124,1,220,1,1,0,97,0,193,0,33,1,129,1,33,0,129,0,225,0,65,1,161,1,65,0,161,0,1,1,97,1,193,1,9,0,105,0,201,0,41,1,137,1,41,0,137,0,233,0,73,1,169,1,73,0,169,0,9,1,105,1,201,1,17,0,113,0,209,0,49,1,145,1,49,0,145,0,241,0,81,1,177,1,81,0,177,0,17,1,113,1,209,1,25,0,121,0,217,0,57,1,153,1,57,0,153,0,249,0,89,1,185,1,89,0,185,0,25,1,121,1,217,1,5,0,101,0,197,0,37,1,133,1,37,0,133,0,229,0,69,1,165,1,69,0,165,0,5,1,101,1,197,1,13,0,109,0,205,0,45,1,141,1,45,0,141,0,237,0,77,1,173,1,77,0,173,0,13,1,109,1,205,1,21,0,117,0,213,0,53,1,149,1,53,0,149,0,245,0,85,1,181,1,85,0,181,0,21,1,117,1,213,1,29,0,125,0,221,0,61,1,157,1,61,0,157,0,253,0,93,1,189,1,93,0,189,0,29,1,125,1,221,1,2,0,98,0,194,0,34,1,130,1,34,0,130,0,226,0,66,1,162,1,66,0,162,0,2,1,98,1,194,1,10,0,106,0,202,0,42,1,138,1,42,0,138,0,234,0,74,1,170,1,74,0,170,0,10,1,106,1,202,1,18,0,114,0,210,0,50,1,146,1,50,0,146,0,242,0,82,1,178,1,82,0,178,0,18,1,114,1,210,1,26,0,122,0,218,0,58,1,154,1,58,0,154,0,250,0,90,1,186,1,90,0,186,0,26,1,122,1,218,1,6,0,102,0,198,0,38,1,134,1,38,0,134,0,230,0,70,1,166,1,70,0,166,0,6,1,102,1,198,1,14,0,110,0,206,0,46,1,142,1,46,0,142,0,238,0,78,1,174,1,78,0,174,0,14,1,110,1,206,1,22,0,118,0,214,0,54,1,150,1,54,0,150,0,246,0,86,1,182,1,86,0,182,0,22,1,118,1,214,1,30,0,126,0,222,0,62,1,158,1,62,0,158,0,254,0,94,1,190,1,94,0,190,0,30,1,126,1,222,1,3,0,99,0,195,0,35,1,131,1,35,0,131,0,227,0,67,1,163,1,67,0,163,0,3,1,99,1,195,1,11,0,107,0,203,0,43,1,139,1,43,0,139,0,235,0,75,1,171,1,75,0,171,0,11,1,107,1,203,1,19,0,115,0,211,0,51,1,147,1,51,0,147,0,243,0,83,1,179,1,83,0,179,0,19,1,115,1,211,1,27,0,123,0,219,0,59,1,155,1,59,0,155,0,251,0,91,1,187,1,91,0,187,0,27,1,123,1,219,1,7,0,103,0,199,0,39,1,135,1,39,0,135,0,231],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240),allocate([71,1,167,1,71,0,167,0,7,1,103,1,199,1,15,0,111,0,207,0,47,1,143,1,47,0,143,0,239,0,79,1,175,1,79,0,175,0,15,1,111,1,207,1,23,0,119,0,215,0,55,1,151,1,55,0,151,0,247,0,87,1,183,1,87,0,183,0,23,1,119,1,215,1,31,0,127,0,223,0,63,1,159,1,63,0,159,0,255,0,95,1,191,1,95,0,191,0,31,1,127,1,223,1,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,0,0,206,64,0,0,200,64,0,0,184,64,0,0,170,64,0,0,162,64,0,0,154,64,0,0,144,64,0,0,140,64,0,0,156,64,0,0,150,64,0,0,146,64,0,0,142,64,0,0,156,64,0,0,148,64,0,0,138,64,0,0,144,64,0,0,140,64,0,0,148,64,0,0,152,64,0,0,142,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,0,0,72,127,65,129,66,128,65,128,64,128,62,128,64,128,64,128,92,78,92,79,92,78,90,79,116,41,115,40,114,40,132,26,132,26,145,17,161,12,176,10,177,11,24,179,48,138,54,135,54,132,53,134,56,133,55,132,55,132,61,114,70,96,74,88,75,88,87,74,89,66,91,67,100,59,108,50,120,40,122,37,97,43,78,50,83,78,84,81,88,75,86,74,87,71,90,73,93,74,93,74,109,40,114,36,117,34,117,34,143,17,145,18,146,19,162,12,165,10,178,7,189,6,190,8,177,9,23,178,54,115,63,102,66,98,69,99,74,89,71,91,73,91,78,89,86,80,92,66,93,64,102,59,103,60,104,60,117,52,123,44,138,35,133,31,97,38,77,45,61,90,93,60,105,42,107,41,110,45,116,38,113,38,112,38,124,26,132,27,136,19,140,20,155,14,159,16,158,18,170,13,177,10,187,8,192,6,175,9,159,10,21,178,59,110,71,86,75,85,84,83,91,66,88,73,87,72,92,75,98,72,105,58,107,54,115,52,114,55,112,56,129,51,132,40,150,33,140,29,98,35,77,42,42,121,96,66,108,43,111,40,117,44,123,32,120,36,119,33,127,33,134,34,139,21,147,23,152,20,158,25,154,26,166,21,173,16,184,13,184,10,150,13,139,15,22,178,63,114,74,82,84,83,92,82,103,62,96,72,96,67,101,73,107,72,113,55,118,52,125,52,118,52,117,55,135,49,137,39,157,32,145,29,97,33,77,40,0,0,102,63,0,0,76,63,0,0,38,63,0,0,0,63,0,134,107,63,0,20,46,63,0,112,189,62,0,208,76,62,2,1,0,0,0,0,0,0,0,8,13,16,19,21,23,24,26,27,28,29,30,31,32,32,33,34,34,35,36,36,37,37,15,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,0,15,8,7,4,11,12,3,2,13,10,5,6,9,14,1,0,9,6,3,4,5,8,1,2,7,0,0,0,0,0,0,184,126,154,121,0,0,0,0,154,121,102,102,0,0,0,0,184,126,51,115,0,0,0,0,48,117,0,0,112,23,0,0,32,209,255,255,32,209,255,255,6,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,255,1,255,2,254,2,254,3,253,0,1,0,1,255,2,255,2,254,3,254,3,253,7,254,7,0,0,0,0,0,2,255,255,255,0,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,255,2,1,0,1,1,0,0,255,255,0,0,0,0,0,0,1,255,0,1,255,0,255,1,254,2,254,254,2,253,2,3,253,252,3,252,4,4,251,5,250,251,6,249,6,5,8,247,0,0,1,0,0,0,0,0,0,0,255,1,0,0,1,255,0,1,255,255,1,255,2,1,255,2,254,254,2,254,2,2,3,253,0,1,0,0,0,0,0,0,1,0,1,0,0,1,255,1,0,0,2,1,255,2,255,255,2,255,2,2,255,3,254,254,254,3,0,1,0,0,1,0,1,255,2,255,2,255,2,3,254,3,254,254,4,4,253,5,253,252,6,252,6,5,251,8,250,251,249,9,251,8,255,6,255,6,252,10,250,10,254,6,255,6,251,10,247,12,253,7,254,7,249,13,16,24,34,0,0,0,0,0,6,0,3,0,7,3,0,1,10,0,2,6,18,10,12,0,4,0,2,0,0,0,9,4,7,4,0,3,12,7,7,0,42,175,213,201,207,255,64,0,17,0,99,255,97,1,16,254,163,0,39,43,189,86,217,255,6,0,91,0,86,255,186,0,23,0,128,252,192,24,216,77,237,255,220,255,102,0,167,255,232,255,72,1,73,252,8,10,37,62,0,0,0,0,0,0,135,199,61,201,64,0,128,0,134,255,36,0,54,1,0,253,72,2,51,36,69,69,12,0,128,0,18,0,114,255,32,1,139,255,159,252,27,16,123,56,104,2,13,200,246,255,39,0,58,0,210,255,172,255,120,0,184,0,197,254,227,253,4,5,4,21,64,35,0,0,0,0,230,62,198,196,243,255,0,0,20,0,26,0,5,0,225,255,213,255,252,255,65,0,90,0,7,0,99,255,8,255,212,255,81,2,47,6,52,10,199,12,228,87,5,197,3,0,242,255,236,255,241,255,2,0,25,0,37,0,25,0,240,255,185,255,149,255,177,255,50,0,36,1,111,2,214,3,8,5,184,5,148,107,103,196,17,0,12,0,8,0,1,0,246,255,234,255,226,255,224,255,234,255,3,0,44,0,100,0,168,0,243,0,61,1,125,1,173,1,199,1,19,245,149,230,89,18,243,41,31,6,84,32,0,0,0,0,189,0,168,253,105,2,103,119,117,0,97,255,210,251,8,116,52,0,221,0,168,246,116,110,252,255,17,2,234,242,229,102,208,255,246,2,140,240,165,93,176,255,137,3,117,239,6,83,157,255,204,3,130,239,102,71,149,255,199,3,139,240,39,59,153,255,128,3,97,242,174,46,165,255,5,3,207,244,94,34,185,255,99,2,161,247,152,22,210,255,169,1,161,250,180,11,0,64,0,0,108,34,0,0,66,15,0,0,18,6,0,0,77,2,0,0,219,0,0,0,237,0,0,0,153,0,0,0,73,0,0,0,30,0,0,0,12,0,0,0,7,0,0,0,0,64,0,0,147,93,0,0,189,112,0,0,237,121,0,0,178,125,0,0,36,127,0,0,0,32,254,31,246,31,234,31,216,31,194,31,168,31,136,31,98,31,58,31,10,31,216,30,160,30,98,30,34,30,220,29,144,29,66,29,238,28,150,28,58,28,216,27,114,27,10,27,156,26,42,26,180,25,58,25,188,24,60,24,182,23,46,23,160,22,16,22,126,21,232,20,78,20,176,19,16,19,110,18,200,17,30,17,116,16,198,15,22,15,100,14,174,13,248,12,64,12,132,11,200,10,10,10,74,9,138,8,198,7,2,7,62,6,120,5,178,4,234,3,34,3,90,2,146,1,202,0,0,0,54,255,110,254,166,253,222,252,22,252,78,251,136,250,194,249,254,248,58,248,118,247,182,246,246,245,56,245,124,244,192,243,8,243,82,242,156,241,234,240,58,240,140,239,226,238,56,238,146,237,240,236,80,236,178,235,24,235,130,234,240,233,96,233,210,232,74,232,196,231,68,231,198,230,76,230,214,229,100,229,246,228,142,228,40,228,198,227,106,227,18,227,190,226,112,226,36,226,222,225,158,225,96,225,40,225,246,224,198,224,158,224,120,224,88,224,62,224,40,224,22,224,10,224,2,224,0,224,0,0,0,0,0,0,179,99,0,0,0,0,0,0,71,56,43,30,21,12,6,0,199,165,144,124,109,96,84,71,61,51,42,32,23,15,8,0,241,225,211,199,187,175,164,153,142,132,123,114,105,96,88,80,72,64,57,50,44,38,33,29,24,20,16,12,9,5,2,0,248,86,0,0,0,87,0,0,16,87,0,0,0,0,0,0,15,131,138,138,155,155,173,173,69,93,115,118,131,138,141,138,150,150,155,150,155,160,166,160,131,128,134,141,141,141,145,145,145,150,155,155,155,155,160,160,160,160,166,166,173,173,182,192,182,192,192,192,205,192,205,224,64,87,0,0,72,87,0,0,88,87,0,0,0,0,0,0,4,6,24,7,5,0,0,2,0,0,12,28,41,13,252,247,15,42,25,14,1,254,62,41,247,246,37,65,252,3,250,4,66,7,248,16,14,38,253,33,13,22,39,23,12,255,36,64,27,250,249,10,55,43,17,1,1,8,1,1,6,245,74,53,247,244,55,76,244,8,253,3,93,27,252,26,39,59,3,248,2,0,77,11,9,248,22,44,250,7,40,9,26,3,9,249,20,101,249,4,3,248,42,26,0,241,33,68,2,23,254,55,46,254,15,3,255,21,16,41,250,27,61,39,5,245,42,88,4,1,254,60,65,6,252,255,251,73,56,1,247,19,94,29,247,0,12,99,6,4,8,237,102,46,243,3,2,13,3,2,9,235,84,72,238,245,46,104,234,8,18,38,48,23,0,240,70,83,235,11,5,245,117,22,248,250,23,117,244,3,3,248,95,28,4,246,15,77,60,241,255,4,124,2,252,3,38,84,24,231,2,13,42,13,31,21,252,56,46,255,255,35,79,243,19,249,65,88,247,242,20,4,81,49,227,20,0,75,3,239,5,247,44,92,248,1,253,22,69,31,250,95,41,244,5,39,67,16,252,1,0,250,120,55,220,243,44,122,4,232,81,5,11,3,7,2,0,9,10,88,136,87,0,0,176,87,0,0,0,88,0,0,0,0,0,0,46,2,90,87,93,91,82,98,109,120,118,12,113,115,117,119,99,59,87,111,63,111,112,80,126,124,125,124,129,121,126,23,132,127,127,127,126,127,122,133,130,134,101,118,119,145,126,86,124,120,123,119,170,173,107,109,176,88,0,0,184,88,0,0,200,88,0,0,0,0,0,0,8,16,32,0,0,0,0,0,12,35,60,83,108,132,157,180,206,228,15,32,55,77,101,125,151,175,201,225,19,42,66,89,114,137,162,184,209,230,12,25,50,72,97,120,147,172,200,223,26,44,69,90,114,135,159,180,205,225,13,22,53,80,106,130,156,180,205,228,15,25,44,64,90,115,142,168,196,222,19,24,62,82,100,120,145,168,190,214,22,31,50,79,103,120,151,170,203,227,21,29,45,65,106,124,150,171,196,224,30,49,75,97,121,142,165,186,209,229,19,25,52,70,93,116,143,166,192,219,26,34,62,75,97,118,145,167,194,217,25,33,56,70,91,113,143,165,196,223,21,34,51,72,97,117,145,171,196,222,20,29,50,67,90,117,144,168,197,221,22,31,48,66,95,117,146,168,196,222,24,33,51,77,116,134,158,180,200,224,21,28,70,87,106,124,149,170,194,217,26,33,53,64,83,117,152,173,204,225,27,34,65,95,108,129,155,174,210,225,20,26,72,99,113,131,154,176,200,219,34,43,61,78,93,114,155,177,205,229,23,29,54,97,124,138,163,179,209,229,30,38,56,89,118,129,158,178,200,231,21,29,49,63,85,111,142,163,193,222,27,48,77,103,133,158,179,196,215,232,29,47,74,99,124,151,176,198,220,237,33,42,61,76,93,121,155,174,207,225,29,53,87,112,136,154,170,188,208,227,24,30,52,84,131,150,166,186,203,229,37,48,64,84,104,118,156,177,201,230,212,178,148,129,108,96,85,82,79,77,61,59,57,56,51,49,48,45,42,41,40,38,36,34,31,30,21,12,10,3,1,0,255,245,244,236,233,225,217,203,190,176,175,161,149,136,125,114,102,91,81,71,60,52,43,35,28,20,19,18,12,11,5,0,179,138,140,148,151,149,153,151,163,116,67,82,59,92,72,100,89,92,0,0,0,0,0,0,16,0,0,0,0,99,66,36,36,34,36,34,34,34,34,83,69,36,52,34,116,102,70,68,68,176,102,68,68,34,65,85,68,84,36,116,141,152,139,170,132,187,184,216,137,132,249,168,185,139,104,102,100,68,68,178,218,185,185,170,244,216,187,187,170,244,187,187,219,138,103,155,184,185,137,116,183,155,152,136,132,217,184,184,170,164,217,171,155,139,244,169,184,185,170,164,216,223,218,138,214,143,188,218,168,244,141,136,155,170,168,138,220,219,139,164,219,202,216,137,168,186,246,185,139,116,185,219,185,138,100,100,134,100,102,34,68,68,100,68,168,203,221,218,168,167,154,136,104,70,164,246,171,137,139,137,155,218,219,139,255,254,253,238,14,3,2,1,0,255,254,252,218,35,3,2,1,0,255,254,250,208,59,4,2,1,0,255,254,246,194,71,10,2,1,0,255,252,236,183,82,8,2,1,0,255,252,235,180,90,17,2,1,0,255,248,224,171,97,30,4,1,0,255,254,236,173,95,37,7,1,0,255,255,255,131,6,145,255,255,255,255,255,236,93,15,96,255,255,255,255,255,194,83,25,71,221,255,255,255,255,162,73,34,66,162,255,255,255,210,126,73,43,57,173,255,255,255,201,125,71,48,58,130,255,255,255,166,110,73,57,62,104,210,255,255,251,123,65,55,68,100,171,255,250,0,3,0,6,0,3,0,3,0,3,0,4,0,3,0,3,0,3,0,205,1,0,0,32,0,10,0,20,46,100,1,0,89,0,0,64,90,0,0,128,90,0,0,152,90,0,0,56,91,0,0,128,91,0,0,200,91,0,0,0,0,0,0,7,23,38,54,69,85,100,116,131,147,162,178,193,208,223,239,13,25,41,55,69,83,98,112,127,142,157,171,187,203,220,236,15,21,34,51,61,78,92,106,126,136,152,167,185,205,225,240,10,21,36,50,63,79,95,110,126,141,157,173,189,205,221,237,17,20,37,51,59,78,89,107,123,134,150,164,184,205,224,240,10,15,32,51,67,81,96,112,129,142,158,173,189,204,220,236,8,21,37,51,65,79,98,113,126,138,155,168,179,192,209,218,12,15,34,55,63,78,87,108,118,131,148,167,185,203,219,236,16,19,32,36,56,79,91,108,118,136,154,171,186,204,220,237,11,28,43,58,74,89,105,120,135,150,165,180,196,211,226,241,6,16,33,46,60,75,92,107,123,137,156,169,185,199,214,225,11,19,30,44,57,74,89,105,121,135,152,169,186,202,218,234,12,19,29,46,57,71,88,100,120,132,148,165,182,199,216,233,17,23,35,46,56,77,92,106,123,134,152,167,185,204,222,237,14,17,45,53,63,75,89,107,115,132,151,171,188,206,221,240,9,16,29,40,56,71,88,103,119,137,154,171,189,205,222,237,16,19,36,48,57,76,87,105,118,132,150,167,185,202,218,236,12,17,29,54,71,81,94,104,126,136,149,164,182,201,221,237,15,28,47,62,79,97,115,129,142,155,168,180,194,208,223,238,8,14,30,45,62,78,94,111,127,143,159,175,192,207,223,239,17,30,49,62,79,92,107,119,132,145,160,174,190,204,220,235,14,19,36,45,61,76,91,108,121,138,154,172,189,205,222,238,12,18,31,45,60,76,91,107,123,138,154,171,187,204,221,236,13,17,31,43,53,70,83,103,114,131,149,167,185,203,220,237,17,22,35,42,58,78,93,110,125,139,155,170,188,206,224,240,8,15,34,50,67,83,99,115,131,146,162,178,193,209,224,239,13,16,41,66,73,86,95,111,128,137,150,163,183,206,225,241,17,25,37,52,63,75,92,102,119,132,144,160,175,191,212,231,19,31,49,65,83,100,117,133,147,161,174,187,200,213,227,242,18,31,52,68,88,103,117,126,138,149,163,177,192,207,223,239,16,29,47,61,76,90,106,119,133,147,161,176,193,209,224,240,15,21,35,50,61,73,86,97,110,119,129,141,175,198,218,237,225,204,201,184,183,175,158,154,153,135,119,115,113,110,109,99,98,95,79,68,52,50,48,45,43,32,31,27,18,10,3,0,255,251,235,230,212,201,196,182,167,166,163,151,138,124,110,104,90,78,76,70,69,57,45,34,24,21,11,6,5,4,3,0,175,148,160,176,178,173,174,164,177,174,196,182,198,192,182,68,62,66,60,72,117,85,90,118,136,151,142,160,142,155,0,0,0,0,0,0,0,0,0,1,100,102,102,68,68,36,34,96,164,107,158,185,180,185,139,102,64,66,36,34,34,0,1,32,208,139,141,191,152,185,155,104,96,171,104,166,102,102,102,132,1,0,0,0,0,16,16,0,80,109,78,107,185,139,103,101,208,212,141,139,173,153,123,103,36,0,0,0,0,0,0,1,48,0,0,0,0,0,0,32,68,135,123,119,119,103,69,98,68,103,120,118,118,102,71,98,134,136,157,184,182,153,139,134,208,168,248,75,189,143,121,107,32,49,34,34,34,0,17,2,210,235,139,123,185,137,105,134,98,135,104,182,100,183,171,134,100,70,68,70,66,66,34,131,64,166,102,68,36,2,1,0,134,166,102,68,34,34,66,132,212,246,158,139,107,107,87,102,100,219,125,122,137,118,103,132,114,135,137,105,171,106,50,34,164,214,141,143,185,151,121,103,192,34,0,0,0,0,0,1,208,109,74,187,134,249,159,137,102,110,154,118,87,101,119,101,0,2,0,36,36,66,68,35,96,164,102,100,36,0,2,33,167,138,174,102,100,84,2,2,100,107,120,119,36,197,24,0,255,254,253,244,12,3,2,1,0,255,254,252,224,38,3,2,1,0,255,254,251,209,57,4,2,1,0,255,254,244,195,69,4,2,1,0,255,251,232,184,84,7,2,1,0,255,254,240,186,86,14,2,1,0,255,254,239,178,91,30,5,1,0,255,248,227,177,100,19,2,1,0,255,255,255,156,4,154,255,255,255,255,255,227,102,15,92,255,255,255,255,255,213,83,24,72,236,255,255,255,255,150,76,33,63,214,255,255,255,190,121,77,43,55,185,255,255,255,245,137,71,43,59,139,255,255,255,255,131,66,50,66,107,194,255,255,166,116,76,55,53,125,255,255,100,0,3,0,40,0,3,0,3,0,3,0,5,0,14,0,14,0,10,0,11,0,3,0,8,0,9,0,7,0,3,0,91,1,0,0,0,0,0,0,32,0,16,0,102,38,171,1,8,92,0,0,8,94,0,0,72,94,0,0,104,94,0,0,104,95,0,0,176,95,0,0,248,95,0,0,0,0,0,0,224,112,44,15,3,2,1,0,254,237,192,132,70,23,4,0,255,252,226,155,61,11,2,0,250,245,234,203,71,50,42,38,35,33,31,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,64,31,0,0,184,36,0,0,236,44,0,0,188,52,0,0,92,68,0,0,168,97,0,0,128,56,1,0,0,0,0,0,40,35,0,0,224,46,0,0,164,56,0,0,68,72,0,0,180,95,0,0,172,138,0,0,128,56,1,0,0,0,0,0,4,41,0,0,176,54,0,0,104,66,0,0,252,83,0,0,84,111,0,0,16,164,0,0,128,56,1,0,18,0,29,0,38,0,40,0,46,0,52,0,62,0,84,0,92,202,190,216,182,223,154,226,156,230,120,236,122,244,204,252,52,3,134,11,136,19,100,25,102,29,74,32,66,39,164,53,249,247,246,245,244,234,210,202,201,200,197,174,82,59,56,55,54,46,22,12,11,10,9,7,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,203,150,0,0,0,0,0,0,215,195,166,125,110,82,0,0,72,97,0,0,80,97,0,0,120,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,232,158,10,0,0,0,0,0,230,0,0,0,0,0,0,0,243,221,192,181,0,0,0,0,100,0,240,0,32,0,100,0,205,60,0,48,0,32,0,0,171,85,0,0,0,0,0,0,192,128,64,0,0,0,0,0,205,154,102,51,0,0,0,0,213,171,128,85,43,0,0,0,224,192,160,128,96,64,32,0,100,40,16,7,3,1,0,0,10,103,242,14,86,205,228,29,10,103,242,14,117,82,130,12,89,154,4,25,117,82,130,12,70,17,49,10,237,3,98,20,70,17,49,10,218,2,215,7,249,198,173,15,218,2,215,7,34,182,82,5,218,250,164,10,34,182,82,5,0,0,0,0,70,243,46,30,43,227,75,14,31,102,128,24,28,44,29,10,218,97,72,18,237,156,244,6,236,48,19,11,227,144,165,4,237,164,29,2,10,223,107,3,253,250,244,233,212,182,150,131,120,110,98,85,72,60,49,40,32,25,19,15,13,11,9,8,7,6,5,4,3,2,1,0,210,208,206,203,199,193,183,168,142,104,74,52,37,27,20,14,10,6,4,2,0,0,0,0,223,201,183,167,152,138,124,111,98,88,79,70,62,56,50,44,39,35,31,27,24,21,18,16,14,12,10,8,6,4,3,2,1,0,0,0,0,0,0,0,188,176,155,138,119,97,67,43,26,10,0,0,0,0,0,0,165,119,80,61,47,35,27,20,14,9,4,0,0,0,0,0,113,63,0,0,0,0,0,0,125,51,26,18,15,12,11,10,9,8,7,6,5,4,3,2,1,0,198,105,45,22,15,12,11,10,9,8,7,6,5,4,3,2,1,0,213,162,116,83,59,43,32,24,18,15,12,9,7,6,5,3,2,0,239,187,116,59,28,16,11,10,9,8,7,6,5,4,3,2,1,0,250,229,188,135,86,51,30,19,13,10,8,6,5,4,3,2,1,0,249,235,213,185,156,128,103,83,66,53,42,33,26,21,17,13,10,0,254,249,235,206,164,118,77,46,27,16,10,7,5,4,3,2,1,0,255,253,249,239,220,191,156,119,85,57,37,23,15,10,6,4,2,0,255,253,251,246,237,223,203,179,152,124,98,75,55,40,29,21,15,0,255,254,253,247,220,162,106,67,42,28,18,12,9,6,4,3,2,0,0,0,0,0,31,57,107,160,205,205,255,255,255,255,255,255,255,255,255,255,255,255,69,47,67,111,166,205,255,255,255,255,255,255,255,255,255,255,255,255,82,74,79,95,109,128,145,160,173,205,205,205,224,255,255,224,255,224,125,74,59,69,97,141,182,255,255,255,255,255,255,255,255,255,255,255,173,115,85,73,76,92,115,145,173,205,224,224,255,255,255,255,255,255,166,134,113,102,101,102,107,118,125,138,145,155,166,182,192,192,205,150,224,182,134,101,83,79,85,97,120,145,173,205,224,255,255,255,255,255,255,224,192,150,120,101,92,89,93,102,118,134,160,182,192,224,224,224,255,224,224,182,155,134,118,109,104,102,106,111,118,131,145,160,173,131,0,0,0,0,0,0,241,190,178,132,87,74,41,14,0,223,193,157,140,106,57,39,18,0,0,0,0,0,0,0,131,74,141,79,80,138,95,104,134,95,99,91,125,93,76,123,115,123,0,0,0,0,0,0,128,0,214,42,0,235,128,21,0,244,184,72,11,0,248,214,128,42,7,0,248,225,170,80,25,5,0,251,236,198,126,54,18,3,0,250,238,211,159,82,35,15,5,0,250,231,203,168,128,88,53,25,6,0,252,238,216,185,148,108,71,40,18,4,0,253,243,225,199,166,128,90,57,31,13,3,0,254,246,233,212,183,147,109,73,44,23,10,2,0,255,250,240,223,198,166,128,90,58,33,16,6,1,0,255,251,244,231,210,181,146,110,75,46,25,12,5,1,0,255,253,248,238,221,196,164,128,92,60,35,18,8,3,1,0,255,253,249,242,229,208,180,146,110,76,48,27,14,7,3,1,0,129,0,207,50,0,236,129,20,0,245,185,72,10,0,249,213,129,42,6,0,250,226,169,87,27,4,0,251,233,194,130,62,20,4,0,250,236,207,160,99,47,17,3,0,255,240,217,182,131,81,41,11,1,0,255,254,233,201,159,107,61,20,2,1,0,255,249,233,206,170,128,86,50,23,7,1,0,255,250,238,217,186,148,108,70,39,18,6,1,0,255,252,243,226,200,166,128,90,56,30,13,4,1,0,255,252,245,231,209,180,146,110,76,47,25,11,4,1,0,255,253,248,237,219,194,163,128,93,62,37,19,8,3,1,0,255,254,250,241,226,205,177,145,111,79,51,30,15,6,2,1,0,129,0,203,54,0,234,129,23,0,245,184,73,10,0,250,215,129,41,5,0,252,232,173,86,24,3,0,253,240,200,129,56,15,2,0,253,244,217,164,94,38,10,1,0,253,245,226,189,132,71,27,7,1,0,253,246,231,203,159,105,56,23,6,1,0,255,248,235,213,179,133,85,47,19,5,1,0,255,254,243,221,194,159,117,70,37,12,2,1,0,255,254,248,234,208,171,128,85,48,22,8,2,1,0,255,254,250,240,220,189,149,107,67,36,16,6,2,1,0,255,254,251,243,227,201,166,128,90,55,29,13,5,2,1,0,255,254,252,246,234,213,183,147,109,73,43,22,10,4,2,1,0,130,0,200,58,0,231,130,26,0,244,184,76,12,0,249,214,130,43,6,0,252,232,173,87,24,3,0,253,241,203,131,56,14,2,0,254,246,221,167,94,35,8,1,0,254,249,232,193,130,65,23,5,1,0,255,251,239,211,162,99,45,15,4,1,0,255,251,243,223,186,131,74,33,11,3,1,0,255,252,245,230,202,158,105,57,24,8,2,1,0,255,253,247,235,214,179,132,84,44,19,7,2,1,0,255,254,250,240,223,196,159,112,69,36,15,6,2,1,0,255,254,253,245,231,209,176,136,93,55,27,11,3,2,1,0,255,254,253,252,239,221,194,158,117,76,42,18,4,3,2,1,0,0,0,2,5,9,14,20,27,35,44,54,65,77,90,104,119,135,0,0,0,0,0,0,0,254,49,67,77,82,93,99,198,11,18,24,31,36,45,255,46,66,78,87,94,104,208,14,21,32,42,51,66,255,94,104,109,112,115,118,248,53,69,80,88,95,102,0,0,0,0,0,0,230,90,52,56,119,78,51,57,211,217,201,57,146,145,51,58,204,96,140,58,97,251,201,58,153,126,9,59,203,128,51,59,213,37,99,59,119,46,140,59,168,138,169,59,69,184,201,59,135,166,236,59,232,46,9,60,174,102,29,60,247,2,51,60,147,255,73,60,79,88,98,60,94,17,124,60,46,145,139,60,189,199,153,60,92,172,168,60,243,60,184,60,129,121,200,60,238,95,217,60,57,240,234,60,99,42,253,60,53,7,8,61,16,204,17,61,205,228,27,61,97,80,38,61,203,14,49,61,0,31,60,61,254,128,71,61,198,52,83,61,63,56,95,61,105,139,107,61,69,46,120,61,105,144,130,61,123,48,137,61,224,247,143,61,138,229,150,61,123,249,157,61,177,51,165,61,33,147,172,61,80,24,180,61,51,194,187,61,79,145,195,61,18,132,203,61,2,155,211,61,31,214,219,61,215,51,228,61,175,180,236,61,33,88,245,61,168,29,254,61,161,130,3,62,242,6,8,62,199,155,12,62,221,64,17,62,52,246,21,62,69,187,26,62,17,144,31,62,84,116,36,62,203,103,41,62,51,106,46,62,141,123,51,62,82,155,56,62,197,201,61,62,28,6,67,62,89,80,72,62,122,168,77,62,183,13,83,62,82,128,88,62,8,0,94,62,84,140,99,62,242,36,105,62,37,202,110,62,36,123,116,62,172,55,122,62,0,0,128,62,171,233,130,62,249,216,133,62,133,205,136,62,80,199,139,62,55,198,142,62,247,201,145,62,179,210,148,62,38,224,151,62,15,242,154,62,108,8,158,62,28,35,161,62,255,65,164,62,208,100,167,62,177,139,170,62,28,182,173,62,84,228,176,62,211,21,180,62,186,74,183,62,232,130,186,62,249,189,189,62,13,252,192,62,226,60,196,62,86,128,199,62,71,198,202,62,149,14,206,62,251,88,209,62,122,165,212,62,241,243,215,62,28,68,219,62,217,149,222,62,8,233,225,62,167,61,229,62,83,147,232,62,12,234,235,62,175,65,239,62,28,154,242,62,14,243,245,62,136,76,249,62,34,166,252,62,0,0,0,63,239,172,1,63,188,89,3,63,121,6,5,63,242,178,6,63,41,95,8,63,250,10,10,63,86,182,11,63,44,97,13,63,124,11,15,63,19,181,16,63,242,93,18,63,8,6,20,63,67,173,21,63,130,83,23,63,182,248,24,63,220,156,26,63,213,63,28,63,143,225,29,63,249,129,31,63,4,33,33,63,140,190,34,63,163,90,36,63,23,245,37,63,214,141,39,63,242,36,41,63,40,186,42,63,152,77,44,63,1,223,45,63,114,110,47,63,202,251,48,63,249,134,50,63,237,15,52,63,167,150,53,63,4,27,55,63,229,156,56,63,88,28,58,63,61,153,59,63,131,19,61,63,42,139,62,63,0,0,64,63,21,114,65,63,55,225,66,63,119,77,68,63,195,182,69,63,235,28,71,63,254,127,72,63,236,223,73,63,146,60,75,63,225,149,76,63,234,235,77,63,121,62,79,63,143,141,80,63,43,217,81,63,29,33,83,63,115,101,84,63,13,166,85,63,235,226,86,63,252,27,88,63,47,81,89,63,115,130,90,63,201,175,91,63,14,217,92,63,67,254,93,63,88,31,95,63,75,60,96,63,252,84,97,63,106,105,98,63,133,121,99,63,60,133,100,63,160,140,101,63,126,143,102,63,214,141,103,63,186,135,104,63,246,124,105,63,156,109,106,63,138,89,107,63,209,64,108,63,79,35,109,63,4,1,110,63,241,217,110,63,243,173,111,63,28,125,112,63,73,71,113,63,124,12,114,63,180,204,114,63,240,135,115,63,16,62,116,63,19,239,116,63,250,154,117,63,179,65,118,63,63,227,118,63,141,127,119,63,173,22,120,63,126,168,120,63,1,53,121,63,52,188,121,63,24,62,122,63,157,186,122,63,194,49,123,63,119,163,123,63,187,15,124,63,159,118,124,63,2,216,124,63,244,51,125,63,101,138,125,63,68,219,125,63,179,38,126,63,143,108,126,63,235,172,126,63,163,231,126,63,218,28,127,63,127,76,127,63,129,118,127,63,2,155,127,63,208,185,127,63,28,211,127,63,197,230,127,63,203,244,127,63,47,253,127,63,0,0,128,63,2,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,28,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,68,0,0,0,80,0,0,0,96,0,0,0,120,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,28,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,68,0,0,0,80,0,0,0,96,0,0,0,120,0,0,0,160,0,0,0,200,0,0,0,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,0,0,128,62,208,37,180,62,151,57,173,62,9,165,159,62,250,237,139,62,205,172,101,62,248,169,42,62,52,48,210,61,90,241,13,61,90,241,13,189,52,48,210,189,248,169,42,190,205,172,101,190,250,237,139,190,9,165,159,190,151,57,173,190,208,37,180,190,135,138,177,62,27,131,150,62,96,35,73,62,196,66,141,61,196,66,141,189,96,35,73,190,27,131,150,190,135,138,177,190,135,138,177,190,27,131,150,190,96,35,73,190,196,66,141,189,196,66,141,61,96,35,73,62,27,131,150,62,135,138,177,62,151,57,173,62,205,172,101,62,90,241,13,61,248,169,42,190,9,165,159,190,208,37,180,190,250,237,139,190,52,48,210,189,52,48,210,61,250,237,139,62,208,37,180,62,9,165,159,62,248,169,42,62,90,241,13,189,205,172,101,190,151,57,173,190,125,61,167,62,210,139,10,62,210,139,10,190,125,61,167,190,125,61,167,190,210,139,10,190,210,139,10,62,125,61,167,62,125,61,167,62,210,139,10,62,210,139,10,190,125,61,167,190,125,61,167,190,210,139,10,190,210,139,10,62,125,61,167,62,9,165,159,62,90,241,13,61,250,237,139,190,151,57,173,190,52,48,210,189,205,172,101,62,208,37,180,62,248,169,42,62,248,169,42,190,208,37,180,190,205,172,101,190,52,48,210,61,151,57,173,62,250,237,139,62,90,241,13,189,9,165,159,190,27,131,150,62,196,66,141,189,135,138,177,190,96,35,73,190,96,35,73,62,135,138,177,62,196,66,141,61,27,131,150,190,27,131,150,190,196,66,141,61,135,138,177,62,96,35,73,62,96,35,73,190,135,138,177,190,196,66,141,189,27,131,150,62,250,237,139,62,248,169,42,190,151,57,173,190,90,241,13,61,208,37,180,62,52,48,210,61,9,165,159,190,205,172,101,190,205,172,101,62,9,165,159,62,52,48,210,189,208,37,180,190,90,241,13,189,151,57,173,62,248,169,42,62,250,237,139,190,0,0,0,0,5,193,35,61,233,125,163,61,37,150,244,61,226,116,34,62,172,28,74,62,221,37,113,62,52,186,139,62,180,119,158,62,228,191,176,62,173,136,194,62,37,201,211,62,24,122,228,62,24,149,244,62,200,10,2,63,28,124,9,63,73,157,16,63,202,109,23,63,192,237,29,63,159,29,36,63,84,254,41,63,46,145,47,63,224,215,52,63,99,212,57,63,240,136,62,63,211,247,66,63,171,35,71,63,23,15,75,63,216,188,78,63,173,47,82,63,106,106,85,63,206,111,88,63,154,66,91,63,142,229,93,63,75,91,96,63,110,166,98,63,100,201,100,63,155,198,102,63,111,160,104,63,247,88,106,63,128,242,107,63,223,110,109,63,11,208,110,63,202,23,112,63,224,71,113,63,225,97,114,63,77,103,115,63,150,89,116,63,12,58,117,63,255,9,118,63,138,202,118,63,187,124,119,63,192,33,120,63,98,186,120,63,157,71,121,63,75,202,121,63,36,67,122,63,242,178,122,63,59,26,123,63,200,121,123,63,32,210,123,63,200,35,124,63,55,111,124,63,242,180,124,63,94,245,124,63,224,48,125,63,236,103,125,63,183,154,125,63,180,201,125,63,6,245,125,63,17,29,126,63,24,66,126,63,78,100,126,63,211,131,126,63,253,160,126,63,237,187,126,63,195,212,126,63,179,235,126,63,239,0,127,63,135,20,127,63,141,38,127,63,67,55,127,63,170,70,127,63,227,84,127,63,15,98,127,63,47,110,127,63,100,121,127,63,190,131,127,63,63,141,127,63,24,150,127,63,56,158,127,63,194,165,127,63,163,172,127,63,16,179,127,63,245,184,127,63,119,190,127,63,114,195,127,63,25,200,127,63,108,204,127,63,91,208,127,63,6,212,127,63,111,215,127,63,131,218,127,63,102,221,127,63,21,224,127,63,130,226,127,63,205,228,127,63,230,230,127,63,205,232,127,63,146,234,127,63,70,236,127,63,200,237,127,63,40,239,127,63,120,240,127,63,166,241,127,63,195,242,127,63,191,243,127,63,186,244,127,63,148,245,127,63,94,246,127,63,39,247,127,63,207,247,127,63,119,248,127,63,253,248,127,63,148,249,127,63,9,250,127,63,127,250,127,63,244,250,127,63,89,251,127,63,173,251,127,63,1,252,127,63,84,252,127,63,152,252,127,63,219,252,127,63,30,253,127,63,80,253,127,63,130,253,127,63,181,253,127,63,231,253,127,63,9,254,127,63,59,254,127,63,93,254,127,63,126,254,127,63,143,254,127,63,176,254,127,63,210,254,127,63,227,254,127,63,244,254,127,63,21,255,127,63,38,255,127,63,55,255,127,63,71,255,127,63,88,255,127,63,88,255,127,63,105,255,127,63,122,255,127,63,122,255,127,63,139,255,127,63,155,255,127,63,155,255,127,63,155,255,127,63,172,255,127,63,172,255,127,63,189,255,127,63,189,255,127,63,189,255,127,63,206,255,127,63,206,255,127,63,206,255,127,63,206,255,127,63,206,255,127,63,222,255,127,63,222,255,127,63,222,255,127,63,222,255,127,63,222,255,127,63,222,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,239,255,127,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,14,190,192,189,172,31,155,190,149,130,26,191,150,149,70,190,84,114,62,190,146,3,26,191,6,152,62,189,2,160,234,189,182,43,212,189,185,114,30,191,106,190,162,190,28,7,46,190,107,243,143,189,90,158,23,62,33,173,209,62,10,102,12,63,125,60,188,62,20,33,253,190,143,169,67,63,8,119,235,191,10,243,46,62,117,147,76,65,80,83,139,191,108,236,162,191,181,21,130,193,28,107,193,65,162,98,178,192,255,231,48,190,47,79,39,190,158,206,101,190,255,87,194,189,155,60,149,189,203,248,135,190,44,97,205,189,203,33,83,189,64,166,21,190,238,35,247,189,160,253,56,190,219,167,3,62,233,95,226,62,213,202,252,190,29,203,43,62,231,168,83,62,1,79,74,190,247,3,214,62,71,119,192,63,173,249,69,191,64,164,32,193,43,194,205,62,192,178,62,64,201,118,115,65,100,204,241,191,39,165,152,191,23,204,233,60,134,193,132,187,201,232,144,61,84,72,7,60,154,231,189,189,103,71,42,188,59,137,140,187,159,122,160,187,88,90,145,189,85,196,39,187,169,11,34,61,177,219,103,62,241,54,5,61,52,17,38,62,170,10,205,189,86,185,248,62,108,4,2,62,86,102,146,62,228,254,126,60,106,251,215,61,159,142,67,64,136,70,147,63,57,40,129,191,71,90,234,191,139,84,84,64,210,53,91,192,13,253,243,189,232,39,38,189,25,31,226,59,241,90,147,60,171,170,28,189,237,238,195,59,5,106,150,188,246,141,249,58,37,201,19,190,106,115,50,189,210,214,129,58,161,100,98,62,158,210,17,62,128,215,247,62,221,12,207,62,124,15,3,63,250,242,114,190,55,139,119,62,47,110,179,62,183,13,51,191,136,99,38,65,18,165,41,64,83,208,27,192,53,7,134,192,125,150,135,63,60,247,218,63,12,212,218,59,186,186,147,189,191,192,34,189,69,144,20,61,38,112,235,189,208,37,193,188,210,156,6,60,124,58,104,188,114,11,7,189,31,26,17,189,171,204,53,59,154,208,148,190,218,230,146,191,140,104,163,190,89,193,47,191,163,233,188,62,64,50,245,62,253,245,58,62,163,119,210,190,8,144,97,63,39,107,147,192,33,31,188,63,224,243,171,62,161,214,232,191,245,91,241,193,8,172,177,64,252,177,255,58,106,21,253,189,37,245,148,189,41,102,131,189,252,233,90,189,35,134,221,189,20,249,191,189,43,237,142,189,75,171,225,188,167,236,68,190,122,110,225,189,172,28,146,62,105,170,207,190,7,203,189,61,35,101,147,190,201,231,89,191,252,194,203,189,212,95,111,190,111,129,164,191,13,108,145,63,155,201,71,64,187,39,143,189,66,91,238,191,113,201,41,64,120,238,233,192,26,168,28,64,135,138,146,186,54,152,129,189,127,33,26,189,138,114,25,190,229,100,18,62,247,202,60,62,113,202,252,61,117,220,154,61,70,65,240,61,200,40,191,61,71,193,141,61,22,144,172,61,175,81,144,61,27,166,113,61,173,246,192,61,61,209,229,190,92,47,215,60,148,107,138,62,106,78,134,190,98,186,48,62,49,37,0,64,133,9,35,190,99,96,29,61,26,81,35,65,182,248,132,64,7,206,21,192,120,99,97,189,79,18,30,60,98,186,16,190,8,223,224,60,187,222,12,61,136,166,71,189,97,152,194,61,35,245,253,187,158,146,24,189,185,155,179,187,187,236,135,189,45,182,196,61,230,206,76,190,12,24,41,189,251,87,22,63,48,68,83,61,142,172,172,62,218,226,90,63,93,26,43,63,202,82,235,189,178,75,104,192,37,89,239,190,177,164,92,190,57,98,39,64,145,238,207,62,180,142,174,191,203,61,46,61,20,5,250,61,210,98,191,61,67,4,252,61,160,165,11,61,155,226,17,190,245,130,15,61,15,250,72,189,55,41,150,61,113,52,108,61,83,235,253,61,185,215,83,189,147,139,129,190,69,47,23,63,113,89,21,62,238,95,161,62,207,217,98,62,177,168,24,190,79,89,93,62,127,251,178,190,253,135,196,65,161,131,126,191,11,66,29,63,242,82,150,193,27,76,53,192,69,128,55,191,84,196,177,190,253,130,245,62,128,238,123,190,215,96,155,61,137,150,12,62,211,19,54,190,185,51,243,61,46,253,141,186,175,7,115,190,129,34,182,62,33,7,5,190,218,78,96,189,101,28,163,190,21,171,166,190,107,211,56,62,171,31,128,189,183,155,16,62,40,41,176,62,24,207,192,62,95,126,23,191,102,247,186,64,170,241,194,190,46,56,99,62,239,172,181,191,48,108,229,201,122,170,171,63,218,31,232,60,27,113,55,189,162,59,173,188,127,121,210,188,9,192,100,60,236,86,170,60,101,102,48,188,198,207,53,60,202,13,112,61,62,180,207,188,178,134,6,189,121,35,243,61,78,38,94,190,247,62,21,62,230,93,245,61,106,111,187,189,198,21,247,189,41,83,161,189,106,23,19,190,134,89,24,191,188,116,147,191,198,109,160,191,181,224,149,191,42,227,138,64,64,26,110,201,249,102,175,191,204,76,36,189,13,168,87,62,141,239,11,190,159,57,11,62,64,87,86,189,28,28,54,61,199,207,107,60,239,56,135,59,170,27,158,188,226,177,95,62,162,178,225,189,236,163,1,192,165,17,107,63,28,8,29,192,134,3,153,63,184,86,123,189,48,18,246,191,186,192,157,62,172,202,254,62,42,144,105,63,102,75,86,62,147,24,22,192,95,94,12,64,39,20,207,192,144,78,217,63,169,161,57,191,112,218,66,60,77,206,26,61,109,235,98,61,109,130,185,60,243,67,144,189,93,3,246,188,182,124,73,60,72,233,136,187,62,158,140,189,125,64,0,61,219,50,32,61,194,108,186,62,242,165,193,189,126,80,188,60,194,81,50,190,228,218,168,62,44,239,234,61,112,182,153,62,62,33,219,61,18,136,7,62,8,148,185,64,125,118,104,63,80,195,103,191,88,202,86,192,248,56,67,62,207,161,60,62,50,116,44,191,208,94,109,62,213,29,112,189,65,74,108,62,216,101,224,190,240,193,123,62,23,72,48,190,182,123,179,61,121,115,56,191,85,106,38,62,85,187,139,60,143,114,208,61,117,230,198,62,213,38,170,63,2,241,138,63,108,177,111,191,51,167,23,192,66,9,215,192,144,102,92,192,241,215,8,64,116,181,99,65,82,68,157,64,20,203,69,192,16,18,27,193,252,170,68,191,164,228,229,63,75,35,97,61,17,82,39,62,16,59,163,61,253,223,12,61,211,175,99,189,237,178,165,187,217,102,153,60,110,201,5,61,34,162,189,60,175,119,31,62,154,15,67,61,75,120,130,190,151,255,204,63,210,28,77,191,119,132,35,64,65,213,60,63,19,102,174,191,221,9,50,191,71,90,28,192,62,174,221,191,131,250,124,64,205,1,242,63,101,224,248,62,75,89,53,193,128,147,112,74,249,75,195,190,126,29,248,61,94,44,104,191,249,20,60,64,51,196,209,63,231,255,97,63,2,213,95,63,45,207,155,63,46,226,95,191,166,182,164,62,93,249,72,63,160,81,114,63,134,55,19,191,62,203,93,192,34,137,98,63,173,62,189,61,144,131,30,193,116,93,200,62,10,242,35,62,170,43,3,192,240,167,132,64,210,22,140,61,58,60,20,190,123,16,146,190,69,44,194,62,116,70,148,191,167,29,227,188,154,153,29,193,16,93,154,192,51,167,109,64,139,224,119,64,26,163,97,64,248,42,0,0,232,3,0,0,176,54,0,0,232,3,0,0,8,82,0,0,208,7,0,0,96,109,0,0,208,7,0,0,224,46,0,0,232,3,0,0,80,70,0,0,208,7,0,0,8,82,0,0,208,7,0,0,48,117,0,0,208,7,0,0,248,42,0,0,232,3,0,0,176,54,0,0,232,3,0,0,104,66,0,0,232,3,0,0,8,82,0,0,208,7,0,0,224,46,0,0,232,3,0,0,152,58,0,0,232,3,0,0,80,70,0,0,208,7,0,0,240,85,0,0,208,7],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0),Module._bitshift64Ashr=_bitshift64Ashr,Module._bitshift64Lshr=_bitshift64Lshr;var _fabsf=Math_abs,___errno_state=0;function ___setErrNo(e){return HEAP32[___errno_state>>2]=e,e}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(e){switch(e){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return ___setErrNo(ERRNO_CODES.EINVAL),-1}var ctlz_i8=allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_STATIC);function _llvm_stackrestore(e){var i=_llvm_stacksave,r=i.LLVM_SAVEDSTACKS[e];i.LLVM_SAVEDSTACKS.splice(e,1),Runtime.stackRestore(r)}Module._llvm_ctlz_i32=_llvm_ctlz_i32,Module._memset=_memset;var _floorf=Math_floor;function _abort(){Module.abort()}var _sqrtf=Math_sqrt,_log=Math_log,_cos=Math_cos;function _sbrk(e){var i=_sbrk;i.called||(DYNAMICTOP=alignMemoryPage(DYNAMICTOP),i.called=!0,assert(Runtime.dynamicAlloc),i.alloc=Runtime.dynamicAlloc,Runtime.dynamicAlloc=function(){abort("cannot dynamically allocate, sbrk now has control")});var r=DYNAMICTOP;return 0!=e&&i.alloc(e),r}Module._i64Add=_i64Add;var _floor=Math_floor;function _exp2(e){return Math.pow(2,e)}function _rint(e){return.5!==Math.abs(e%1)?Math.round(e):e+e%2+(e<0?1:-1)}function _lrintf(){return _rint.apply(null,arguments)}function ___errno_location(){return ___errno_state}var _sqrt=Math_sqrt;function _emscripten_memcpy_big(e,i,r){return HEAPU8.set(HEAPU8.subarray(i,i+r),e),e}Module._memcpy=_memcpy;var _atan2=Math_atan2;function _llvm_stacksave(){var e=_llvm_stacksave;return e.LLVM_SAVEDSTACKS||(e.LLVM_SAVEDSTACKS=[]),e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),e.LLVM_SAVEDSTACKS.length-1}function _time(e){var i=Date.now()/1e3|0;return e&&(HEAP32[e>>2]=i),i}var _exp=Math_exp,_llvm_pow_f64=Math_pow;function _log10(e){return Math.log(e)/Math.LN10}Module._memmove=_memmove,___errno_state=Runtime.staticAlloc(4),HEAP32[___errno_state>>2]=0,STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX),assert(DYNAMIC_BASE>0]=t[e>>0];t[d+1>>0]=t[e+1>>0];t[d+2>>0]=t[e+2>>0];t[d+3>>0]=t[e+3>>0]}function Ie(e){e=e|0;t[d>>0]=t[e>>0];t[d+1>>0]=t[e+1>>0];t[d+2>>0]=t[e+2>>0];t[d+3>>0]=t[e+3>>0];t[d+4>>0]=t[e+4>>0];t[d+5>>0]=t[e+5>>0];t[d+6>>0]=t[e+6>>0];t[d+7>>0]=t[e+7>>0]}function Ue(e){e=e|0;C=e}function Fe(){return C|0}function Ge(e,i){e=+e;i=i|0;var r=0,t=0,n=0;r=h;t=0;while(1){if((t|0)>=21)break;if(+l[320+(t<<2)>>2]>e)break;t=t+1|0}if((t|0)>(i|0)?+l[320+(i<<2)>>2]+ +l[408+(i<<2)>>2]>e:0){t=i;h=r;return t|0}if((t|0)>=(i|0)){h=r;return t|0}n=i+-1|0;if(!(+l[320+(n<<2)>>2]-+l[408+(n<<2)>>2]>2]|0;u=a[e+44>>2]<=(t|0))break;p=n[s+(k<<1)>>1]|0;_=i+(b+(p<>1]|0)-p<>2]|0)|0)<<2)>>2]=m;k=w}e=e+1|0}while((e|0)<(f|0));h=c;return}function xe(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0.0,a=0,f=0.0;t=h;a=0;n=0.0;while(1){if((a|0)>=(r|0))break;f=n+ +l[e+(a<<2)>>2]*+l[i+(a<<2)>>2];a=a+1|0;n=f}h=t;return+n}function Ke(e,i,r,t,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0,k=0,w=0.0,m=0,p=0,_=0,v=0;d=h;u=a[e+32>>2]|0;c=re(a[e+44>>2]|0,s)|0;b=e+8|0;e=0;while(1){k=re(e,c)|0;m=0;e:while(1){if((m|0)>=(f|0))break;w=1.0/(+l[t+(m+(re(e,a[b>>2]|0)|0)<<2)>>2]+1.0000000272452012e-27);_=re(n[u+(m<<1)>>1]|0,s)|0;m=m+1|0;p=re(n[u+(m<<1)>>1]|0,s)|0;while(1){if((_|0)>=(p|0))continue e;v=_+k|0;l[r+(v<<2)>>2]=+l[i+(v<<2)>>2]*w;_=_+1|0}}e=e+1|0;if((e|0)>=(o|0))break}h=d;return}function He(e,i,r,t,f,o,s,u,c){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;var d=0,b=0,k=0.0,w=0,m=0,p=0,_=0;b=h;d=a[e+32>>2]|0;e=re(a[e+44>>2]|0,s)|0;w=re(n[d+(o<<1)>>1]|0,s)|0;if((u|0)!=1){_=(e|0)/(u|0)|0;w=(w|0)<(_|0)?w:_}m=(c|0)==0;c=m?w:0;o=m?o:0;f=m?f:0;m=d+(f<<1)|0;p=n[m>>1]|0;u=i+((re(p<<16>>16,s)|0)<<2)|0;w=r;i=0;while(1){if((i|0)>=(re(p<<16>>16,s)|0)){m=f;break}l[w>>2]=0.0;p=n[m>>1]|0;w=w+4|0;i=i+1|0}e:while(1){if((m|0)>=(o|0))break;p=re(n[d+(m<<1)>>1]|0,s)|0;i=m+1|0;f=re(n[d+(i<<1)>>1]|0,s)|0;k=+Q(+((+l[t+(m<<2)>>2]+ +l[20656+(m<<2)>>2])*.6931471805599453));_=u;while(1){u=_+4|0;m=w+4|0;l[w>>2]=+l[_>>2]*k;p=p+1|0;if((p|0)<(f|0)){w=m;_=u}else{w=m;m=i;continue e}}}yl(r+(c<<2)|0,0,e-c<<2|0)|0;h=b;return}function ze(e,i,r,t,o,s,u,c,d,b,k,w,m,p){e=e|0;i=i|0;r=r|0;t=t|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;var _=0,v=0,g=0,E=0,T=0,A=0,S=0.0,y=0.0,M=0,L=0,O=0,R=0,N=0,C=0.0,P=0.0,B=0,D=0,I=0,U=0,F=0.0,G=0;v=h;_=e+32|0;E=e+8|0;g=(o|0)==1;T=(t|0)==3;e=1<=(c|0))break;L=u+1|0;M=a[_>>2]|0;M=(n[M+(L<<1)>>1]|0)-(n[M+(u<<1)>>1]|0)|0;y=+Q(+(+((Ye((a[w+(u<<2)>>2]|0)+1|0,M)|0)>>>t|0)*-.125*.6931471805599453))*.5;O=M<>2]|0;N=(re(R,B)|0)+u|0;F=+l[b+(N<<2)>>2];C=+l[k+(N<<2)>>2];if(g){U=B+u|0;P=+l[b+(U<<2)>>2];F=F>P?F:P;P=+l[k+(U<<2)>>2];if(!(C>P))C=P}C=+l[d+(N<<2)>>2]-(F>2]|0)+(u<<1)>>1]<=(e|0))break;i:do{if(!(f[B>>0]&1<=(M|0)){U=1;break i}G=Ve(m)|0;l[i+(N+((U<>2]=(G&32768|0)==0?P:C;m=G;U=U+1|0}}}while(0);I=I+1|0}if(U)Lt(D,O,1.0,p);R=R+1|0;if((R|0)>=(o|0)){u=L;continue e}}}h=v;return}function Ye(e,i){e=e|0;i=i|0;return(e>>>0)/(i>>>0)|0|0}function qe(e,i,r,t,f,o,s,u,c,d){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;var b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0.0,O=0,R=0.0;b=h;w=a[e+32>>2]|0;m=re(a[e+44>>2]|0,d)|0;if((re((n[w+(u<<1)>>1]|0)-(n[w+(u+-1<<1)>>1]|0)|0,d)|0)<9){O=0;h=b;return O|0}p=e+8|0;S=0;T=0;k=0;A=0;e=0;e:while(1){y=A;while(1){if((y|0)<(u|0))break;S=S+1|0;if((S|0)<(c|0))y=0;else break e}E=n[w+(y<<1)>>1]|0;M=(re(E,d)|0)+(re(S,m)|0)|0;A=y+1|0;E=re((n[w+(A<<1)>>1]|0)-E|0,d)|0;if((E|0)<9)continue;L=+(E|0);O=0;v=0;g=0;_=0;while(1){if((O|0)>=(E|0))break;R=+l[i+(M+O<<2)>>2];R=R*R*L;O=O+1|0;v=R<.25?v+1|0:v;g=R<.0625?g+1|0:g;_=R<.015625?_+1|0:_}if((y|0)>((a[p>>2]|0)+-4|0))T=T+(Ye(g+v<<5,E)|0)|0;k=k+1|0;e=e+(((_<<1|0)>=(E|0)&1)+((g<<1|0)>=(E|0)&1)+((v<<1|0)>=(E|0)&1)<<8)|0}do{if(s){if(!T)s=0;else s=Ye(T,re(4-(a[p>>2]|0)+u|0,c)|0)|0;s=(a[f>>2]|0)+s>>1;a[f>>2]=s;f=a[o>>2]|0;if((f|0)==2)s=s+4|0;else if(!f)s=s+-4|0;if((s|0)>22){a[o>>2]=2;break}if((s|0)>18){a[o>>2]=1;break}else{a[o>>2]=0;break}}}while(0);O=Ye(e,k)|0;O=O+(a[r>>2]|0)>>1;a[r>>2]=O;t=(O*3|0)+(3-t<<7|64)+2>>2;if((t|0)<80){O=3;h=b;return O|0}if((t|0)<256){O=2;h=b;return O|0}else{h=b;return((t|0)<384?1:0)|0}return 0}function je(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0,o=0,s=0.0,u=0.0,c=0;t=h;i=i>>1;a=r<<1;n=0;while(1){if((n|0)<(r|0))f=0;else break;while(1){if((f|0)>=(i|0))break;c=e+((re(a,f)|0)+n<<2)|0;u=+l[c>>2]*.7071067690849304;o=e+((re(f<<1|1,r)|0)+n<<2)|0;s=+l[o>>2]*.7071067690849304;l[c>>2]=u+s;l[o>>2]=u-s;f=f+1|0}n=n+1|0}h=t;return}function Je(e,i,r,o,s,u,c,d,b,k,w,m,p,_,v,g,E,T,A,S,y){e=e|0;i=i|0;r=r|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;_=_|0;v=v|0;g=g|0;E=E|0;T=T|0;A=A|0;S=S|0;y=y|0;var M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0;M=h;h=h+48|0;N=M;O=a[i+32>>2]|0;P=(u|0)!=0?2:1;R=(e|0)==0;U=(k|0)==0?1:1<>1]<>2]|0)+-1<<1)>>1]|0;I=re(P,(Q<<16>>16<>16<>2]=d;a[N+24>>2]=E;a[N>>2]=e;a[N+12>>2]=p;a[N+4>>2]=i;e=N+36|0;a[e>>2]=a[S>>2];a[N+16>>2]=w;a[N+40>>2]=y;W=N+8|0;y=o+-1|0;G=(u|0)==0;V=N+28|0;x=A+-1|0;d=N+20|0;i=i+12|0;K=(1<1;Z=0;Q=s+(Q<<2)|0;z=r;te=1;while(1){if((z|0)>=(o|0))break;a[W>>2]=z;$=(z|0)==(y|0);X=O+(z<<1)|0;q=n[X>>1]<>1]<>2]=J+-1;if((z|0)<=(x|0)?(L=A-z|0,L=Ze(g,(L|0)>3?3:L)|0,L=(a[b+(z<<2)>>2]|0)+L|0,C=(J|0)<(L|0),!(((C?J:L)|0)<=16383&((C?J:L)|0)<0)):0){if(((C?J:L)|0)>16383)J=16383;else J=C?J:L}else J=0;if(R?((n[X>>1]<=(n[B>>1]<>2]|0;a[d>>2]=te;if((z|0)>=(a[i>>2]|0)){ie=D;ee=G?ee:D;Q=0}Q=$?0:Q;if((Z|0)!=0?w^1|H|(te|0)<0:0){ae=(n[O+(Z<<1)>>1]<>1]<(te|0));te=te+j|0;fe=Z+-1|0;do{fe=fe+1|0}while((n[O+(fe<<1)>>1]<>0];te=te|f[c+(le+P+-1)>>0];oe=oe+1|0}while((oe|0)<(fe|0))}else{ae=-1;ne=K;te=K}e:do{if(m){if((z|0)==(p|0)){if(!R){F=37;break}m=O+(p<<1)|0;F=0;while(1){if((F|0)>=((n[m>>1]<>2]=(+l[le>>2]+ +l[D+(I+F<<2)>>2])*.5;F=F+1|0}}if(m){fe=(J|0)/2|0;oe=(ae|0)==-1;if(oe)se=0;else se=D+(ae<<2)|0;if($)le=0;else le=D+((n[X>>1]<>1]<>1]<>1]<>0]=ie;t[c+(te+P+-1)>>0]=$;g=g+((a[b+(z<<2)>>2]|0)+q)|0;z=Y;te=(J|0)>(j<<3|0)&1}a[S>>2]=a[e>>2];h=M;return}function Ze(e,i){e=e|0;i=i|0;return(e|0)/(i|0)|0|0}function $e(e,i,r,t,n,o,s,u,c,d,b){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;o=o|0;s=s|0;u=u|0;c=+c;d=d|0;b=b|0;var k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0;k=h;p=(a[e>>2]|0)==0;_=a[e+20>>2]|0;m=(n|0)==1&1;v=Ye(r,n)|0;if((r|0)==1){Qe(e,i,0,t,u);b=1;h=k;return b|0}w=(_|0)>0?_:0;do{if(d)if(!o)o=0;else{if((w|0)==0?!((v&1|0)==0&(_|0)<0|(n|0)>1):0)break;Ll(d|0,o|0,r<<2|0)|0;o=d}}while(0);d=(o|0)==0;g=0;while(1){if((g|0)>=(w|0))break;if(!p)je(i,r>>g,1<>g,1<>0]|0|(f[24+(b>>4)>>0]|0)<<2;g=g+1|0}n=n>>w;g=v<>1;_=_+1|0;v=v+1|0}_=(n|0)>1;if(_){if(!p)si(i,g>>w,n<>w,n<>w,n<=(v|0)){m=0;break}E=n>>1;b=g<<1;je(i,b,E);n=E;g=b;e=e|e>>>E;m=m+1|0}while(1){if((m|0)>=(w|0))break;E=f[40+e>>0]|0;je(i,r>>m,1<=(r|0))break e;l[u+(m<<2)>>2]=c*+l[i+(m<<2)>>2];m=m+1|0}}}while(0);E=e&(1<>2]=n;a[v>>2]=d;k=(a[e>>2]|0)==0;E=a[e+24>>2]|0;if((t|0)==1){Qe(e,i,r,n,u);A=1;h=b;return A|0}ei(e,T,i,r,t,A,f,f,s,1,v);m=a[T>>2]|0;_=a[T+16>>2]|0;g=a[T+20>>2]|0;w=+(a[T+4>>2]|0)*30517578125.0e-15;p=+(a[T+8>>2]|0)*30517578125.0e-15;n=(t|0)==2;do{if(n){if((_|0)==16384|(_|0)==0)v=0;else v=8;T=(a[A>>2]|0)-v|0;_=(_|0)>8192;A=e+28|0;a[A>>2]=(a[A>>2]|0)-(g+v);g=_?r:i;_=_?i:r;do{if(v){if(k){v=Er(E,1)|0;break}else{v=+l[g>>2]*+l[_+4>>2]-+l[g+4>>2]*+l[_>>2]<0.0&1;Cr(E,v,1);break}}else v=0}while(0);A=1-(v<<1)|0;f=$e(e,g,2,T,f,o,s,u,1.0,c,d)|0;l[_>>2]=+(0-A|0)*+l[g+4>>2];l[_+4>>2]=+(A|0)*+l[g>>2];if(k){l[i>>2]=w*+l[i>>2];T=i+4|0;l[T>>2]=w*+l[T>>2];S=p*+l[r>>2];l[r>>2]=S;A=r+4|0;l[A>>2]=p*+l[A>>2];p=+l[i>>2];l[i>>2]=p-S;l[r>>2]=p+ +l[r>>2];p=+l[T>>2];l[T>>2]=p-+l[A>>2];l[A>>2]=p+ +l[A>>2];break}else{A=f;h=b;return A|0}}else{E=a[A>>2]|0;T=(E-(a[T+12>>2]|0)|0)/2|0;d=(E|0)<(T|0);if(((d?E:T)|0)<0)d=0;else d=d?E:T;E=E-d|0;T=e+28|0;g=(a[T>>2]|0)-g|0;a[T>>2]=g;v=a[v>>2]|0;if((d|0)<(E|0)){A=$e(e,r,t,E,f,0,s,0,p,0,v>>f)|0;g=E+((a[T>>2]|0)-g)|0;if(!((g|0)<=24|(_|0)==16384))d=d+(g+-24)|0;f=A|($e(e,i,t,d,f,o,s,u,1.0,c,v)|0)}else{c=$e(e,i,t,d,f,o,s,u,1.0,c,v)|0;o=d+((a[T>>2]|0)-g)|0;if(!((o|0)<=24|(_|0)==0))E=E+(o+-24)|0;f=c|($e(e,r,t,E,f,0,s,0,p,0,v>>f)|0)}if(!k){A=f;h=b;return A|0}}}while(0);if(!n)ii(i,r,w,t);if(!m){A=f;h=b;return A|0}else i=0;while(1){if((i|0)>=(t|0))break;A=r+(i<<2)|0;l[A>>2]=-+l[A>>2];i=i+1|0}h=b;return f|0}function Qe(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0,s=0,u=0,c=0,d=0,b=0;u=h;o=(a[e>>2]|0)==0;s=a[e+24>>2]|0;f=(r|0)!=0&1;e=e+28|0;c=0;d=i;while(1){if((a[e>>2]|0)>7){if(o)b=Er(s,1)|0;else{b=+l[d>>2]<0.0&1;Cr(s,b,1)}a[e>>2]=(a[e>>2]|0)+-8;t=t+-8|0}else b=0;if(o)l[d>>2]=(b|0)!=0?-1.0:1.0;if((c|0)>=(f|0))break;c=c+1|0;d=r}if(!n){h=u;return}l[n>>2]=+l[i>>2];h=u;return}function ei(e,i,r,t,f,o,s,u,c,d,b){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;var k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0;k=h;v=a[e>>2]|0;p=a[e+4>>2]|0;_=a[e+8>>2]|0;g=a[e+12>>2]|0;w=a[e+24>>2]|0;m=a[e+32>>2]|0;S=(n[(a[p+56>>2]|0)+(_<<1)>>1]|0)+(c<<3)|0;A=S>>1;c=(d|0)==0;if(c){g=a[o>>2]|0;T=g;g=ti(f,g,A-4|0,S,d)|0}else{T=a[o>>2]|0;S=ti(f,T,A-((f|0)==2?16:4)|0,S,d)|0;g=(_|0)<(g|0)?S:1}v=(v|0)==0;if(v)A=0;else A=Rt(r,t,d,f,a[e+40>>2]|0)|0;d=hr(w)|0;e:do{if((g|0)==1){if(!c){if(v)c=0;else{S=(A|0)>8192;c=S&1;i:do{if(S){g=0;while(1){if((g|0)>=(f|0))break i;S=t+(g<<2)|0;l[S>>2]=-+l[S>>2];g=g+1|0}}}while(0);ni(p,r,t,m,_,f);T=a[o>>2]|0}if((T|0)>16?(a[e+28>>2]|0)>16:0){if(v){c=_r(w,2)|0;A=0;break}else{Or(w,c,2);A=0;break}}else{c=0;A=0}}else c=0}else{if(v)e=A;else e=(re(A,g)|0)+8192>>14;do{if(!((c^1)&(f|0)>2)){if((u|0)>1|c^1){u=g+1|0;if(v){c=0;A=Ye((gr(w,u)|0)<<14,g)|0;break e}else{Nr(w,e,u);A=Ye(e<<14,g)|0;break}}T=g>>1;u=T+1|0;E=re(u,u)|0;if(v){e=kr(w,E)|0;if((e|0)<((re(T,u)|0)>>1|0)){S=((jr(e<<3|1)|0)+-1|0)>>>1;T=S+1|0;u=T;e=S;T=(re(S,T)|0)>>>1}else{T=((g<<1)+2-(jr((E-e<<3)+-7|0)|0)|0)>>>1;S=g+1-T|0;u=S;e=T;T=E-((re(S,g+2-T|0)|0)>>1)|0}pr(w,T,T+u|0,E);E=35;break}else{if((e|0)>(T|0)){u=g+1-e|0;T=E-((re(g+1-e|0,g+2-e|0)|0)>>1)|0}else{u=e+1|0;T=(re(e,e+1|0)|0)>>1}Sr(w,T,T+u|0,E);E=35;break}}else{u=(g|0)/2|0;E=(u*3|0)+3+u|0;if(!v){if((e|0)>(u|0)){T=e+-1-u+((u*3|0)+3)|0;u=e-u+((u*3|0)+3)|0}else{T=e*3|0;u=(e*3|0)+3|0}Sr(w,T,u,E);E=35;break}A=kr(w,E)|0;e=u+1|0;T=e*3|0;if((A|0)<(T|0))e=(A|0)/3|0;else e=e+(A-T)|0;if((e|0)>(u|0)){A=e+-1-u+T|0;u=e-u+T|0}else{A=e*3|0;u=(e*3|0)+3|0}pr(w,A,u,E);E=35}}while(0);if((E|0)==35){A=Ye(e<<14,g)|0;if(v){c=0;break}}if(!c){if(!A){ni(p,r,t,m,_,f);c=0;A=0;break}else{ai(r,t,f);c=0;break}}else c=0}}while(0);w=(hr(w)|0)-d|0;a[o>>2]=(a[o>>2]|0)-w;if(!A){a[b>>2]=a[b>>2]&(1<>2]=c;S=i+4|0;a[S>>2]=E;S=i+8|0;a[S>>2]=u;S=i+12|0;a[S>>2]=T;S=i+16|0;a[S>>2]=A;S=i+20|0;a[S>>2]=w;h=k;return}else if((A|0)==16384){a[b>>2]=a[b>>2]&(1<>2]=c;S=i+4|0;a[S>>2]=E;S=i+8|0;a[S>>2]=u;S=i+12|0;a[S>>2]=T;S=i+16|0;a[S>>2]=A;S=i+20|0;a[S>>2]=w;h=k;return}else{T=(fi(A&65535)|0)<<16>>16;S=(fi(16384-A&65535)|0)<<16>>16;E=T;u=S;T=(re((f<<23)+-8388608>>16,(oi(S,T)|0)<<16>>16)|0)+16384>>15;a[i>>2]=c;S=i+4|0;a[S>>2]=E;S=i+8|0;a[S>>2]=u;S=i+12|0;a[S>>2]=T;S=i+16|0;a[S>>2]=A;S=i+20|0;a[S>>2]=w;h=k;return}}function ii(e,i,r,t){e=e|0;i=i|0;r=+r;t=t|0;var n=0,a=0.0,f=0.0,o=0,s=0.0,u=0,c=0.0,d=0;n=h;h=h+16|0;u=n+4|0;o=n;l[u>>2]=0.0;l[o>>2]=0.0;ri(i,e,i,t,u,o);f=+l[u>>2]*r;l[u>>2]=f;s=r*r+ +l[o>>2];f=f*2.0;a=s-f;f=s+f;if(f<.0006000000284984708|a<.0006000000284984708){Ll(i|0,e|0,t<<2|0)|0;h=n;return}a=1.0/+H(+a);f=1.0/+H(+f);o=0;while(1){if((o|0)>=(t|0))break;d=e+(o<<2)|0;c=+l[d>>2]*r;u=i+(o<<2)|0;s=+l[u>>2];l[d>>2]=a*(c-s);l[u>>2]=f*(c+s);o=o+1|0}h=n;return}function ri(e,i,r,t,n,a){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;var f=0.0,o=0.0,s=0,u=0,c=0.0,d=0.0;s=h;u=0;f=0.0;o=0.0;while(1){if((u|0)>=(t|0))break;c=+l[e+(u<<2)>>2];d=f+c*+l[i+(u<<2)>>2];c=o+c*+l[r+(u<<2)>>2];u=u+1|0;f=d;o=c}l[n>>2]=f;l[a>>2]=o;h=s;return}function ti(e,i,r,t,a){e=e|0;i=i|0;r=r|0;t=t|0;a=a|0;var f=0,o=0;f=h;o=e<<1;a=(a|0)!=0&(e|0)==2?o+-2|0:o+-1|0;a=Ze((re(a,r)|0)+i|0,a)|0;t=i-t+-32|0;t=(t|0)<(a|0)?t:a;if((t|0)<=64){if((t|0)<4){o=1;h=f;return o|0}}else t=64;o=(n[8+((t&7)<<1)>>1]>>14-(t>>3))+1&-2;h=f;return o|0}function ni(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0.0,u=0.0,c=0.0;o=h;s=+l[t+(n<<2)>>2];c=+l[t+((a[e+8>>2]|0)+n<<2)>>2];u=+H(+(s*s+1.0000000036274937e-15+c*c))+1.0000000036274937e-15;s=s/u;u=c/u;n=0;while(1){if((n|0)>=(f|0))break;t=i+(n<<2)|0;l[t>>2]=s*+l[t>>2]+u*+l[r+(n<<2)>>2];n=n+1|0}h=o;return}function ai(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0.0,o=0.0,s=0;t=h;n=0;while(1){if((n|0)>=(r|0))break;s=e+(n<<2)|0;f=+l[s>>2]*.7071067690849304;a=i+(n<<2)|0;o=+l[a>>2]*.7071067690849304;l[s>>2]=f+o;l[a>>2]=o-f;n=n+1|0}h=t;return}function fi(e){e=e|0;var i=0;e=e<<16>>16;e=((re(e,e)|0)+4096|0)>>>13;i=e<<16>>16;e=32767-e+(((re(i,(((re(i,(((re(e<<16>>16,-626)|0)+16384|0)>>>15<<16)+542441472>>16)|0)+16384|0)>>>15<<16)+-501415936>>16)|0)+16384|0)>>>15)+1&65535;return e|0}function oi(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,a=0;r=h;n=32-(Sl(i|0)|0)|0;a=32-(Sl(e|0)|0)|0;t=e<<15-a<<16>>16;e=i<<15-n<<16>>16;e=(a-n<<11)+((re(t,(((re(t,-2597)|0)+16384|0)>>>15<<16)+519831552>>16)|0)+16384>>15)-((re(e,(((re(e,-2597)|0)+16384|0)>>>15<<16)+519831552>>16)|0)+16384>>15)|0;h=r;return e|0}function si(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,u=0,c=0,d=0.0;f=h;o=re(i,r)|0;n=h;h=h+((4*o|0)+15&-16)|0;if(!t){u=0;while(1){if((u|0)>=(r|0))break;s=re(u,i)|0;t=0;while(1){if((t|0)>=(i|0))break;l[n+(s+t<<2)>>2]=+l[e+((re(t,r)|0)+u<<2)>>2];t=t+1|0}u=u+1|0}c=o<<2;Ll(e|0,n|0,c|0)|0;h=f;return}u=r+-2|0;c=0;while(1){if((c|0)>=(r|0))break;s=56+(u+c<<2)|0;t=0;while(1){if((t|0)>=(i|0))break;d=+l[e+((re(t,r)|0)+c<<2)>>2];l[n+((re(a[s>>2]|0,i)|0)+t<<2)>>2]=d;t=t+1|0}c=c+1|0}c=o<<2;Ll(e|0,n|0,c|0)|0;h=f;return}function li(e,i,r,t,o,s,u,c,d){e=e|0;i=i|0;r=r|0;t=t|0;o=o|0;s=s|0;u=u|0;c=+c;d=d|0;var b=0,k=0,w=0,m=0,p=0,_=0.0,v=0.0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0;b=h;h=h+32|0;g=b+28|0;k=b+24|0;E=b;a[g>>2]=t;a[k>>2]=d;p=(a[e>>2]|0)==0;T=a[e+4>>2]|0;A=a[e+8>>2]|0;m=a[e+16>>2]|0;w=a[e+24>>2]|0;y=a[T+100>>2]|0;S=(re(u+1|0,a[T+8>>2]|0)|0)+A|0;S=n[(a[T+96>>2]|0)+(S<<1)>>1]|0;if((u|0)!=-1?(r|0)>2?((f[y+(S+(f[y+S>>0]|0))>>0]|0)+12|0)<(t|0):0:0){r=r>>1;p=i+(r<<2)|0;w=u+-1|0;if((o|0)==1)a[k>>2]=d&1|d<<1;d=o+1>>1;ei(e,E,i,p,r,g,d,o,w,0,k);A=a[E+12>>2]|0;m=a[E+16>>2]|0;T=a[E+20>>2]|0;_=+(a[E+4>>2]|0)*30517578125.0e-15;v=+(a[E+8>>2]|0)*30517578125.0e-15;do{if((o|0)>1?(m&16383|0)!=0:0)if((m|0)>8192){A=A-(A>>5-u)|0;break}else{A=A+(r<<3>>6-u)|0;A=(A|0)>0?0:A;break}}while(0);g=a[g>>2]|0;u=(g-A|0)/2|0;E=(g|0)<(u|0);if(((E?g:u)|0)<0)u=0;else u=E?g:u;g=g-u|0;A=e+28|0;T=(a[A>>2]|0)-T|0;a[A>>2]=T;if(!s)E=0;else E=s+(r<<2)|0;if((u|0)<(g|0)){k=a[k>>2]|0;o=(li(e,p,r,g,d,E,w,v*c,k>>d)|0)<<(o>>1);p=g+((a[A>>2]|0)-T)|0;if(!((p|0)<=24|(m|0)==16384))u=u+(p+-24)|0;y=o|(li(e,i,r,u,d,s,w,_*c,k)|0);h=b;return y|0}else{k=a[k>>2]|0;i=li(e,i,r,u,d,s,w,_*c,k)|0;s=u+((a[A>>2]|0)-T)|0;if(!((s|0)<=24|(m|0)==0))g=g+(s+-24)|0;y=i|(li(e,p,r,g,d,E,w,v*c,k>>d)|0)<<(o>>1);h=b;return y|0}}S=hi(T,A,u,t)|0;E=ci(T,A,u,S)|0;t=e+28|0;g=E;E=(a[t>>2]|0)-E|0;while(1){a[t>>2]=E;if(!((E|0)<0&(S|0)>0))break;M=E+g|0;a[t>>2]=M;L=S+-1|0;y=ci(T,A,u,L)|0;g=y;S=L;E=M-y|0}if(S){e=di(S)|0;if(p){L=yt(i,r,e,m,o,w,c)|0;h=b;return L|0}else{L=Tt(i,r,e,m,o,w)|0;h=b;return L|0}}if(!p){L=0;h=b;return L|0}o=(1<>2]=w;if(!w){yl(i|0,0,r<<2|0)|0;L=0;h=b;return L|0}k=e+36|0;e:do{if(!s){s=0;while(1){if((s|0)>=(r|0))break e;L=Ve(a[k>>2]|0)|0;a[k>>2]=L;l[i+(s<<2)>>2]=+(L>>20|0);s=s+1|0}}else{o=0;while(1){if((o|0)>=(r|0)){o=w;break e}L=Ve(a[k>>2]|0)|0;a[k>>2]=L;l[i+(o<<2)>>2]=+l[s+(o<<2)>>2]+((L&32768|0)==0?-.00390625:.00390625);o=o+1|0}}}while(0);Lt(i,r,c,a[e+40>>2]|0);L=o;h=b;return L|0}function ui(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,u=0,c=0;f=h;o=re(i,r)|0;n=h;h=h+((4*o|0)+15&-16)|0;if(!t){u=0;while(1){if((u|0)>=(r|0))break;t=re(u,i)|0;s=0;while(1){if((s|0)>=(i|0))break;l[n+((re(s,r)|0)+u<<2)>>2]=+l[e+(t+s<<2)>>2];s=s+1|0}u=u+1|0}c=o<<2;Ll(e|0,n|0,c|0)|0;h=f;return}u=r+-2|0;c=0;while(1){if((c|0)>=(r|0))break;t=56+(u+c<<2)|0;s=0;while(1){if((s|0)>=(i|0))break;l[n+((re(s,r)|0)+c<<2)>>2]=+l[e+((re(a[t>>2]|0,i)|0)+s<<2)>>2];s=s+1|0}c=c+1|0}c=o<<2;Ll(e|0,n|0,c|0)|0;h=f;return}function hi(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var o=0,s=0,l=0,u=0,c=0;s=h;o=a[e+100>>2]|0;i=(re(r+1|0,a[e+8>>2]|0)|0)+i|0;i=n[(a[e+96>>2]|0)+(i<<1)>>1]|0;e=t+-1|0;r=f[o+i>>0]|0;t=0;l=0;while(1){if((l|0)>=6)break;u=t+r+1>>1;c=(f[o+(i+u)>>0]|0)<(e|0);r=c?r:u;t=c?u:t;l=l+1|0}if(!t)l=-1;else l=f[o+(i+t)>>0]|0;h=s;return((e-l|0)>((f[o+(i+r)>>0]|0)-e|0)?r:t)|0}function ci(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var o=0;o=h;if(!t){t=0;h=o;return t|0}r=re(r+1|0,a[e+8>>2]|0)|0;t=(f[(a[e+100>>2]|0)+((n[(a[e+96>>2]|0)+(r+i<<1)>>1]|0)+t)>>0]|0)+1|0;h=o;return t|0}function di(e){e=e|0;if((e|0)>=8)e=(e&7|8)<<(e>>3)+-1;return e|0}function bi(e){e=e|0;var i=0;i=h;if((e|0)==8e3)e=6;else if((e|0)==48e3)e=1;else if((e|0)==24e3)e=2;else if((e|0)==16e3)e=3;else if((e|0)==12e3)e=4;else e=0;h=i;return e|0}function ki(e,i,r,t,n,a,f,o,s,u,c){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=+a;f=+f;o=o|0;s=s|0;u=u|0;c=c|0;var d=0.0,b=0,k=0.0,w=0.0,m=0.0,p=0.0,_=0.0,v=0.0,g=0.0,E=0.0,T=0.0,A=0.0,S=0.0;b=h;if(a==0.0&f==0.0){if((i|0)==(e|0)){h=b;return}Ol(e|0,i|0,n<<2|0)|0;h=b;return}p=+l[176+(o*12|0)>>2]*a;_=+l[180+(o*12|0)>>2]*a;d=+l[184+(o*12|0)>>2]*a;k=+l[176+(s*12|0)>>2]*f;w=+l[180+(s*12|0)>>2]*f;m=+l[184+(s*12|0)>>2]*f;c=a==f&(r|0)==(t|0)&(o|0)==(s|0)?0:c;s=0;E=+l[i+(1-t<<2)>>2];a=+l[i+(0-t<<2)>>2];g=+l[i+(~t<<2)>>2];v=+l[i+(-2-t<<2)>>2];while(1){if((s|0)>=(c|0))break;A=+l[i+(s-t+2<<2)>>2];T=+l[u+(s<<2)>>2];T=T*T;S=1.0-T;o=s-r|0;l[e+(s<<2)>>2]=+l[i+(s<<2)>>2]+S*p*+l[i+(o<<2)>>2]+S*_*(+l[i+(o+1<<2)>>2]+ +l[i+(o+-1<<2)>>2])+S*d*(+l[i+(o+2<<2)>>2]+ +l[i+(o+-2<<2)>>2])+T*k*a+T*w*(E+g)+T*m*(A+v);T=E;s=s+1|0;E=A;v=g;g=a;a=T}if(!(f==0.0)){wi(e+(s<<2)|0,i+(s<<2)|0,t,n-s|0,k,w,m);h=b;return}if((i|0)==(e|0)){h=b;return}Ol(e+(c<<2)|0,i+(c<<2)|0,n-c<<2|0)|0;h=b;return}function wi(e,i,r,t,n,a,f){e=e|0;i=i|0;r=r|0;t=t|0;n=+n;a=+a;f=+f;var o=0.0,s=0,u=0.0,c=0.0,d=0.0,b=0,k=0.0,w=0.0;b=h;s=0;c=+l[i+(1-r<<2)>>2];u=+l[i+(0-r<<2)>>2];d=+l[i+(~r<<2)>>2];o=+l[i+(-2-r<<2)>>2];while(1){if((s|0)>=(t|0))break;w=+l[i+(s-r+2<<2)>>2];l[e+(s<<2)>>2]=+l[i+(s<<2)>>2]+u*n+(c+d)*a+(w+o)*f;k=c;s=s+1|0;c=w;o=d;d=u;u=k}h=b;return}function mi(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0;u=h;s=e+8|0;l=e+32|0;o=(r<<1)+t+-1|0;e=e+104|0;c=0;while(1){d=a[s>>2]|0;if((c|0)>=(d|0))break;b=c+1|0;k=a[l>>2]|0;d=(re(d,o)|0)+c|0;a[i+(c<<2)>>2]=(re(re((f[(a[e>>2]|0)+d>>0]|0)+64|0,t)|0,(n[k+(b<<1)>>1]|0)-(n[k+(c<<1)>>1]|0)<>2;c=b}h=u;return}function pi(){return 248}function _i(e){e=e|0;var i=0;i=h;e=vi($r()|0,e)|0;h=i;return e|0}function vi(e,i){e=e|0;i=i|0;i=((re((a[e+4>>2]|0)+2048|0,i)|0)<<2)+84+(i*96|0)|0;return i+(a[e+8>>2]<<5)|0}function gi(e,i,r){e=e|0;i=i|0;r=r|0;var t=0;t=h;r=Ei(e,$r()|0,r)|0;if(!r){r=bi(i)|0;a[e+16>>2]=r;h=t;return((r|0)==0?-1:0)|0}else{h=t;return r|0}return 0}function Ei(e,i,r){e=e|0;i=i|0;r=r|0;var t=0;t=h;h=h+16|0;if((r|0)<0|(r|0)>2){r=-1;h=t;return r|0}if(!e){r=-7;h=t;return r|0}yl(e|0,0,vi(i,r)|0)|0;a[e>>2]=i;a[e+4>>2]=a[i+4>>2];a[e+8>>2]=r;a[e+12>>2]=r;a[e+16>>2]=1;a[e+20>>2]=0;a[e+24>>2]=a[i+12>>2];a[e+28>>2]=1;a[e+32>>2]=0;a[e+48>>2]=0;Ri(e,4028,t);r=0;h=t;return r|0}function Ti(e,i,r,t,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0.0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0,ue=0.0,he=0.0;u=h;h=h+80|0;y=u+32|0;V=u+24|0;k=u+16|0;F=u+8|0;U=u+4|0;I=u;c=a[e+8>>2]|0;a[F>>2]=0;a[U>>2]=0;D=a[e+12>>2]|0;d=a[e>>2]|0;b=a[d+8>>2]|0;S=a[d+4>>2]|0;q=a[d+32>>2]|0;w=a[e+20>>2]|0;m=a[e+24>>2]|0;p=e+16|0;g=re(a[p>>2]|0,f)|0;v=re(S+2072|0,c)|0;O=e+(v<<2)+84|0;T=b<<1;f=v+T|0;M=e+(f<<2)+84|0;_=f+T|0;N=e+(_<<2)+84|0;A=_+T|0;L=d+44|0;E=a[d+36>>2]|0;P=0;while(1){if((P|0)>(E|0)){c=-1;W=85;break}if((a[L>>2]<1275|(t|0)==0){le=-1;h=u;return le|0}E=a[L>>2]<>2]=e+(le<<2)+84;a[k+(R<<2)>>2]=e+(le+H<<2)+84;R=R+1|0}while((R|0)<(c|0));G=a[d+12>>2]|0;G=(m|0)>(G|0)?G:m;if((i|0)==0|(r|0)<2){Ai(e,E,P);Si(k,t,E,c,a[p>>2]|0,+l[d+16>>2],e+76|0,s);le=(g|0)/(a[p>>2]|0)|0;h=u;return le|0}if(!o)cr(y,i,r);else y=o;B=(D|0)==1;e:do{if(B){o=0;while(1){if((o|0)>=(b|0))break e;le=e+(v+o<<2)+84|0;ue=+l[le>>2];K=+l[e+(v+(b+o)<<2)+84>>2];l[le>>2]=ue>K?ue:K;o=o+1|0}}}while(0);i=r<<3;R=y+20|0;x=a[R>>2]|0;o=y+28|0;z=a[o>>2]|0;j=yi(x,z)|0;if((j|0)<(i|0)){if((j|0)==1){Y=_r(y,15)|0;if(!Y){Y=0;j=1}else{x=a[R>>2]|0;z=a[o>>2]|0;W=19}}else Y=0}else{Y=1;W=19}if((W|0)==19){a[R>>2]=x+(i-(yi(x,z)|0));j=i}if((w|0)==0?(j+16|0)<=(i|0):0){if(!(_r(y,1)|0)){K=0.0;x=0;z=0}else{x=gr(y,6)|0;x=(16<>2]|0,a[o>>2]|0)|0)+2|0)>(i|0))z=0;else z=vr(y,272,2)|0;K=+(W+1|0)*.09375}W=yi(a[R>>2]|0,a[o>>2]|0)|0}else{x=0;K=0.0;z=0;W=j}if((P|0)>0?(W+3|0)<=(i|0):0){j=_r(y,3)|0;W=yi(a[R>>2]|0,a[o>>2]|0)|0;J=(j|0)==0;j=J?0:j;J=J?0:C}else{j=0;J=0}if((W+3|0)>(i|0))W=0;else W=_r(y,3)|0;wt(d,w,m,O,W,y,D,P);W=Ee()|0;Z=h;h=h+((4*b|0)+15&-16)|0;Mi(w,m,j,Z,P,y);if(((yi(a[R>>2]|0,a[o>>2]|0)|0)+4|0)>(i|0))$=2;else $=vr(y,280,5)|0;Q=h;h=h+((4*b|0)+15&-16)|0;mi(d,Q,P,D);X=h;h=h+((4*b|0)+15&-16)|0;te=6;ie=w;ne=hr(y)|0;ae=r<<6;while(1){if((ie|0)>=(m|0))break;ee=ie+1|0;oe=(re(D,(n[q+(ee<<1)>>1]|0)-(n[q+(ie<<1)>>1]|0)|0)|0)<=((fe?48:oe)|0))se=fe?48:oe;le=Q+(ie<<2)|0;fe=0;oe=te;while(1){if((ne+(oe<<3)|0)>=(ae|0))break;if((fe|0)>=(a[le>>2]|0))break;oe=_r(y,oe)|0;ne=hr(y)|0;if(!oe)break;fe=fe+se|0;oe=1;ae=ae-se|0}a[X+(ie<<2)>>2]=fe;if((fe|0)<=0){ie=ee;continue}te=(te|0)<3?2:te+-1|0;ie=ee}q=h;h=h+((4*b|0)+15&-16)|0;if((ne+48|0)>(ae|0))ae=5;else ae=vr(y,288,7)|0;ie=r<<6;te=ie-(hr(y)|0)+-1|0;r=(j|0)==0;if((r^1)&(P|0)>1)ee=(te|0)>=((P<<3)+16|0)?8:0;else ee=0;le=te-ee|0;ne=h;h=h+((4*b|0)+15&-16)|0;te=h;h=h+((4*b|0)+15&-16)|0;X=vt(d,w,m,X,Q,ae,F,U,le,I,ne,q,te,D,P,y,0,0,0)|0;mt(d,w,m,O,q,y,D);Q=H+((S|0)/2|0)<<2;H=0;do{le=a[V+(H<<2)>>2]|0;Ol(le|0,le+(E<<2)|0,Q|0)|0;H=H+1|0}while((H|0)<(c|0));H=re(D,b)|0;ae=h;h=h+((1*H|0)+15&-16)|0;le=re(D,E)|0;Q=h;h=h+((4*le|0)+15&-16)|0;if((D|0)==2)fe=Q+(E<<2)|0;else fe=0;V=e+36|0;oe=e+32|0;Je(0,d,w,m,Q,fe,ae,0,ne,J,$,a[U>>2]|0,a[F>>2]|0,Z,ie-ee|0,a[I>>2]|0,y,P,X,V,a[oe>>2]|0);if(ee){le=(Er(y,1)|0)==0;pt(d,w,m,O,q,te,i-(yi(a[R>>2]|0,a[o>>2]|0)|0)|0,y,D);if(!le)ze(d,Q,ae,P,D,E,w,m,O,M,N,ne,a[V>>2]|0,a[oe>>2]|0)}else pt(d,w,m,O,q,te,i-(yi(a[R>>2]|0,a[o>>2]|0)|0)|0,y,D);e:do{if(Y){I=0;while(1){if((I|0)>=(H|0))break e;l[e+(v+I<<2)+84>>2]=-28.0;I=I+1|0}}}while(0);Li(d,Q,k,O,w,G,D,c,j,P,a[p>>2]|0,Y);I=e+52|0;H=e+56|0;F=e+64|0;U=e+60|0;Y=e+72|0;G=e+68|0;D=d+60|0;P=(P|0)==0;q=0;do{le=a[I>>2]|0;le=(le|0)>15?le:15;a[I>>2]=le;se=a[H>>2]|0;se=(se|0)>15?se:15;a[H>>2]=se;j=a[k+(q<<2)>>2]|0;ki(j,j,se,le,a[L>>2]|0,+l[F>>2],+l[U>>2],a[Y>>2]|0,a[G>>2]|0,a[D>>2]|0,S);if(!P){le=a[L>>2]|0;se=j+(le<<2)|0;ki(se,se,a[I>>2]|0,x,E-le|0,+l[U>>2],K,a[G>>2]|0,z,a[D>>2]|0,S)}q=q+1|0}while((q|0)<(c|0));a[H>>2]=a[I>>2];l[F>>2]=+l[U>>2];a[Y>>2]=a[G>>2];a[I>>2]=x;l[U>>2]=K;a[G>>2]=z;if(!P){a[H>>2]=x;l[F>>2]=K;a[Y>>2]=z}if(B)Ll(e+(v+b<<2)+84|0,O|0,b<<2|0)|0;e:do{if(r){S=b<<3;Ll(N|0,M|0,S|0)|0;Ll(M|0,O|0,S|0)|0;K=+(C|0)*.0010000000474974513;S=0;while(1){if((S|0)>=(T|0)){T=0;break e}le=e+(A+S<<2)+84|0;he=+l[le>>2]+K;ue=+l[e+(v+S<<2)+84>>2];l[le>>2]=he=(T|0)){T=0;break e}le=e+(f+A<<2)+84|0;ue=+l[le>>2];he=+l[e+(v+A<<2)+84>>2];l[le>>2]=ue=(w|0)){S=m;break}le=A+S|0;l[e+(v+le<<2)+84>>2]=0.0;l[e+(_+le<<2)+84>>2]=-28.0;l[e+(f+le<<2)+84>>2]=-28.0;S=S+1|0}while(1){if((S|0)>=(b|0))break;le=A+S|0;l[e+(v+le<<2)+84>>2]=0.0;l[e+(_+le<<2)+84>>2]=-28.0;l[e+(f+le<<2)+84>>2]=-28.0;S=S+1|0}T=T+1|0}while((T|0)<2);a[V>>2]=a[o>>2];Si(k,t,E,c,a[p>>2]|0,+l[d+16>>2],e+76|0,s);a[e+48>>2]=0;if((yi(a[R>>2]|0,a[o>>2]|0)|0)>(i|0))c=-3;else{if(Oi(a[y+44>>2]|0)|0)a[e+40>>2]=1;c=(g|0)/(a[p>>2]|0)|0}ce(W|0);le=c;h=u;return le|0}function Ai(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,f=0,o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0.0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0.0,W=0.0,x=0,K=0,z=0,Y=0,q=0.0,j=0.0;o=h;h=h+4416|0;t=o+4400|0;_=o+4392|0;w=o+296|0;m=o+192|0;k=o+96|0;b=o;f=a[e+8>>2]|0;A=a[e>>2]|0;T=a[A+8>>2]|0;d=a[A+4>>2]|0;v=a[A+32>>2]|0;u=d+2048|0;c=2048-i|0;s=0;do{Y=re(s,u)|0;a[t+(s<<2)>>2]=e+(Y<<2)+84;a[_+(s<<2)>>2]=e+(Y+c<<2)+84;s=s+1|0}while((s|0)<(f|0));p=re(u,f)|0;S=re(f,d+2072|0)|0;M=T<<1;M=S+M+M+M|0;s=e+48|0;u=a[s>>2]|0;E=a[e+20>>2]|0;y=(u|0)>4;if(!((y^1)&(E|0)==0)){m=a[e+24>>2]|0;k=a[A+12>>2]|0;b=(m|0)<(k|0);if((E|0)>((b?m:k)|0))k=E;else k=b?m:k;Y=re(f,i)|0;b=Ee()|0;w=h;h=h+((4*Y|0)+15&-16)|0;if(y)S=M;else{g=(u|0)==0?1.5:.5;y=0;do{M=re(y,T)|0;p=E;while(1){if((p|0)>=(m|0))break;Y=e+(S+(M+p)<<2)+84|0;l[Y>>2]=+l[Y>>2]-g;p=p+1|0}y=y+1|0}while((y|0)<(f|0))}m=e+(S<<2)+84|0;y=e+36|0;S=e+32|0;R=a[y>>2]|0;T=0;while(1){if((T|0)>=(f|0))break;p=re(T,i)|0;O=E;while(1){if((O|0)>=(k|0))break;L=n[v+(O<<1)>>1]|0;M=p+(L<>1]|0)-L<=(L|0))break;Y=Ve(R)|0;l[w+(M+N<<2)>>2]=+(Y>>20|0);R=Y;N=N+1|0}Lt(w+(M<<2)|0,L,1.0,a[S>>2]|0)}T=T+1|0}a[y>>2]=R;c=c+(d>>>1)<<2;d=0;do{Y=a[t+(d<<2)>>2]|0;Ol(Y|0,Y+(i<<2)|0,c|0)|0;d=d+1|0}while((d|0)<(f|0));Li(A,w,_,m,E,k,f,f,0,r,a[e+16>>2]|0,0);ce(b|0);Y=u+1|0;a[s>>2]=Y;h=o;return}v=(u|0)==0;if(v){r=e+32|0;E=Ni(t,f,a[r>>2]|0)|0;a[e+44>>2]=E;g=1.0}else{r=e+32|0;g=.800000011920929;E=a[e+44>>2]|0}_=Ee()|0;T=h;h=h+((4*d|0)+15&-16)|0;M=a[A+60>>2]|0;D=E<<1;U=(D|0)<1024;I=c<<2;y=1024-E|0;N=d+i|0;B=1024-i+y|0;S=c+-1|0;P=e+52|0;R=e+60|0;C=e+68|0;L=(d|0)/2|0;A=d+-1|0;O=0;do{F=a[t+(O<<2)>>2]|0;G=0;while(1){if((G|0)>=1024)break;l[w+(G<<2)>>2]=+l[F+(G+1024<<2)>>2];G=G+1|0}if(v){fr(w,m,M,d,24,1024,a[r>>2]|0);l[m>>2]=+l[m>>2]*1.000100016593933;G=1;while(1){if((G|0)>=25)break;Y=m+(G<<2)|0;W=+l[Y>>2];q=+(G|0);l[Y>>2]=W-W*6400000711437315.0e-20*q*q;G=G+1|0}rr(e+(p+(O*24|0)<<2)+84|0,m,24)}z=U?D:1024;G=2048-z+-1|0;x=0;while(1){if((x|0)>=24)break;l[k+(x<<2)>>2]=+l[F+(G-x<<2)>>2];x=x+1|0}x=w+(1024-z<<2)|0;G=e+(p+(O*24|0)<<2)+84|0;tr(x,G,x,z,k,a[r>>2]|0);x=z>>1;K=1024-x|0;z=1024-z|0;W=1.0;V=1.0;Y=0;while(1){if((Y|0)>=(x|0))break;j=+l[w+(K+Y<<2)>>2];q=+l[w+(z+Y<<2)>>2];W=W+j*j;V=V+q*q;Y=Y+1|0}W=+H(+((W=(N|0)){x=0;break}if((K|0)>=(E|0)){q=q*W;K=K-E|0}l[F+(c+x<<2)>>2]=q*+l[w+(y+K<<2)>>2];j=+l[F+(B+K<<2)>>2];V=V+j*j;x=x+1|0;K=K+1|0}while(1){if((x|0)>=24)break;l[b+(x<<2)>>2]=+l[F+(S-x<<2)>>2];x=x+1|0}Y=F+(c<<2)|0;ar(Y,G,Y,N,b,a[r>>2]|0);W=0.0;G=0;while(1){if((G|0)>=(N|0))break;j=+l[F+(c+G<<2)>>2];W=W+j*j;G=G+1|0}e:do{if(V>W*.20000000298023224){if(V=(d|0)){G=d;break}Y=F+(c+G<<2)|0;l[Y>>2]=(1.0-+l[M+(G<<2)>>2]*W)*+l[Y>>2];G=G+1|0}while(1){if((G|0)>=(N|0))break e;Y=F+(c+G<<2)|0;l[Y>>2]=V*+l[Y>>2];G=G+1|0}}}else{G=0;while(1){if((G|0)>=(N|0))break e;l[F+(c+G<<2)>>2]=0.0;G=G+1|0}}}while(0);Y=a[P>>2]|0;j=-+l[R>>2];G=a[C>>2]|0;ki(T,F+8192|0,Y,Y,d,j,j,G,G,0,0);G=0;while(1){if((G|0)>=(L|0))break;l[F+(G+2048<<2)>>2]=+l[M+(G<<2)>>2]*+l[T+(A-G<<2)>>2]+ +l[M+(d-G+-1<<2)>>2]*+l[T+(G<<2)>>2];G=G+1|0}O=O+1|0}while((O|0)<(f|0));ce(_|0);Y=u+1|0;a[s>>2]=Y;h=o;return}function Si(e,i,r,t,n,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=+f;o=o|0;s=s|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0.0,v=0,g=0.0;s=h;d=h;h=h+((4*r|0)+15&-16)|0;u=(r|0)/(n|0)|0;c=(n|0)>1;p=0;b=0;do{w=o+(b<<2)|0;_=+l[w>>2];m=a[e+(b<<2)>>2]|0;if(!c){v=0;while(1){if((v|0)>=(r|0))break;g=+l[m+(v<<2)>>2]+_+1.0000000031710769e-30;l[i+(b+(re(v,t)|0)<<2)>>2]=g*30517578125.0e-15;_=g*f;v=v+1|0}l[w>>2]=_;if(p)k=9}else{k=0;while(1){if((k|0)>=(r|0))break;g=+l[m+(k<<2)>>2]+_+1.0000000031710769e-30;l[d+(k<<2)>>2]=g;_=g*f;k=k+1|0}l[w>>2]=_;p=1;k=9}e:do{if((k|0)==9){k=0;w=0;while(1){if((w|0)>=(u|0))break e;l[i+(b+(re(w,t)|0)<<2)>>2]=+l[d+((re(w,n)|0)<<2)>>2]*30517578125.0e-15;w=w+1|0}}}while(0);b=b+1|0}while((b|0)<(t|0));h=s;return}function yi(e,i){e=e|0;i=i|0;var r=0;r=h;i=(Sl(i|0)|0)+-32+e|0;h=r;return i|0}function Mi(e,i,r,n,f,o){e=e|0;i=i|0;r=r|0;n=n|0;f=f|0;o=o|0;var s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0;s=h;d=a[o+4>>2]<<3;u=o+20|0;c=o+28|0;p=yi(a[u>>2]|0,a[c>>2]|0)|0;b=(r|0)!=0;m=b?2:4;if((f|0)>0)l=(p+m+1|0)>>>0<=d>>>0;else l=0;d=d-(l&1)|0;b=b?4:5;w=0;k=e;_=p;p=0;while(1){if((k|0)>=(i|0))break;if((_+m|0)>>>0<=d>>>0){m=w^(_r(o,m)|0);w=m;_=yi(a[u>>2]|0,a[c>>2]|0)|0;p=p|m}a[n+(k<<2)>>2]=w;m=b;k=k+1|0}u=r<<2;if(l?(t[u+p+(216+(f<<3))>>0]|0)!=(t[(u|2)+p+(216+(f<<3))>>0]|0):0)o=(_r(o,1)|0)<<1;else o=0;o=u+o|0;while(1){if((e|0)>=(i|0))break;_=n+(e<<2)|0;a[_>>2]=t[o+(a[_>>2]|0)+(216+(f<<3))>>0];e=e+1|0}h=s;return}function Li(e,i,r,t,n,f,o,s,u,c,d,b){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;var k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0;k=h;m=a[e+4>>2]|0;v=a[e+8>>2]|0;p=a[e+44>>2]|0;_=p<>2]|0;u=A?_:p;p=A?1:g;c=A?S-c|0:S;if((s|0)==2){if((o|0)==1){He(e,i,w,t,n,f,g,d,b);v=r+4|0;t=a[v>>2]|0;i=(m|0)/2|0;Ll(t+(i<<2)|0,w|0,_<<2|0)|0;_=e+64|0;e=e+60|0;g=0;while(1){if((g|0)>=(p|0)){r=0;break}S=(a[r>>2]|0)+((re(u,g)|0)<<2)|0;Zr(_,t+(i+g<<2)|0,S,a[e>>2]|0,m,c,p);g=g+1|0}while(1){if((r|0)>=(p|0))break;S=(a[v>>2]|0)+((re(u,r)|0)<<2)|0;Zr(_,w+(r<<2)|0,S,a[e>>2]|0,m,c,p);r=r+1|0}h=k;return}}else if((s|0)==1&(o|0)==2){s=a[r>>2]|0;o=(m|0)/2|0;He(e,i,w,t,n,f,g,d,b);He(e,i+(_<<2)|0,s+(o<<2)|0,t+(v<<2)|0,n,f,g,d,b);v=0;while(1){if((v|0)>=(_|0))break;S=w+(v<<2)|0;l[S>>2]=(+l[S>>2]+ +l[s+(o+v<<2)>>2])*.5;v=v+1|0}_=e+64|0;v=e+60|0;e=0;while(1){if((e|0)>=(p|0))break;S=(a[r>>2]|0)+((re(u,e)|0)<<2)|0;Zr(_,w+(e<<2)|0,S,a[v>>2]|0,m,c,p);e=e+1|0}h=k;return}A=e+64|0;S=e+60|0;T=0;do{He(e,i+((re(T,_)|0)<<2)|0,w,t+((re(T,v)|0)<<2)|0,n,f,g,d,b);o=r+(T<<2)|0;E=0;while(1){if((E|0)>=(p|0))break;y=(a[o>>2]|0)+((re(u,E)|0)<<2)|0;Zr(A,w+(E<<2)|0,y,a[S>>2]|0,m,c,p);E=E+1|0}T=T+1|0}while((T|0)<(s|0));h=k;return}function Oi(e){e=e|0;return e|0}function Ri(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0;t=h;h=h+16|0;n=t;a[n>>2]=r;e:do{switch(i|0){case 10008:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if((i|0)<1|(i|0)>2)e=25;else{a[e+12>>2]=i;e=24}break};case 10016:{r=a[n>>2]|0;f=a[r>>2]|0;a[n>>2]=r+4;a[e+28>>2]=f;e=24;break};case 4027:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if(!i)e=25;else{a[i>>2]=(a[e+4>>2]|0)/(a[e+16>>2]|0)|0;e=24}break};case 10007:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if(!i)e=25;else{e=e+40|0;a[i>>2]=a[e>>2];a[e>>2]=0;e=24}break};case 10012:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if((i|0)>=1?(i|0)<=(a[(a[e>>2]|0)+8>>2]|0):0){a[e+24>>2]=i;e=24}else e=25;break};case 4033:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if(!i)e=25;else{a[i>>2]=a[e+52>>2];e=24}break};case 10015:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if(!i)e=25;else{a[i>>2]=a[e>>2];e=24}break};case 10010:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if((i|0)>=0?(i|0)<(a[(a[e>>2]|0)+8>>2]|0):0){a[e+20>>2]=i;e=24}else e=25;break};case 4031:{f=a[n>>2]|0;i=a[f>>2]|0;a[n>>2]=f+4;if(!i)e=25;else{a[i>>2]=a[e+36>>2];e=24}break};case 4028:{n=a[e+8>>2]|0;i=re((a[e+4>>2]|0)+2072|0,n)|0;o=a[e>>2]|0;f=a[o+8>>2]|0;r=f<<1;i=i+r|0;r=i+r|0;yl(e+36|0,0,(vi(o,n)|0)+-36|0)|0;n=0;while(1){if((n|0)>=(f<<1|0)){e=24;break e}l[e+(r+n<<2)+84>>2]=-28.0;l[e+(i+n<<2)+84>>2]=-28.0;f=a[(a[e>>2]|0)+8>>2]|0;n=n+1|0}};default:{h=t;return}}}while(0);if((e|0)==24){h=t;return}else if((e|0)==25){h=t;return}}function Ni(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0;n=h;h=h+4112|0;t=n+4096|0;f=n;Xr(e,f,2048,i,r);tt(f+1440|0,f,1328,620,t,r);h=n;return 720-(a[t>>2]|0)|0}function Ci(e){e=e|0;var i=0;i=h;e=Pi($r()|0,e)|0;h=i;return e|0}function Pi(e,i){e=e|0;i=i|0;var r=0;r=((re(a[e+4>>2]|0,i)|0)<<2)+200+(i<<12)|0;i=r+((re(i*3|0,a[e+8>>2]|0)|0)<<2)|0;return i|0}function Bi(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0;n=h;t=Di(e,$r()|0,r,t)|0;if(t){r=t;h=n;return r|0}a[e+28>>2]=bi(i)|0;r=0;h=n;return r|0}function Di(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0;n=h;h=h+16|0;if((r|0)<0|(r|0)>2){t=-1;h=n;return t|0}if((e|0)==0|(i|0)==0){t=-7;h=n;return t|0}yl(e|0,0,Pi(i,r)|0)|0;a[e>>2]=i;a[e+4>>2]=r;a[e+8>>2]=r;a[e+28>>2]=1;a[e+32>>2]=0;a[e+36>>2]=a[i+12>>2];a[e+48>>2]=1;a[e+72>>2]=t;a[e+52>>2]=1;a[e+16>>2]=1;a[e+40>>2]=-1;a[e+44>>2]=0;a[e+12>>2]=0;a[e+24>>2]=5;a[e+60>>2]=24;$i(e,4028,n)|0;t=0;h=n;return t|0}function Ii(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var a=0,f=0,o=0.0,s=0,u=0.0,c=0.0,d=0.0,b=0,k=0;f=h;h=h+112|0;a=f;o=+l[i>>2];e:do{if((n|0)==1){l[a>>2]=o;r=1;while(1){if((r|0)>=(t|0))break e;c=o+-1.0;u=+l[i+(r<<2)>>2];u=c>u?c:u;l[a+(r<<2)>>2]=u;o=u;r=r+1|0}}else{c=+l[i+(r<<2)>>2];o=o>c?o:c;l[a>>2]=o;s=1;while(1){if((s|0)>=(t|0))break e;d=o+-1.0;u=+l[i+(s<<2)>>2];c=+l[i+(s+r<<2)>>2];k=u>c;b=d>(k?u:c);c=b|k?b?d:u:c;l[a+(s<<2)>>2]=c;o=c;s=s+1|0}}}while(0);i=t+-2|0;while(1){if((i|0)<=-1)break;k=a+(i<<2)|0;c=+l[k>>2];d=+l[a+(i+1<<2)>>2]+-1.0;l[k>>2]=c>d?c:d;i=i+-1|0}i=t+-1|0;r=0;o=0.0;s=2;e:while(1){while(1){if((s|0)<(i|0))break;r=r+1|0;if((r|0)<(n|0))s=2;else break e}c=+l[e+(s<<2)>>2];d=+l[a+(s<<2)>>2];d=(c<0.0?0.0:c)-(d<0.0?0.0:d);o=o+(d<0.0?0.0:d);s=s+1|0}k=o/+(re(t+-3|0,n)|0)>1.0&1;h=f;return k|0}function Ui(e,i,r,t,n,a,f,o){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;o=o|0;var s=0,u=0.0,c=0.0,d=0,b=0.0;s=h;u=+l[a>>2];c=+l[f>>2];do{if(!(+l[a+4>>2]==0.0)){a=(r|0)/(n|0)|0;if((n|0)!=1)d=9}else{if((n|0)!=1){a=(r|0)/(n|0)|0;d=9;break}if(!o)n=0;else{a=(r|0)/(n|0)|0;break}while(1){if((n|0)>=(r|0))break;b=+l[e+((re(n,t)|0)<<2)>>2]*32768.0;l[i+(n<<2)>>2]=b-c;c=u*b;n=n+1|0}l[f>>2]=c;h=s;return}}while(0);if((d|0)==9)yl(i|0,0,r<<2|0)|0;d=0;while(1){if((d|0)>=(a|0))break;l[i+((re(d,n)|0)<<2)>>2]=+l[e+((re(d,t)|0)<<2)>>2]*32768.0;d=d+1|0}e:do{if(!o)n=0;else{t=0;while(1){if((t|0)>=(a|0)){n=0;break e}e=i+((re(t,n)|0)<<2)|0;b=+l[e>>2];if(!(b>65536.0)){if(b<-65536.0)b=-65536.0}else b=65536.0;l[e>>2]=b;t=t+1|0}}}while(0);while(1){if((n|0)>=(r|0))break;d=i+(n<<2)|0;b=+l[d>>2];l[d>>2]=b-c;c=u*b;n=n+1|0}l[f>>2]=c;h=s;return}function Fi(e,i,r,t,f,o){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;var s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0.0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0,ue=0,he=0,de=0.0,be=0.0,ke=0,we=0,me=0,pe=0,_e=0.0,ve=0,ge=0,Te=0.0,Ae=0,Se=0,ye=0,Me=0,Le=0,Oe=0.0,Re=0.0,Ne=0;s=h;h=h+96|0;L=s+40|0;q=s+32|0;p=s+28|0;W=s+24|0;g=s+20|0;_=s+16|0;Y=s+12|0;N=s+8|0;C=s+4|0;G=s;b=a[e+4>>2]|0;m=a[e+8>>2]|0;a[p>>2]=15;l[W>>2]=0.0;a[g>>2]=0;a[Y>>2]=0;v=a[e>>2]|0;d=a[v+8>>2]|0;F=a[v+4>>2]|0;U=a[v+32>>2]|0;u=a[e+32>>2]|0;c=a[e+36>>2]|0;l[N>>2]=0.0;if((f|0)<2|(i|0)==0){Le=-1;h=s;return Le|0}j=e+28|0;V=re(a[j>>2]|0,r)|0;r=v+44|0;B=v+36|0;k=a[B>>2]|0;T=0;while(1){if((T|0)>(k|0)){e=-1;J=217;break}if((a[r>>2]<>2]<>2]|0,a[o+28>>2]|0)|0;R=K+4>>3}D=(f|0)<1275?f:1275;Z=D-R|0;H=e+44|0;f=a[e+40>>2]|0;if(a[H>>2]|0){if((f|0)==-1){f=-1;J=11}else{J=a[v>>2]|0;J=((re(f,V)|0)+(J>>4)|0)/(J>>3|0)|0;V=D;X=J>>6;D=J;J=15}}else J=11;if((J|0)==11){V=re(f,V)|0;if((f|0)!=-1){Q=a[v>>2]|0;Q=(((Q<<2)+((K|0)>1?V+K|0:V)|0)/(Q<<3|0)|0)-((a[e+48>>2]|0)!=0&1)|0;X=(D|0)<(Q|0);if(((X?D:Q)|0)<2){V=2;X=2}else{V=X?D:Q;X=X?D:Q}if((f|0)==-1){f=51e4;D=0}else{D=0;J=15}}else{V=D;f=51e4;X=D;D=0}}if((J|0)==15)f=f-(re((m*40|0)+20|0,(400>>>T)+-50|0)|0)|0;if($)Ar(L,t,V);else L=o;o=(D|0)>0;if(((o?(a[e+52>>2]|0)!=0:0)?(P=(K|0)==1?2:0,O=a[e+164>>2]|0,Le=(D<<1)-O>>6,(((P|0)>(Le|0)?P:Le)|0)<(Z|0)):0)?(ee=(D<<1)-O>>6,ee=(P|0)>(ee|0)?P:ee,(ee|0)<(Z|0)):0){V=R+ee|0;Dr(L,V)}else ee=Z;Q=V<<3;$=a[v+12>>2]|0;$=(c|0)>($|0)?$:c;oe=M+F|0;Z=re(b,oe)|0;O=Ee()|0;te=h;h=h+((4*Z|0)+15&-16)|0;Z=e+180|0;I=+l[Z>>2];P=re(m,M-F|0)|0;t=a[j>>2]|0;P=(P|0)/(t|0)|0;Re=+Vi(i,P);Re=I>Re?I:Re;I=+Vi(i+(P<<2)|0,(re(m,F)|0)/(t|0)|0);l[Z>>2]=I;I=Re>I?Re:I;Z=e+60|0;t=I<=1.0/+(1<>2]|0);P=t&1;if((K|0)==1){Or(L,P,15);if(t){if(o){Q=R+2|0;Q=(V|0)<(Q|0)?V:Q;Dr(L,Q);V=Q;X=Q;ee=2;Q=Q<<3}K=V<<3;Le=L+20|0;Me=a[Le>>2]|0;a[Le>>2]=Me+(K-(Gi(Me,a[L+28>>2]|0)|0))}else{P=0;K=1}}else P=0;t=e+16|0;ne=v+16|0;fe=I>65536.0;ae=0;do{Le=te+((re(ae,oe)|0)+F<<2)|0;Ui(i+(ae<<2)|0,Le,M,b,a[j>>2]|0,ne,e+(ae<<2)+148|0,((a[t>>2]|0)==0?0:fe)&1);ae=ae+1|0}while((ae|0)<(b|0));F=e+68|0;if((a[F>>2]|0)!=0&(ee|0)>3){if((u|0)==0&(P|0)==0)J=33;else t=0}else if((ee|0)>(m*12|0)&(u|0)==0&(P|0)==0)J=33;else t=0;if((J|0)==33)if((a[e+20>>2]|0)==0?(a[e+24>>2]|0)>4:0){if((a[e+116>>2]|0)==0|(T|0)==3)t=1;else t=(a[e+64>>2]|0)!=5010}else t=0;ne=e+100|0;i=a[ne>>2]|0;x=Wi(e,te,x,b,M,i,p,W,G,t&1,ee)|0;I=+l[W>>2];if(!(I>.4000000059604645)?!(+l[e+108>>2]>.4000000059604645):0)t=0;else J=39;do{if((J|0)==39){if((a[e+120>>2]|0)!=0?!(+l[e+124>>2]>.3):0){t=0;break}Oe=+(a[p>>2]|0);Re=+(a[e+104>>2]|0);t=Oe>Re*1.26|Oe>2]|0)+1|0;Le=32-(Sl(ye|0)|0)|0;Me=Le+-5|0;Nr(L,Me,6);Cr(L,ye-(16<>2]|0,3);Rr(L,i,304,2)}fe=e+24|0;if((a[fe>>2]|0)>0?(a[F>>2]|0)==0:0)ke=xi(te,oe,b,N,Y)|0;else ke=0;ue=(T|0)>0;e:do{if(ue?((Gi(a[L+20>>2]|0,a[L+28>>2]|0)|0)+3|0)<=(Q|0):0){if(ke){K=re(b,M)|0;le=h;h=h+((4*K|0)+15&-16)|0;K=h;h=h+((4*E|0)+15&-16)|0;me=h;h=h+((4*E|0)+15&-16)|0;ve=(z|0)==0;if(!ve){Le=(a[fe>>2]|0)>7;pe=Le&1;W=re(m,d)|0;oe=h;h=h+((4*W|0)+15&-16)|0;if(Le){Ki(v,0,te,le,m,b,T,a[j>>2]|0);We(v,le,K,$,m,T);_t(v,$,c,K,oe,m);de=+(T|0)*.5;G=0;while(1){if((G|0)>=(W|0)){we=z;G=0;break e}Le=oe+(G<<2)|0;l[Le>>2]=+l[Le>>2]+de;G=G+1|0}}else{we=z;G=0}}else{we=z;G=0;J=55}}else{G=0;J=53}}else{G=1;J=53}}while(0);if((J|0)==53){K=re(b,M)|0;le=h;h=h+((4*K|0)+15&-16)|0;K=h;h=h+((4*E|0)+15&-16)|0;me=h;h=h+((4*E|0)+15&-16)|0;ve=1;ke=0;we=0;J=55}if((J|0)==55){pe=re(m,d)|0;oe=h;h=h+((4*pe|0)+15&-16)|0;pe=0}Ki(v,we,te,le,m,b,T,a[j>>2]|0);W=(b|0)==2;if(W&(m|0)==1)a[Y>>2]=0;We(v,le,K,$,m,T);e:do{if(a[F>>2]|0){x=2;while(1){if((x|0)>=(c|0))break e;Le=K+(x<<2)|0;Oe=+l[Le>>2];Re=+l[K>>2]*9999999747378752.0e-20;Re=Oe>2]=Re;l[Le>>2]=Re>1.0000000036274937e-15?Re:1.0000000036274937e-15;x=x+1|0}}}while(0);_t(v,$,c,K,me,m);x=re(m,d)|0;se=h;h=h+((4*x|0)+15&-16)|0;yl(se|0,0,c<<2|0)|0;he=(u|0)==0;do{if(he?(ie=a[e+192>>2]|0,(ie|0)!=0):0){ge=a[F>>2]|0;if(ge){ie=(ge|0)==0;de=0.0;_e=0.0;be=0.0;break}ge=a[e+92>>2]|0;ge=(ge|0)<2?2:ge;ye=0;_e=0.0;be=0.0;Se=0;while(1){if((Se|0)>=(m|0))break;Ae=re(d,Se)|0;de=_e;Me=0;while(1){if((Me|0)>=(ge|0))break;_e=+l[ie+(Ae+Me<<2)>>2];do{if(_e<.25){if(!(_e>-2.0)){_e=-2.0;break}if(_e>0.0)J=76}else{_e=.25;J=76}}while(0);if((J|0)==76){J=0;_e=_e*.5}Le=Me+1|0;Ne=(n[U+(Le<<1)>>1]|0)-(n[U+(Me<<1)>>1]|0)|0;ye=ye+Ne|0;de=de+_e*+((Me<<1|1)-ge|0);be=be+_e*+(Ne|0);Me=Le}_e=de;Se=Se+1|0}de=be/+(ye|0)+.20000000298023224;be=_e*6.0/+(re(re(re(m,ge+-1|0)|0,ge+1|0)|0,ge)|0)*.5;if(be<.03099999949336052){if(!(be>-.03099999949336052))be=-.03099999949336052}else be=.03099999949336052;Se=(n[U+(ge<<1)>>1]|0)/2|0;J=0;while(1){Ae=J+1|0;if((n[U+(Ae<<1)>>1]|0)<(Se|0))J=Ae;else break}Ae=(m|0)==2;ye=0;Se=0;while(1){if((Se|0)>=(ge|0))break;_e=de+be*+(Se-J|0);Le=ie+(Se<<2)|0;do{if(Ae){Me=ie+(d+Se<<2)|0;if(+l[Le>>2]>+l[Me>>2]){Me=Le;break}}else Me=Le}while(0);Re=+l[Me>>2];_e=(Re<0.0?Re:0.0)-_e;if(_e>.25){l[se+(Se<<2)>>2]=_e+-.25;ye=ye+1|0}Se=Se+1|0}e:do{if((ye|0)>2){de=de+.25;if(de>0.0){yl(se|0,0,ge<<2|0)|0;be=0.0;de=0.0;break}else J=0;while(1){if((J|0)>=(ge|0))break e;Ne=se+(J<<2)|0;Re=+l[Ne>>2]+-.25;l[Ne>>2]=Re<0.0?0.0:Re;J=J+1|0}}}while(0);de=de+.20000000298023224;_e=be*64.0;J=98}else{de=0.0;_e=0.0;J=98}}while(0);if((J|0)==98){ie=(a[F>>2]|0)==0;if(ie){if(ve)Te=0.0;else Te=+(T|0)*.5;ge=(m|0)==2;Re=-10.0;be=0.0;ve=u;while(1){if((ve|0)>=(c|0))break;Re=Re+-1.0;Oe=+l[me+(ve<<2)>>2]-Te;Oe=Re>Oe?Re:Oe;do{if(ge){Re=+l[me+(ve+d<<2)>>2]-Te;if(Oe>Re)break;Oe=Re}}while(0);Re=Oe;be=be+Oe;ve=ve+1|0}ve=e+196|0;Te=+l[ve>>2];be=be/+(c-u|0)-Te;if(!(be<-1.5)){if(be>3.0)be=3.0}else be=-1.5;l[ve>>2]=Te+be*.019999999552965164}else be=0.0}if(!pe)Ll(oe|0,me|0,x<<2|0)|0;if(ue){ve=L+20|0;pe=L+28|0;do{if(((Gi(a[ve>>2]|0,a[pe>>2]|0)|0)+3|0)<=(Q|0)&(ke|0)==0){if((a[fe>>2]|0)>4^1|ie^1){ue=0;j=we}else{if(!(Ii(me,A,d,c,m)|0)){ue=0;j=we;break}Ki(v,z,te,le,m,b,T,a[j>>2]|0);We(v,le,K,$,m,T);_t(v,$,c,K,me,m);Te=+(T|0)*.5;j=0;while(1){if((j|0)>=(x|0))break;Ne=oe+(j<<2)|0;l[Ne>>2]=+l[Ne>>2]+Te;j=j+1|0}l[N>>2]=.20000000298023224;ue=1;j=z}}else{ue=ke;j=we}}while(0);if(((Gi(a[ve>>2]|0,a[pe>>2]|0)|0)+3|0)<=(Q|0))Or(L,ue,3)}else{ue=ke;j=we}te=re(m,M)|0;ie=h;h=h+((4*te|0)+15&-16)|0;Ke(v,le,ie,K,$,m,z);te=h;h=h+((4*d|0)+15&-16)|0;e:do{if((!((X|0)<(m*15|0)|he^1)?(a[fe>>2]|0)>1:0)?(a[F>>2]|0)==0:0){do{if((X|0)<40)le=24;else{if((X|0)<60){le=12;break}le=(X|0)<100?8:6}}while(0);Y=Hi(v,$,ue,te,le,ie,M,T,q,+l[N>>2],a[Y>>2]|0)|0;q=te+($+-1<<2)|0;le=$;while(1){if((le|0)>=(c|0))break e;a[te+(le<<2)>>2]=a[q>>2];le=le+1|0}}else J=132}while(0);e:do{if((J|0)==132){a[q>>2]=0;Y=0;while(1){if((Y|0)>=(c|0)){Y=0;break e}a[te+(Y<<2)>>2]=ue;Y=Y+1|0}}}while(0);q=h;h=h+((4*x|0)+15&-16)|0;st(v,u,c,$,me,A,Q,q,L,m,T,ee,a[e+12>>2]|0,e+84|0,(a[fe>>2]|0)>3&1,a[e+56>>2]|0,a[F>>2]|0);zi(u,c,ue,te,T,Y,L);le=L+20|0;Y=L+28|0;if(((Gi(a[le>>2]|0,a[Y>>2]|0)|0)+4|0)<=(Q|0)){e:do{if(!(a[F>>2]|0)){fe=a[fe>>2]|0;do{if((j|0)!=0|(fe|0)<3)J=141;else{if((ee|0)<(m*10|0))break;if(!he){J=141;break}Ne=e+80|0;z=qe(v,ie,e+88|0,a[Ne>>2]|0,e+96|0,ne,ae?0:1,$,m,z)|0;a[Ne>>2]=z;break e}}while(0);do{if((J|0)==141){if(fe)break;a[e+80>>2]=0;z=0;break e}}while(0);a[e+80>>2]=2;z=2}else{a[ne>>2]=0;a[e+80>>2]=2;z=2}}while(0);Rr(L,z,312,5)}z=h;h=h+((4*d|0)+15&-16)|0;J=e+52|0;Te=+Yi(me,oe,d,u,c,m,z,a[Z>>2]|0,a[v+56>>2]|0,ue,a[H>>2]|0,a[J>>2]|0,U,T,X,C,a[F>>2]|0,se);if(a[F>>2]|0){if((X|0)>26)H=8;else H=(X|0)/3|0;a[z>>2]=H}H=h;h=h+((4*d|0)+15&-16)|0;mi(v,H,T,m);Z=Q<<3;ee=6;ne=u;X=hr(L)|0;$=0;while(1){if((ne|0)>=(c|0))break;Q=ne+1|0;fe=(re(m,(n[U+(Q<<1)>>1]|0)-(n[U+(ne<<1)>>1]|0)|0)|0)<=((ae?48:fe)|0))oe=ae?48:fe;se=H+(ne<<2)|0;ae=z+(ne<<2)|0;ne=0;he=ee;fe=0;while(1){if((X+(he<<3)|0)>=(Z-$|0))break;if((ne|0)>=(a[se>>2]|0))break;Ne=(fe|0)<(a[ae>>2]|0);Or(L,Ne&1,he);X=hr(L)|0;if(!Ne)break;ne=ne+oe|0;he=1;fe=fe+1|0;$=$+oe|0}if(fe)ee=(ee|0)<3?2:ee+-1|0;a[ae>>2]=ne;ne=Q}U=(m|0)==2;if(U){if(T)a[g>>2]=qi(v,ie,T,M)|0;Q=e+188|0;ne=Ge(+((f|0)/1e3|0|0),a[Q>>2]|0)|0;a[Q>>2]=ne;ee=(u|0)>(ne|0);if((c|0)<((ee?u:ne)|0))ee=c;else ee=ee?u:ne;a[Q>>2]=ee}if((X+48|0)>(Z-$|0))Z=5;else{if(!(a[F>>2]|0))Z=ji(v,ie,me,c,T,m,M,e+120|0,e+184|0,+l[N>>2],a[e+188>>2]|0,_e,a[e+72>>2]|0)|0;else Z=5;Rr(L,Z,496,7);X=hr(L)|0}if(o){o=(a[B>>2]|0)-T|0;B=1275>>>(3-T|0);B=(V|0)<(B|0)?V:B;Q=D-((m*320|0)+160)|0;J=a[J>>2]|0;V=(J|0)==0;if(!V)Q=Q+(a[e+172>>2]>>o)|0;t=(Ji(v,e+120|0,Q,T,f,a[e+92>>2]|0,m,a[e+188>>2]|0,J,+l[e+184>>2],a[C>>2]|0,+l[N>>2],t,Te,a[e+64>>2]|0,a[F>>2]|0,(a[e+192>>2]|0)!=0&1,de,be)|0)+X|0;C=(X+$+63>>6)+2-R|0;J=t+32>>6;J=((C|0)>(J|0)?C:J)+R|0;J=((B|0)<(J|0)?B:J)-R|0;C=(P|0)==0;N=C?J:2;$=e+176|0;X=a[$>>2]|0;if((X|0)<970){a[$>>2]=X+1;de=1.0/+(X+21|0)}else de=.0010000000474974513;do{if(!V){Ne=e+164|0;a[Ne>>2]=(a[Ne>>2]|0)+((C?J<<6:128)-D);Ne=e+172|0;Le=e+168|0;Me=a[Le>>2]|0;D=Me+~~(de*+(((C?t-D|0:0)<>2]|0)-Me|0))|0;a[Le>>2]=D;a[Ne>>2]=0-D;D=e+164|0;o=a[D>>2]|0;if((o|0)>=0)break;if(C)C=(o|0)/-64|0;else C=0;a[D>>2]=0;N=N+C|0}}while(0);V=N+R|0;V=(B|0)<(V|0)?B:V;Dr(L,V)}N=h;h=h+((4*d|0)+15&-16)|0;C=h;h=h+((4*d|0)+15&-16)|0;D=h;h=h+((4*d|0)+15&-16)|0;B=V<<6;t=B-(hr(L)|0)+-1|0;R=(ue|0)==0;if((R^1)&(T|0)>1)o=(t|0)>=((T<<3)+16|0)?8:0;else o=0;J=t-o|0;if(!(a[e+120>>2]|0))$=c+-1|0;else{do{if((f|0)<(m*32e3|0))f=13;else{if((f|0)<(m*48e3|0)){f=16;break}if((f|0)<(m*6e4|0)){f=18;break}f=(f|0)<(m*8e4|0)?19:20}}while(0);$=a[e+144>>2]|0;$=($|0)>(f|0)?$:f}f=e+188|0;t=e+92|0;F=vt(v,u,c,z,H,Z,f,g,J,_,C,N,D,m,T,L,1,a[t>>2]|0,(a[F>>2]|0)==0?$:1)|0;z=a[t>>2]|0;do{if(!z)H=F;else{H=z+1|0;z=z+-1|0;J=(z|0)>(F|0);if((H|0)<((J?z:F)|0))break;H=J?z:F}}while(0);a[t>>2]=H;bt(v,u,c,A,q,N,L,m);H=h;h=h+((1*x|0)+15&-16)|0;if(U)U=ie+(M<<2)|0;else U=0;M=e+76|0;Je(1,v,u,c,ie,U,H,K,C,j,a[e+80>>2]|0,a[g>>2]|0,a[f>>2]|0,te,B-o|0,a[_>>2]|0,L,T,F,M,a[e+72>>2]|0);if(o)Cr(L,(a[e+116>>2]|0)<2&1,1);kt(v,u,c,A,q,N,D,(V<<3)-(Gi(a[le>>2]|0,a[Y>>2]|0)|0)|0,L,m);e:do{if(P){_=0;while(1){if((_|0)>=(x|0))break e;l[e+(r+_<<2)+200>>2]=-28.0;_=_+1|0}}}while(0);a[e+104>>2]=a[p>>2];l[e+108>>2]=I;a[e+112>>2]=i;if(W&(m|0)==1)Ll(e+(r+d<<2)+200|0,A|0,d<<2|0)|0;e:do{if(R){m=E<<2;Ll(y|0,S|0,m|0)|0;Ll(S|0,A|0,m|0)|0;m=0}else{m=0;while(1){if((m|0)>=(E|0)){m=0;break e}Ne=e+(w+m<<2)+200|0;Oe=+l[Ne>>2];Re=+l[e+(r+m<<2)+200>>2];l[Ne>>2]=Oe=(u|0)){_=c;break}Ne=p+_|0;l[e+(r+Ne<<2)+200>>2]=0.0;l[e+(k+Ne<<2)+200>>2]=-28.0;l[e+(w+Ne<<2)+200>>2]=-28.0;_=_+1|0}while(1){if((_|0)>=(d|0))break;Ne=p+_|0;l[e+(r+Ne<<2)+200>>2]=0.0;l[e+(k+Ne<<2)+200>>2]=-28.0;l[e+(w+Ne<<2)+200>>2]=-28.0;_=_+1|0}m=m+1|0}while((m|0)<(b|0));e=e+116|0;if(R&(G|0)==0)a[e>>2]=0;else a[e>>2]=(a[e>>2]|0)+1;a[M>>2]=a[Y>>2];Ir(L);Ne=(Zi(a[L+44>>2]|0)|0)==0;ce(O|0);Ne=Ne?V:-3;h=s;return Ne|0}function Gi(e,i){e=e|0;i=i|0;var r=0;r=h;i=(Sl(i|0)|0)+-32+e|0;h=r;return i|0}function Vi(e,i){e=e|0;i=i|0;var r=0.0,t=0,n=0.0,a=0,f=0.0;t=h;n=0.0;r=0.0;a=0;while(1){if((a|0)>=(i|0))break;f=+l[e+(a<<2)>>2];n=n>f?n:f;r=rf?n:f)}function Wi(e,i,r,t,n,f,o,s,u,c,d){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;var b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0.0,A=0,S=0.0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0.0,U=0,F=0;m=h;h=h+16|0;b=m+8|0;E=m;v=a[e>>2]|0;p=a[v+4>>2]|0;_=n+1024|0;k=re(_,t)|0;g=h;h=h+((4*k|0)+15&-16)|0;a[b>>2]=g;a[b+4>>2]=g+(_<<2);k=p+n|0;w=n<<2;A=0;while(1){Ll(g|0,r+(A<<10<<2)|0,4096)|0;Ll(g+4096|0,i+((re(A,k)|0)+p<<2)|0,w|0)|0;A=A+1|0;if((A|0)>=(t|0))break;g=a[b+(A<<2)>>2]|0}if(!c){a[E>>2]=15;_=e+104|0;c=15;T=0.0}else{g=Ee()|0;D=h;h=h+((4*(_>>1)|0)+15&-16)|0;c=e+72|0;Xr(b,D,_,t,a[c>>2]|0);tt(D+2048|0,D,n,979,E,a[c>>2]|0);a[E>>2]=1024-(a[E>>2]|0);_=e+104|0;T=+at(D,n,E,a[_>>2]|0,+l[e+108>>2],a[c>>2]|0);c=a[E>>2]|0;if((c|0)>1022){a[E>>2]=1022;c=1022}T=T*.699999988079071;E=a[e+56>>2]|0;if((E|0)>2){T=T*.5;if((E|0)>4)T=(E|0)>8?0.0:T*.5}ce(g|0)}g=a[_>>2]|0;D=c-g|0;I=(((D|0)>-1?D:0-D|0)*10|0)>(c|0)?.4000000059604645:.20000000298023224;if((d|0)<25)I=I+.10000000149011612;if((d|0)<35)I=I+.10000000149011612;d=e+108|0;S=+l[d>>2];if(S>.4000000059604645)I=I+-.10000000149011612;if(S>.550000011920929)I=I+-.10000000149011612;if(T<(I>.20000000298023224?I:.20000000298023224)){T=0.0;E=0;A=0}else{E=+K(+(T-S))<.10000000149011612;E=~~+x(+((E?S:T)*32.0/3.0+.5));A=E+-1|0;if((A|0)>7)A=7;else A=(E|0)<1?0:A;T=+(A+1|0)*.09375;E=1}y=v+44|0;L=p<<2;S=-T;M=e+112|0;v=v+60|0;R=(n|0)>1024;O=1024-n<<2;N=0;while(1){P=a[y>>2]|0;C=P-p|0;a[_>>2]=(g|0)>15?g:15;D=re(N,k)|0;B=e+((re(N,p)|0)<<2)+200|0;Ll(i+(D<<2)|0,B|0,L|0)|0;if((P|0)==(p|0)){P=D+p|0;g=a[b+(N<<2)>>2]|0}else{P=D+p|0;g=a[b+(N<<2)>>2]|0;F=a[_>>2]|0;I=-+l[d>>2];U=a[M>>2]|0;ki(i+(P<<2)|0,g+4096|0,F,F,C,I,I,U,U,0,0)}ki(i+(P+C<<2)|0,g+(C+1024<<2)|0,a[_>>2]|0,c,n-C|0,-+l[d>>2],S,a[M>>2]|0,f,a[v>>2]|0,p);Ll(B|0,i+(D+n<<2)|0,L|0)|0;P=N<<10;C=r+(P<<2)|0;if(R)Ol(C|0,g+(n<<2)|0,4096)|0;else{Ol(C|0,r+(P+n<<2)|0,O|0)|0;Ol(r+(P+1024-n<<2)|0,g+4096|0,w|0)|0}N=N+1|0;if((N|0)>=(t|0))break;g=a[_>>2]|0}l[s>>2]=T;a[o>>2]=c;a[u>>2]=A;h=m;return E|0}function xi(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var o=0,s=0,u=0,c=0.0,d=0.0,b=0,k=0,w=0,m=0,p=0,_=0.0,v=0.0,g=0,E=0,T=0.0,A=0,S=0.0;s=h;u=h;h=h+((4*i|0)+15&-16)|0;p=(i|0)/2|0;d=+(p|0);c=+(p|0);b=p+-5|0;k=(p*6|0)+-102|0;m=0;w=0;while(1){if((w|0)>=(r|0))break;g=re(w,i)|0;_=0.0;v=0.0;E=0;while(1){if((E|0)>=(i|0))break;S=+l[e+(E+g<<2)>>2];T=_+S;l[u+(E<<2)>>2]=T;_=v+T-S*2.0;v=S-T*.5;E=E+1|0}g=u+0|0;E=g+48|0;do{a[g>>2]=0;g=g+4|0}while((g|0)<(E|0));_=0.0;v=0.0;g=0;while(1){if((g|0)>=(p|0)){v=0.0;T=0.0;E=p;break}A=g<<1;S=+l[u+(A<<2)>>2];T=+l[u+((A|1)<<2)>>2];T=S*S+T*T;S=v+(T-v)*.0625;l[u+(g<<2)>>2]=S;_=_+T;v=S;g=g+1|0}while(1){g=E+-1|0;if((E|0)<=0)break;A=u+(g<<2)|0;T=T+(+l[A>>2]-T)*.125;l[A>>2]=T;if(v>T){E=g;continue}v=T;E=g}_=c/(+H(+(_*v*.5*d))+1.0000000036274937e-15)*64.0;g=12;E=0;while(1){if((g|0)>=(b|0))break;A=~~+x(+(_*+l[u+(g<<2)>>2]));if((A|0)>127)A=127;else A=(A|0)<0?0:A;g=g+4|0;E=E+(f[512+A>>0]|0)|0}g=(E<<8|0)/(k|0)|0;if((g|0)>(m|0)){a[n>>2]=w;m=g}w=w+1|0}u=(m|0)>200&1;c=+H(+ +(m*27|0))+-42.0;if(!(c<0.0)){if(!(c>163.0))o=22}else{c=0.0;o=22}if((o|0)==22)if(c*.006899999920278788+-.139<0.0){S=0.0;S=+H(+S);l[t>>2]=S;h=s;return u|0}if(c>163.0){S=.9856999502182007;S=+H(+S);l[t>>2]=S;h=s;return u|0}S=c*.006899999920278788+-.139;S=+H(+S);l[t>>2]=S;h=s;return u|0}function Ki(e,i,r,t,n,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0.0,E=0;u=h;d=a[e+4>>2]|0;c=a[e+44>>2]|0;if(!i){i=1;c=c<>2]|0)-o|0}else k=a[e+36>>2]|0;w=e+64|0;o=re(i,c)|0;b=o+d|0;p=e+60|0;v=0;do{m=re(v,b)|0;_=re(re(v,c)|0,i)|0;e=0;while(1){if((e|0)>=(i|0))break;E=r+(m+(re(e,c)|0)<<2)|0;Jr(w,E,t+(e+_<<2)|0,a[p>>2]|0,d,k,i);e=e+1|0}v=v+1|0}while((v|0)<(f|0));e:do{if((f|0)==2&(n|0)==1){r=0;while(1){if((r|0)>=(o|0))break e;E=t+(r<<2)|0;l[E>>2]=+l[E>>2]*.5+ +l[t+(o+r<<2)>>2]*.5;r=r+1|0}}}while(0);if((s|0)==1){h=u;return}r=(o|0)/(s|0)|0;g=+(s|0);s=o-r<<2;d=0;do{o=re(re(d,i)|0,c)|0;f=0;while(1){if((f|0)>=(r|0))break;E=t+(o+f<<2)|0;l[E>>2]=+l[E>>2]*g;f=f+1|0}yl(t+(o+r<<2)|0,0,s|0)|0;d=d+1|0}while((d|0)<(n|0));h=u;return}function Hi(e,i,r,f,o,s,l,u,c,d,b){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=+d;b=b|0;var k=0,w=0,m=0,p=0,_=0,v=0,g=0.0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0.0,B=0,D=0,I=0.0;k=h;h=h+16|0;v=k;d=.5-d;if(d<-.25)d=-.009999999776482582;else d=d*.03999999910593033;m=h;h=h+((4*i|0)+15&-16)|0;A=e+32|0;w=a[A>>2]|0;p=i+-1|0;w=(n[w+(i<<1)>>1]|0)-(n[w+(p<<1)>>1]|0)<>2]=0;y=re(b,l)|0;l=(r|0)==0;M=re(u,-2)|0;b=1<=(i|0))break;L=R+1|0;O=a[A>>2]|0;D=n[O+(R<<1)>>1]|0;O=(n[O+(L<<1)>>1]|0)-D|0;N=O<>u,b),g=+ir(E,N,S,d),g=(((B?O^1:0)&1)+u|0))break;if(l)_=D+1|0;else _=u-D+-1|0;je(T,N>>D,1<>2]=C;N=0}else{C=C<<1;a[m+(R<<2)>>2]=C;N=u}R=m+(R<<2)|0;a[c>>2]=(a[c>>2]|0)+(N-((C|0)/2|0));if(!O){R=L;continue}if(C){if((C|0)==(M|0))O=M;else{R=L;continue}}else O=0;a[R>>2]=O+-1;R=L}s=r<<2;A=0;while(1){if((A|0)>=2)break;E=s+(A<<1)|0;r=216+(u<<3)+E|0;E=(E|1)+(216+(u<<3))|0;b=0;c=l?o:0;T=1;while(1){if((T|0)>=(i|0))break;N=c+o|0;B=b+o|0;D=a[m+(T<<2)>>2]|0;C=D-(t[r>>0]<<1)|0;D=D-(t[E>>0]<<1)|0;b=((b|0)<(N|0)?b:N)+((C|0)>-1?C:0-C|0)|0;c=((B|0)<(c|0)?B:c)+((D|0)>-1?D:0-D|0)|0;T=T+1|0}a[v+(A<<2)>>2]=(b|0)<(c|0)?b:c;A=A+1|0}if((a[v+4>>2]|0)<(a[v>>2]|0)){if(l){v=0;_=32}else{l=0;v=1}}else{v=0;if(l)_=32;else l=0}if((_|0)==32)l=o;c=s+(v<<1)|0;_=216+(u<<3)+c|0;u=(c|1)+(216+(u<<3))|0;c=0;s=l;l=1;while(1){if((l|0)>=(i|0))break;r=s+o|0;E=w+(l<<2)|0;if((c|0)<(r|0)){a[E>>2]=0;r=c}else a[E>>2]=1;c=c+o|0;E=e+(l<<2)|0;if((c|0)<(s|0)){a[E>>2]=0;s=c}else a[E>>2]=1;D=a[m+(l<<2)>>2]|0;c=D-(t[_>>0]<<1)|0;D=D-(t[u>>0]<<1)|0;c=r+((c|0)>-1?c:0-c|0)|0;s=s+((D|0)>-1?D:0-D|0)|0;l=l+1|0}o=(c|0)>=(s|0)&1;a[f+(p<<2)>>2]=o;i=i+-2|0;while(1){if((i|0)<=-1)break;m=i+1|0;if((o|0)==1){o=a[e+(m<<2)>>2]|0;a[f+(i<<2)>>2]=o}else{o=a[w+(m<<2)>>2]|0;a[f+(i<<2)>>2]=o}i=i+-1|0}h=k;return v|0}function zi(e,i,r,n,f,o,s){e=e|0;i=i|0;r=r|0;n=n|0;f=f|0;o=o|0;s=s|0;var l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0;l=h;b=a[s+4>>2]<<3;c=s+20|0;d=s+28|0;v=Gi(a[c>>2]|0,a[d>>2]|0)|0;k=(r|0)!=0;_=k?2:4;if((f|0)>0)u=(v+_+1|0)>>>0<=b>>>0;else u=0;b=b-(u&1)|0;k=k?4:5;m=0;w=e;p=0;while(1){if((w|0)>=(i|0))break;g=n+(w<<2)|0;if((v+_|0)>>>0>b>>>0)a[g>>2]=m;else{Or(s,a[g>>2]^m,_);v=Gi(a[c>>2]|0,a[d>>2]|0)|0;g=a[g>>2]|0;m=g;p=p|g}_=k;w=w+1|0}c=r<<2;if(u?(t[c+p+(216+(f<<3))>>0]|0)!=(t[(c|2)+p+(216+(f<<3))>>0]|0):0){Or(s,o,1);u=o<<1}else u=0;u=c+u|0;while(1){if((e|0)>=(i|0))break;g=n+(e<<2)|0;a[g>>2]=t[u+(a[g>>2]|0)+(216+(f<<3))>>0];e=e+1|0}h=l;return}function Yi(e,i,r,t,f,o,s,u,c,d,b,k,w,m,p,_,v,g){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;_=_|0;v=v|0;g=g|0;var E=0,T=0,A=0,S=0.0,y=0,M=0,L=0,O=0,R=0,N=0.0,C=0,P=0,B=0.0,D=0.0,I=0,U=0,F=0;T=h;P=re(o,r)|0;A=h;h=h+((4*P|0)+15&-16)|0;y=h;h=h+((4*P|0)+15&-16)|0;yl(s|0,0,r<<2|0)|0;S=+(9-u|0);u=0;while(1){if((u|0)>=(f|0)){c=0;S=-31.899999618530273;u=0;break}P=u+5|0;l[y+(u<<2)>>2]=+(n[c+(u<<1)>>1]|0)*.0625+.5+S-+l[20656+(u<<2)>>2]+ +(re(P,P)|0)*.006200000178068876;u=u+1|0}e:while(1){while(1){if((u|0)<(f|0))break;c=c+1|0;if((c|0)<(o|0))u=0;else break e}N=+l[e+((re(c,r)|0)+u<<2)>>2];N=N-+l[y+(u<<2)>>2];S=S>N?S:N;u=u+1|0}if(!((p|0)>50&(m|0)>0&(v|0)==0)){P=0;a[_>>2]=P;h=T;return+S}c=f+-2|0;M=f+-1|0;v=0;O=0;do{u=re(v,r)|0;L=A+(u<<2)|0;R=i+(u<<2)|0;N=+l[R>>2];l[L>>2]=N;C=1;while(1){if((C|0)>=(f|0)){P=O;break}P=u+C|0;B=+l[i+(P<<2)>>2];P=B>+l[i+(P+-1<<2)>>2]+.5?C:O;D=N+1.5;B=D>2]=B;N=B;O=P;C=C+1|0}while(1){C=P+-1|0;if((P|0)<=0){C=2;break}I=A+(u+C<<2)|0;N=+l[I>>2];B=+l[A+(u+P<<2)>>2]+2.0;D=+l[i+(u+C<<2)>>2];F=B>2]=U|F?U?N:B:D;P=C}while(1){if((C|0)>=(c|0))break;F=A+(u+C<<2)|0;B=+l[F>>2];D=+Qi(i+(u+C+-2<<2)|0)+-1.0;l[F>>2]=B>D?B:D;C=C+1|0}D=+er(R)+-1.0;B=+l[L>>2];l[L>>2]=B>D?B:D;L=A+(u+1<<2)|0;B=+l[L>>2];l[L>>2]=B>D?B:D;D=+er(i+(u+f+-3<<2)|0)+-1.0;L=A+(u+c<<2)|0;B=+l[L>>2];l[L>>2]=B>D?B:D;L=A+(u+M<<2)|0;B=+l[L>>2];l[L>>2]=B>D?B:D;L=0;while(1){if((L|0)>=(f|0))break;F=A+(u+L<<2)|0;B=+l[F>>2];D=+l[y+(L<<2)>>2];l[F>>2]=B>D?B:D;L=L+1|0}v=v+1|0}while((v|0)<(o|0));e:do{if((o|0)==2){i=t;while(1){if((i|0)>=(f|0)){e=t;break e}I=i+r|0;U=A+(I<<2)|0;D=+l[U>>2];F=A+(i<<2)|0;B=+l[F>>2]+-4.0;B=D>B?D:B;l[U>>2]=B;D=+l[F>>2];B=B+-4.0;B=D>B?D:B;l[F>>2]=B;B=+l[e+(i<<2)>>2]-B;D=+l[e+(I<<2)>>2]-+l[U>>2];l[F>>2]=((B<0.0?0.0:B)+(D<0.0?0.0:D))*.5;i=i+1|0}}else{r=t;while(1){if((r|0)>=(f|0)){e=t;break e}F=A+(r<<2)|0;D=+l[e+(r<<2)>>2]-+l[F>>2];l[F>>2]=D<0.0?0.0:D;r=r+1|0}}}while(0);while(1){if((e|0)>=(f|0))break;F=A+(e<<2)|0;B=+l[F>>2];D=+l[g+(e<<2)>>2];l[F>>2]=B>D?B:D;e=e+1|0}b=(b|0)==0;e:do{if(((b^1)&(k|0)==0^1)&(d|0)==0){g=t;while(1){if((g|0)>=(f|0))break e;F=A+(g<<2)|0;l[F>>2]=+l[F>>2]*.5;g=g+1|0}}}while(0);p=(p|0)/4|0;k=(k|0)==0;d=(d|0)==0;g=0;while(1){if((t|0)>=(f|0)){E=48;break}if((t|0)>=8){if((t|0)>11){F=A+(t<<2)|0;N=+l[F>>2]*.5;l[F>>2]=N}else E=36}else{E=A+(t<<2)|0;l[E>>2]=+l[E>>2]*2.0;E=36}if((E|0)==36){E=0;N=+l[A+(t<<2)>>2]}N=N<4.0?N:4.0;l[A+(t<<2)>>2]=N;e=t+1|0;i=(re((n[w+(e<<1)>>1]|0)-(n[w+(t<<1)>>1]|0)|0,o)|0)<=6){if((i|0)>48){F=~~(N*8.0);r=F;i=((re(F,i)|0)<<3|0)/8|0;break}else{i=~~(N*+(i|0)/6.0);r=i;i=i*48|0;break}}else{F=~~N;r=F;i=(re(F,i)|0)<<3}}while(0);if(!(!b?k|d^1:0))E=45;if((E|0)==45?(E=0,(g+i>>6|0)>(p|0)):0)break;a[s+(t<<2)>>2]=r;t=e;g=g+i|0}if((E|0)==48){a[_>>2]=g;h=T;return+S}F=p<<6;a[s+(t<<2)>>2]=F-g;a[_>>2]=F;h=T;return+S}function qi(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,u=0.0,c=0,d=0.0,b=0,k=0.0,w=0.0;f=h;e=e+32|0;c=0;u=1.0000000036274937e-15;d=1.0000000036274937e-15;e:while(1){if((c|0)>=13)break;b=a[e>>2]|0;o=c+1|0;s=n[b+(o<<1)>>1]<>1]<=(s|0)){c=o;continue e}w=+l[i+(c<<2)>>2];k=+l[i+(c+t<<2)>>2];c=c+1|0;u=u+(+K(+w)+ +K(+k));d=d+(+K(+(w+k))+ +K(+(w-k)))}}b=n[(a[e>>2]|0)+26>>1]<+(b|0)*u|0}function ji(e,i,r,t,f,o,s,u,c,d,b,k,w){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=+d;b=b|0;k=+k;w=w|0;var m=0,p=0.0,_=0.0,v=0.0,g=0,E=0,T=0,A=0,S=0,y=0.0,M=0.0;w=h;if((o|0)==2){m=e+32|0;g=0;p=0.0;while(1){if((g|0)>=8)break;A=a[m>>2]|0;E=n[A+(g<<1)>>1]|0;S=E<>1]|0)-E<1.0?1.0:_;p=_;g=8;while(1){if((g|0)>=(b|0))break;A=a[m>>2]|0;S=n[A+(g<<1)>>1]|0;T=S<>1]|0)-S<1.0?1.0:y;p=+ee(+(1.0010000467300415-_*_))*1.4426950408889634;v=p*.5;_=+ee(+(1.0010000467300415-y*y))*1.4426950408889634;p=p*.75;if(p<-4.0)p=1.0;else p=p+5.0;M=+l[c>>2]+.25;y=-((v>_?v:_)*.5);l[c>>2]=M=(c|0))break;_=_+ +l[r+(s+(re(i,a[e>>2]|0)|0)<<2)>>2]*+((s<<1)+2-t|0);s=s+1|0}i=i+1|0}while((i|0)<(o|0));_=(_/+(re(c,o)|0)+1.0)/6.0;if(!(_>2.0)){if(_<-2.0)_=-2.0}else _=2.0;k=p-_-k-d*2.0;if(a[u>>2]|0){d=(+l[u+8>>2]+.05000000074505806)*2.0;if(!(d>2.0)){if(d<-2.0)d=-2.0}else d=2.0;k=k-d}u=~~+x(+(k+.5));if((u|0)>10){h=w;return 10}else{h=w;return((u|0)<0?0:u)|0}return 0}function Ji(e,i,r,t,f,o,s,u,c,d,b,k,w,m,p,_,v,g,E){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=+d;b=b|0;k=+k;w=w|0;m=+m;p=p|0;_=_|0;v=v|0;g=+g;E=+E;var T=0,A=0,S=0,y=0.0,M=0,L=0,O=0,R=0,N=0.0;T=h;A=a[e+8>>2]|0;e=a[e+32>>2]|0;L=(o|0)==0?A:o;R=n[e+(L<<1)>>1]|0;o=R<<16>>16<(u|0))S=n[e+(u<<1)>>1]|0;else S=R;o=o+(S<<16>>16<>2]|0)==0;if(!S?(y=+l[i+16>>2],y<.4):0)M=r-~~(+(o<<3|0)*(.4000000059604645-y))|0;else M=r;if(O){if((L|0)>(u|0))R=n[e+(u<<1)>>1]|0;else u=L;u=(R<<16>>16<>2]+-.15000000596046448;if(d<0.0)y=-.09000000357627869;else y=d+-.09000000357627869;d=+(o<<3|0);b=b+~~(d*1.2000000476837158*y)|0;if(w)b=b+~~(d*.800000011920929)|0}v=(v|0)==0;if((v^1)&(_|0)==0){R=b+~~(+(o<<3|0)*g)|0;b=(b|0)/4|0;b=(b|0)>(R|0)?b:R}R=~~(+((re(n[e+(A+-2<<1)>>1]<>2;A=(R|0)>(A|0)?R:A;A=(b|0)<(A|0)?b:A;if((v^1)&(_|0)==0){R=A;O=r<<1;L=(O|0)<(R|0);R=L?O:R;h=T;return R|0}_=(c|0)==0;if(_^1|(f|0)<64e3){m=+(f+-32e3|0)*30517578125.0e-15;m=m<0.0?0.0:m;if(!_?!(m<.6700000166893005):0)m=.6700000166893005;A=~~(m*+(A-r|0))+r|0}if(!(v&k<.20000000298023224)){R=A;O=r<<1;L=(O|0)<(R|0);R=L?O:R;h=T;return R|0}f=96e3-f|0;if((f|0)<=32e3){if((f|0)<0)k=0.0;else k=+(f|0)*3099999958067201.0e-21}else k=.09919999539852142;R=A+~~(k*E*+(A|0))|0;O=r<<1;L=(O|0)<(R|0);R=L?O:R;h=T;return R|0}function Zi(e){e=e|0;return e|0}function $i(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0;t=h;h=h+16|0;n=t;a[n>>2]=r;do{switch(i|0){case 4020:{o=a[n>>2]|0;s=a[o>>2]|0;a[n>>2]=o+4;a[e+52>>2]=s;e=37;break};case 10012:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)>=1?(i|0)<=(a[(a[e>>2]|0)+8>>2]|0):0){a[e+36>>2]=i;e=37}else e=38;break};case 4037:{o=a[n>>2]|0;s=a[o>>2]|0;a[n>>2]=o+4;a[s>>2]=a[e+60>>2];e=37;break};case 4010:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)<0|(i|0)>10)e=38;else{a[e+24>>2]=i;e=37}break};case 4036:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)<8|(i|0)>24)e=38;else{a[e+60>>2]=i;e=37}break};case 4040:{o=a[n>>2]|0;s=a[o>>2]|0;a[n>>2]=o+4;a[e+64>>2]=s;e=37;break};case 4006:{o=a[n>>2]|0;s=a[o>>2]|0;a[n>>2]=o+4;a[e+44>>2]=s;e=37;break};case 10008:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)<1|(i|0)>2)e=38;else{a[e+8>>2]=i;e=37}break};case 10015:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if(!i)e=38;else{a[i>>2]=a[e>>2];e=37}break};case 4028:{f=e+4|0;n=a[f>>2]|0;i=a[e>>2]|0;s=a[i+8>>2]|0;r=(a[i+4>>2]|0)+1024+s|0;o=re(n,r)|0;s=re(n,r+s|0)|0;yl(e+76|0,0,(Pi(i,n)|0)+-76|0)|0;r=0;while(1){if((r|0)>=(re(n,a[i+8>>2]|0)|0))break;l[e+(s+r<<2)+200>>2]=-28.0;l[e+(o+r<<2)+200>>2]=-28.0;i=a[e>>2]|0;n=a[f>>2]|0;r=r+1|0}a[e+172>>2]=0;l[e+84>>2]=1.0;a[e+80>>2]=2;a[e+88>>2]=256;a[e+96>>2]=0;a[e+100>>2]=0;e=37;break};case 10010:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)>=0?(i|0)<(a[(a[e>>2]|0)+8>>2]|0):0){a[e+32>>2]=i;e=37}else e=38;break};case 4014:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)<0|(i|0)>100)e=38;else{a[e+56>>2]=i;e=37}break};case 10022:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if(!i)e=37;else{e=e+120|0;a[e+0>>2]=a[i+0>>2];a[e+4>>2]=a[i+4>>2];a[e+8>>2]=a[i+8>>2];a[e+12>>2]=a[i+12>>2];a[e+16>>2]=a[i+16>>2];a[e+20>>2]=a[i+20>>2];a[e+24>>2]=a[i+24>>2];e=37}break};case 10024:{o=a[n>>2]|0;s=a[o>>2]|0;a[n>>2]=o+4;a[e+68>>2]=s;e=37;break};case 10026:{o=a[n>>2]|0;s=a[o>>2]|0;a[n>>2]=o+4;a[e+192>>2]=s;e=37;break};case 10002:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)<0|(i|0)>2)e=38;else{a[e+20>>2]=(i|0)<2&1;a[e+12>>2]=(i|0)==0&1;e=37}break};case 4031:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if(!i)e=38;else{a[i>>2]=a[e+76>>2];e=37}break};case 10016:{o=a[n>>2]|0;s=a[o>>2]|0;a[n>>2]=o+4;a[e+48>>2]=s;e=37;break};case 4002:{s=a[n>>2]|0;i=a[s>>2]|0;a[n>>2]=s+4;if((i|0)>=501|(i|0)==-1){s=(a[e+4>>2]|0)*26e4|0;a[e+40>>2]=(i|0)<(s|0)?i:s;e=37}else e=38;break};default:{s=-5;h=t;return s|0}}}while(0);if((e|0)==37){s=0;h=t;return s|0}else if((e|0)==38){s=-1;h=t;return s|0}return 0}function Xi(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0.0,a=0,f=0.0;t=h;a=0;n=0.0;while(1){if((a|0)>=(r|0))break;f=n+ +l[e+(a<<2)>>2]*+l[i+(a<<2)>>2];a=a+1|0;n=f}h=t;return+n}function Qi(e){e=e|0;var i=0,r=0.0,t=0.0,n=0.0,a=0.0,f=0.0,o=0.0,s=0;i=h;r=+l[e+8>>2];o=+l[e>>2];t=+l[e+4>>2];s=o>t;f=s?o:t;o=s?t:o;t=+l[e+12>>2];a=+l[e+16>>2];e=t>a;n=e?t:a;t=e?a:t;e=o>t;a=e?n:f;t=e?o:t;n=e?f:n;do{if(r>a){if(a>2];n=+l[e+4>>2];a=r>n;t=a?r:n;r=a?n:r;n=+l[e+8>>2];if(!(t=(i|0))break;a=a+ +K(+ +l[e+(f<<2)>>2]);f=f+1|0}h=n;return+(a+ +(r|0)*t*a)}function rr(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0.0,a=0,f=0,o=0.0,s=0,u=0,c=0.0,d=0,b=0.0,k=0.0,w=0;t=h;n=+l[i>>2];a=0;while(1){if((a|0)>=(r|0))break;l[e+(a<<2)>>2]=0.0;a=a+1|0}if(+l[i>>2]!=0.0)a=0;else{h=t;return}while(1){if((a|0)<(r|0)){o=0.0;f=0}else{i=12;break}while(1){if((f|0)>=(a|0))break;o=o+ +l[e+(f<<2)>>2]*+l[i+(a-f<<2)>>2];f=f+1|0}s=a;a=a+1|0;c=(o+ +l[i+(a<<2)>>2])/n;o=-c;l[e+(s<<2)>>2]=o;u=a>>1;s=s+-1|0;f=0;while(1){if((f|0)>=(u|0))break;w=e+(f<<2)|0;b=+l[w>>2];d=e+(s-f<<2)|0;k=+l[d>>2];l[w>>2]=b+k*o;l[d>>2]=k+b*o;f=f+1|0}n=n-c*c*n;if(n<+l[i>>2]*.0010000000474974513){i=12;break}}if((i|0)==12){h=t;return}}function tr(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0,k=0.0,w=0,m=0.0;s=h;h=h+112|0;u=s+96|0;f=s;o=h;h=h+((4*(t+24|0)|0)+15&-16)|0;c=0;while(1){if((c|0)>=24){i=0;break}l[f+(c<<2)>>2]=+l[i+(24-c+-1<<2)>>2];c=c+1|0}while(1){if((i|0)>=24){i=0;break}l[o+(i<<2)>>2]=+l[n+(24-i+-1<<2)>>2];i=i+1|0}while(1){if((i|0)>=(t|0)){i=0;break}l[o+(i+24<<2)>>2]=+l[e+(i<<2)>>2];i=i+1|0}while(1){if((i|0)>=24)break;l[n+(i<<2)>>2]=+l[e+(t-i+-1<<2)>>2];i=i+1|0}i=t+-3|0;c=u+4|0;d=u+8|0;b=u+12|0;n=0;while(1){if((n|0)>=(i|0))break;a[u+0>>2]=0;a[u+4>>2]=0;a[u+8>>2]=0;a[u+12>>2]=0;nr(f,o+(n<<2)|0,u,24);l[r+(n<<2)>>2]=+l[e+(n<<2)>>2]+ +l[u>>2];w=n|1;l[r+(w<<2)>>2]=+l[e+(w<<2)>>2]+ +l[c>>2];w=n|2;l[r+(w<<2)>>2]=+l[e+(w<<2)>>2]+ +l[d>>2];w=n|3;l[r+(w<<2)>>2]=+l[e+(w<<2)>>2]+ +l[b>>2];n=n+4|0}while(1){if((n|0)<(t|0)){u=0;k=0.0}else break;while(1){if((u|0)>=24)break;m=k+ +l[f+(u<<2)>>2]*+l[o+(n+u<<2)>>2];u=u+1|0;k=m}l[r+(n<<2)>>2]=+l[e+(n<<2)>>2]+k;n=n+1|0}h=s;return}function nr(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0.0,u=0.0,c=0,d=0.0,b=0.0,k=0,w=0,m=0.0,p=0.0,_=0.0,v=0.0,g=0.0,E=0.0,T=0.0,A=0.0;o=h;c=t+-3|0;n=r+4|0;a=r+8|0;f=r+12|0;k=i+12|0;w=0;s=+l[i>>2];d=+l[i+4>>2];u=+l[i+8>>2];b=0.0;while(1){if((w|0)>=(c|0))break;g=+l[e>>2];b=+l[k>>2];A=+l[r>>2]+g*s;l[r>>2]=A;T=+l[n>>2]+g*d;l[n>>2]=T;E=+l[a>>2]+g*u;l[a>>2]=E;g=+l[f>>2]+g*b;l[f>>2]=g;v=+l[e+4>>2];_=+l[k+4>>2];A=A+v*d;l[r>>2]=A;T=T+v*u;l[n>>2]=T;E=E+v*b;l[a>>2]=E;v=g+v*_;l[f>>2]=v;g=+l[e+8>>2];p=+l[k+8>>2];A=A+g*u;l[r>>2]=A;T=T+g*b;l[n>>2]=T;E=E+g*_;l[a>>2]=E;g=v+g*p;l[f>>2]=g;v=+l[e+12>>2];m=+l[k+12>>2];l[r>>2]=A+v*b;l[n>>2]=T+v*_;l[a>>2]=E+v*p;l[f>>2]=g+v*m;e=e+16|0;k=k+16|0;w=w+4|0;s=_;d=p;u=m}c=w|1;if((w|0)<(t|0)){A=+l[e>>2];b=+l[k>>2];l[r>>2]=+l[r>>2]+A*s;l[n>>2]=+l[n>>2]+A*d;l[a>>2]=+l[a>>2]+A*u;l[f>>2]=+l[f>>2]+A*b;e=e+4|0;k=k+4|0}if((c|0)<(t|0)){A=+l[e>>2];s=+l[k>>2];l[r>>2]=+l[r>>2]+A*d;l[n>>2]=+l[n>>2]+A*u;l[a>>2]=+l[a>>2]+A*b;l[f>>2]=+l[f>>2]+A*s;e=e+4|0;k=k+4|0}if((c+1|0)>=(t|0)){h=o;return}T=+l[e>>2];A=+l[k>>2];l[r>>2]=+l[r>>2]+T*u;l[n>>2]=+l[n>>2]+T*b;l[a>>2]=+l[a>>2]+T*s;l[f>>2]=+l[f>>2]+T*A;h=o;return}function ar(e,i,r,t,n,a){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;var f=0,o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0.0,_=0,v=0.0,g=0.0,E=0,T=0.0,A=0;a=h;h=h+112|0;s=a+96|0;o=a;u=t+24|0;f=h;h=h+((4*u|0)+15&-16)|0;c=0;while(1){if((c|0)>=24){c=0;break}l[o+(c<<2)>>2]=+l[i+(24-c+-1<<2)>>2];c=c+1|0}while(1){if((c|0)>=24)break;l[f+(c<<2)>>2]=-+l[n+(24-c+-1<<2)>>2];c=c+1|0}while(1){if((c|0)>=(u|0))break;l[f+(c<<2)>>2]=0.0;c=c+1|0}b=t+-3|0;k=s+4|0;w=s+8|0;m=s+12|0;c=i+4|0;d=i+8|0;u=0;while(1){if((u|0)>=(b|0))break;l[s>>2]=+l[e+(u<<2)>>2];A=u|1;l[k>>2]=+l[e+(A<<2)>>2];E=u|2;l[w>>2]=+l[e+(E<<2)>>2];_=u|3;l[m>>2]=+l[e+(_<<2)>>2];nr(o,f+(u<<2)|0,s,24);T=+l[s>>2];p=-T;l[f+(u+24<<2)>>2]=p;l[r+(u<<2)>>2]=T;T=+l[k>>2]+ +l[i>>2]*p;l[k>>2]=T;v=-T;l[f+(u+25<<2)>>2]=v;l[r+(A<<2)>>2]=T;T=+l[w>>2]+ +l[i>>2]*v+ +l[c>>2]*p;l[w>>2]=T;g=-T;l[f+(u+26<<2)>>2]=g;l[r+(E<<2)>>2]=T;p=+l[m>>2]+ +l[i>>2]*g+ +l[c>>2]*v+ +l[d>>2]*p;l[m>>2]=p;l[f+(u+27<<2)>>2]=-p;l[r+(_<<2)>>2]=p;u=u+4|0}while(1){if((u|0)>=(t|0)){e=0;break}i=0;p=+l[e+(u<<2)>>2];while(1){if((i|0)>=24)break;T=p-+l[o+(i<<2)>>2]*+l[f+(u+i<<2)>>2];i=i+1|0;p=T}l[f+(u+24<<2)>>2]=p;l[r+(u<<2)>>2]=p;u=u+1|0}while(1){if((e|0)>=24)break;l[n+(e<<2)>>2]=+l[r+(t-e+-1<<2)>>2];e=e+1|0}h=a;return}function fr(e,i,r,t,n,a,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;var o=0,s=0,u=0,c=0,d=0.0,b=0;s=h;o=a-n|0;u=h;h=h+((4*a|0)+15&-16)|0;e:do{if(t){c=0;while(1){if((c|0)>=(a|0)){c=0;break}l[u+(c<<2)>>2]=+l[e+(c<<2)>>2];c=c+1|0}while(1){if((c|0)>=(t|0)){e=u;break e}d=+l[r+(c<<2)>>2];l[u+(c<<2)>>2]=+l[e+(c<<2)>>2]*d;b=a-c+-1|0;l[u+(b<<2)>>2]=+l[e+(b<<2)>>2]*d;c=c+1|0}}}while(0);et(e,e,i,o,n+1|0,f);f=0;while(1){if((f|0)>(n|0))break;d=0.0;t=f+o|0;while(1){if((t|0)>=(a|0))break;d=d+ +l[e+(t<<2)>>2]*+l[e+(t-f<<2)>>2];t=t+1|0}b=i+(f<<2)|0;l[b>>2]=+l[b>>2]+d;f=f+1|0}h=s;return}function or(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0;n=h;f=sr(i,e)|0;e=r+1|0;Nr(t,f,(a[(a[640+(((i|0)<(r|0)?i:r)<<2)>>2]|0)+(((i|0)>(r|0)?i:r)<<2)>>2]|0)+(a[(a[640+(((r|0)<(i|0)?e:i)<<2)>>2]|0)+(((e|0)<(i|0)?i:e)<<2)>>2]|0)|0);h=n;return}function sr(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0;r=h;n=e+-1|0;t=a[i+(n<<2)>>2]|0;o=t>>>31;t=(t|0)>-1?t:0-t|0;do{n=n+-1|0;f=e-n|0;o=o+(a[(a[640+(((f|0)<(t|0)?f:t)<<2)>>2]|0)+(((f|0)>(t|0)?f:t)<<2)>>2]|0)|0;s=a[i+(n<<2)>>2]|0;t=t+((s|0)>-1?s:0-s|0)|0;if((s|0)<0){s=t+1|0;o=o+(a[(a[640+(((f|0)<(s|0)?f:s)<<2)>>2]|0)+(((f|0)>(s|0)?f:s)<<2)>>2]|0)|0}}while((n|0)>0);h=r;return o|0}function lr(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0.0,f=0,o=0;f=h;o=r+1|0;n=+ur(i,r,gr(t,(a[(a[640+(((i|0)<(r|0)?i:r)<<2)>>2]|0)+(((i|0)>(r|0)?i:r)<<2)>>2]|0)+(a[(a[640+(((r|0)<(i|0)?o:i)<<2)>>2]|0)+(((o|0)<(i|0)?i:o)<<2)>>2]|0)|0)|0,e);h=f;return+n}function ur(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0.0,o=0,s=0,l=0,u=0,c=0.0;n=h;f=0.0;while(1){if((e|0)<=2)break;do{if((i|0)<(e|0)){o=a[(a[640+(i<<2)>>2]|0)+(e<<2)>>2]|0;s=a[(a[640+(i+1<<2)>>2]|0)+(e<<2)>>2]|0;if(o>>>0<=r>>>0&r>>>0>>0){a[t>>2]=0;r=r-o|0;break}u=r>>>0>=s>>>0;o=u<<31>>31;r=r-(u?s:0)|0;s=i;do{s=s+-1|0;l=a[(a[640+(s<<2)>>2]|0)+(e<<2)>>2]|0}while(l>>>0>r>>>0);i=i-s+o^o;a[t>>2]=i<<16>>16;c=+((i&65535)<<16>>16);r=r-l|0;i=s;f=f+c*c}else{l=a[640+(e<<2)>>2]|0;u=a[l+(i+1<<2)>>2]|0;s=r>>>0>=u>>>0;o=s<<31>>31;r=r-(s?u:0)|0;e:do{if((a[l+(e<<2)>>2]|0)>>>0>r>>>0){s=e;do{s=s+-1|0;u=a[(a[640+(s<<2)>>2]|0)+(e<<2)>>2]|0}while(u>>>0>r>>>0)}else{s=i;while(1){u=a[l+(s<<2)>>2]|0;if(u>>>0<=r>>>0)break e;s=s+-1|0}}}while(0);i=i-s+o^o;a[t>>2]=i<<16>>16;c=+((i&65535)<<16>>16);r=r-u|0;i=s;f=f+c*c}}while(0);e=e+-1|0;t=t+4|0}o=i<<1|1;u=r>>>0>=o>>>0;e=u<<31>>31;o=r-(u?o:0)|0;r=(o+1|0)>>>1;if(!r){u=o;o=i-r|0;o=o+e|0;o=o^e;s=o&65535;o=o<<16;o=o>>16;l=t+4|0;a[t>>2]=o;c=+(s<<16>>16);c=c*c;f=f+c;s=0-u|0;u=r-u|0;s=u^s;u=s&65535;s=s<<16;s=s>>16;a[l>>2]=s;c=+(u<<16>>16);c=c*c;c=f+c;h=n;return+c}u=o-((r<<1)+-1)|0;o=i-r|0;o=o+e|0;o=o^e;s=o&65535;o=o<<16;o=o>>16;l=t+4|0;a[t>>2]=o;c=+(s<<16>>16);c=c*c;f=f+c;s=0-u|0;u=r-u|0;s=u^s;u=s&65535;s=s<<16;s=s>>16;a[l>>2]=s;c=+(u<<16>>16);c=c*c;c=f+c;h=n;return+c}function hr(e){e=e|0;var i=0,r=0,t=0,n=0;n=h;t=a[e+20>>2]<<3;i=a[e+28>>2]|0;r=32-(Sl(i|0)|0)|0;i=i>>>(r+-16|0);e=(i>>>12)+-8|0;h=n;return t-((r<<3)+(e+(i>>>0>(a[5792+(e<<2)>>2]|0)>>>0&1)))|0}function cr(e,i,r){e=e|0;i=i|0;r=r|0;var t=0;t=h;a[e>>2]=i;a[e+4>>2]=r;a[e+8>>2]=0;a[e+12>>2]=0;a[e+16>>2]=0;a[e+20>>2]=9;a[e+24>>2]=0;r=e+28|0;a[r>>2]=128;i=dr(e)|0;a[e+40>>2]=i;a[e+32>>2]=(a[r>>2]|0)+-1-(i>>1);a[e+44>>2]=0;br(e);h=t;return}function dr(e){e=e|0;var i=0,r=0,t=0;i=h;t=e+24|0;r=a[t>>2]|0;if(r>>>0>=(a[e+4>>2]|0)>>>0){t=0;h=i;return t|0}a[t>>2]=r+1;t=f[(a[e>>2]|0)+r>>0]|0;h=i;return t|0}function br(e){e=e|0;var i=0,r=0,t=0,n=0,f=0,o=0,s=0;i=h;r=e+28|0;t=e+20|0;n=e+40|0;f=e+32|0;while(1){o=a[r>>2]|0;if(o>>>0>=8388609)break;a[t>>2]=(a[t>>2]|0)+8;a[r>>2]=o<<8;s=a[n>>2]|0;o=dr(e)|0;a[n>>2]=o;a[f>>2]=((s<<8|o)>>>1&255|a[f>>2]<<8&2147483392)^255}h=i;return}function kr(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=wr(a[e+28>>2]|0,i)|0;a[e+36>>2]=t;e=(((a[e+32>>2]|0)>>>0)/(t>>>0)|0)+1|0;h=r;return i-(e>>>0>i>>>0?i:e)|0}function wr(e,i){e=e|0;i=i|0;return(e>>>0)/(i>>>0)|0|0}function mr(e){e=e|0;var i=0;i=(a[e+28>>2]|0)>>>15;a[e+36>>2]=i;e=((a[e+32>>2]|0)>>>0)/(i>>>0)|0;i=e+1|0;return 32768-(i+(i>>>0>32768?32767-e|0:0))|0}function pr(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0;n=h;f=a[e+36>>2]|0;t=re(f,t-r|0)|0;o=e+32|0;a[o>>2]=(a[o>>2]|0)-t;if(!i){r=e+28|0;o=r;t=(a[r>>2]|0)-t|0;a[o>>2]=t;br(e);h=n;return}else{o=e+28|0;t=re(f,r-i|0)|0;a[o>>2]=t;br(e);h=n;return}}function _r(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0;r=h;t=e+28|0;n=a[t>>2]|0;f=e+32|0;o=a[f>>2]|0;s=n>>>i;i=o>>>0>>0;if(!i){a[f>>2]=o-s;s=n-s|0}a[t>>2]=s;br(e);h=r;return i&1|0}function vr(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,o=0,s=0,l=0,u=0,c=0;t=h;o=e+28|0;u=a[o>>2]|0;n=e+32|0;s=a[n>>2]|0;r=u>>>r;l=-1;while(1){l=l+1|0;c=re(r,f[i+l>>0]|0)|0;if(s>>>0>=c>>>0)break;else u=c}a[n>>2]=s-c;a[o>>2]=u-c;br(e);h=t;return l|0}function gr(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0;r=h;t=i+-1|0;n=32-(Sl(t|0)|0)|0;if((n|0)<=8){n=kr(e,i)|0;pr(e,n,n+1|0,i);i=n;h=r;return i|0}n=n+-8|0;f=(t>>>n)+1|0;i=kr(e,f)|0;pr(e,i,i+1|0,f);n=i<>>0<=t>>>0){f=n;h=r;return f|0}a[e+44>>2]=1;f=t;h=r;return f|0}function Er(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0;t=h;n=e+12|0;f=a[n>>2]|0;r=e+16|0;o=a[r>>2]|0;if(o>>>0>>0)do{f=f|(Tr(e)|0)<>2]=f>>>i;a[r>>2]=o-i;o=e+20|0;a[o>>2]=(a[o>>2]|0)+i;h=t;return f&(1<>2]|0;n=a[e+4>>2]|0;if(r>>>0>=n>>>0){n=0;h=i;return n|0}r=r+1|0;a[t>>2]=r;n=f[(a[e>>2]|0)+(n-r)>>0]|0;h=i;return n|0}function Ar(e,i,r){e=e|0;i=i|0;r=r|0;a[e>>2]=i;a[e+8>>2]=0;a[e+12>>2]=0;a[e+16>>2]=0;a[e+20>>2]=33;a[e+24>>2]=0;a[e+28>>2]=-2147483648;a[e+40>>2]=-1;a[e+32>>2]=0;a[e+36>>2]=0;a[e+4>>2]=r;a[e+44>>2]=0;return}function Sr(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0;n=h;f=e+28|0;s=a[f>>2]|0;o=yr(s,t)|0;if(!i){i=s-(re(o,t-r|0)|0)|0;a[f>>2]=i;Mr(e);h=n;return}else{s=s-(re(o,t-i|0)|0)|0;t=e+32|0;a[t>>2]=(a[t>>2]|0)+s;i=re(o,r-i|0)|0;a[f>>2]=i;Mr(e);h=n;return}}function yr(e,i){e=e|0;i=i|0;return(e>>>0)/(i>>>0)|0|0}function Mr(e){e=e|0;var i=0,r=0,t=0,n=0,f=0;i=h;t=e+28|0;r=e+32|0;n=e+20|0;f=a[t>>2]|0;while(1){if(f>>>0>=8388609)break;Ur(e,(a[r>>2]|0)>>>23);a[r>>2]=a[r>>2]<<8&2147483392;f=a[t>>2]<<8;a[t>>2]=f;a[n>>2]=(a[n>>2]|0)+8}h=i;return}function Lr(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0;t=h;n=e+28|0;o=a[n>>2]|0;f=o>>>15;if(!i){i=o-(re(f,32768-r|0)|0)|0;a[n>>2]=i;Mr(e);h=t;return}else{s=o-(re(f,32768-i|0)|0)|0;o=e+32|0;a[o>>2]=(a[o>>2]|0)+s;i=re(f,r-i|0)|0;a[n>>2]=i;Mr(e);h=t;return}}function Or(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0;t=h;n=e+28|0;s=a[n>>2]|0;f=e+32|0;o=s>>>r;r=s-o|0;if(i){a[f>>2]=(a[f>>2]|0)+r;r=o}a[n>>2]=r;Mr(e);h=t;return}function Rr(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,o=0,s=0,l=0,u=0;n=h;o=e+28|0;s=a[o>>2]|0;t=s>>>t;if((i|0)>0){l=r+(i+-1)|0;u=s-(re(t,f[l>>0]|0)|0)|0;s=e+32|0;a[s>>2]=(a[s>>2]|0)+u;t=re(t,(f[l>>0]|0)-(f[r+i>>0]|0)|0)|0;a[o>>2]=t;Mr(e);h=n;return}else{u=s-(re(t,f[r+i>>0]|0)|0)|0;a[o>>2]=u;Mr(e);h=n;return}}function Nr(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0;t=h;n=r+-1|0;a=32-(Sl(n|0)|0)|0;if((a|0)>8){r=a+-8|0;a=i>>>r;Sr(e,a,a+1|0,(n>>>r)+1|0);Cr(e,(1<>2]|0;t=e+16|0;l=a[t>>2]|0;if((l+r|0)>>>0>32){o=e+44|0;do{u=Pr(e,s&255)|0;a[o>>2]=a[o>>2]|u;s=s>>>8;l=l+-8|0}while((l|0)>7)}a[f>>2]=s|i<>2]=l+r;u=e+20|0;a[u>>2]=(a[u>>2]|0)+r;h=n;return}function Pr(e,i){e=e|0;i=i|0;var r=0,n=0,f=0,o=0;r=h;f=e+8|0;n=a[f>>2]|0;o=a[e+4>>2]|0;if(((a[e+24>>2]|0)+n|0)>>>0>=o>>>0){e=-1;h=r;return e|0}n=n+1|0;a[f>>2]=n;t[(a[e>>2]|0)+(o-n)>>0]=i;e=0;h=r;return e|0}function Br(e,i,r){e=e|0;i=i|0;r=r|0;var n=0,o=0,s=0,l=0,u=0;n=h;o=8-r|0;s=(1<>2]|0){u=a[e>>2]|0;t[u>>0]=(f[u>>0]|0)&(s^255)|i<>2]|0;if((u|0)>-1){a[l>>2]=u&~s|i<>2]|0)>>>0>-2147483648>>>r>>>0){a[e+44>>2]=-1;h=n;return}else{u=e+32|0;a[u>>2]=a[u>>2]&~(s<<23)|i<>2]|0;t=a[e+8>>2]|0;e=e+4|0;Ol(n+(i-t)|0,n+((a[e>>2]|0)-t)|0,t|0)|0;a[e>>2]=i;h=r;return}function Ir(e){e=e|0;var i=0,r=0,n=0,o=0,s=0,l=0,u=0,c=0,d=0;i=h;c=a[e+28>>2]|0;u=Sl(c|0)|0;r=2147483647>>>u;n=a[e+32>>2]|0;o=n+r&~r;if((o|r)>>>0>=(n+c|0)>>>0){o=r>>>1;o=n+o&~o;u=u+1|0}while(1){if((u|0)<=0)break;Ur(e,o>>>23);o=o<<8&2147483392;u=u+-8|0}if(!((a[e+40>>2]|0)<=-1?(a[e+36>>2]|0)==0:0))Ur(e,0);l=e+44|0;o=a[e+16>>2]|0;s=a[e+12>>2]|0;while(1){if((o|0)<=7)break;c=Pr(e,s&255)|0;a[l>>2]=a[l>>2]|c;o=o+-8|0;s=s>>>8}if(a[l>>2]|0){h=i;return}n=e+24|0;d=a[n>>2]|0;c=e+4|0;r=e+8|0;yl((a[e>>2]|0)+d|0,0,(a[c>>2]|0)-d-(a[r>>2]|0)|0)|0;if((o|0)<=0){h=i;return}r=a[r>>2]|0;c=a[c>>2]|0;if(r>>>0>=c>>>0){a[l>>2]=-1;h=i;return}u=0-u|0;if((o|0)>(u|0)?((a[n>>2]|0)+r|0)>>>0>=c>>>0:0){a[l>>2]=-1;s=s&(1<>2]|0)+(c-r+-1)|0;t[d>>0]=f[d>>0]|0|s;h=i;return}function Ur(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0;r=h;if((i|0)==255){o=e+36|0;a[o>>2]=(a[o>>2]|0)+1;h=r;return}f=i>>8;t=e+40|0;n=a[t>>2]|0;if((n|0)>-1){n=Fr(e,n+f|0)|0;o=e+44|0;a[o>>2]=a[o>>2]|n}n=e+36|0;if(a[n>>2]|0){f=f+255&255;o=e+44|0;do{s=Fr(e,f)|0;a[o>>2]=a[o>>2]|s;s=(a[n>>2]|0)+-1|0;a[n>>2]=s}while((s|0)!=0)}a[t>>2]=i&255;h=r;return}function Fr(e,i){e=e|0;i=i|0;var r=0,n=0,f=0;r=h;f=e+24|0;n=a[f>>2]|0;if((n+(a[e+8>>2]|0)|0)>>>0>=(a[e+4>>2]|0)>>>0){e=-1;h=r;return e|0}a[f>>2]=n+1;t[(a[e>>2]|0)+n>>0]=i;e=0;h=r;return e|0}function Gr(e,i){e=e|0;i=i|0;var r=0,t=0,f=0,o=0,s=0,l=0,u=0;f=h;h=h+32|0;r=f;t=a[e+8>>2]|0;t=(t|0)>0?t:0;a[r>>2]=1;o=1;s=0;do{l=s<<1;u=n[e+((l|1)<<1)+12>>1]|0;o=re(o,n[e+(l<<1)+12>>1]|0)|0;s=s+1|0;a[r+(s<<2)>>2]=o}while(u<<16>>16!=1);o=n[e+((s<<1)+-1<<1)+12>>1]|0;l=s;while(1){s=l+-1|0;if((l|0)<=0)break;u=s<<1;if(!s)l=1;else l=n[e+(u+-1<<1)+12>>1]|0;u=n[e+(u<<1)+12>>1]|0;if((u|0)==3){u=a[r+(s<<2)>>2]|0;xr(i,u<>2]|0;Kr(i,u<>2]|0);o=l;l=s;continue}else if((u|0)==4){u=a[r+(s<<2)>>2]|0;Wr(i,u<=(r|0))break;o=e+32|0;n=o;f=+l[n>>2];s=+l[n+4>>2];u=+l[e>>2];l[o>>2]=u-f;o=e+4|0;a=+l[o>>2];l[e+36>>2]=a-s;l[e>>2]=u+f;l[o>>2]=a+s;o=e+40|0;s=+l[o>>2];n=e+44|0;a=+l[n>>2];f=(s+a)*.7071067690849304;s=(a-s)*.7071067690849304;c=e+8|0;a=+l[c>>2];l[o>>2]=a-f;o=e+12|0;u=+l[o>>2];l[n>>2]=u-s;l[c>>2]=a+f;l[o>>2]=u+s;o=e+52|0;s=+l[o>>2];c=e+48|0;u=+l[c>>2];n=e+16|0;f=+l[n>>2];l[c>>2]=f-s;c=e+20|0;a=+l[c>>2];l[o>>2]=a+u;l[n>>2]=f+s;l[c>>2]=a-u;c=e+60|0;u=+l[c>>2];n=e+56|0;a=+l[n>>2];s=(u-a)*.7071067690849304;a=(-u-a)*.7071067690849304;o=e+24|0;u=+l[o>>2];l[n>>2]=u-s;n=e+28|0;f=+l[n>>2];l[c>>2]=f-a;l[o>>2]=u+s;l[n>>2]=f+a;e=e+64|0;t=t+1|0}h=i;return}function Wr(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0.0,g=0.0,E=0.0,T=0.0,A=0.0,S=0.0,y=0.0,M=0.0,L=0.0,O=0.0,R=0,N=0,C=0,P=0,B=0,D=0,I=0;o=h;if((t|0)==1){f=0;while(1){if((f|0)>=(n|0))break;v=+l[e>>2];d=e+16|0;O=+l[d>>2];T=v-O;k=e+4|0;S=+l[k>>2];b=e+20|0;M=+l[b>>2];g=S-M;O=v+O;M=S+M;w=e+8|0;S=+l[w>>2];p=e+24|0;v=+l[p>>2];L=S+v;m=e+12|0;A=+l[m>>2];_=e+28|0;E=+l[_>>2];y=A+E;l[d>>2]=O-L;l[b>>2]=M-y;l[e>>2]=O+L;l[k>>2]=M+y;v=S-v;E=A-E;l[w>>2]=T+E;l[m>>2]=g-v;l[p>>2]=T-E;l[_>>2]=g+v;e=e+32|0;f=f+1|0}h=o;return}s=t<<1;u=t*3|0;c=r+48|0;w=i<<1;m=i*3|0;_=0;while(1){if((_|0)>=(n|0))break;p=e+((re(_,f)|0)<<3)|0;d=a[c>>2]|0;b=0;r=d;k=d;while(1){if((b|0)>=(t|0))break;P=p+(t<<3)|0;A=+l[P>>2];g=+l[r>>2];C=p+(t<<3)+4|0;S=+l[C>>2];T=+l[r+4>>2];v=A*g-S*T;g=A*T+S*g;I=p+(s<<3)|0;S=+l[I>>2];T=+l[k>>2];D=p+(s<<3)+4|0;A=+l[D>>2];M=+l[k+4>>2];E=S*T-A*M;T=S*M+A*T;N=p+(u<<3)|0;A=+l[N>>2];M=+l[d>>2];R=p+(u<<3)+4|0;S=+l[R>>2];y=+l[d+4>>2];O=A*M-S*y;M=A*y+S*M;S=+l[p>>2];y=S-E;B=p+4|0;A=+l[B>>2];L=A-T;E=S+E;l[p>>2]=E;T=A+T;l[B>>2]=T;A=v+O;S=g+M;O=v-O;M=g-M;l[I>>2]=E-A;l[D>>2]=T-S;l[p>>2]=+l[p>>2]+A;l[B>>2]=+l[B>>2]+S;l[P>>2]=y+M;l[C>>2]=L-O;l[N>>2]=y-M;l[R>>2]=L+O;p=p+8|0;b=b+1|0;r=r+(i<<3)|0;k=k+(w<<3)|0;d=d+(m<<3)|0}_=_+1|0}h=o;return}function xr(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0,c=0,d=0.0,b=0,k=0,w=0,m=0,p=0,_=0.0,v=0,g=0.0,E=0,T=0,A=0,S=0.0,y=0.0,M=0.0,L=0.0,O=0.0;s=h;o=t<<1;u=re(i,t)|0;c=r+48|0;d=+l[(a[c>>2]|0)+(u<<3)+4>>2];r=i<<1;u=0;while(1){if((u|0)>=(n|0))break;b=e+((re(u,f)|0)<<3)|0;w=a[c>>2]|0;m=t;k=w;while(1){v=b+(t<<3)|0;y=+l[v>>2];M=+l[k>>2];p=b+(t<<3)+4|0;O=+l[p>>2];g=+l[k+4>>2];L=y*M-O*g;M=y*g+O*M;T=b+(o<<3)|0;O=+l[T>>2];g=+l[w>>2];E=b+(o<<3)+4|0;y=+l[E>>2];S=+l[w+4>>2];_=O*g-y*S;g=O*S+y*g;y=L+_;S=M+g;l[v>>2]=+l[b>>2]-y*.5;A=b+4|0;l[p>>2]=+l[A>>2]-S*.5;_=(L-_)*d;g=(M-g)*d;l[b>>2]=+l[b>>2]+y;l[A>>2]=+l[A>>2]+S;l[T>>2]=+l[v>>2]+g;l[E>>2]=+l[p>>2]-_;l[v>>2]=+l[v>>2]-g;l[p>>2]=+l[p>>2]+_;m=m+-1|0;if(!m)break;else{b=b+8|0;k=k+(i<<3)|0;w=w+(r<<3)|0}}u=u+1|0}h=s;return}function Kr(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0.0,c=0.0,d=0.0,b=0,k=0,w=0,m=0.0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0.0,y=0.0,M=0.0,L=0.0,O=0,R=0.0,N=0.0,C=0.0,P=0.0,B=0.0,D=0.0,I=0,U=0.0,F=0.0,G=0.0,V=0.0,W=0,x=0;o=h;w=re(i,t)|0;s=a[r+48>>2]|0;r=s+(w<<3)|0;m=+l[r>>2];c=+l[r+4>>2];r=s+((re(i<<1,t)|0)<<3)|0;u=+l[r>>2];d=+l[r+4>>2];r=t<<1;w=t*3|0;k=t<<2;b=0;while(1){if((b|0)>=(n|0))break;T=re(b,f)|0;_=e+(T<<3)|0;v=e+(T+t<<3)|0;E=e+(T+r<<3)|0;p=e+(T+w<<3)|0;T=e+(T+k<<3)|0;g=0;while(1){if((g|0)>=(t|0))break;x=_;D=+l[x>>2];P=+l[x+4>>2];B=+l[v>>2];x=re(g,i)|0;L=+l[s+(x<<3)>>2];W=v+4|0;G=+l[W>>2];V=+l[s+(x<<3)+4>>2];y=B*L-G*V;L=B*V+G*L;G=+l[E>>2];x=re(g<<1,i)|0;V=+l[s+(x<<3)>>2];O=E+4|0;B=+l[O>>2];N=+l[s+(x<<3)+4>>2];F=G*V-B*N;V=G*N+B*V;B=+l[p>>2];x=re(g*3|0,i)|0;N=+l[s+(x<<3)>>2];A=p+4|0;G=+l[A>>2];M=+l[s+(x<<3)+4>>2];S=B*N-G*M;N=B*M+G*N;G=+l[T>>2];x=re(g<<2,i)|0;M=+l[s+(x<<3)>>2];I=T+4|0;B=+l[I>>2];C=+l[s+(x<<3)+4>>2];R=G*M-B*C;M=G*C+B*M;B=y+R;C=L+M;R=y-R;M=L-M;L=F+S;y=V+N;S=F-S;N=V-N;l[_>>2]=D+(B+L);x=_+4|0;l[x>>2]=+l[x>>2]+(C+y);V=D+B*m+L*u;F=P+C*m+y*u;G=M*c+N*d;U=-(R*c)-S*d;l[v>>2]=V-G;l[W>>2]=F-U;l[T>>2]=V+G;l[I>>2]=F+U;L=D+B*u+L*m;y=P+C*u+y*m;M=N*c-M*d;S=R*d-S*c;l[E>>2]=L+M;l[O>>2]=y+S;l[p>>2]=L-M;l[A>>2]=y-S;_=_+8|0;v=v+8|0;E=E+8|0;p=p+8|0;T=T+8|0;g=g+1|0}b=b+1|0}h=o;return}function Hr(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,f=0,o=0.0,s=0,u=0.0,c=0.0,d=0;t=h;o=+l[e+4>>2];s=e+44|0;f=0;while(1){if((f|0)>=(a[e>>2]|0))break;d=i+(f<<3)|0;c=+l[d>>2];u=+l[d+4>>2];l[r+(n[(a[s>>2]|0)+(f<<1)>>1]<<3)>>2]=o*c;l[r+(n[(a[s>>2]|0)+(f<<1)>>1]<<3)+4>>2]=o*u;f=f+1|0}Gr(e,r);h=t;return}function zr(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,l=0,u=0;f=h;o=a[i>>2]|0;if(!o){l=0;r=l+r|0;Lr(e,l,r);h=f;return}n=o>>31;s=o+n^n;o=Yr(r,t)|0;l=1;while(1){if(!((o|0)!=0&(l|0)<(s|0)))break;u=o<<1;o=(re(u,t)|0)>>>15;r=r+(u+2)|0;l=l+1|0}if(!o){u=s-l|0;s=(32768-r-n>>1)+-1|0;s=(u|0)<(s|0)?u:s;r=r+((s<<1|1)+n)|0;u=32768-r|0;a[i>>2]=l+s+n^n;u=u>>>0>1?1:u;u=r+u|0;Lr(e,r,u);h=f;return}else{l=o+1|0;u=l;r=r+(l&~n)|0;u=r+u|0;Lr(e,r,u);h=f;return}}function Yr(e,i){e=e|0;i=i|0;e=(re(32736-e|0,16384-i|0)|0)>>>15;return e|0}function qr(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0,o=0,s=0;a=h;t=mr(e)|0;if(t>>>0>>0){o=i;i=0;s=0;o=i+o|0;f=o>>>0<32768;o=f?o:32768;pr(e,i,o,32768);h=a;return s|0}n=(Yr(i,r)|0)+1|0;f=1;while(1){if(n>>>0<=1)break;s=n<<1;o=i+s|0;if(t>>>0>>0)break;n=((re(s+-2|0,r)|0)>>>15)+1|0;i=o;f=f+1|0}if(n>>>0<2){s=(t-i|0)>>>1;i=i+(s<<1)|0;f=f+s|0}r=i+n|0;s=t>>>0>>0;o=n;i=s?i:r;s=s?0-f|0:f;o=i+o|0;f=o>>>0<32768;o=f?o:32768;pr(e,i,o,32768);h=a;return s|0}function jr(e){e=e|0;var i=0,r=0,t=0,n=0,a=0;i=h;t=32-(Sl(e|0)|0)+-1>>1;r=1<>>0<=e>>>0){e=e-a|0;n=n+r|0}if((t|0)>0){r=r>>>1;t=t+-1|0}else break}h=i;return n|0}function Jr(e,i,r,t,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0.0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0.0,y=0.0,M=0.0,L=0.0,O=0.0;u=h;b=a[e+(o<<2)+8>>2]|0;d=+l[b+4>>2];c=a[e>>2]|0;k=0;e=a[e+24>>2]|0;while(1){w=c>>1;if((k|0)>=(o|0))break;c=w;k=k+1|0;e=e+(w<<2)|0}o=c>>2;m=h;h=h+((4*w|0)+15&-16)|0;k=h;h=h+((8*o|0)+15&-16)|0;v=f>>1;c=w+-1|0;E=f+3>>2;p=0-w|0;g=0;T=t+(v<<2)|0;A=t+(v+-1<<2)|0;_=i+(v<<2)|0;v=i+(c+v<<2)|0;i=m;while(1){if((g|0)>=(E|0))break;S=+l[A>>2];y=+l[T>>2];l[i>>2]=S*+l[_+(w<<2)>>2]+y*+l[v>>2];l[i+4>>2]=y*+l[_>>2]-S*+l[v+(p<<2)>>2];g=g+1|0;T=T+8|0;A=A+-8|0;_=_+8|0;v=v+-8|0;i=i+8|0}f=t+(f+-1<<2)|0;E=o-E|0;while(1){if((g|0)>=(E|0))break;l[i>>2]=+l[v>>2];l[i+4>>2]=+l[_>>2];g=g+1|0;_=_+8|0;v=v+-8|0;i=i+8|0}while(1){if((g|0)>=(o|0))break;l[i>>2]=+l[f>>2]*+l[v>>2]-+l[t>>2]*+l[_+(p<<2)>>2];l[i+4>>2]=+l[f>>2]*+l[_>>2]+ +l[t>>2]*+l[v+(w<<2)>>2];g=g+1|0;t=t+8|0;f=f+-8|0;_=_+8|0;v=v+-8|0;i=i+8|0}w=b+44|0;p=0;while(1){if((p|0)>=(o|0))break;L=+l[e+(p<<2)>>2];y=+l[e+(o+p<<2)>>2];M=+l[m>>2];O=+l[m+4>>2];S=+(d*(M*L-O*y));y=+(d*(O*L+M*y));A=k+(n[(a[w>>2]|0)+(p<<1)>>1]<<3)|0;l[A>>2]=S;l[A+4>>2]=y;p=p+1|0;m=m+8|0}Gr(b,k);w=s<<1;b=0-w|0;m=0;p=r;s=r+((re(c,s)|0)<<2)|0;while(1){if((m|0)>=(o|0))break;L=+l[k+4>>2];M=+l[e+(o+m<<2)>>2];y=+l[k>>2];O=+l[e+(m<<2)>>2];l[p>>2]=L*M-y*O;l[s>>2]=y*M+L*O;k=k+8|0;m=m+1|0;p=p+(w<<2)|0;s=s+(b<<2)|0}h=u;return}function Zr(e,i,r,t,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0.0,E=0.0,T=0.0,A=0.0,S=0.0,y=0.0;u=h;k=a[e>>2]|0;b=0;d=a[e+24>>2]|0;while(1){c=k>>1;if((b|0)>=(o|0))break;k=c;b=b+1|0;d=d+(c<<2)|0}b=k>>2;_=i+((re(c+-1|0,s)|0)<<2)|0;k=f>>1;w=r+(k<<2)|0;o=a[e+(o<<2)+8>>2]|0;m=s<<1;e=0-m|0;p=a[o+44>>2]|0;s=0;while(1){if((s|0)>=(b|0))break;E=+l[_>>2];T=+l[d+(s<<2)>>2];A=+l[i>>2];g=+l[d+(b+s<<2)>>2];v=n[p>>1]<<1;l[r+(k+(v|1)<<2)>>2]=E*T+A*g;l[r+(k+v<<2)>>2]=A*T-E*g;p=p+2|0;s=s+1|0;i=i+(m<<2)|0;_=_+(e<<2)|0}Gr(o,w);i=b+1>>1;o=0;k=r+(k+c+-2<<2)|0;while(1){if((o|0)>=(i|0))break;v=w+4|0;y=+l[v>>2];E=+l[w>>2];A=+l[d+(o<<2)>>2];S=+l[d+(b+o<<2)>>2];_=k+4|0;g=+l[_>>2];T=+l[k>>2];l[w>>2]=y*A+E*S;l[_>>2]=y*S-E*A;A=+l[d+(b-o+-1<<2)>>2];E=+l[d+(c-o+-1<<2)>>2];l[k>>2]=g*A+T*E;l[v>>2]=g*E-T*A;o=o+1|0;w=w+8|0;k=k+-8|0}v=f+-1|0;f=(f|0)/2|0;d=0;c=t;b=t+(v<<2)|0;t=r+(v<<2)|0;while(1){if((d|0)>=(f|0))break;y=+l[t>>2];A=+l[r>>2];S=+l[b>>2];T=+l[c>>2];l[r>>2]=S*A-T*y;l[t>>2]=T*A+S*y;d=d+1|0;c=c+4|0;b=b+-4|0;t=t+-4|0;r=r+4|0}h=u;return}function $r(){var e=0,i=0,r=0,t=0,n=0;e=h;i=0;e:while(1){if((i|0)>=1){n=0;i=9;break}r=5824+(i<<2)|0;t=0;while(1){if((t|0)>=4)break;n=a[r>>2]|0;if((a[n>>2]|0)==48e3?(960<>2]|0,a[n+40>>2]|0)|0):0){i=9;break e}t=t+1|0}i=i+1|0}if((i|0)==9){h=e;return n|0}return 0}function Xr(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0,s=0,u=0,c=0,d=0,b=0.0,k=0,w=0,m=0.0;s=h;h=h+80|0;c=s+56|0;u=s+40|0;o=s+20|0;f=s;a[o+0>>2]=0;a[o+4>>2]=0;a[o+8>>2]=0;a[o+12>>2]=0;a[o+16>>2]=0;r=r>>1;d=1;while(1){if((d|0)>=(r|0))break;k=d<<1;w=a[e>>2]|0;l[i+(d<<2)>>2]=((+l[w+(k+-1<<2)>>2]+ +l[w+((k|1)<<2)>>2])*.5+ +l[w+(k<<2)>>2])*.5;d=d+1|0}w=a[e>>2]|0;l[i>>2]=(+l[w+4>>2]*.5+ +l[w>>2])*.5;if((t|0)==2){e=e+4|0;t=1;while(1){if((t|0)>=(r|0))break;k=t<<1;d=a[e>>2]|0;w=i+(t<<2)|0;l[w>>2]=+l[w>>2]+((+l[d+(k+-1<<2)>>2]+ +l[d+((k|1)<<2)>>2])*.5+ +l[d+(k<<2)>>2])*.5;t=t+1|0}w=a[e>>2]|0;l[i>>2]=+l[i>>2]+(+l[w+4>>2]*.5+ +l[w>>2])*.5}fr(i,c,0,0,4,r,n);l[c>>2]=+l[c>>2]*1.000100016593933;n=1;while(1){if((n|0)>=5)break;w=c+(n<<2)|0;m=+l[w>>2];b=+(n|0)*.00800000037997961;l[w>>2]=m-m*b*b;n=n+1|0}rr(u,c,4);c=0;b=1.0;while(1){if((c|0)>=4)break;m=b*.8999999761581421;w=u+(c<<2)|0;l[w>>2]=+l[w>>2]*m;c=c+1|0;b=m}b=+l[u>>2];l[f>>2]=b+.800000011920929;m=+l[u+4>>2];l[f+4>>2]=m+b*.800000011920929;b=+l[u+8>>2];l[f+8>>2]=b+m*.800000011920929;m=+l[u+12>>2];l[f+12>>2]=m+b*.800000011920929;l[f+16>>2]=m*.800000011920929;Qr(i,f,i,r,o);h=s;return}function Qr(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var a=0,f=0.0,o=0.0,s=0.0,u=0.0,c=0,d=0,b=0.0,k=0,w=0.0,m=0.0,p=0.0,_=0.0,v=0,g=0.0,E=0.0,T=0.0;a=h;u=+l[i>>2];s=+l[i+4>>2];o=+l[i+8>>2];f=+l[i+12>>2];p=+l[i+16>>2];v=n+4|0;i=n+8|0;k=n+12|0;c=n+16|0;m=+l[n>>2];g=+l[v>>2];_=+l[i>>2];w=+l[k>>2];b=+l[c>>2];d=0;while(1){if((d|0)>=(t|0))break;T=+l[e+(d<<2)>>2];l[r+(d<<2)>>2]=T+u*m+s*g+o*_+f*w+p*b;E=m;m=T;d=d+1|0;b=w;w=_;_=g;g=E}l[n>>2]=m;l[v>>2]=g;l[i>>2]=_;l[k>>2]=w;l[c>>2]=b;h=a;return}function et(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0;f=h;h=h+16|0;d=f;c=n+-3|0;b=d+4|0;o=d+8|0;s=d+12|0;u=0;while(1){if((u|0)>=(c|0))break;a[d+0>>2]=0;a[d+4>>2]=0;a[d+8>>2]=0;a[d+12>>2]=0;it(e,i+(u<<2)|0,d,t);l[r+(u<<2)>>2]=+l[d>>2];l[r+((u|1)<<2)>>2]=+l[b>>2];l[r+((u|2)<<2)>>2]=+l[o>>2];l[r+((u|3)<<2)>>2]=+l[s>>2];u=u+4|0}while(1){if((u|0)>=(n|0))break;l[r+(u<<2)>>2]=+rt(e,i+(u<<2)|0,t);u=u+1|0}h=f;return}function it(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0.0,u=0.0,c=0,d=0.0,b=0.0,k=0,w=0,m=0.0,p=0.0,_=0.0,v=0.0,g=0.0,E=0.0,T=0.0,A=0.0;o=h;c=t+-3|0;n=r+4|0;a=r+8|0;f=r+12|0;k=i+12|0;w=0;s=+l[i>>2];d=+l[i+4>>2];u=+l[i+8>>2];b=0.0;while(1){if((w|0)>=(c|0))break;g=+l[e>>2];b=+l[k>>2];A=+l[r>>2]+g*s;l[r>>2]=A;T=+l[n>>2]+g*d;l[n>>2]=T;E=+l[a>>2]+g*u;l[a>>2]=E;g=+l[f>>2]+g*b;l[f>>2]=g;v=+l[e+4>>2];_=+l[k+4>>2];A=A+v*d;l[r>>2]=A;T=T+v*u;l[n>>2]=T;E=E+v*b;l[a>>2]=E;v=g+v*_;l[f>>2]=v;g=+l[e+8>>2];p=+l[k+8>>2];A=A+g*u;l[r>>2]=A;T=T+g*b;l[n>>2]=T;E=E+g*_;l[a>>2]=E;g=v+g*p;l[f>>2]=g;v=+l[e+12>>2];m=+l[k+12>>2];l[r>>2]=A+v*b;l[n>>2]=T+v*_;l[a>>2]=E+v*p;l[f>>2]=g+v*m;e=e+16|0;k=k+16|0;w=w+4|0;s=_;d=p;u=m}c=w|1;if((w|0)<(t|0)){A=+l[e>>2];b=+l[k>>2];l[r>>2]=+l[r>>2]+A*s;l[n>>2]=+l[n>>2]+A*d;l[a>>2]=+l[a>>2]+A*u;l[f>>2]=+l[f>>2]+A*b;e=e+4|0;k=k+4|0}if((c|0)<(t|0)){A=+l[e>>2];s=+l[k>>2];l[r>>2]=+l[r>>2]+A*d;l[n>>2]=+l[n>>2]+A*u;l[a>>2]=+l[a>>2]+A*b;l[f>>2]=+l[f>>2]+A*s;e=e+4|0;k=k+4|0}if((c+1|0)>=(t|0)){h=o;return}T=+l[e>>2];A=+l[k>>2];l[r>>2]=+l[r>>2]+T*u;l[n>>2]=+l[n>>2]+T*b;l[a>>2]=+l[a>>2]+T*s;l[f>>2]=+l[f>>2]+T*A;h=o;return}function rt(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0.0,a=0,f=0.0;t=h;a=0;n=0.0;while(1){if((a|0)>=(r|0))break;f=n+ +l[e+(a<<2)>>2]*+l[i+(a<<2)>>2];a=a+1|0;n=f}h=t;return+n}function tt(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0.0,_=0.0,v=0.0;o=h;h=h+16|0;c=o;d=c;a[d>>2]=0;a[d+4>>2]=0;d=r+t|0;w=r>>2;b=h;h=h+((4*w|0)+15&-16)|0;d=d>>2;k=h;h=h+((4*d|0)+15&-16)|0;u=t>>1;s=h;h=h+((4*u|0)+15&-16)|0;m=0;while(1){if((m|0)>=(w|0)){m=0;break}l[b+(m<<2)>>2]=+l[e+(m<<1<<2)>>2];m=m+1|0}while(1){if((m|0)>=(d|0))break;l[k+(m<<2)>>2]=+l[i+(m<<1<<2)>>2];m=m+1|0}d=t>>2;et(b,k,s,w,d,f);nt(s,k,w,d,c);d=c+4|0;r=r>>1;t=0;while(1){if((t|0)>=(u|0))break;b=s+(t<<2)|0;l[b>>2]=0.0;m=t-(a[c>>2]<<1)|0;if(!((((m|0)>-1?m:0-m|0)|0)>2?(m=t-(a[d>>2]<<1)|0,(((m|0)>-1?m:0-m|0)|0)>2):0)){v=+rt(e,i+(t<<2)|0,r);l[b>>2]=v<-1.0?-1.0:v}t=t+1|0}nt(s,i,r,u,c);c=a[c>>2]|0;if((c|0)<=0){m=0;f=c<<1;m=f-m|0;a[n>>2]=m;h=o;return}if((c|0)>=(u+-1|0)){m=0;f=c<<1;m=f-m|0;a[n>>2]=m;h=o;return}p=+l[s+(c+-1<<2)>>2];_=+l[s+(c<<2)>>2];v=+l[s+(c+1<<2)>>2];if(v-p>(_-p)*.699999988079071){m=1;f=c<<1;m=f-m|0;a[n>>2]=m;h=o;return}if(p-v>(_-v)*.699999988079071){m=-1;f=c<<1;m=f-m|0;a[n>>2]=m;h=o;return}m=0;f=c<<1;m=f-m|0;a[n>>2]=m;h=o;return}function nt(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0.0,s=0,u=0.0,c=0.0,d=0,b=0.0,k=0,w=0.0,m=0.0,p=0.0,_=0.0;s=h;a[n>>2]=0;f=n+4|0;a[f>>2]=1;u=1.0;d=0;while(1){if((d|0)>=(r|0)){k=0;b=0.0;w=0.0;c=-1.0;m=-1.0;d=0;break}_=+l[i+(d<<2)>>2];u=u+_*_;d=d+1|0}while(1){if((d|0)>=(t|0))break;p=+l[e+(d<<2)>>2];do{if(p>0.0?(o=p*9.999999960041972e-13,o=o*o,o*w>m*u):0){if(o*b>c*u){a[f>>2]=k;a[n>>2]=d;k=d;_=u;w=b;p=o;m=c;break}else{a[f>>2]=d;_=b;w=u;p=c;m=o;break}}else{_=b;p=c}}while(0);c=+l[i+(d+r<<2)>>2];b=+l[i+(d<<2)>>2];b=u+(c*c-b*b);u=b<1.0?1.0:b;b=_;c=p;d=d+1|0}h=s;return}function at(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=+n;f=f|0;var o=0,s=0,u=0.0,c=0,d=0,b=0,k=0,w=0,m=0,p=0.0,_=0.0,v=0.0,g=0,E=0.0,T=0.0,A=0.0,S=0.0,y=0,M=0.0,L=0.0,O=0.0,R=0.0,N=0;f=h;h=h+2080|0;c=f+2072|0;s=f+2068|0;d=f+2064|0;o=f+2052|0;N=a[r>>2]|0;w=(N|0)/2|0;b=(t|0)/2|0;t=(i|0)/2|0;i=e+2048|0;N=(N|0)<1024;k=N?w:511;a[r>>2]=N?w:511;w=f;ft(i,i,e+(512-k<<2)|0,t,s,c);u=+l[s>>2];l[w>>2]=u;s=1;p=u;while(1){if((s|0)>512)break;O=+l[e+(512-s<<2)>>2];R=+l[e+(t-s+512<<2)>>2];R=p+O*O-R*R;l[w+(s<<2)>>2]=R<0.0?0.0:R;s=s+1|0;p=R}T=+l[w+(k<<2)>>2];A=+l[c>>2];R=A/+H(+(u*T+1.0));m=k<<1;p=u*2.0;_=R*.699999988079071;v=R*.8500000238418579;E=n*.5;s=k;u=R;g=2;while(1){if((g|0)>=16)break;N=g<<1;y=ot(m+g|0,N)|0;if((y|0)<7)break;if((g|0)==2){N=y+k|0;N=(N|0)>512?k:N}else N=ot((re(a[20592+(g<<2)>>2]<<1,k)|0)+g|0,N)|0;ft(i,e+(512-y<<2)|0,e+(512-N<<2)|0,t,c,d);L=+l[c>>2]+ +l[d>>2];l[c>>2]=L;M=+l[w+(y<<2)>>2]+ +l[w+(N<<2)>>2];S=L/+H(+(p*M+1.0));N=y-b|0;N=(N|0)>-1?N:0-N|0;if((N|0)>=2){if((N|0)<3){N=(re(g*5|0,g)|0)<(k|0);R=N?E:0.0}else R=0.0}else R=n;O=_-R;O=O<.30000001192092896?.30000001192092896:O;if((y|0)<21){O=v-R;if(O<.4000000059604645)O=.4000000059604645}if(S>O){s=y;A=L;T=M;u=S}g=g+1|0}n=A<0.0?0.0:A;if(!(T<=n))n=n/(T+1.0);else n=1.0;c=0;while(1){if((c|0)>=3)break;l[o+(c<<2)>>2]=+rt(i,e+(1-(s+c)+512<<2)|0,t);c=c+1|0}_=+l[o+8>>2];p=+l[o>>2];v=+l[o+4>>2];if(_-p>(v-p)*.699999988079071){N=1;y=n>u;R=y?u:n;y=s<<1;N=y+N|0;y=(N|0)<15;N=y?15:N;a[r>>2]=N;h=f;return+R}if(p-_>(v-_)*.699999988079071){N=-1;y=n>u;R=y?u:n;y=s<<1;N=y+N|0;y=(N|0)<15;N=y?15:N;a[r>>2]=N;h=f;return+R}N=0;y=n>u;R=y?u:n;y=s<<1;N=y+N|0;y=(N|0)<15;N=y?15:N;a[r>>2]=N;h=f;return+R}function ft(e,i,r,t,n,a){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;var f=0.0,o=0.0,s=0,u=0,c=0.0,d=0.0;s=h;u=0;f=0.0;o=0.0;while(1){if((u|0)>=(t|0))break;c=+l[e+(u<<2)>>2];d=f+c*+l[i+(u<<2)>>2];c=o+c*+l[r+(u<<2)>>2];u=u+1|0;f=d;o=c}l[n>>2]=f;l[a>>2]=o;h=s;return}function ot(e,i){e=e|0;i=i|0;return(e>>>0)/(i>>>0)|0|0}function st(e,i,r,t,n,f,o,s,u,c,d,b,k,w,m,p,_){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;_=_|0;var v=0,g=0,E=0,T=0,A=0,S=0.0,y=0,M=0,L=0.0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0;v=h;h=h+96|0;T=v+72|0;A=v+48|0;E=v+24|0;g=v;if(!k){if((m|0)==0?(y=r-i|0,+l[w>>2]>+(re(c<<1,y)|0)):0)M=(re(y,c)|0)<(b|0);else M=0}else M=1;p=~~(+(o>>>0)*+l[w>>2]*+(p|0)/+(c<<9|0));k=e+8|0;O=a[k>>2]|0;S=+lt(n,f,i,t,O,c);t=u+28|0;y=ut(a[u+20>>2]|0,a[t>>2]|0)|0;N=(y+3|0)>>>0>o>>>0;M=N?0:M&1;N=N?0:m;if(!((r-i|0)>10?(L=+(b|0)*.125,!(L>16.0)):0))L=16.0;L=(_|0)==0?L:3.0;a[T+0>>2]=a[u+0>>2];a[T+4>>2]=a[u+4>>2];a[T+8>>2]=a[u+8>>2];a[T+12>>2]=a[u+12>>2];a[T+16>>2]=a[u+16>>2];a[T+20>>2]=a[u+20>>2];b=u+24|0;m=a[b>>2]|0;a[A+0>>2]=a[t+0>>2];a[A+4>>2]=a[t+4>>2];a[A+8>>2]=a[t+8>>2];a[A+12>>2]=a[t+12>>2];a[A+16>>2]=a[t+16>>2];C=re(O,c)|0;O=h;h=h+((4*C|0)+15&-16)|0;R=h;h=h+((4*C|0)+15&-16)|0;Ll(O|0,f|0,C<<2|0)|0;C=(N|0)==0;if(C){if(!M){N=m;P=0;B=13}else{ht(e,i,r,n,O,o,y,20802+(d*84|0)|0,R,u,c,d,1,L,_)|0;B=19}}else{P=ht(e,i,r,n,O,o,y,20802+(d*84|0)|0,R,u,c,d,1,L,_)|0;if(!M){N=a[b>>2]|0;B=13}else B=19}if((B|0)==13){V=hr(u)|0;G=a[u>>2]|0;F=u+4|0;a[E+0>>2]=a[F+0>>2];a[E+4>>2]=a[F+4>>2];a[E+8>>2]=a[F+8>>2];a[E+12>>2]=a[F+12>>2];a[E+16>>2]=a[F+16>>2];a[g+0>>2]=a[t+0>>2];a[g+4>>2]=a[t+4>>2];a[g+8>>2]=a[t+8>>2];a[g+12>>2]=a[t+12>>2];a[g+16>>2]=a[t+16>>2];W=ct(m)|0;x=ct(N)|0;D=(dt(G)|0)+W|0;U=x-W|0;B=Ee()|0;I=h;h=h+((1*((x|0)==(W|0)?1:U)|0)+15&-16)|0;Ll(I|0,D|0,U|0)|0;a[u+0>>2]=a[T+0>>2];a[u+4>>2]=a[T+4>>2];a[u+8>>2]=a[T+8>>2];a[u+12>>2]=a[T+12>>2];a[u+16>>2]=a[T+16>>2];a[u+20>>2]=a[T+20>>2];a[b>>2]=m;a[t+0>>2]=a[A+0>>2];a[t+4>>2]=a[A+4>>2];a[t+8>>2]=a[A+8>>2];a[t+12>>2]=a[A+12>>2];a[t+16>>2]=a[A+16>>2];T=ht(e,i,r,n,f,o,y,20760+(d*84|0)+(M*42|0)|0,s,u,c,d,0,L,_)|0;do{if(!C){if((P|0)>=(T|0)){if((P|0)!=(T|0))break;if(((hr(u)|0)+p|0)<=(V|0))break}a[u>>2]=G;a[F+0>>2]=a[E+0>>2];a[F+4>>2]=a[E+4>>2];a[F+8>>2]=a[E+8>>2];a[F+12>>2]=a[E+12>>2];a[F+16>>2]=a[E+16>>2];a[b>>2]=N;a[t+0>>2]=a[g+0>>2];a[t+4>>2]=a[g+4>>2];a[t+8>>2]=a[g+8>>2];a[t+12>>2]=a[g+12>>2];a[t+16>>2]=a[g+16>>2];Ll(D|0,I|0,U|0)|0;Ll(f|0,O|0,(re(a[k>>2]|0,c)|0)<<2|0)|0;Ll(s|0,R|0,(re(a[k>>2]|0,c)|0)<<2|0)|0;M=1}}while(0);ce(B|0)}else if((B|0)==19){Ll(f|0,O|0,(re(a[k>>2]|0,c)|0)<<2|0)|0;Ll(s|0,R|0,(re(a[k>>2]|0,c)|0)<<2|0)|0}if(M){L=S;l[w>>2]=L;h=v;return}L=+l[21096+(d<<2)>>2];L=L*L*+l[w>>2]+S;l[w>>2]=L;h=v;return}function lt(e,i,r,t,n,a){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;var f=0,o=0,s=0,u=0.0,c=0,d=0.0,b=0;s=h;f=0;u=0.0;do{o=re(f,n)|0;c=r;while(1){if((c|0)>=(t|0))break;b=c+o|0;d=+l[e+(b<<2)>>2]-+l[i+(b<<2)>>2];u=u+d*d;c=c+1|0}f=f+1|0}while((f|0)<(a|0));h=s;return+(u>200.0?200.0:u)}function ut(e,i){e=e|0;i=i|0;var r=0;r=h;i=(Sl(i|0)|0)+-32+e|0;h=r;return i|0}function ht(e,i,r,t,n,o,s,u,c,d,b,k,w,m,p){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=+m;p=p|0;var _=0,v=0,g=0,E=0.0,T=0.0,A=0,S=0,y=0,M=0,L=0,O=0,R=0.0,N=0,C=0,P=0.0,B=0.0,D=0,I=0,U=0,F=0,G=0,V=0.0,W=0.0;g=h;h=h+16|0;_=g;v=g+8|0;G=_;a[G>>2]=0;a[G+4>>2]=0;if((s+3|0)<=(o|0))Or(d,w,3);if(!w){E=+l[21112+(k<<2)>>2];T=+l[21096+(k<<2)>>2]}else{E=.149993896484375;T=0.0}k=e+8|0;e=d+20|0;s=d+28|0;w=b*3|0;y=(p|0)==0;D=0;S=i;while(1){if((S|0)>=(r|0))break;M=re(w,r-S|0)|0;A=(S|0)!=(i|0);O=(S|0)<20;L=S<<1;p=(S|0)>1;N=0;do{C=S+(re(N,a[k>>2]|0)|0)|0;V=+l[t+(C<<2)>>2];W=+l[n+(C<<2)>>2];B=T*(W<-9.0?-9.0:W);C=_+(N<<2)|0;P=+l[C>>2];R=V-B-P;I=~~+x(+(R+.5));a[v>>2]=I;W=(W<-28.0?-28.0:W)-m;if((I|0)<0&V0?0:I;a[v>>2]=I}U=o-(ut(a[e>>2]|0,a[s>>2]|0)|0)|0;G=U-M|0;if(A&(G|0)<30&(G|0)<24){F=(I|0)>1?1:I;a[v>>2]=F;if((G|0)<16){F=(F|0)<-1?-1:F;a[v>>2]=F}}else F=I;if(!(y|p^1)){F=(F|0)<0?F:0;a[v>>2]=F}do{if((U|0)<=14){if((U|0)<=1){if((U|0)>0){G=(F|0)>0?0:F;a[v>>2]=G;Or(d,0-G|0,1);break}else{a[v>>2]=-1;break}}else{if((F|0)<1)U=(F|0)<-1?-1:F;else U=1;a[v>>2]=U;Rr(d,U<<1^U>>31,21128,2);break}}else{G=O?L:40;zr(d,v,(f[u+G>>0]|0)<<7,(f[u+(G|1)>>0]|0)<<6)}}while(0);G=a[v>>2]|0;W=+(G|0);l[c+(S+(re(N,a[k>>2]|0)|0)<<2)>>2]=R-W;G=I-G|0;D=D+((G|0)>-1?G:0-G|0)|0;l[n+(S+(re(N,a[k>>2]|0)|0)<<2)>>2]=B+P+W;l[C>>2]=P+W-E*W;N=N+1|0}while((N|0)<(b|0));S=S+1|0}h=g;return(y?D:0)|0}function ct(e){e=e|0;return e|0}function dt(e){e=e|0;return e|0}function bt(e,i,r,t,n,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0.0,b=0,k=0,w=0,m=0.0,p=0;u=h;e=e+8|0;while(1){if((i|0)>=(r|0))break;c=f+(i<<2)|0;k=a[c>>2]|0;b=1<=1){d=+((b&65535)<<16>>16);b=(b<<16>>16)+-1|0;k=0;do{w=~~+x(+((+l[n+(i+(re(k,a[e>>2]|0)|0)<<2)>>2]+.5)*d));p=(w|0)>(b|0);w=((p?b:w)|0)<0?0:p?b:w;Cr(o,w,a[c>>2]|0);m=(+(w|0)+.5)*+(1<<14-(a[c>>2]|0)|0)*6103515625.0e-14+-.5;w=t+(i+(re(k,a[e>>2]|0)|0)<<2)|0;l[w>>2]=+l[w>>2]+m;w=n+(i+(re(k,a[e>>2]|0)|0)<<2)|0;l[w>>2]=+l[w>>2]-m;k=k+1|0}while((k|0)<(s|0))}i=i+1|0}h=u;return}function kt(e,i,r,t,n,f,o,s,u,c){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;var d=0,b=0,k=0,w=0,m=0,p=0,_=0;d=h;e=e+8|0;b=0;while(1){if((b|0)<2)k=i;else break;while(1){if(!((k|0)<(r|0)&(s|0)>=(c|0)))break;w=f+(k<<2)|0;if((a[w>>2]|0)<=7?(a[o+(k<<2)>>2]|0)==(b|0):0){m=0;do{_=!(+l[n+(k+(re(m,a[e>>2]|0)|0)<<2)>>2]<0.0)&1;Cr(u,_,1);p=t+(k+(re(m,a[e>>2]|0)|0)<<2)|0;l[p>>2]=+l[p>>2]+(+(_|0)+-.5)*+(1<<14-(a[w>>2]|0)+-1|0)*6103515625.0e-14;s=s+-1|0;m=m+1|0}while((m|0)<(c|0))}k=k+1|0}b=b+1|0}h=d;return}function wt(e,i,r,t,n,o,s,u){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;o=o|0;s=s|0;u=u|0;var c=0.0,d=0,b=0,k=0,w=0.0,m=0,p=0,_=0,v=0,g=0,E=0,T=0.0,A=0.0,S=0;m=h;h=h+16|0;d=m;E=d;a[E>>2]=0;a[E+4>>2]=0;if(!n){c=+l[21112+(u<<2)>>2];w=+l[21096+(u<<2)>>2]}else{c=.149993896484375;w=0.0}p=a[o+4>>2]<<3;k=o+20|0;b=o+28|0;e=e+8|0;while(1){if((i|0)>=(r|0))break;_=(i|0)<20;v=i<<1;g=0;do{E=p-(ut(a[k>>2]|0,a[b>>2]|0)|0)|0;do{if((E|0)<=14){if((E|0)>1){E=vr(o,21128,2)|0;E=E>>1^0-(E&1);break}if((E|0)>0)E=0-(_r(o,1)|0)|0;else E=-1}else{E=_?v:40;E=qr(o,(f[20760+(u*84|0)+(n*42|0)+E>>0]|0)<<7,(f[(E|1)+(20760+(u*84|0)+(n*42|0))>>0]|0)<<6)|0}}while(0);T=+(E|0);S=t+(i+(re(g,a[e>>2]|0)|0)<<2)|0;A=+l[S>>2];l[S>>2]=A<-9.0?-9.0:A;S=t+(i+(re(g,a[e>>2]|0)|0)<<2)|0;E=d+(g<<2)|0;A=+l[E>>2];l[S>>2]=w*+l[S>>2]+A+T;l[E>>2]=A+T-c*T;g=g+1|0}while((g|0)<(s|0));i=i+1|0}h=m;return}function mt(e,i,r,t,n,f,o){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;var s=0,u=0,c=0,d=0,b=0.0;s=h;e=e+8|0;while(1){if((i|0)>=(r|0))break;u=n+(i<<2)|0;c=a[u>>2]|0;e:do{if((c|0)>=1){d=0;while(1){b=+(Er(f,c)|0)+.5;c=t+(i+(re(d,a[e>>2]|0)|0)<<2)|0;l[c>>2]=+l[c>>2]+(b*+(1<<14-(a[u>>2]|0)|0)*6103515625.0e-14+-.5);d=d+1|0;if((d|0)>=(o|0))break e;c=a[u>>2]|0}}}while(0);i=i+1|0}h=s;return}function pt(e,i,r,t,n,f,o,s,u){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;u=u|0;var c=0,d=0,b=0,k=0,w=0,m=0,p=0.0;c=h;e=e+8|0;d=0;while(1){if((d|0)<2)b=i;else break;while(1){if(!((b|0)<(r|0)&(o|0)>=(u|0)))break;k=n+(b<<2)|0;if((a[k>>2]|0)<=7?(a[f+(b<<2)>>2]|0)==(d|0):0){w=0;do{p=+(Er(s,1)|0)+-.5;m=t+(b+(re(w,a[e>>2]|0)|0)<<2)|0;l[m>>2]=+l[m>>2]+p*+(1<<14-(a[k>>2]|0)+-1|0)*6103515625.0e-14;o=o+-1|0;w=w+1|0}while((w|0)<(u|0))}b=b+1|0}d=d+1|0}h=c;return}function _t(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0,c=0,d=0.0;o=h;e=e+8|0;s=0;do{u=0;while(1){if((u|0)>=(i|0)){u=i;break}c=u+(re(s,a[e>>2]|0)|0)|0;d=+ee(+ +l[t+(c<<2)>>2])*1.4426950408889634;l[n+(c<<2)>>2]=d-+l[20656+(u<<2)>>2];u=u+1|0}while(1){if((u|0)>=(r|0))break;l[n+((re(s,a[e>>2]|0)|0)+u<<2)>>2]=-14.0;u=u+1|0}s=s+1|0}while((s|0)<(f|0));h=o;return}function vt(e,i,r,t,o,s,l,u,c,d,b,k,w,m,p,_,v,g,E){e=e|0;i=i|0;r=r|0;t=t|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;_=_|0;v=v|0;g=g|0;E=E|0;var T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0;T=h;A=(c|0)>0?c:0;B=a[e+8>>2]|0;c=(A|0)>7?8:0;A=A-c|0;if((m|0)==2?(y=f[21136+(r-i)>>0]|0,(y|0)<=(A|0)):0){A=A-y|0;S=(A|0)>7?8:0;A=A-S|0}else{S=0;y=0}N=h;h=h+((4*B|0)+15&-16)|0;O=h;h=h+((4*B|0)+15&-16)|0;R=h;h=h+((4*B|0)+15&-16)|0;L=h;h=h+((4*B|0)+15&-16)|0;D=m<<3;M=e+32|0;s=s+-5-p|0;P=p+3|0;C=i;while(1){if((C|0)>=(r|0))break;x=C+1|0;V=a[M>>2]|0;V=(n[V+(x<<1)>>1]|0)-(n[V+(C<<1)>>1]|0)|0;W=V*3<>4;a[R+(C<<2)>>2]=(D|0)>(W|0)?D:W;W=(re(re(re(V,m)|0,s)|0,r-C+-1|0)|0)<

          >6;a[L+(C<<2)>>2]=(V<>2]|0;s=e+52|0;I=C+-1|0;P=1;do{U=P+I>>1;F=re(U,B)|0;G=1;W=r;V=0;e:while(1){i:while(1){do{x=W;W=W+-1|0;if((x|0)<=(i|0))break e;K=a[M>>2]|0;x=re((n[K+(x<<1)>>1]|0)-(n[K+(W<<1)>>1]|0)|0,m)|0;x=(re(x,f[(a[s>>2]|0)+(F+W)>>0]|0)|0)<

          >2;if((x|0)>0){x=x+(a[L+(W<<2)>>2]|0)|0;x=(x|0)<0?0:x}x=x+(a[t+(W<<2)>>2]|0)|0;if((x|0)<(a[R+(W<<2)>>2]|0)^1|G^1)break i}while((x|0)<(D|0));V=V+D|0}K=a[o+(W<<2)>>2]|0;G=0;V=V+((x|0)<(K|0)?x:K)|0}K=(V|0)>(A|0);I=K?U+-1|0:I;P=K?P:U+1|0}while((P|0)<=(I|0));U=P+-1|0;D=re(U,B)|0;G=re(P,B)|0;U=(U|0)>0;B=i;I=i;while(1){if((I|0)>=(r|0))break;F=I+1|0;x=a[M>>2]|0;x=re((n[x+(F<<1)>>1]|0)-(n[x+(I<<1)>>1]|0)|0,m)|0;W=a[s>>2]|0;V=(re(x,f[W+(D+I)>>0]|0)|0)<

          >2;if((P|0)<(C|0))W=(re(x,f[W+(G+I)>>0]|0)|0)<

          >2;else W=a[o+(I<<2)>>2]|0;if((V|0)>0){V=V+(a[L+(I<<2)>>2]|0)|0;V=(V|0)<0?0:V}if((W|0)>0){W=W+(a[L+(I<<2)>>2]|0)|0;W=(W|0)<0?0:W}K=a[t+(I<<2)>>2]|0;V=U?V+K|0:V;x=W+K-V|0;a[N+(I<<2)>>2]=V;a[O+(I<<2)>>2]=(x|0)<0?0:x;B=(K|0)>0?I:B;I=F}K=gt(e,i,r,B,N,O,R,o,A,d,c,l,y,u,S,b,k,w,m,p,_,v,g,E)|0;h=T;return K|0}function gt(e,i,r,t,o,s,l,u,c,d,b,k,w,m,p,_,v,g,E,T,A,S,y,M){e=e|0;i=i|0;r=r|0;t=t|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;_=_|0;v=v|0;g=g|0;E=E|0;T=T|0;A=A|0;S=S|0;y=y|0;M=M|0;var L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0;O=h;R=E<<3;C=(E|0)>1;L=C&1;N=T<<3;D=64;B=0;I=0;while(1){if((I|0)>=6){I=0;F=r;U=0;break}F=B+D>>1;U=1;W=r;G=0;e:while(1){i:while(1){do{V=W;W=W+-1|0;if((V|0)<=(i|0))break e;V=(a[o+(W<<2)>>2]|0)+((re(F,a[s+(W<<2)>>2]|0)|0)>>6)|0;if((V|0)<(a[l+(W<<2)>>2]|0)^1|U^1)break i}while((V|0)<(R|0));G=G+R|0}x=a[u+(W<<2)>>2]|0;U=0;G=G+((V|0)<(x|0)?V:x)|0}x=(G|0)>(c|0);D=x?F:D;B=x?B:F;I=I+1|0}while(1){D=F+-1|0;if((F|0)<=(i|0))break;F=(a[o+(D<<2)>>2]|0)+((re(B,a[s+(D<<2)>>2]|0)|0)>>6)|0;if((I|0)==0?(F|0)<(a[l+(D<<2)>>2]|0):0){I=0;F=(F|0)<(R|0)?0:R}else I=1;x=a[u+(D<<2)>>2]|0;x=(F|0)<(x|0)?F:x;a[_+(D<<2)>>2]=x;F=D;U=U+x|0}o=e+32|0;s=R+8|0;S=(S|0)==0;I=i+2|0;D=w;B=U;w=r;while(1){F=w+-1|0;if((F|0)<=(t|0)){P=18;break}K=c-B|0;V=a[o>>2]|0;U=n[V+(w<<1)>>1]|0;G=n[V+(i<<1)>>1]|0;W=U-G|0;x=Et(K,W)|0;W=K-(re(W,x)|0)|0;V=n[V+(F<<1)>>1]|0;G=W+(G-V)|0;V=U-V|0;U=_+(F<<2)|0;W=a[U>>2]|0;G=W+(re(x,V)|0)+((G|0)>0?G:0)|0;x=a[l+(F<<2)>>2]|0;if((G|0)<(((x|0)>(s|0)?x:s)|0))w=W;else{if(S){if(_r(A,1)|0)break}else{if((w|0)<=(I|0)){P=23;break}if(!((F|0)>(M|0)?1:(G|0)<=((re((w|0)<=(y|0)?7:9,V)|0)<>4|0))){P=23;break}Or(A,0,1)}w=a[U>>2]|0;G=G+-8|0;B=B+8|0}if((D|0)>0)V=f[21136+(F-i)>>0]|0;else V=D;B=B-(w+D)+V|0;w=(G|0)<(R|0);a[U>>2]=w?0:R;D=V;B=w?B:B+R|0;w=F}if((P|0)==18)c=c+b|0;else if((P|0)==23)Or(A,1,1);do{if((D|0)>0){if(S){l=(gr(A,w+1-i|0)|0)+i|0;a[k>>2]=l;break}else{l=a[k>>2]|0;l=(l|0)<(w|0)?l:w;a[k>>2]=l;Nr(A,l-i|0,w+1-i|0);l=a[k>>2]|0;break}}else{a[k>>2]=0;l=0}}while(0);do{if((l|0)>(i|0)){if((p|0)>0){if(S){a[m>>2]=_r(A,1)|0;break}else{Or(A,a[m>>2]|0,1);break}}else P=41}else{c=c+p|0;P=41}}while(0);if((P|0)==41)a[m>>2]=0;P=c-B|0;A=a[o>>2]|0;A=(n[A+(w<<1)>>1]|0)-(n[A+(i<<1)>>1]|0)|0;p=Et(P,A)|0;A=P-(re(A,p)|0)|0;P=i;while(1){if((P|0)>=(w|0)){P=i;break}K=P+1|0;W=a[o>>2]|0;W=re(p,(n[W+(K<<1)>>1]|0)-(n[W+(P<<1)>>1]|0)|0)|0;x=_+(P<<2)|0;a[x>>2]=(a[x>>2]|0)+W;P=K}while(1){if((P|0)>=(w|0))break;K=P+1|0;x=a[o>>2]|0;x=(n[x+(K<<1)>>1]|0)-(n[x+(P<<1)>>1]|0)|0;x=(A|0)<(x|0)?A:x;W=_+(P<<2)|0;a[W>>2]=(a[W>>2]|0)+x;A=A-x|0;P=K}P=(E|0)==2;e=e+56|0;A=C?4:3;C=0;while(1){if((i|0)>=(w|0))break;p=i+1|0;t=a[o>>2]|0;t=(n[t+(p<<1)>>1]|0)-(n[t+(i<<1)>>1]|0)<>2]|0)+C|0;if((t|0)>1){l=y-(a[u+(i<<2)>>2]|0)|0;l=(l|0)>0?l:0;c=y-l|0;a[M>>2]=c;b=re(t,E)|0;if(P&(t|0)>2?(a[m>>2]|0)==0:0)y=(i|0)<(a[k>>2]|0);else y=0;y=b+(y&1)|0;b=re(y,(n[(a[e>>2]|0)+(i<<1)>>1]|0)+N|0)|0;S=(b>>1)+(re(y,-21)|0)|0;if((t|0)==2)t=S+(y<<3>>2)|0;else t=S;S=c+t|0;if((S|0)>=(y<<4|0)){if((S|0)<(y*24|0))t=t+(b>>3)|0}else t=t+(b>>2)|0;b=c+t+(y<<2)|0;c=v+(i<<2)|0;b=(Et((b|0)<0?0:b,y)|0)>>>3;a[c>>2]=b;K=re(b,E)|0;S=a[M>>2]|0;if((K|0)>(S>>3|0)){b=S>>L>>3;a[c>>2]=b}K=(b|0)<8?b:8;a[c>>2]=K;K=re(K,y<<3)|0;a[g+(i<<2)>>2]=(K|0)>=((a[M>>2]|0)+t|0)&1;K=(re(a[c>>2]|0,E)|0)<<3;a[M>>2]=(a[M>>2]|0)-K}else{l=y-R|0;l=(l|0)<0?0:l;a[M>>2]=y-l;a[v+(i<<2)>>2]=0;a[g+(i<<2)>>2]=1}if((l|0)<=0){C=l;i=p;continue}V=l>>A;x=v+(i<<2)|0;W=a[x>>2]|0;K=8-W|0;K=(V|0)<(K|0)?V:K;a[x>>2]=W+K;K=(re(K,E)|0)<<3;a[g+(i<<2)>>2]=(K|0)>=(l-C|0)&1;C=l-K|0;i=p}a[d>>2]=C;while(1){if((i|0)>=(r|0))break;x=_+(i<<2)|0;K=v+(i<<2)|0;a[K>>2]=a[x>>2]>>L>>3;a[x>>2]=0;a[g+(i<<2)>>2]=(a[K>>2]|0)<1&1;i=i+1|0}h=O;return w|0}function Et(e,i){e=e|0;i=i|0;return(e>>>0)/(i>>>0)|0|0}function Tt(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0.0,k=0,w=0.0,m=0.0,p=0.0,_=0.0,v=0,g=0.0,E=0;s=h;c=h;h=h+((4*i|0)+15&-16)|0;o=h;h=h+((4*i|0)+15&-16)|0;u=h;h=h+((4*i|0)+15&-16)|0;At(e,i,1,n,r,t);t=0;do{d=e+(t<<2)|0;b=+l[d>>2];k=u+(t<<2)|0;if(b>0.0)l[k>>2]=1.0;else{l[k>>2]=-1.0;l[d>>2]=-b}a[o+(t<<2)>>2]=0;l[c+(t<<2)>>2]=0.0;t=t+1|0}while((t|0)<(i|0));if((i>>1|0)<(r|0)){t=0;b=0.0;do{b=b+ +l[e+(t<<2)>>2];t=t+1|0}while((t|0)<(i|0));if(!(b>1.0000000036274937e-15&b<64.0)){l[e>>2]=1.0;t=1;do{l[e+(t<<2)>>2]=0.0;t=t+1|0}while((t|0)<(i|0));b=1.0}m=+(r+-1|0)*(1.0/b);d=0;t=r;b=0.0;w=0.0;do{_=+l[e+(d<<2)>>2];E=~~+x(+(m*_));a[o+(d<<2)>>2]=E;g=+(E|0);w=w+g*g;b=b+_*g;l[c+(d<<2)>>2]=g*2.0;t=t-E|0;d=d+1|0}while((d|0)<(i|0))}else{t=r;b=0.0;w=0.0}if((t|0)>(i+3|0)){g=+(t|0);w=w+g*g+g*+l[c>>2];a[o>>2]=(a[o>>2]|0)+t;t=0}d=0;while(1){if((d|0)>=(t|0)){c=0;break}p=w+1.0;m=0.0;E=0;w=-999999986991104.0;k=0;while(1){g=b+ +l[e+(k<<2)>>2];_=p+ +l[c+(k<<2)>>2];g=g*g;v=m*g>_*w;E=v?k:E;k=k+1|0;if((k|0)>=(i|0))break;else{m=v?_:m;w=v?g:w}}g=b+ +l[e+(E<<2)>>2];v=c+(E<<2)|0;w=+l[v>>2];l[v>>2]=w+2.0;E=o+(E<<2)|0;a[E>>2]=(a[E>>2]|0)+1;d=d+1|0;b=g;w=p+w}do{g=+l[u+(c<<2)>>2];E=e+(c<<2)|0;l[E>>2]=g*+l[E>>2];if(g<0.0){E=o+(c<<2)|0;a[E>>2]=0-(a[E>>2]|0)}c=c+1|0}while((c|0)<(i|0));or(o,i,r,f);E=St(o,i,n)|0;h=s;return E|0}function At(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0.0,l=0.0,u=0.0,c=0.0,d=0,b=0;o=h;if((n<<1|0)>=(i|0)|(f|0)==0){h=o;return}l=+(i|0)/+((re(a[21160+(f+-1<<2)>>2]|0,n)|0)+i|0);l=l*l*.5;s=+Y(+(l*1.5707963705062866));l=+Y(+((1.0-l)*1.5707963705062866));e:do{if((t<<3|0)>(i|0))f=0;else{n=t>>2;f=1;while(1){if(((re((re(f,f)|0)+f|0,t)|0)+n|0)>=(i|0))break e;f=f+1|0}}}while(0);i=Nt(i,t)|0;r=(r|0)<0;d=(f|0)==0;c=-l;u=-s;b=0;while(1){if((b|0)>=(t|0))break;n=e+((re(b,i)|0)<<2)|0;if(!r){Ct(n,i,1,s,c);if(!d)Ct(n,i,f,l,u)}else{if(!d)Ct(n,i,f,l,s);Ct(n,i,1,s,l)}b=b+1|0}h=o;return}function St(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0,l=0;t=h;if((r|0)<2){l=1;h=t;return l|0}i=Nt(i,r)|0;f=0;n=0;do{o=re(n,i)|0;s=0;l=0;do{l=l|a[e+(o+s<<2)>>2];s=s+1|0}while((s|0)<(i|0));f=f|((l|0)!=0&1)<>2]=n*+(a[e+(o<<2)>>2]|0);o=o+1|0}while((o|0)<(r|0));h=f;return}function Lt(e,i,r,t){e=e|0;i=i|0;r=+r;t=t|0;var n=0;t=h;r=1.0/+H(+(+Ot(e,e,i)+1.0000000036274937e-15))*r;n=0;while(1){if((n|0)>=(i|0))break;l[e>>2]=r*+l[e>>2];n=n+1|0;e=e+4|0}h=t;return}function Ot(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0.0,a=0,f=0.0;t=h;a=0;n=0.0;while(1){if((a|0)>=(r|0))break;f=n+ +l[e+(a<<2)>>2]*+l[i+(a<<2)>>2];a=a+1|0;n=f}h=t;return+n}function Rt(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var a=0.0,f=0.0,o=0.0,s=0.0,u=0.0;n=h;e:do{if(!r){f=+Ot(e,e,t)+1.0000000036274937e-15;a=+Ot(i,i,t)+1.0000000036274937e-15}else{f=1.0000000036274937e-15;a=1.0000000036274937e-15;r=0;while(1){if((r|0)>=(t|0))break e;u=+l[e+(r<<2)>>2];o=+l[i+(r<<2)>>2];s=u+o;o=u-o;f=f+s*s;a=a+o*o;r=r+1|0}}}while(0);r=~~+x(+(+X(+ +H(+a),+ +H(+f))*10430.3818359375+.5));h=n;return r|0}function Nt(e,i){e=e|0;i=i|0;return(e>>>0)/(i>>>0)|0|0}function Ct(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=+t;n=+n;var a=0.0,f=0,o=0,s=0,u=0,c=0.0,d=0.0,b=0;f=h;a=-n;s=i-r|0;u=e;o=0;while(1){if((o|0)>=(s|0))break;d=+l[u>>2];b=u+(r<<2)|0;c=+l[b>>2];l[b>>2]=c*t+d*n;l[u>>2]=d*t+c*a;u=u+4|0;o=o+1|0}i=i-(r<<1)|0;o=e+(i+-1<<2)|0;while(1){if((i|0)<=0)break;c=+l[o>>2];b=o+(r<<2)|0;d=+l[b>>2];l[b>>2]=d*t+c*n;l[o>>2]=c*t+d*a;o=o+-4|0;i=i+-1|0}h=f;return}function Pt(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0;t=h;h=h+80|0;u=t+44|0;s=t+8|0;c=t;a[c>>2]=u;a[c+4>>2]=s;o=r>>1;Bt(i,u,s,o);E=Dt(u,8192,o)|0;if((E|0)<0){n[e>>1]=0;f=0;b=s;d=1;E=Dt(s,8192,o)|0}else{f=0;b=u;d=0}e:while(1){m=1;w=0;v=8192;i:while(1){k=m;while(1){_=n[21992+(k<<1)>>1]|0;g=Dt(b,_,o)|0;if((E|0)<1){if((g|0)>=(w|0))break;if((E|0)>-1)l=8}else l=8;if((l|0)==8?(l=0,(g|0)<=(0-w|0)):0)break;if((k|0)>127)break i;else{k=k+1|0;w=0;v=_;E=g}}w=(g|0)==0?1:0;m=-256;p=0;while(1){if((p|0)>=3)break;A=v+_|0;A=(A>>1)+(A&1)|0;T=Dt(b,A,o)|0;if((E|0)<1){if((T|0)<=-1?!((E|0)>-1&(T|0)<1):0)l=15;else{_=A;g=T}}else if((T|0)<1){_=A;g=T}else l=15;if((l|0)==15){l=0;m=m+(128>>>p)|0;v=A;E=T}p=p+1|0}b=E-g|0;if((((E|0)>0?E:0-E|0)|0)<65536){if((E|0)!=(g|0))m=m+(((E<<5)+(b>>1)|0)/(b|0)|0)|0}else m=m+((E|0)/(b>>5|0)|0)|0;n[e+(d<<1)>>1]=It((k<<8)+m|0)|0;p=d+1|0;if((p|0)>=(r|0)){l=30;break e}m=k;b=a[c+((p&1)<<2)>>2]|0;d=p;v=n[21992+(k+-1<<1)>>1]|0;E=1-(p&2)<<12}d=f+1|0;if((f|0)>29)break;E=d<<16;ha(i,r,65536-(re(E+655360>>16,E>>16)|0)|0);Bt(i,u,s,o);E=Dt(u,8192,o)|0;if((E|0)>=0){f=d;b=u;d=0;continue}n[e>>1]=0;f=d;b=s;d=1;E=Dt(s,8192,o)|0}if((l|0)==30){h=t;return}n[e>>1]=32768/(r+1|0)|0;f=1;while(1){if((f|0)>=(r|0))break;n[e+(f<<1)>>1]=re((f<<16)+65536>>16,n[e>>1]|0)|0;f=f+1|0}h=t;return}function Bt(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0;n=h;a[i+(t<<2)>>2]=65536;a[r+(t<<2)>>2]=65536;f=0;while(1){if((f|0)>=(t|0)){f=t;break}o=e+(t-f+-1<<2)|0;s=e+(f+t<<2)|0;a[i+(f<<2)>>2]=0-(a[o>>2]|0)-(a[s>>2]|0);a[r+(f<<2)>>2]=(a[s>>2]|0)-(a[o>>2]|0);f=f+1|0}while(1){if((f|0)<=0)break;s=f+-1|0;o=i+(s<<2)|0;a[o>>2]=(a[o>>2]|0)-(a[i+(f<<2)>>2]|0);o=r+(s<<2)|0;a[o>>2]=(a[o>>2]|0)+(a[r+(f<<2)>>2]|0);f=s}Ut(i,t);Ut(r,t);h=n;return}function Dt(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0;t=h;n=a[e+(r<<2)>>2]|0;f=i<<4;if((r|0)==8|0){i=i<<20>>16;o=(f>>15)+1>>1;r=(a[e+28>>2]|0)+((re(n>>16,i)|0)+((re(n&65535,i)|0)>>16))+(re(n,o)|0)|0;r=(a[e+24>>2]|0)+((re(r>>16,i)|0)+((re(r&65535,i)|0)>>16))+(re(r,o)|0)|0;r=(a[e+20>>2]|0)+((re(r>>16,i)|0)+((re(r&65535,i)|0)>>16))+(re(r,o)|0)|0;r=(a[e+16>>2]|0)+((re(r>>16,i)|0)+((re(r&65535,i)|0)>>16))+(re(r,o)|0)|0;r=(a[e+12>>2]|0)+((re(r>>16,i)|0)+((re(r&65535,i)|0)>>16))+(re(r,o)|0)|0;r=(a[e+8>>2]|0)+((re(r>>16,i)|0)+((re(r&65535,i)|0)>>16))+(re(r,o)|0)|0;r=(a[e+4>>2]|0)+((re(r>>16,i)|0)+((re(r&65535,i)|0)>>16))+(re(r,o)|0)|0;o=(a[e>>2]|0)+((re(r>>16,i)|0)+((re(r&65535,i)|0)>>16))+(re(r,o)|0)|0;h=t;return o|0}i=i<<20>>16;f=(f>>15)+1>>1;while(1){o=r+-1|0;if((r|0)<=0)break;r=o;n=(a[e+(o<<2)>>2]|0)+((re(n>>16,i)|0)+((re(n&65535,i)|0)>>16))+(re(n,f)|0)|0}h=t;return n|0}function It(e){e=e|0;return((e|0)<32767?e:32767)|0}function Ut(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0;r=h;t=2;while(1){if((t|0)>(i|0))break;else n=i;while(1){if((n|0)<=(t|0))break;f=e+(n+-2<<2)|0;a[f>>2]=(a[f>>2]|0)-(a[e+(n<<2)>>2]|0);n=n+-1|0}f=e+(t+-2<<2)|0;a[f>>2]=(a[f>>2]|0)-(a[e+(t<<2)>>2]<<1);t=t+1|0}h=r;return}function Ft(e){e=e|0;var i=0,r=0,t=0,f=0,o=0,s=0,l=0;i=h;o=e+2340|0;s=a[o>>2]|0;t=32767/(s+1|0)|0;r=0;f=0;while(1){if((f|0)>=(s|0))break;l=r+t|0;n[e+(f<<1)+4052>>1]=l;s=a[o>>2]|0;r=l;f=f+1|0}a[e+4148>>2]=0;a[e+4152>>2]=3176576;h=i;return}function Gt(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0;f=h;h=h+32|0;o=f;l=e+2772|0;s=e+2316|0;if((a[s>>2]|0)!=(a[e+4156>>2]|0)){Ft(e);a[e+4156>>2]=a[s>>2]}s=e+4160|0;do{if(!(a[s>>2]|0)){if(!(a[e+4164>>2]|0)){c=e+2340|0;u=0;while(1){if((u|0)>=(a[c>>2]|0))break;y=n[e+(u<<1)+2344>>1]|0;L=e+(u<<1)+4052|0;S=n[L>>1]|0;M=S&65535;n[L>>1]=M+((((y<<16>>16)-(S<<16>>16)>>16)*16348|0)+((((y&65535)-M&65535)*16348|0)>>>16));u=u+1|0}u=e+2324|0;b=a[u>>2]|0;k=0;d=0;c=0;while(1){if((d|0)>=(b|0))break;M=a[i+(d<<2)+16>>2]|0;y=(M|0)>(k|0);L=y?d:c;k=y?M:k;d=d+1|0;c=L}d=e+2332|0;L=a[d>>2]|0;Ol(e+(L<<2)+2772|0,l|0,(re(b+-1|0,L)|0)<<2|0)|0;d=a[d>>2]|0;Ll(l|0,e+((re(c,d)|0)<<2)+4|0,d<<2|0)|0;c=e+4148|0;u=a[u>>2]|0;d=0;while(1){if((d|0)>=(u|0))break;M=a[c>>2]|0;L=(a[i+(d<<2)+16>>2]|0)-M|0;a[c>>2]=M+(((L>>16)*4634|0)+(((L&65535)*4634|0)>>>16));d=d+1|0}if(a[s>>2]|0)break}yl(e+4084|0,0,a[e+2340>>2]<<2|0)|0;h=f;return}}while(0);i=Ee()|0;s=h;h=h+((4*(t+16|0)|0)+15&-16)|0;L=n[e+4224>>1]|0;c=L<<16>>16;d=a[e+4244>>2]|0;u=d<<16>>16;d=(re(c>>16,u)|0)+((re(L&65535,u)|0)>>16)+(re(c,(d>>15)+1>>1)|0)|0;c=a[e+4148>>2]|0;u=d>>16;if((d|0)>2097151|(c|0)>8388608){L=c>>16;u=(Vt((re(L,L)|0)-((re(u,u)|0)<<5)|0)|0)<<16}else{L=d<<16>>16;M=c<<16>>16;u=(Vt((re(c>>16,M)|0)+((re(c&65535,M)|0)>>16)+(re(c,(c>>15)+1>>1)|0)-((re(u,L)|0)+((re(d&65535,L)|0)>>16)+(re(d,(d>>15)+1>>1)|0)<<5)|0)|0)<<8}Wt(s+64|0,l,u,t,e+4152|0);l=e+2340|0;Qt(o,e+4052|0,a[l>>2]|0);e=e+4084|0;c=s+0|0;d=e+0|0;u=c+64|0;do{a[c>>2]=a[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(u|0));T=n[o>>1]|0;E=n[o+2>>1]|0;g=n[o+4>>1]|0;u=n[o+6>>1]|0;_=n[o+8>>1]|0;p=n[o+10>>1]|0;m=n[o+12>>1]|0;w=n[o+14>>1]|0;k=n[o+16>>1]|0;b=n[o+18>>1]|0;c=n[o+20>>1]|0;S=n[o+22>>1]|0;d=n[o+24>>1]|0;v=n[o+26>>1]|0;A=n[o+28>>1]|0;o=n[o+30>>1]|0;y=0;while(1){if((y|0)>=(t|0))break;L=a[s+(y+15<<2)>>2]|0;L=(a[l>>2]>>1)+((re(L>>16,T)|0)+((re(L&65535,T)|0)>>16))|0;M=a[s+(y+14<<2)>>2]|0;M=L+((re(M>>16,E)|0)+((re(M&65535,E)|0)>>16))|0;L=a[s+(y+13<<2)>>2]|0;L=M+((re(L>>16,g)|0)+((re(L&65535,g)|0)>>16))|0;M=a[s+(y+12<<2)>>2]|0;M=L+((re(M>>16,u)|0)+((re(M&65535,u)|0)>>16))|0;L=a[s+(y+11<<2)>>2]|0;L=M+((re(L>>16,_)|0)+((re(L&65535,_)|0)>>16))|0;M=a[s+(y+10<<2)>>2]|0;M=L+((re(M>>16,p)|0)+((re(M&65535,p)|0)>>16))|0;L=a[s+(y+9<<2)>>2]|0;L=M+((re(L>>16,m)|0)+((re(L&65535,m)|0)>>16))|0;M=a[s+(y+8<<2)>>2]|0;M=L+((re(M>>16,w)|0)+((re(M&65535,w)|0)>>16))|0;L=a[s+(y+7<<2)>>2]|0;L=M+((re(L>>16,k)|0)+((re(L&65535,k)|0)>>16))|0;M=a[s+(y+6<<2)>>2]|0;M=L+((re(M>>16,b)|0)+((re(M&65535,b)|0)>>16))|0;if((a[l>>2]|0)==16){L=a[s+(y+5<<2)>>2]|0;L=M+((re(L>>16,c)|0)+((re(L&65535,c)|0)>>16))|0;M=a[s+(y+4<<2)>>2]|0;M=L+((re(M>>16,S)|0)+((re(M&65535,S)|0)>>16))|0;L=a[s+(y+3<<2)>>2]|0;L=M+((re(L>>16,d)|0)+((re(L&65535,d)|0)>>16))|0;M=a[s+(y+2<<2)>>2]|0;M=L+((re(M>>16,v)|0)+((re(M&65535,v)|0)>>16))|0;L=a[s+(y+1<<2)>>2]|0;L=M+((re(L>>16,A)|0)+((re(L&65535,A)|0)>>16))|0;M=a[s+(y<<2)>>2]|0;M=L+((re(M>>16,o)|0)+((re(M&65535,o)|0)>>16))|0}O=s+(y+16<<2)|0;L=(a[O>>2]|0)+(M<<4)|0;a[O>>2]=L;M=r+(y<<1)|0;L=(n[M>>1]|0)+((L>>9)+1>>1)|0;if((L|0)>32767)L=32767;else L=(L|0)<-32768?-32768:L&65535;n[M>>1]=L;y=y+1|0}c=e+0|0;d=s+(t<<2)+0|0;u=c+64|0;do{a[c>>2]=a[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(u|0));ce(i|0);h=f;return}function Vt(e){e=e|0;var i=0,r=0,t=0;i=h;h=h+16|0;r=i+4|0;t=i;if((e|0)<1){t=0;h=i;return t|0}xt(e,r,t);r=a[r>>2]|0;r=((r&1|0)==0?46214:32768)>>>(r>>1);t=(re(a[t>>2]<<16>>16,13959168)|0)>>16;t=r+((re(r>>16,t)|0)+((re(r&65535,t)|0)>>16))|0;h=i;return t|0}function Wt(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0,s=0,l=0,u=0,c=0;o=h;f=255;while(1){if((f|0)<=(t|0))break;f=f>>1}s=r<<12>>16;r=(r>>19)+1>>1;u=a[n>>2]|0;l=0;while(1){if((l|0)>=(t|0))break;u=(re(u,196314165)|0)+907633515|0;c=a[i+((u>>24&f)<<2)>>2]|0;c=(re(c>>16,s)|0)+((re(c&65535,s)|0)>>16)+(re(c,r)|0)|0;if((c|0)<=32767){if((c|0)<-32768)c=-32768;else c=c<<16>>16}else c=32767;a[e+(l<<2)>>2]=c;l=l+1|0}a[n>>2]=u;h=o;return}function xt(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;n=Kt(e)|0;a[i>>2]=n;a[r>>2]=(Ht(e,24-n|0)|0)&127;h=t;return}function Kt(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function Ht(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=0-i|0;do{if(i)if((i|0)<0){e=e<>>(i+32|0);break}else{e=e<<32-i|e>>>i;break}}while(0);h=r;return e|0}function zt(e){e=e|0;var i=0,r=0,n=0,f=0,o=0;i=h;if((t[e+4565>>0]|0)!=2){h=i;return}f=re(a[e+4600>>2]|0,65536e3)|0;f=(po((f|0)/(a[e+4568>>2]|0)|0)|0)+-2048|0;r=a[e+4728>>2]|0;o=0-r<<2;r=r<<16>>16;n=re(o>>16,r)|0;r=re(o&65532,r)|0;o=re(n+(r>>16)>>16,f-((po(3932160)|0)+63488)<<16>>16)|0;f=f+(o+((re(n+(r>>>16)&65535,f-((po(3932160)|0)+63488)<<16>>16)|0)>>16))|0;r=e+8|0;n=a[r>>2]|0;f=f-(n>>8)|0;if((f|0)<0)f=f*3|0;if((f|0)>51)f=51;else f=(f|0)<-51?-51:f;o=re(a[e+4556>>2]<<16>>16,f<<16>>16)|0;a[r>>2]=n+(((o>>16)*6554|0)+(((o&65535)*6554|0)>>>16));o=(po(60)|0)<<8;o=(o|0)>((po(100)|0)<<8|0);e=a[r>>2]|0;do{if(o){if((e|0)>((po(60)|0)<<8|0)){e=(po(60)|0)<<8;break}o=a[r>>2]|0;if((o|0)<((po(100)|0)<<8|0)){e=(po(100)|0)<<8;break}else{e=a[r>>2]|0;break}}else{if((e|0)>((po(100)|0)<<8|0)){e=(po(100)|0)<<8;break}o=a[r>>2]|0;if((o|0)<((po(60)|0)<<8|0)){e=(po(60)|0)<<8;break}else{e=a[r>>2]|0;break}}}while(0);a[r>>2]=e;h=i;return}function Yt(e,i,r,t,a,f){e=e|0;i=i|0;r=r|0;t=t|0;a=a|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0;u=h;f=r+2|0;c=r+4|0;l=r+6|0;o=r+8|0;d=r+10|0;s=a;while(1){if((s|0)>=(t|0))break;k=s+-1|0;b=re(n[i+(k<<1)>>1]|0,n[r>>1]|0)|0;b=b+(re(n[i+(s+-2<<1)>>1]|0,n[f>>1]|0)|0)|0;b=b+(re(n[i+(s+-3<<1)>>1]|0,n[c>>1]|0)|0)|0;b=b+(re(n[i+(s+-4<<1)>>1]|0,n[l>>1]|0)|0)|0;b=b+(re(n[i+(s+-5<<1)>>1]|0,n[o>>1]|0)|0)|0;b=b+(re(n[i+(s+-6<<1)>>1]|0,n[d>>1]|0)|0)|0;w=6;while(1){if((w|0)>=(a|0))break;m=b+(re(n[i+(k-w<<1)>>1]|0,n[r+(w<<1)>>1]|0)|0)|0;b=m+(re(n[i+(k+~w<<1)>>1]|0,n[r+((w|1)<<1)>>1]|0)|0)|0;w=w+2|0}b=((n[i+(s<<1)>>1]<<12)-b>>11)+1>>1;if((b|0)>32767)b=32767;else b=(b|0)<-32768?-32768:b&65535;n[e+(s<<1)>>1]=b;s=s+1|0}yl(e|0,0,a<<1|0)|0;h=u;return}function qt(e,i){e=e|0;i=i|0;var r=0,t=0,f=0,o=0,s=0,l=0;r=h;h=h+128|0;t=r;o=i&1;f=0;s=0;while(1){if((s|0)>=(i|0))break;l=n[e+(s<<1)>>1]|0;a[t+(o<<6)+(s<<2)>>2]=l<<12;f=f+l|0;s=s+1|0}if((f|0)>4095){l=0;h=r;return l|0}l=jt(t,i)|0;h=r;return l|0}function jt(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0;r=h;n=i&1;u=1073741824;l=0;while(1){i=i+-1|0;if((i|0)<=0)break;f=a[e+(n<<6)+(i<<2)>>2]|0;if((f|0)>16773022|(f|0)<-16773022){e=0;t=13;break}s=0-(f<<7)|0;o=((s|0)<0)<<31>>31;Il(s|0,o|0,s|0,o|0)|0;b=1073741824-C|0;c=32-(Jt((b|0)>0?b:0-b|0)|0)|0;f=Zt(b,c+30|0)|0;l=Il(u|0,l|0,b|0,((b|0)<0)<<31>>31|0)|0;l=Al(l|0,C|0,30)|0;l=l&-4;u=i&1;b=(c|0)==1;d=((f|0)<0)<<31>>31;c=c+-1|0;k=0;while(1){if((k|0)>=(i|0))break;w=a[e+(n<<6)+(k<<2)>>2]|0;m=a[e+(n<<6)+(i-k+-1<<2)>>2]|0;m=Il(m|0,((m|0)<0)<<31>>31|0,s|0,o|0)|0;m=Al(m|0,C|0,30)|0;m=Ml(m|0,C|0,1,0)|0;m=Al(m|0,C|0,1)|0;m=w-m|0;m=Il(m|0,((m|0)<0)<<31>>31|0,f|0,d|0)|0;w=C;if(b){w=Al(m|0,w|0,1)|0;w=Ml(w|0,C|0,m&1|0,0)|0}else{w=Tl(m|0,w|0,c|0)|0;w=Ml(w|0,C|0,1,0)|0;w=Al(w|0,C|0,1)|0}a[e+(u<<6)+(k<<2)>>2]=w;k=k+1|0}n=u;u=l;l=((l|0)<0)<<31>>31}if((t|0)==13){h=r;return e|0}t=a[e+(n<<6)>>2]|0;if((t|0)>16773022|(t|0)<-16773022){m=0;h=r;return m|0}w=0-(t<<7)|0;m=((w|0)<0)<<31>>31;Il(w|0,m|0,w|0,m|0)|0;m=1073741824-C|0;m=Il(u|0,l|0,m|0,((m|0)<0)<<31>>31|0)|0;m=Al(m|0,C|0,30)|0;m=m&-4;h=r;return m|0}function Jt(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function Zt(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,a=0,f=0,o=0;r=h;n=Jt((e|0)>0?e:0-e|0)|0;t=e<>16;e=536870911/(o|0)|0;f=e<<16;a=f>>16;t=536870912-((re(o,a)|0)+((re(t&65535,a)|0)>>16))<<3;e=f+((re(t>>16,a)|0)+((re(t&65528,a)|0)>>16))+(re(t,(e>>15)+1>>1)|0)|0;i=62-n-i|0;if((i|0)>=1){h=r;return((i|0)<32?e>>i:0)|0}i=0-i|0;t=-2147483648>>i;n=2147483647>>>i;if((t|0)>(n|0)){if((e|0)>(t|0)){o=t;o=o<(n|0)){o=n;o=o<>2]|0)){h=t;return}o=e+8|0;u=256-(a[o>>2]|0)<<10;l=u>>16;Xt(n,f,l,u-(l<<16)|0);s=(a[o>>2]|0)+(a[s>>2]|0)|0;if((s|0)>256)s=256;else s=(s|0)<0?0:s;a[o>>2]=s;la(i,n,f,e,i,r);h=t;return}function Xt(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,l=0;o=h;if((r|0)>=4){a[e+0>>2]=a[6270];a[e+4>>2]=a[6271];a[e+8>>2]=a[6272];t=i;a[t>>2]=35497197;a[t+4>>2]=57401098;h=o;return}if((t|0)<=0){f=25032+(r*12|0)|0;a[e+0>>2]=a[f+0>>2];a[e+4>>2]=a[f+4>>2];a[e+8>>2]=a[f+8>>2];f=25096+(r<<3)|0;e=a[f+4>>2]|0;t=i;a[t>>2]=a[f>>2];a[t+4>>2]=e;h=o;return}n=r+1|0;f=t<<16>>16;if((t|0)<32768){t=0;while(1){if((t|0)>=3){e=0;break}l=a[25032+(r*12|0)+(t<<2)>>2]|0;s=(a[25032+(n*12|0)+(t<<2)>>2]|0)-l|0;a[e+(t<<2)>>2]=l+((re(s>>16,f)|0)+((re(s&65535,f)|0)>>16));t=t+1|0}while(1){if((e|0)>=2)break;s=a[25096+(r<<3)+(e<<2)>>2]|0;l=(a[25096+(n<<3)+(e<<2)>>2]|0)-s|0;a[i+(e<<2)>>2]=s+((re(l>>16,f)|0)+((re(l&65535,f)|0)>>16));e=e+1|0}h=o;return}else{t=0;while(1){if((t|0)>=3){e=0;break}s=a[25032+(n*12|0)+(t<<2)>>2]|0;l=s-(a[25032+(r*12|0)+(t<<2)>>2]|0)|0;a[e+(t<<2)>>2]=s+((re(l>>16,f)|0)+((re(l&65535,f)|0)>>16));t=t+1|0}while(1){if((e|0)>=2)break;s=a[25096+(n<<3)+(e<<2)>>2]|0;l=s-(a[25096+(r<<3)+(e<<2)>>2]|0)|0;a[i+(e<<2)>>2]=s+((re(l>>16,f)|0)+((re(l&65535,f)|0)>>16));e=e+1|0}h=o;return}}function Qt(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0;t=h;h=h+208|0;u=t+136|0;s=t+100|0;l=t+64|0;o=t;c=(r|0)==16?21176:21192;d=0;while(1){if((d|0)>=(r|0))break;k=n[i+(d<<1)>>1]|0;b=k>>8;w=n[21992+(b<<1)>>1]|0;b=((w<<8)+(re((n[21992+(b+1<<1)>>1]|0)-w|0,k-(b<<8)|0)|0)>>3)+1>>1;a[u+(f[c+d>>0]<<2)>>2]=b;d=d+1|0}c=r>>1;en(s,u,c);en(l,u+4|0,c);u=0;while(1){if((u|0)>=(c|0))break;w=u+1|0;k=(a[s+(w<<2)>>2]|0)+(a[s+(u<<2)>>2]|0)|0;b=(a[l+(w<<2)>>2]|0)-(a[l+(u<<2)>>2]|0)|0;a[o+(u<<2)>>2]=0-b-k;a[o+(r-u+-1<<2)>>2]=b-k;u=w}l=0;s=0;while(1){if((s|0)<10){u=0;c=0}else break;while(1){if((c|0)>=(r|0))break;w=a[o+(c<<2)>>2]|0;w=(w|0)>0?w:0-w|0;k=(w|0)>(u|0);l=k?c:l;u=k?w:u;c=c+1|0}u=(u>>4)+1>>1;if((u|0)<=32767)break;w=(u|0)<163838?u:163838;ha(o,r,65470-(((w<<14)+-536854528|0)/((re(w,l+1|0)|0)>>2|0)|0)|0);s=s+1|0}e:do{if((s|0)==10){l=0;while(1){if((l|0)>=(r|0)){l=0;break e}s=o+(l<<2)|0;u=(a[s>>2]>>4)+1>>1;if((u|0)>32767)u=32767;else u=(u|0)<-32768?-32768:u&65535;n[e+(l<<1)>>1]=u;a[s>>2]=u<<16>>16<<5;l=l+1|0}}else{s=0;while(1){if((s|0)>=(r|0)){l=0;break e}n[e+(s<<1)>>1]=(((a[o+(s<<2)>>2]|0)>>>4)+1|0)>>>1;s=s+1|0}}}while(0);while(1){if((l|0)>=16){e=26;break}if((qt(e,r)|0)>=107374){e=26;break}ha(o,r,65536-(2<=(r|0))break;n[e+(s<<1)>>1]=(((a[o+(s<<2)>>2]|0)>>>4)+1|0)>>>1;s=s+1|0}l=l+1|0}if((e|0)==26){h=t;return}}function en(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0;n=h;a[e>>2]=65536;t=e+4|0;f=1;o=0-(a[i>>2]|0)|0;while(1){a[t>>2]=o;if((f|0)>=(r|0))break;s=a[i+(f<<1<<2)>>2]|0;u=a[e+(f+-1<<2)>>2]|0;l=((s|0)<0)<<31>>31;c=a[e+(f<<2)>>2]|0;c=Il(s|0,l|0,c|0,((c|0)<0)<<31>>31|0)|0;c=Al(c|0,C|0,15)|0;c=Ml(c|0,C|0,1,0)|0;c=Al(c|0,C|0,1)|0;o=f+1|0;a[e+(o<<2)>>2]=(u<<1)-c;while(1){if((f|0)<=1)break;c=a[e+(f+-2<<2)>>2]|0;b=Il(s|0,l|0,u|0,((u|0)<0)<<31>>31|0)|0;b=Al(b|0,C|0,15)|0;b=Ml(b|0,C|0,1,0)|0;b=Al(b|0,C|0,1)|0;d=e+(f<<2)|0;a[d>>2]=(a[d>>2]|0)+(c-b);u=c;f=f+-1|0}f=o;o=(a[t>>2]|0)-s|0}h=n;return}function rn(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var s=0,l=0,u=0,c=0,d=0,b=0;s=h;l=0;while(1){if((l|0)<(t|0)){c=0;u=0}else break;while(1){if((c|0)>=(n|0))break;b=(o[i+(c<<1)>>1]|0)-((f[r>>0]|0)<<7)<<16>>16;b=re(b,b)|0;d=(o[i+((c|1)<<1)>>1]|0)-((f[r+1>>0]|0)<<7)<<16>>16;r=r+2|0;c=c+2|0;u=u+((b+(re(d,d)|0)|0)>>>4)|0}a[e+(l<<2)>>2]=u;l=l+1|0}h=s;return}function tn(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0,f=0,o=0,s=0,l=0,u=0;t=h;a=n[i>>1]|0;f=131072/(nn(a)|0)|0;a=131072/(nn((n[i+2>>1]|0)-a|0)|0)|0;n[e>>1]=an(f+a|0)|0;r=r+-1|0;f=1;while(1){if((f|0)>=(r|0))break;l=f+1|0;o=i+(l<<1)|0;u=131072/(nn((n[o>>1]|0)-(n[i+(f<<1)>>1]|0)|0)|0)|0;n[e+(f<<1)>>1]=an(u+a|0)|0;s=f+2|0;o=131072/(nn((n[i+(s<<1)>>1]|0)-(n[o>>1]|0)|0)|0)|0;n[e+(l<<1)>>1]=an(u+o|0)|0;f=s;a=o}n[e+(r<<1)>>1]=an((131072/(nn(32768-(n[i+(r<<1)>>1]|0)|0)|0)|0)+a|0)|0;h=t;return}function nn(e){e=e|0;return((e|0)>1?e:1)|0}function an(e){e=e|0;return((e|0)<32767?e:32767)|0}function fn(e,i,r){e=e|0;i=i|0;r=r|0;var s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0;c=h;h=h+112|0;w=c+96|0;d=c+64|0;l=c+32|0;u=c;s=r+2|0;m=n[s>>1]|0;k=re(t[i>>0]|0,m<<16>>16)|0;b=a[r+8>>2]|0;p=0;while(1){if((p|0)>=(m<<16>>16|0))break;n[e+(p<<1)>>1]=f[b+(k+p)>>0]<<7;m=n[s>>1]|0;p=p+1|0}gn(d,w,r,t[i>>0]|0);on(l,i+1|0,w,n[r+4>>1]|0,n[s>>1]|0);tn(u,e,n[s>>1]|0);d=0;while(1){b=n[s>>1]|0;if((d|0)>=(b|0))break;k=sn(o[u+(d<<1)>>1]<<16)|0;b=e+(d<<1)|0;k=(n[b>>1]|0)+((n[l+(d<<1)>>1]<<14|0)/(k|0)|0)|0;if((k|0)>32767)k=32767;else k=(k|0)<0?0:k&65535;n[b>>1]=k;d=d+1|0}pn(e,a[r+32>>2]|0,b);h=c;return}function on(e,i,r,a,o){e=e|0;i=i|0;r=r|0;a=a|0;o=o|0;var s=0,l=0,u=0,c=0;s=h;a=a<<16>>16;l=0;u=o<<16>>16;while(1){o=u+-1|0;if((u|0)<=0)break;l=(re(l,f[r+o>>0]|0)|0)>>8;u=t[i+o>>0]|0;c=u<<24>>24<<10;if(u<<24>>24>0)u=c+-102|0;else u=u<<24>>24<0?c|102:c;l=l+((re(u>>16,a)|0)+((re(u&65535,a)|0)>>16))|0;n[e+(o<<1)>>1]=l;l=l<<16>>16;u=o}h=s;return}function sn(e){e=e|0;var i=0,r=0,t=0;i=h;h=h+16|0;r=i+4|0;t=i;if((e|0)<1){t=0;h=i;return t|0}ln(e,r,t);r=a[r>>2]|0;r=((r&1|0)==0?46214:32768)>>>(r>>1);t=(re(a[t>>2]<<16>>16,13959168)|0)>>16;t=r+((re(r>>16,t)|0)+((re(r&65535,t)|0)>>16))|0;h=i;return t|0}function ln(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;n=un(e)|0;a[i>>2]=n;a[r>>2]=(hn(e,24-n|0)|0)&127;h=t;return}function un(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function hn(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=0-i|0;do{if(i)if((i|0)<0){e=e<>>(i+32|0);break}else{e=e<<32-i|e>>>i;break}}while(0);h=r;return e|0}function cn(e,i,r,o,s,l,u,c,d,b){e=e|0;i=i|0;r=r|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;var k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0;k=h;h=h+320|0;v=k+224|0;w=k+256|0;T=k+240|0;m=k+192|0;_=k+176|0;p=k+160|0;E=k+80|0;g=k;A=u<<16>>16;S=-10;while(1){if((S|0)>=10)break;y=S<<10;M=y+1024|0;do{if((S|0)<=0){if((S|0)==-1){u=y|102;break}else if(!S){u=y;M=y|922;break}else{u=y|102;M=y+1126|0;break}}else{u=y+-102|0;M=y|922}}while(0);D=S+10|0;a[E+(D<<2)>>2]=(re(u>>16,A)|0)+((re(u&65535,A)|0)>>16);a[g+(D<<2)>>2]=(re(M>>16,A)|0)+((re(M&65535,A)|0)>>16);S=S+1|0}a[m>>2]=0;n[T>>1]=0;b=b<<16>>16;u=c<<16>>16>>16;c=c&65535;d=d<<16>>16;S=1;A=b;e:while(1){A=A+-1|0;M=n[s+(A<<1)>>1]|0;O=f[o+A>>0]<<8;L=n[i+(A<<1)>>1]|0;R=r+(A<<1)|0;y=0;while(1){if((y|0)>=(S|0))break;B=T+(y<<1)|0;C=(re(O,n[B>>1]|0)|0)>>16;N=L-C<<16>>16;N=(re(u,N)|0)+((re(c,N)|0)>>16)|0;if((N|0)>9)P=9;else P=(N|0)<-10?-10:N;t[w+(y<<4)+A>>0]=P;D=P+10|0;N=(a[E+(D<<2)>>2]|0)+C|0;C=(a[g+(D<<2)>>2]|0)+C|0;n[B>>1]=N;D=y+S|0;n[T+(D<<1)>>1]=C;do{if((P|0)>2){if((P|0)==3){B=f[l+(M+7)>>0]|0;P=280;break}else{P=(P<<16>>16)*43|0;B=P+108|0;P=P+151|0;break}}else{if((P|0)>=-3){B=f[l+(M+(P+4))>>0]|0;P=f[l+(M+(P+5))>>0]|0;break}if((P|0)==-4){B=280;P=f[l+(M+1)>>0]|0;break}else{P=re(P<<16>>16,-43)|0;B=P+108|0;P=P+65|0;break}}}while(0);U=m+(y<<2)|0;I=a[U>>2]|0;F=L-N<<16>>16;F=re(F,F)|0;N=n[R>>1]|0;a[U>>2]=I+(re(F,N)|0)+(re(d,B<<16>>16)|0);B=L-C<<16>>16;a[m+(D<<2)>>2]=I+(re(re(B,B)|0,N)|0)+(re(d,P<<16>>16)|0);y=y+1|0}if((S|0)<3){y=0;while(1){if((y|0)>=(S|0))break;t[w+(y+S<<4)+A>>0]=(f[w+(y<<4)+A>>0]|0)+1;y=y+1|0}S=S<<1;y=S;while(1){if((y|0)>=4)continue e;t[w+(y<<4)+A>>0]=t[w+(y-S<<4)+A>>0]|0;y=y+1|0}}if((A|0)>0)L=0;else{p=0;o=2147483647;_=0;break}while(1){if((L|0)>=4){M=0;y=0;R=0;O=2147483647;L=0;break}R=m+(L<<2)|0;O=a[R>>2]|0;N=L+4|0;y=m+(N<<2)|0;M=a[y>>2]|0;if((O|0)>(M|0)){a[p+(L<<2)>>2]=O;a[_+(L<<2)>>2]=M;a[R>>2]=M;a[y>>2]=O;I=T+(L<<1)|0;U=n[I>>1]|0;F=T+(N<<1)|0;n[I>>1]=n[F>>1]|0;n[F>>1]=U;a[v+(L<<2)>>2]=N}else{a[_+(L<<2)>>2]=O;a[p+(L<<2)>>2]=M;a[v+(L<<2)>>2]=L}L=L+1|0}while(1){if((L|0)<4){F=a[p+(L<<2)>>2]|0;U=(O|0)>(F|0);I=a[_+(L<<2)>>2]|0;D=(R|0)<(I|0);M=D?L:M;y=U?L:y;R=D?I:R;O=U?F:O;L=L+1|0;continue}if((O|0)>=(R|0)){y=0;break}a[v+(M<<2)>>2]=a[v+(y<<2)>>2]^4;L=y+4|0;a[m+(M<<2)>>2]=a[m+(L<<2)>>2];n[T+(M<<1)>>1]=n[T+(L<<1)>>1]|0;a[_+(M<<2)>>2]=0;a[p+(y<<2)>>2]=2147483647;M=w+(M<<4)+0|0;y=w+(y<<4)+0|0;L=M+16|0;do{t[M>>0]=t[y>>0]|0;M=M+1|0;y=y+1|0}while((M|0)<(L|0));M=0;y=0;R=0;O=2147483647;L=0}while(1){if((y|0)>=4)continue e;F=w+(y<<4)+A|0;t[F>>0]=(f[F>>0]|0)+((a[v+(y<<2)>>2]|0)>>>2);y=y+1|0}}while(1){if((_|0)>=8)break;F=a[m+(_<<2)>>2]|0;U=(o|0)>(F|0);p=U?_:p;o=U?F:o;_=_+1|0}m=p&3;_=0;while(1){if((_|0)>=(b|0))break;t[e+_>>0]=t[w+(m<<4)+_>>0]|0;_=_+1|0}t[e>>0]=(f[e>>0]|0)+(p>>>2);h=k;return o|0}function dn(e,i,r,s,l,u,c){e=e|0;i=i|0;r=r|0;s=s|0;l=l|0;u=u|0;c=c|0;var d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0;m=h;h=h+224|0;T=m;y=m+168|0;v=m+136|0;M=m+104|0;S=m+72|0;g=m+40|0;_=m+200|0;p=m+8|0;w=r+2|0;pn(i,a[r+32>>2]|0,n[w>>1]|0);b=n[r>>1]|0;O=h;h=h+((4*(b&65535)|0)+15&-16)|0;L=r+8|0;rn(O,i,a[L>>2]|0,b<<16>>16,n[w>>1]|0);b=h;h=h+((4*u|0)+15&-16)|0;xo(O,b,n[r>>1]|0,u);O=h;h=h+((4*u|0)+15&-16)|0;k=h;h=h+((1*(u<<4)|0)+15&-16)|0;E=r+28|0;d=r+4|0;A=r+6|0;R=c>>1;C=r+12|0;c=l<<14>>16;N=0;while(1){if((N|0)>=(u|0))break;P=a[b+(N<<2)>>2]|0;B=n[w>>1]|0;I=re(P,B)|0;D=a[L>>2]|0;U=0;while(1){if((U|0)>=(B|0))break;F=f[D+(I+U)>>0]<<7;n[M+(U<<1)>>1]=F;n[y+(U<<1)>>1]=(o[i+(U<<1)>>1]|0)-F;U=U+1|0}tn(S,M,B);D=0;while(1){B=n[w>>1]|0;if((D|0)>=(B|0)){D=0;break}F=bn(o[S+(D<<1)>>1]<<16)|0;n[v+(D<<1)>>1]=(re(n[y+(D<<1)>>1]|0,F<<16>>16)|0)>>>14;D=D+1|0}while(1){if((D|0)>=(B|0))break;n[g+(D<<1)>>1]=(n[s+(D<<1)>>1]<<5|0)/(n[S+(D<<1)>>1]|0)|0;D=D+1|0}gn(p,_,r,P);D=cn(k+(N<<4)|0,v,g,_,p,a[E>>2]|0,n[d>>1]|0,n[A>>1]|0,l,n[w>>1]|0)|0;B=O+(N<<2)|0;a[B>>2]=D;I=re(R,n[r>>1]|0)|0;U=a[C>>2]|0;if(!P)P=256-(f[U+I>>0]|0)|0;else P=(f[U+(I+(P+-1))>>0]|0)-(f[U+(I+P)>>0]|0)|0;a[B>>2]=D+(re(1024-(po(P)|0)<<16>>16,c)|0);N=N+1|0}xo(O,T,u,1);F=a[T>>2]|0;t[e>>0]=a[b+(F<<2)>>2];Ll(e+1|0,k+(F<<4)|0,n[w>>1]|0)|0;fn(i,e,r);h=m;return}function bn(e){e=e|0;var i=0,r=0,t=0;i=h;h=h+16|0;r=i+4|0;t=i;if((e|0)<1){t=0;h=i;return t|0}kn(e,r,t);r=a[r>>2]|0;r=((r&1|0)==0?46214:32768)>>>(r>>1);t=(re(a[t>>2]<<16>>16,13959168)|0)>>16;t=r+((re(r>>16,t)|0)+((re(r&65535,t)|0)>>16))|0;h=i;return t|0}function kn(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;n=wn(e)|0;a[i>>2]=n;a[r>>2]=(mn(e,24-n|0)|0)&127;h=t;return}function wn(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function mn(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=0-i|0;do{if(i)if((i|0)<0){e=e<>>(i+32|0);break}else{e=e<<32-i|e>>>i;break}}while(0);h=r;return e|0}function pn(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0,f=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0;t=h;u=r+-1|0;a=e+(u<<1)|0;f=i+(r<<1)|0;l=0;while(1){if((l|0)>=20)break;b=n[e>>1]|0;d=n[i>>1]|0;k=b;c=0;b=(b<<16>>16)-(d<<16>>16)|0;w=1;while(1){if((w|0)>(u|0))break;_=n[e+(w<<1)>>1]|0;p=(_<<16>>16)-((k<<16>>16)+(n[i+(w<<1)>>1]|0))|0;m=(p|0)<(b|0);k=_;c=m?w:c;b=m?p:b;w=w+1|0}k=n[f>>1]|0;_=32768-((n[a>>1]|0)+(k<<16>>16))|0;p=(_|0)<(b|0);c=p?r:c;if(((p?_:b)|0)>-1){s=30;break}do{if(!c)n[e>>1]=d;else{if((c|0)==(r|0)){n[a>>1]=32768-(k&65535);break}else{k=0;d=0}while(1){if((d|0)>=(c|0))break;k=k+(n[i+(d<<1)>>1]|0)|0;d=d+1|0}d=i+(c<<1)|0;b=n[d>>1]|0;w=b>>1;k=k+w|0;m=32768;p=r;while(1){if((p|0)<=(c|0))break;m=m-(n[i+(p<<1)>>1]|0)|0;p=p+-1|0}m=m-w|0;_=n[e+(c+-1<<1)>>1]|0;w=n[e+(c<<1)>>1]|0;w=((_<<16>>16)+(w<<16>>16)>>1)+((_&65535)+(w&65535)&1)|0;if((k|0)>(m|0)){if((w|0)<=(k|0))k=(w|0)<(m|0)?m:w}else if((w|0)>(m|0))k=m;else k=(w|0)<(k|0)?k:w;_=k-(b>>>1)|0;n[e+(c+-1<<1)>>1]=_;n[e+(c<<1)>>1]=_+(o[d>>1]|0)}}while(0);l=l+1|0}if((s|0)==30){h=t;return}if((l|0)!=20){h=t;return}Ko(e,r);l=_n(n[e>>1]|0,n[i>>1]|0)|0;n[e>>1]=l;s=1;while(1){if((s|0)>=(r|0))break;p=e+(s<<1)|0;_=_n(n[p>>1]|0,(l<<16>>16)+(n[i+(s<<1)>>1]|0)|0)|0;n[p>>1]=_;l=_;s=s+1|0}_=vn(n[a>>1]|0,32768-(n[f>>1]|0)|0)|0;n[a>>1]=_;a=_;r=r+-2|0;while(1){if((r|0)<=-1)break;p=e+(r<<1)|0;_=vn(n[p>>1]|0,(a<<16>>16)-(n[i+(r+1<<1)>>1]|0)|0)|0;n[p>>1]=_;a=_;r=r+-1|0}h=t;return}function _n(e,i){e=e|0;i=i|0;return((e|0)>(i|0)?e:i)|0}function vn(e,i){e=e|0;i=i|0;return((e|0)<(i|0)?e:i)|0}function gn(e,i,r,f){e=e|0;i=i|0;r=r|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0;o=h;s=r+2|0;l=n[s>>1]|0;u=(re(l<<16>>16,f)|0)/2|0;f=r+16|0;r=(a[r+20>>2]|0)+u|0;u=0;while(1){if((u|0)>=(l<<16>>16|0))break;d=t[r>>0]|0;c=d&255;n[e+(u<<1)>>1]=(c>>>1&7)*9;t[i+u>>0]=t[(a[f>>2]|0)+(u+((n[s>>1]|0)+-1&0-(c&1)))>>0]|0;l=u|1;n[e+(l<<1)>>1]=((d&255)>>>5&255)*9;t[i+l>>0]=t[(a[f>>2]|0)+(u+((n[s>>1]|0)+-1&0-(c>>>4&1))+1)>>0]|0;l=n[s>>1]|0;r=r+1|0;u=u+2|0}h=o;return}function En(e,i,r,f,o,s,l,u,c,d,b,k,w,m,p){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;var _=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0;_=h;a[i+4368>>2]=t[r+34>>0];g=i+4356|0;K=a[g>>2]|0;v=r+29|0;E=n[24968+(t[v>>0]>>1<<2)+(t[r+30>>0]<<1)>>1]|0;L=(t[r+31>>0]|0)==4?0:1;T=e+4616|0;r=a[T>>2]|0;A=e+4608|0;P=r+(a[A>>2]|0)|0;D=h;h=h+((4*P|0)+15&-16)|0;C=h;h=h+((2*P|0)+15&-16)|0;P=e+4612|0;S=h;h=h+((4*(a[P>>2]|0)|0)+15&-16)|0;a[i+4364>>2]=r;r=i+4360|0;a[r>>2]=a[T>>2];y=e+4604|0;M=L^1;R=i+4376|0;L=L<<1^3;B=e+4664|0;N=e+5124|0;O=e+4660|0;I=i+(a[T>>2]<<1)|0;U=0;while(1){F=a[y>>2]|0;if((U|0)>=(F|0))break;W=s+((U>>1|M)<<4<<1)|0;V=l+(U*5<<1)|0;G=u+(U<<4<<1)|0;F=a[c+(U<<2)>>2]|0;F=F>>2|F>>>1<<16;a[R>>2]=0;x=t[v>>0]|0;if(x<<24>>24==2){K=a[w+(U<<2)>>2]|0;if(!(U&L)){z=a[T>>2]|0;x=a[B>>2]|0;H=z-K-x+-2|0;Y=i+(H+(re(U,a[P>>2]|0)|0)<<1)|0;Yt(C+(H<<1)|0,Y,W,z-H|0,x,a[N>>2]|0);a[R>>2]=1;a[r>>2]=a[T>>2];x=t[v>>0]|0}else x=2}Tn(e,i,f,S,C,D,U,p,k,w,x<<24>>24);An(i,t[v>>0]|0,S,o,I,D,W,V,G,K,F,a[d+(U<<2)>>2]|0,a[b+(U<<2)>>2]|0,a[k+(U<<2)>>2]|0,m,E,a[P>>2]|0,a[O>>2]|0,a[B>>2]|0);Y=a[P>>2]|0;f=f+(Y<<2)|0;o=o+Y|0;I=I+(Y<<1)|0;U=U+1|0}a[g>>2]=a[w+(F+-1<<2)>>2];Ol(i|0,i+(a[A>>2]<<1)|0,a[T>>2]<<1|0)|0;Ol(i+1280|0,i+(a[A>>2]<<2)+1280|0,a[T>>2]<<2|0)|0;h=_;return}function Tn(e,i,r,t,f,o,s,l,u,c,d){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;var b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0;b=h;c=a[c+(s<<2)>>2]|0;m=u+(s<<2)|0;u=a[m>>2]|0;k=Sn((u|0)>1?u:1)|0;w=i+4372|0;p=a[w>>2]|0;if((u|0)==(p|0))u=65536;else u=yn(p,u)|0;p=(k>>7)+1|0;g=e+4612|0;_=p>>>1<<16>>16;p=(p>>16)+1>>1;v=0;while(1){if((v|0)>=(a[g>>2]|0))break;E=a[r+(v<<2)>>2]|0;a[t+(v<<2)>>2]=(re(E>>16,_)|0)+((re(E&65535,_)|0)>>16)+(re(E,p)|0);v=v+1|0}a[w>>2]=a[m>>2];r=i+4376|0;e:do{if(a[r>>2]|0){if(!s){E=l<<16>>16;k=(re(k>>16,E)|0)+((re(k&65535,E)|0)>>16)<<2}s=i+4360|0;w=a[s>>2]|0;l=k>>16;t=k&65535;k=w;w=w-c+-2|0;while(1){if((w|0)>=(k|0))break e;k=n[f+(w<<1)>>1]|0;a[o+(w<<2)>>2]=(re(l,k)|0)+((re(t,k)|0)>>16);k=a[s>>2]|0;w=w+1|0}}}while(0);if((u|0)==65536){h=b;return}s=i+4364|0;E=a[s>>2]|0;f=u>>16;l=u&65535;t=E;e=E-(a[e+4616>>2]|0)|0;while(1){if((e|0)>=(t|0))break;t=i+(e<<2)+1280|0;E=a[t>>2]|0;g=E<<16>>16;a[t>>2]=(re(f,g)|0)+((re(l,g)|0)>>16)+(re(u,(E>>15)+1>>1)|0);t=a[s>>2]|0;e=e+1|0}e:do{if((d|0)==2?(a[r>>2]|0)==0:0){d=i+4360|0;E=a[d>>2]|0;e=E;c=E-c+-2|0;while(1){if((c|0)>=(e|0))break e;e=o+(c<<2)|0;E=a[e>>2]|0;g=E<<16>>16;a[e>>2]=(re(f,g)|0)+((re(l,g)|0)>>16)+(re(u,(E>>15)+1>>1)|0);e=a[d>>2]|0;c=c+1|0}}}while(0);o=i+4352|0;E=a[o>>2]|0;g=E<<16>>16;a[o>>2]=(re(f,g)|0)+((re(l,g)|0)>>16)+(re(u,(E>>15)+1>>1)|0);o=0;while(1){if((o|0)>=32){o=0;break}E=i+(o<<2)+3840|0;g=a[E>>2]|0;v=g<<16>>16;a[E>>2]=(re(f,v)|0)+((re(l,v)|0)>>16)+(re(u,(g>>15)+1>>1)|0);o=o+1|0}while(1){if((o|0)>=16)break;E=i+(o<<2)+4288|0;g=a[E>>2]|0;v=g<<16>>16;a[E>>2]=(re(f,v)|0)+((re(l,v)|0)>>16)+(re(u,(g>>15)+1>>1)|0);o=o+1|0}h=b;return}function An(e,i,r,f,o,s,l,u,c,d,b,k,w,m,p,_,v,g,E){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;_=_|0;v=v|0;g=g|0;E=E|0;var T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0,ue=0,he=0,ce=0,de=0,be=0,ke=0,we=0,me=0,pe=0,_e=0,ve=0;T=h;O=e+4364|0;S=e+4360|0;A=e+4368|0;I=E>>1;D=l+2|0;B=l+4|0;P=l+6|0;C=l+8|0;N=l+10|0;R=l+12|0;L=l+14|0;M=l+16|0;y=l+18|0;x=(E|0)==16;W=l+20|0;E=l+22|0;U=l+24|0;F=l+26|0;G=l+28|0;V=l+30|0;Y=(i|0)==2;K=u+2|0;Z=u+4|0;H=u+6|0;q=u+8|0;z=e+4288|0;i=g>>1;J=g+-1|0;$=e+(J<<2)+4288|0;J=c+(J<<1)|0;j=e+4352|0;k=k<<16>>16;X=w<<16>>16;w=w>>16;ee=(d|0)>0;Q=b<<16>>16;b=b>>16;ie=p<<16>>16;p=m>>>6<<16>>16;se=(m>>21)+1>>1;ne=_+944|0;m=re(_<<16>>16,ie)|0;ae=re(ne<<16>>16,ie)|0;oe=_+-944|0;te=re(944-_<<16>>16,ie)|0;le=s+((a[S>>2]|0)-d+2<<2)|0;fe=e+3964|0;be=e+((a[O>>2]|0)-d+1<<2)+1280|0;d=0;while(1){if((d|0)>=(v|0))break;a[A>>2]=(re(a[A>>2]|0,196314165)|0)+907633515;_e=a[fe>>2]|0;pe=n[l>>1]|0;pe=I+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-4>>2]|0;ue=n[D>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0;_e=a[fe+-8>>2]|0;pe=n[B>>1]|0;pe=ue+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-12>>2]|0;ue=n[P>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0;_e=a[fe+-16>>2]|0;pe=n[C>>1]|0;pe=ue+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-20>>2]|0;ue=n[N>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0;_e=a[fe+-24>>2]|0;pe=n[R>>1]|0;pe=ue+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-28>>2]|0;ue=n[L>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0;_e=a[fe+-32>>2]|0;pe=n[M>>1]|0;pe=ue+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-36>>2]|0;ue=n[y>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0;if(x){_e=a[fe+-40>>2]|0;pe=n[W>>1]|0;pe=ue+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-44>>2]|0;ue=n[E>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0;_e=a[fe+-48>>2]|0;pe=n[U>>1]|0;pe=ue+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-52>>2]|0;ue=n[F>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0;_e=a[fe+-56>>2]|0;pe=n[G>>1]|0;pe=ue+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[fe+-60>>2]|0;ue=n[V>>1]|0;ue=pe+((re(_e>>16,ue)|0)+((re(_e&65535,ue)|0)>>16))|0}if(Y){_e=a[le>>2]|0;he=n[u>>1]|0;he=(re(_e>>16,he)|0)+((re(_e&65535,he)|0)>>16)+2|0;_e=a[le+-4>>2]|0;pe=n[K>>1]|0;pe=he+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[le+-8>>2]|0;he=n[Z>>1]|0;he=pe+((re(_e>>16,he)|0)+((re(_e&65535,he)|0)>>16))|0;_e=a[le+-12>>2]|0;pe=n[H>>1]|0;pe=he+((re(_e>>16,pe)|0)+((re(_e&65535,pe)|0)>>16))|0;_e=a[le+-16>>2]|0;he=n[q>>1]|0;he=pe+((re(_e>>16,he)|0)+((re(_e&65535,he)|0)>>16))|0;le=le+4|0}else he=0;ce=a[fe>>2]|0;de=a[z>>2]|0;a[z>>2]=ce;ke=n[c>>1]|0;ke=i+((re(ce>>16,ke)|0)+((re(ce&65535,ke)|0)>>16))|0;ce=2;while(1){if((ce|0)>=(g|0))break;we=ce+-1|0;pe=e+(we<<2)+4288|0;me=a[pe>>2]|0;a[pe>>2]=de;we=n[c+(we<<1)>>1]|0;we=ke+((re(de>>16,we)|0)+((re(de&65535,we)|0)>>16))|0;pe=e+(ce<<2)+4288|0;_e=a[pe>>2]|0;a[pe>>2]=me;pe=n[c+(ce<<1)>>1]|0;ke=we+((re(me>>16,pe)|0)+((re(me&65535,pe)|0)>>16))|0;ce=ce+2|0;de=_e}a[$>>2]=de;ce=n[J>>1]|0;de=ke+((re(de>>16,ce)|0)+((re(de&65535,ce)|0)>>16))<<1;ce=a[j>>2]|0;ke=ce>>16;ce=ce&65535;de=de+((re(ke,k)|0)+((re(ce,k)|0)>>16))|0;_e=a[e+((a[O>>2]|0)+-1<<2)+1280>>2]|0;ce=(re(_e>>16,X)|0)+((re(_e&65535,X)|0)>>16)+(re(ke,w)|0)+((re(ce,w)|0)>>16)|0;ke=(ue<<2)-de-ce|0;if(ee){pe=(a[be>>2]|0)+(a[be+-8>>2]|0)|0;pe=(re(pe>>16,Q)|0)+((re(pe&65535,Q)|0)>>16)|0;_e=a[be+-4>>2]|0;be=be+4|0;ke=he-(pe+(re(_e>>16,b)|0)+((re(_e&65535,b)|0)>>16)<<1)+(ke<<1)>>2}else ke=ke>>1;_e=(a[r+(d<<2)>>2]|0)-(ke+1>>1)|0;me=(a[A>>2]|0)<0;pe=0-_e|0;ke=me?pe:_e;if(((me?pe:_e)|0)>30720)ke=30720;else ke=(ke|0)<-31744?-31744:ke;we=ke-_>>10;if((we|0)<=0){if(we){if((we|0)==-1){we=oe;me=_;pe=te;_e=m}else{_e=(we<<10|80)+_|0;we=_e;me=_e+1024|0;pe=re(0-_e<<16>>16,ie)|0;_e=re(-1024-_e<<16>>16,ie)|0}}else{we=_;me=ne;pe=m;_e=ae}}else{pe=(we<<10)+-80+_|0;_e=pe+1024|0;we=pe;me=_e;pe=re(pe<<16>>16,ie)|0;_e=re(_e<<16>>16,ie)|0}ve=ke-we<<16>>16;ke=ke-me<<16>>16;ke=(_e+(re(ke,ke)|0)|0)<(pe+(re(ve,ve)|0)|0);we=ke?me:we;ke=f+d|0;t[ke>>0]=((we>>>9)+1|0)>>>1;we=we<<4;he=((a[A>>2]|0)<0?0-we|0:we)+(he<<1)|0;ue=he+(ue<<4)|0;we=((re(ue>>16,p)|0)+((re(ue&65535,p)|0)>>16)+(re(ue,se)|0)>>7)+1>>1;if((we|0)>32767)we=32767;else we=(we|0)<-32768?-32768:we&65535;n[o+(d<<1)>>1]=we;ve=fe+4|0;a[ve>>2]=ue;_e=ue-(de<<2)|0;a[j>>2]=_e;a[e+(a[O>>2]<<2)+1280>>2]=_e-(ce<<2);a[s+(a[S>>2]<<2)>>2]=he<<1;a[O>>2]=(a[O>>2]|0)+1;a[S>>2]=(a[S>>2]|0)+1;a[A>>2]=(a[A>>2]|0)+(t[ke>>0]|0);fe=ve;d=d+1|0}o=e+3840|0;v=e+(v<<2)+3840|0;e=o+128|0;do{a[o>>2]=a[v>>2];o=o+4|0;v=v+4|0}while((o|0)<(e|0));h=T;return}function Sn(e){e=e|0;var i=0,r=0,t=0,n=0,a=0,f=0;i=h;t=Mn((e|0)>0?e:0-e|0)|0;r=e<>16;e=536870911/(f|0)|0;a=e<<16;n=a>>16;r=536870912-((re(f,n)|0)+((re(r&65535,n)|0)>>16))<<3;e=a+((re(r>>16,n)|0)+((re(r&65528,n)|0)>>16))+(re(r,(e>>15)+1>>1)|0)|0;t=62-t|0;r=t+-47|0;if((r|0)>=1){h=i;return((r|0)<32?e>>r:0)|0}r=47-t|0;t=-2147483648>>r;n=2147483647>>>r;if((t|0)>(n|0)){if((e|0)>(t|0)){f=t;f=f<(n|0)){f=n;f=f<0?e:0-e|0)|0;f=e<0?i:0-i|0)|0)+-1|0;e=i<>16|0)|0)<<16>>16;a=(re(f>>16,i)|0)+((re(f&65535,i)|0)>>16)|0;e=Il(e|0,((e|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;e=Al(e|0,C|0,29)|0;e=f-(e&-8)|0;i=a+((re(e>>16,i)|0)+((re(e&65535,i)|0)>>16))|0;t=n+28-t|0;e=t+-16|0;if((e|0)>=0){h=r;return((e|0)<32?i>>e:0)|0}e=16-t|0;t=-2147483648>>e;n=2147483647>>>e;if((t|0)>(n|0)){if((i|0)>(t|0)){f=t;f=f<(n|0)){f=n;f=f<>2]|0;B=e+4652|0;D=a[B>>2]|0;y=h;h=h+((1168*D|0)+15&-16)|0;yl(y|0,0,D*1168|0)|0;R=r+34|0;A=i+4352|0;g=e+4616|0;T=i+3840|0;S=i+4288|0;O=0;while(1){if((O|0)>=(D|0))break;N=O+(f[R>>0]|0)&3;a[y+(O*1168|0)+1156>>2]=N;a[y+(O*1168|0)+1160>>2]=N;a[y+(O*1168|0)+1164>>2]=0;a[y+(O*1168|0)+1152>>2]=a[A>>2];a[y+(O*1168|0)+960>>2]=a[i+((a[g>>2]|0)+-1<<2)+1280>>2];N=y+(O*1168|0)+0|0;C=T+0|0;M=N+128|0;do{a[N>>2]=a[C>>2];N=N+4|0;C=C+4|0}while((N|0)<(M|0));N=y+(O*1168|0)+1088|0;C=S+0|0;M=N+64|0;do{a[N>>2]=a[C>>2];N=N+4|0;C=C+4|0}while((N|0)<(M|0));O=O+1|0}U=r+29|0;se=t[U>>0]|0;I=n[24968+(se<<24>>24>>1<<2)+(t[r+30>>0]<<1)>>1]|0;a[L>>2]=0;M=e+4612|0;O=a[M>>2]|0;N=On(32,O)|0;e:do{if(se<<24>>24!=2){if((te|0)>0)N=On(N,te+-3|0)|0}else{C=a[e+4604>>2]|0;D=0;while(1){if((D|0)>=(C|0))break e;N=On(N,(a[m+(D<<2)>>2]|0)+-3|0)|0;D=D+1|0}}}while(0);K=(t[r+31>>0]|0)==4?0:1;D=a[g>>2]|0;r=e+4608|0;V=D+(a[r>>2]|0)|0;G=h;h=h+((4*V|0)+15&-16)|0;F=h;h=h+((2*V|0)+15&-16)|0;V=h;h=h+((4*O|0)+15&-16)|0;C=i+4364|0;a[C>>2]=D;J=i+4360|0;a[J>>2]=a[g>>2];O=e+4604|0;H=K^1;z=i+4376|0;K=K<<1^3;W=y+1164|0;Z=w+4|0;Y=e+4664|0;j=e+5124|0;x=e+4660|0;q=e+4704|0;D=i+(D<<1)|0;Q=0;ae=0;while(1){if((Q|0)>=(a[O>>2]|0))break;ie=l+((Q>>1|H)<<4<<1)|0;X=u+(Q*5<<1)|0;$=c+(Q<<4<<1)|0;ee=a[d+(Q<<2)>>2]|0;ee=ee>>2|ee>>>1<<16;a[z>>2]=0;ne=t[U>>0]|0;if(ne<<24>>24==2){te=a[m+(Q<<2)>>2]|0;if(!(Q&K)){e:do{if((Q|0)==2){ae=a[B>>2]|0;fe=a[W>>2]|0;ne=0;oe=1;while(1){if((oe|0)>=(ae|0)){fe=0;break}le=a[y+(oe*1168|0)+1164>>2]|0;se=(le|0)<(fe|0);fe=se?le:fe;ne=se?oe:ne;oe=oe+1|0}while(1){if((fe|0)>=(ae|0))break;if((fe|0)!=(ne|0)){le=y+(fe*1168|0)+1164|0;a[le>>2]=(a[le>>2]|0)+134217727}fe=fe+1|0}oe=(a[L>>2]|0)+N|0;ae=0;while(1){if((ae|0)>=(N|0)){ae=0;break e}oe=oe+31&31;fe=ae-N|0;t[s+fe>>0]=(((a[y+(ne*1168|0)+(oe<<2)+576>>2]|0)>>>9)+1|0)>>>1;le=a[y+(ne*1168|0)+(oe<<2)+704>>2]|0;se=a[Z>>2]|0;ue=se<<16>>16;se=((re(le>>16,ue)|0)+((re(le&65535,ue)|0)>>16)+(re(le,(se>>15)+1>>1)|0)>>13)+1>>1;if((se|0)>32767)se=32767;else se=(se|0)<-32768?-32768:se&65535;n[D+(fe<<1)>>1]=se;a[i+((a[C>>2]|0)-N+ae<<2)+1280>>2]=a[y+(ne*1168|0)+(oe<<2)+960>>2];ae=ae+1|0}}}while(0);le=a[g>>2]|0;ne=a[Y>>2]|0;ue=le-te-ne+-2|0;se=i+(ue+(re(Q,a[M>>2]|0)|0)<<1)|0;Yt(F+(ue<<1)|0,se,ie,le-ue|0,ne,a[j>>2]|0);a[J>>2]=a[g>>2];a[z>>2]=1;ne=t[U>>0]|0}else ne=2}Rn(e,i,y,o,V,F,G,Q,a[B>>2]|0,_,w,m,ne<<24>>24,N);Nn(i,y,t[U>>0]|0,V,s,D,G,P,ie,X,$,te,ee,a[b+(Q<<2)>>2]|0,a[k+(Q<<2)>>2]|0,a[w+(Q<<2)>>2]|0,p,I,a[M>>2]|0,ae,a[x>>2]|0,a[Y>>2]|0,a[q>>2]|0,a[B>>2]|0,L,N);ue=a[M>>2]|0;o=o+(ue<<2)|0;s=s+ue|0;D=D+(ue<<1)|0;Q=Q+1|0;ae=ae+1|0}d=a[B>>2]|0;_=a[W>>2]|0;p=0;e=1;while(1){if((e|0)>=(d|0))break;le=a[y+(e*1168|0)+1164>>2]|0;ue=(le|0)<(_|0);_=ue?le:_;p=ue?e:p;e=e+1|0}t[R>>0]=a[y+(p*1168|0)+1160>>2];w=a[w+((a[O>>2]|0)+-1<<2)>>2]|0;R=w>>>6<<16>>16;w=(w>>21)+1>>1;e=(a[L>>2]|0)+N|0;L=0;while(1){if((L|0)>=(N|0))break;e=e+31&31;d=L-N|0;t[s+d>>0]=(((a[y+(p*1168|0)+(e<<2)+576>>2]|0)>>>9)+1|0)>>>1;_=a[y+(p*1168|0)+(e<<2)+704>>2]|0;_=((re(_>>16,R)|0)+((re(_&65535,R)|0)>>16)+(re(_,w)|0)>>7)+1>>1;if((_|0)>32767)_=32767;else _=(_|0)<-32768?-32768:_&65535;n[D+(d<<1)>>1]=_;a[i+((a[C>>2]|0)-N+L<<2)+1280>>2]=a[y+(p*1168|0)+(e<<2)+960>>2];L=L+1|0}N=T+0|0;C=y+(p*1168|0)+(a[M>>2]<<2)+0|0;M=N+128|0;do{a[N>>2]=a[C>>2];N=N+4|0;C=C+4|0}while((N|0)<(M|0));N=S+0|0;C=y+(p*1168|0)+1088|0;M=N+64|0;do{a[N>>2]=a[C>>2];N=N+4|0;C=C+4|0}while((N|0)<(M|0));a[A>>2]=a[y+(p*1168|0)+1152>>2];a[v>>2]=a[m+((a[O>>2]|0)+-1<<2)>>2];Ol(i|0,i+(a[r>>2]<<1)|0,a[g>>2]<<1|0)|0;Ol(i+1280|0,i+(a[r>>2]<<2)+1280|0,a[g>>2]<<2|0)|0;h=E;return}function On(e,i){e=e|0;i=i|0;return((e|0)<(i|0)?e:i)|0}function Rn(e,i,r,t,f,o,s,l,u,c,d,b,k,w){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;var m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0;m=h;b=a[b+(l<<2)>>2]|0;v=d+(l<<2)|0;g=a[v>>2]|0;p=Cn((g|0)>1?g:1)|0;_=i+4372|0;d=a[_>>2]|0;if((g|0)==(d|0))d=65536;else d=Pn(d,g)|0;A=(p>>7)+1|0;g=e+4612|0;T=A>>>1<<16>>16;A=(A>>16)+1>>1;E=0;while(1){if((E|0)>=(a[g>>2]|0))break;S=a[t+(E<<2)>>2]|0;a[f+(E<<2)>>2]=(re(S>>16,T)|0)+((re(S&65535,T)|0)>>16)+(re(S,A)|0);E=E+1|0}a[_>>2]=a[v>>2];t=i+4376|0;e:do{if(a[t>>2]|0){if(!l){S=c<<16>>16;p=(re(p>>16,S)|0)+((re(p&65535,S)|0)>>16)<<2}c=i+4360|0;S=a[c>>2]|0;l=p>>16;f=p&65535;_=S;p=S-b+-2|0;while(1){if((p|0)>=(_|0))break e;_=n[o+(p<<1)>>1]|0;a[s+(p<<2)>>2]=(re(l,_)|0)+((re(f,_)|0)>>16);_=a[c>>2]|0;p=p+1|0}}}while(0);if((d|0)==65536){h=m;return}c=i+4364|0;S=a[c>>2]|0;l=d>>16;o=d&65535;f=S;e=S-(a[e+4616>>2]|0)|0;while(1){if((e|0)>=(f|0))break;f=i+(e<<2)+1280|0;S=a[f>>2]|0;A=S<<16>>16;a[f>>2]=(re(l,A)|0)+((re(o,A)|0)>>16)+(re(d,(S>>15)+1>>1)|0);f=a[c>>2]|0;e=e+1|0}e:do{if((k|0)==2?(a[t>>2]|0)==0:0){k=i+4360|0;S=a[k>>2]|0;i=S;b=S-b+-2|0;while(1){if((b|0)>=(i-w|0)){w=0;break e}i=s+(b<<2)|0;S=a[i>>2]|0;A=S<<16>>16;a[i>>2]=(re(l,A)|0)+((re(o,A)|0)>>16)+(re(d,(S>>15)+1>>1)|0);i=a[k>>2]|0;b=b+1|0}}else w=0}while(0);while(1){if((w|0)>=(u|0))break;s=a[r+(w*1168|0)+1152>>2]|0;S=s<<16>>16;a[r+(w*1168|0)+1152>>2]=(re(l,S)|0)+((re(o,S)|0)>>16)+(re(d,(s>>15)+1>>1)|0);s=0;while(1){if((s|0)>=32){s=0;break}S=r+(w*1168|0)+(s<<2)|0;A=a[S>>2]|0;T=A<<16>>16;a[S>>2]=(re(l,T)|0)+((re(o,T)|0)>>16)+(re(d,(A>>15)+1>>1)|0);s=s+1|0}while(1){if((s|0)>=16){s=0;break}S=r+(w*1168|0)+(s<<2)+1088|0;A=a[S>>2]|0;T=A<<16>>16;a[S>>2]=(re(l,T)|0)+((re(o,T)|0)>>16)+(re(d,(A>>15)+1>>1)|0);s=s+1|0}while(1){if((s|0)>=32)break;S=r+(w*1168|0)+(s<<2)+832|0;A=a[S>>2]|0;T=A<<16>>16;a[S>>2]=(re(l,T)|0)+((re(o,T)|0)>>16)+(re(d,(A>>15)+1>>1)|0);S=r+(w*1168|0)+(s<<2)+960|0;A=a[S>>2]|0;T=A<<16>>16;a[S>>2]=(re(l,T)|0)+((re(o,T)|0)>>16)+(re(d,(A>>15)+1>>1)|0);s=s+1|0}w=w+1|0}h=m;return}function Nn(e,i,r,f,o,s,l,u,c,d,b,k,w,m,p,_,v,g,E,T,A,S,y,M,L,O){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;p=p|0;_=_|0;v=v|0;g=g|0;E=E|0;T=T|0;A=A|0;S=S|0;y=y|0;M=M|0;L=L|0;O=O|0;var R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0,ue=0,he=0,ce=0,de=0,be=0,ke=0,we=0,me=0,pe=0,_e=0,ve=0,ge=0,Ee=0,Te=0,Ae=0,Se=0,ye=0,Me=0,Le=0,Oe=0,Re=0,Ne=0,Ce=0,Pe=0;R=h;N=h;h=h+((48*M|0)+15&-16)|0;C=e+4364|0;P=e+4360|0;_=_>>6;B=(r|0)==2;F=d+2|0;U=d+4|0;I=d+6|0;D=d+8|0;r=(k|0)>0;G=w<<16>>16;K=w>>16;H=S>>1;j=c+2|0;q=c+4|0;Y=c+6|0;z=c+8|0;w=c+10|0;x=c+12|0;V=c+14|0;J=c+16|0;W=c+18|0;$=(S|0)==16;Q=c+20|0;ee=c+22|0;X=c+24|0;ie=c+26|0;Z=c+28|0;S=c+30|0;ne=y<<16>>16;ae=A>>1;te=A+-1|0;y=b+(te<<1)|0;fe=m<<16>>16;m=p<<16>>16;p=p>>16;oe=v<<16>>16;v=g+944|0;se=re(g<<16>>16,oe)|0;de=re(v<<16>>16,oe)|0;ue=g+-944|0;le=re(944-g<<16>>16,oe)|0;ce=N+4|0;he=N+28|0;T=(T|0)<=0;be=l+((a[P>>2]|0)-k+2<<2)|0;ke=e+((a[C>>2]|0)-k+1<<2)+1280|0;k=0;while(1){if((k|0)>=(E|0)){d=0;break}if(B){Re=a[be>>2]|0;we=n[d>>1]|0;we=(re(Re>>16,we)|0)+((re(Re&65535,we)|0)>>16)+2|0;Re=a[be+-4>>2]|0;Oe=n[F>>1]|0;Oe=we+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[be+-8>>2]|0;we=n[U>>1]|0;we=Oe+((re(Re>>16,we)|0)+((re(Re&65535,we)|0)>>16))|0;Re=a[be+-12>>2]|0;Oe=n[I>>1]|0;Oe=we+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[be+-16>>2]|0;we=n[D>>1]|0;we=Oe+((re(Re>>16,we)|0)+((re(Re&65535,we)|0)>>16))<<1;be=be+4|0}else we=0;if(r){Re=(a[ke>>2]|0)+(a[ke+-8>>2]|0)|0;Re=(re(Re>>16,G)|0)+((re(Re&65535,G)|0)>>16)|0;me=a[ke+-4>>2]|0;me=we-(Re+(re(me>>16,K)|0)+((re(me&65535,K)|0)>>16)<<2)|0;ke=ke+4|0}else me=0;_e=k+31|0;ve=f+(k<<2)|0;pe=0;while(1){if((pe|0)>=(M|0))break;Ee=N+(pe*48|0)|0;Se=i+(pe*1168|0)+1156|0;a[Se>>2]=(re(a[i+(pe*1168|0)+1156>>2]|0,196314165)|0)+907633515;Te=i+(pe*1168|0)+(_e<<2)|0;Re=a[Te>>2]|0;Oe=n[c>>1]|0;Oe=H+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+30<<2)>>2]|0;ge=n[j>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+29<<2)>>2]|0;Oe=n[q>>1]|0;Oe=ge+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+28<<2)>>2]|0;ge=n[Y>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+27<<2)>>2]|0;Oe=n[z>>1]|0;Oe=ge+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+26<<2)>>2]|0;ge=n[w>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+25<<2)>>2]|0;Oe=n[x>>1]|0;Oe=ge+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+24<<2)>>2]|0;ge=n[V>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+23<<2)>>2]|0;Oe=n[J>>1]|0;Oe=ge+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+22<<2)>>2]|0;ge=n[W>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0;if($){Re=a[i+(pe*1168|0)+(k+21<<2)>>2]|0;Oe=n[Q>>1]|0;Oe=ge+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+20<<2)>>2]|0;ge=n[ee>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+19<<2)>>2]|0;Oe=n[X>>1]|0;Oe=ge+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+18<<2)>>2]|0;ge=n[ie>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+17<<2)>>2]|0;Oe=n[Z>>1]|0;Oe=ge+((re(Re>>16,Oe)|0)+((re(Re&65535,Oe)|0)>>16))|0;Re=a[i+(pe*1168|0)+(k+16<<2)>>2]|0;ge=n[S>>1]|0;ge=Oe+((re(Re>>16,ge)|0)+((re(Re&65535,ge)|0)>>16))|0}ge=ge<<4;Ae=i+(pe*1168|0)+1088|0;Re=a[Ae>>2]|0;ye=(a[Te>>2]|0)+((re(Re>>16,ne)|0)+((re(Re&65535,ne)|0)>>16))|0;Me=a[i+(pe*1168|0)+1092>>2]|0;Te=Me-ye|0;Te=Re+((re(Te>>16,ne)|0)+((re(Te&65535,ne)|0)>>16))|0;a[Ae>>2]=ye;Ae=n[b>>1]|0;Ae=ae+((re(ye>>16,Ae)|0)+((re(ye&65535,Ae)|0)>>16))|0;ye=2;while(1){if((ye|0)>=(A|0))break;Ne=ye+-1|0;Oe=i+(pe*1168|0)+(ye<<2)+1088|0;Pe=a[Oe>>2]|0;Le=Pe-Te|0;Le=Me+((re(Le>>16,ne)|0)+((re(Le&65535,ne)|0)>>16))|0;a[i+(pe*1168|0)+(Ne<<2)+1088>>2]=Te;Ne=n[b+(Ne<<1)>>1]|0;Ne=Ae+((re(Te>>16,Ne)|0)+((re(Te&65535,Ne)|0)>>16))|0;Ce=a[i+(pe*1168|0)+((ye|1)<<2)+1088>>2]|0;Re=Ce-Le|0;Re=Pe+((re(Re>>16,ne)|0)+((re(Re&65535,ne)|0)>>16))|0;a[Oe>>2]=Le;Oe=n[b+(ye<<1)>>1]|0;Me=Ce;Ae=Ne+((re(Le>>16,Oe)|0)+((re(Le&65535,Oe)|0)>>16))|0;ye=ye+2|0;Te=Re}a[i+(pe*1168|0)+(te<<2)+1088>>2]=Te;Pe=n[y>>1]|0;Ae=Ae+((re(Te>>16,Pe)|0)+((re(Te&65535,Pe)|0)>>16))<<1;Te=a[i+(pe*1168|0)+1152>>2]|0;Pe=Te>>16;Te=Te&65535;Ae=Ae+((re(Pe,fe)|0)+((re(Te,fe)|0)>>16))<<2;Ce=a[i+(pe*1168|0)+(a[L>>2]<<2)+960>>2]|0;Te=(re(Ce>>16,m)|0)+((re(Ce&65535,m)|0)>>16)+(re(Pe,p)|0)+((re(Te,p)|0)>>16)<<2;Pe=(a[ve>>2]|0)-((me+ge-(Ae+Te)>>3)+1>>1)|0;Se=(a[Se>>2]|0)<0;Ce=0-Pe|0;ye=Se?Ce:Pe;if(((Se?Ce:Pe)|0)>30720)Oe=30720;else Oe=(ye|0)<-31744?-31744:ye;ye=Oe-g>>10;if((ye|0)<=0){if(ye){if((ye|0)==-1){ye=ue;Me=g;Le=le;Re=se}else{Re=(ye<<10|80)+g|0;ye=Re;Me=Re+1024|0;Le=re(0-Re<<16>>16,oe)|0;Re=re(-1024-Re<<16>>16,oe)|0}}else{ye=g;Me=v;Le=se;Re=de}}else{Le=(ye<<10)+-80+g|0;Re=Le+1024|0;ye=Le;Me=Re;Le=re(Le<<16>>16,oe)|0;Re=re(Re<<16>>16,oe)|0}Pe=Oe-ye<<16>>16;Le=Le+(re(Pe,Pe)|0)>>10;Oe=Oe-Me<<16>>16;Re=Re+(re(Oe,Oe)|0)>>10;Oe=a[i+(pe*1168|0)+1164>>2]|0;if((Le|0)<(Re|0)){a[N+(pe*48|0)+4>>2]=Oe+Le;a[N+(pe*48|0)+28>>2]=Oe+Re;a[Ee>>2]=ye;a[N+(pe*48|0)+24>>2]=Me;Ee=ye;ye=Me}else{a[N+(pe*48|0)+4>>2]=Oe+Re;a[N+(pe*48|0)+28>>2]=Oe+Le;a[Ee>>2]=Me;a[N+(pe*48|0)+24>>2]=ye;Ee=Me}Pe=Ee<<4;Pe=(Se?0-Pe|0:Pe)+we|0;Ce=Pe+ge|0;Ne=Ce-Ae|0;a[N+(pe*48|0)+16>>2]=Ne-Te;a[N+(pe*48|0)+12>>2]=Ne;a[N+(pe*48|0)+20>>2]=Pe;a[N+(pe*48|0)+8>>2]=Ce;Ce=ye<<4;Ce=(Se?0-Ce|0:Ce)+we|0;Pe=Ce+ge|0;Ne=Pe-Ae|0;a[N+(pe*48|0)+40>>2]=Ne-Te;a[N+(pe*48|0)+36>>2]=Ne;a[N+(pe*48|0)+44>>2]=Ce;a[N+(pe*48|0)+32>>2]=Pe;pe=pe+1|0}we=(a[L>>2]|0)+31|0;a[L>>2]=we&31;we=we+O&31;pe=a[ce>>2]|0;me=0;_e=1;while(1){if((_e|0)>=(M|0))break;Ce=a[N+(_e*48|0)+4>>2]|0;Pe=(Ce|0)<(pe|0);pe=Pe?Ce:pe;me=Pe?_e:me;_e=_e+1|0}pe=a[i+(me*1168|0)+(we<<2)+448>>2]|0;_e=0;while(1){if((_e|0)>=(M|0))break;if((a[i+(_e*1168|0)+(we<<2)+448>>2]|0)!=(pe|0)){Pe=N+(_e*48|0)+4|0;a[Pe>>2]=(a[Pe>>2]|0)+134217727;Pe=N+(_e*48|0)+28|0;a[Pe>>2]=(a[Pe>>2]|0)+134217727}_e=_e+1|0}pe=a[ce>>2]|0;ge=0;ve=a[he>>2]|0;_e=0;Ee=1;while(1){if((Ee|0)>=(M|0))break;Re=a[N+(Ee*48|0)+4>>2]|0;Ne=(Re|0)>(pe|0);Ce=a[N+(Ee*48|0)+28>>2]|0;Pe=(Ce|0)<(ve|0);pe=Ne?Re:pe;ge=Ne?Ee:ge;ve=Pe?Ce:ve;_e=Pe?Ee:_e;Ee=Ee+1|0}if((ve|0)<(pe|0)){Ll(i+(ge*1168|0)+(k<<2)|0,i+(_e*1168|0)+(k<<2)|0,1168-(k<<2)|0)|0;Pe=N+(ge*48|0)|0;Ce=N+(_e*48|0)+24|0;a[Pe+0>>2]=a[Ce+0>>2];a[Pe+4>>2]=a[Ce+4>>2];a[Pe+8>>2]=a[Ce+8>>2];a[Pe+12>>2]=a[Ce+12>>2];a[Pe+16>>2]=a[Ce+16>>2];a[Pe+20>>2]=a[Ce+20>>2]}if(!(T&(k|0)<(O|0))){pe=k-O|0;t[o+pe>>0]=(((a[i+(me*1168|0)+(we<<2)+576>>2]|0)>>>9)+1|0)>>>1;Pe=a[i+(me*1168|0)+(we<<2)+704>>2]|0;_e=a[u+(we<<2)>>2]|0;Ce=_e<<16>>16;_e=((re(Pe>>16,Ce)|0)+((re(Pe&65535,Ce)|0)>>16)+(re(Pe,(_e>>15)+1>>1)|0)>>7)+1>>1;if((_e|0)>32767)_e=32767;else _e=(_e|0)<-32768?-32768:_e&65535;n[s+(pe<<1)>>1]=_e;a[e+((a[C>>2]|0)-O<<2)+1280>>2]=a[i+(me*1168|0)+(we<<2)+960>>2];a[l+((a[P>>2]|0)-O<<2)>>2]=a[i+(me*1168|0)+(we<<2)+832>>2]}a[C>>2]=(a[C>>2]|0)+1;a[P>>2]=(a[P>>2]|0)+1;we=k+32|0;me=0;while(1){if((me|0)>=(M|0))break;a[i+(me*1168|0)+1152>>2]=a[N+(me*48|0)+12>>2];Pe=a[N+(me*48|0)+8>>2]|0;a[i+(me*1168|0)+(we<<2)>>2]=Pe;a[i+(me*1168|0)+(a[L>>2]<<2)+704>>2]=Pe;Pe=a[N+(me*48|0)>>2]|0;a[i+(me*1168|0)+(a[L>>2]<<2)+576>>2]=Pe;a[i+(me*1168|0)+(a[L>>2]<<2)+832>>2]=a[N+(me*48|0)+20>>2]<<1;a[i+(me*1168|0)+(a[L>>2]<<2)+960>>2]=a[N+(me*48|0)+16>>2];Ce=i+(me*1168|0)+1156|0;Pe=(a[Ce>>2]|0)+((Pe>>9)+1>>1)|0;a[Ce>>2]=Pe;a[i+(me*1168|0)+(a[L>>2]<<2)+448>>2]=Pe;a[i+(me*1168|0)+1164>>2]=a[N+(me*48|0)+4>>2];me=me+1|0}a[u+(a[L>>2]<<2)>>2]=_;k=k+1|0}while(1){if((d|0)>=(M|0))break;f=i+(d*1168|0)+0|0;C=i+(d*1168|0)+(E<<2)+0|0;N=f+128|0;do{a[f>>2]=a[C>>2];f=f+4|0;C=C+4|0}while((f|0)<(N|0));d=d+1|0}h=R;return}function Cn(e){e=e|0;var i=0,r=0,t=0,n=0,a=0,f=0;i=h;t=Bn((e|0)>0?e:0-e|0)|0;r=e<>16;e=536870911/(f|0)|0;a=e<<16;n=a>>16;r=536870912-((re(f,n)|0)+((re(r&65535,n)|0)>>16))<<3;e=a+((re(r>>16,n)|0)+((re(r&65528,n)|0)>>16))+(re(r,(e>>15)+1>>1)|0)|0;t=62-t|0;r=t+-47|0;if((r|0)>=1){h=i;return((r|0)<32?e>>r:0)|0}r=47-t|0;t=-2147483648>>r;n=2147483647>>>r;if((t|0)>(n|0)){if((e|0)>(t|0)){f=t;f=f<(n|0)){f=n;f=f<0?e:0-e|0)|0;f=e<0?i:0-i|0)|0)+-1|0;e=i<>16|0)|0)<<16>>16;a=(re(f>>16,i)|0)+((re(f&65535,i)|0)>>16)|0;e=Il(e|0,((e|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;e=Al(e|0,C|0,29)|0;e=f-(e&-8)|0;i=a+((re(e>>16,i)|0)+((re(e&65535,i)|0)>>16))|0;t=n+28-t|0;e=t+-16|0;if((e|0)>=0){h=r;return((e|0)<32?i>>e:0)|0}e=16-t|0;t=-2147483648>>e;n=2147483647>>>e;if((t|0)>(n|0)){if((i|0)>(t|0)){f=t;f=f<(n|0)){f=n;f=f<>2]=a[e+2328>>2]<<7;a[e+4240>>2]=65536;a[e+4244>>2]=65536;a[e+4256>>2]=20;a[e+4252>>2]=2;return}function In(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0,s=0;f=h;s=e+2316|0;o=e+4248|0;if((a[s>>2]|0)!=(a[o>>2]|0)){Dn(e);a[o>>2]=a[s>>2]}if(!t){Fn(e,i);h=f;return}else{Un(e,i,r,n);t=e+4160|0;a[t>>2]=(a[t>>2]|0)+1;h=f;return}}function Un(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0;f=h;h=h+64|0;d=f+20|0;k=f+16|0;c=f+12|0;_=f+8|0;s=f+24|0;v=f;w=e+2336|0;y=a[w>>2]|0;u=e+2328|0;l=h;h=h+((4*(y+(a[u>>2]|0)|0)|0)+15&-16)|0;A=h;h=h+((2*y|0)+15&-16)|0;a[v>>2]=a[e+4240>>2]>>6;y=e+4244|0;b=v+4|0;a[b>>2]=a[y>>2]>>6;if(a[e+2376>>2]|0){p=e+4182|0;g=p+32|0;do{n[p>>1]=0;p=p+2|0}while((p|0)<(g|0))}m=e+2332|0;p=e+2324|0;zn(c,d,_,k,e+4|0,v,a[m>>2]|0,a[p>>2]|0);v=a[e+4252>>2]|0;if((a[c>>2]>>a[k>>2]|0)<(a[_>>2]>>a[d>>2]|0))c=re(v+-1|0,a[e+4256>>2]|0)|0;else c=re(v,a[e+4256>>2]|0)|0;E=Yn(c+-128|0)|0;g=e+4172|0;c=e+4224|0;T=n[c>>1]|0;_=e+4160|0;d=qn(a[_>>2]|0)|0;M=n[21208+(d<<1)>>1]|0;k=e+4164|0;if((a[k>>2]|0)==2)d=n[21216+(d<<1)>>1]|0;else d=n[21224+(d<<1)>>1]|0;R=d<<16>>16;v=e+4182|0;d=e+2340|0;ua(v,a[d>>2]|0,64881);L=a[d>>2]|0;Ll(s|0,e+4182|0,L<<1|0)|0;do{if(!(a[_>>2]|0)){if((a[k>>2]|0)==2){_=16384;k=0}else{L=(Wn(4194304,Jn(134217728,qt(v,L)|0)|0)|0)<<3;R=(re(L>>16,R)|0)+((re(L&65528,R)|0)>>16)>>14;L=a[d>>2]|0;T=16384;break}while(1){if((k|0)>=5)break;_=(_&65535)-(o[e+(k<<1)+4172>>1]|0)&65535;k=k+1|0}T=(jn(_)|0)<<16>>16;T=(re(T,n[e+4236>>1]|0)|0)>>>14&65535}}while(0);k=e+4220|0;v=a[k>>2]|0;S=e+4168|0;_=(a[S>>2]>>7)+1>>1;O=a[w>>2]|0;N=O-_-L+-2|0;Yt(A+(N<<1)|0,e+(N<<1)+1348|0,s,O-N|0,L,t);y=Zn(a[y>>2]|0)|0;y=(y|0)<1073741823?y:1073741823;L=a[w>>2]|0;t=y>>16;y=y&65535;N=N+(a[d>>2]|0)|0;while(1){if((N|0)>=(L|0))break;D=n[A+(N<<1)>>1]|0;a[l+(N<<2)>>2]=(re(t,D)|0)+((re(y,D)|0)>>16);N=N+1|0}t=e+4174|0;L=e+4176|0;y=e+4178|0;A=e+4180|0;M=M<<16>>16;R=R<<16>>16;N=e+2316|0;C=0;while(1){if((C|0)>=(a[p>>2]|0))break;T=T<<16>>16;P=a[m>>2]|0;_=l+(O-_+2<<2)|0;B=0;while(1){if((B|0)>=(P|0)){_=0;break}D=a[_>>2]|0;U=n[g>>1]|0;U=(re(D>>16,U)|0)+((re(D&65535,U)|0)>>16)+2|0;D=a[_+-4>>2]|0;I=n[t>>1]|0;I=U+((re(D>>16,I)|0)+((re(D&65535,I)|0)>>16))|0;D=a[_+-8>>2]|0;U=n[L>>1]|0;U=I+((re(D>>16,U)|0)+((re(D&65535,U)|0)>>16))|0;D=a[_+-12>>2]|0;I=n[y>>1]|0;I=U+((re(D>>16,I)|0)+((re(D&65535,I)|0)>>16))|0;D=a[_+-16>>2]|0;U=n[A>>1]|0;U=I+((re(D>>16,U)|0)+((re(D&65535,U)|0)>>16))|0;D=(re(v,196314165)|0)+907633515|0;I=a[e+(E+(D>>>25)<<2)+4>>2]|0;a[l+(O<<2)>>2]=U+((re(I>>16,T)|0)+((re(I&65535,T)|0)>>16))<<2;_=_+4|0;v=D;O=O+1|0;B=B+1|0}while(1){if((_|0)>=5)break;U=e+(_<<1)+4172|0;n[U>>1]=(re(M,n[U>>1]|0)|0)>>>15;_=_+1|0}T=(re(T,R)|0)>>>15&65535;_=a[S>>2]|0;_=Jn(_+(((_>>16)*655|0)+(((_&65535)*655|0)>>>16))|0,(a[N>>2]<<16>>16)*4608|0)|0;a[S>>2]=_;_=(_>>7)+1>>1;C=C+1|0}w=a[w>>2]|0;m=w+-16|0;e=e+1284|0;p=l+(m<<2)+0|0;E=e+0|0;g=p+64|0;do{a[p>>2]=a[E>>2];p=p+4|0;E=E+4|0}while((p|0)<(g|0));E=n[s>>1]|0;O=n[s+2>>1]|0;y=n[s+4>>1]|0;g=n[s+6>>1]|0;A=n[s+8>>1]|0;S=n[s+10>>1]|0;p=n[s+12>>1]|0;t=n[s+14>>1]|0;M=n[s+16>>1]|0;L=n[s+18>>1]|0;b=a[b>>2]|0;R=b<<16>>16;b=(b>>15)+1>>1;N=0;while(1){C=a[u>>2]|0;if((N|0)>=(C|0))break;C=a[l+(m+(N+15)<<2)>>2]|0;C=(a[d>>2]>>1)+((re(C>>16,E)|0)+((re(C&65535,E)|0)>>16))|0;B=a[l+(m+(N+14)<<2)>>2]|0;B=C+((re(B>>16,O)|0)+((re(B&65535,O)|0)>>16))|0;C=a[l+(m+(N+13)<<2)>>2]|0;C=B+((re(C>>16,y)|0)+((re(C&65535,y)|0)>>16))|0;B=a[l+(m+(N+12)<<2)>>2]|0;B=C+((re(B>>16,g)|0)+((re(B&65535,g)|0)>>16))|0;C=a[l+(m+(N+11)<<2)>>2]|0;C=B+((re(C>>16,A)|0)+((re(C&65535,A)|0)>>16))|0;B=a[l+(m+(N+10)<<2)>>2]|0;B=C+((re(B>>16,S)|0)+((re(B&65535,S)|0)>>16))|0;C=a[l+(m+(N+9)<<2)>>2]|0;C=B+((re(C>>16,p)|0)+((re(C&65535,p)|0)>>16))|0;B=a[l+(m+(N+8)<<2)>>2]|0;B=C+((re(B>>16,t)|0)+((re(B&65535,t)|0)>>16))|0;C=a[l+(m+(N+7)<<2)>>2]|0;C=B+((re(C>>16,M)|0)+((re(C&65535,M)|0)>>16))|0;B=a[l+(m+(N+6)<<2)>>2]|0;B=C+((re(B>>16,L)|0)+((re(B&65535,L)|0)>>16))|0;C=a[d>>2]|0;P=N+16|0;D=10;while(1){if((D|0)>=(C|0))break;I=a[l+(m+(P-D+-1)<<2)>>2]|0;U=n[s+(D<<1)>>1]|0;B=B+((re(I>>16,U)|0)+((re(I&65535,U)|0)>>16))|0;D=D+1|0}U=l+(w+N<<2)|0;C=(a[U>>2]|0)+(B<<4)|0;a[U>>2]=C;C=((re(C>>16,R)|0)+((re(C&65535,R)|0)>>16)+(re(C,b)|0)>>7)+1>>1;if((C|0)>32767)C=32767;else C=(C|0)<-32768?-32768:C&65535;n[r+(N<<1)>>1]=C;N=N+1|0}p=e+0|0;E=l+(m+C<<2)+0|0;g=p+64|0;do{a[p>>2]=a[E>>2];p=p+4|0;E=E+4|0}while((p|0)<(g|0));a[k>>2]=v;n[c>>1]=T;s=0;while(1){if((s|0)>=4)break;a[i+(s<<2)>>2]=_;s=s+1|0}h=f;return}function Fn(e,i){e=e|0;i=i|0;var r=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0;r=h;l=e+4168|0;m=t[e+2765>>0]|0;a[e+4164>>2]=m<<24>>24;e:do{if(m<<24>>24==2){f=e+2324|0;o=e+2332|0;d=e+4172|0;s=a[o>>2]|0;u=a[f>>2]|0;k=0;c=0;while(1){w=re(c,s)|0;m=u+-1|0;if((c|0)==(u|0)?1:(w|0)>=(a[i+(m<<2)>>2]|0))break;else{b=0;w=0}while(1){if((b|0)>=5)break;p=w+(n[i+(((m-c|0)*5|0)+b<<1)+96>>1]|0)|0;b=b+1|0;w=p}if((w|0)>(k|0)){k=i+((u+65535-c<<16>>16)*5<<1)+96|0;n[d+0>>1]=n[k+0>>1]|0;n[d+2>>1]=n[k+2>>1]|0;n[d+4>>1]=n[k+4>>1]|0;n[d+6>>1]=n[k+6>>1]|0;n[d+8>>1]=n[k+8>>1]|0;a[l>>2]=a[i+(u+-1-c<<2)>>2]<<8;k=w}c=c+1|0}n[d+0>>1]=0;n[d+2>>1]=0;n[d+4>>1]=0;n[d+6>>1]=0;n[d+8>>1]=0;n[e+4176>>1]=k;if((k|0)<11469){s=(11744256/(((k|0)>1?k:1)|0)|0)<<16>>16;l=0;while(1){if((l|0)>=5)break e;p=e+(l<<1)+4172|0;n[p>>1]=(re(n[p>>1]|0,s)|0)>>>10;l=l+1|0}}if((k|0)>15565){s=(255016960/(k|0)|0)<<16>>16;l=0;while(1){if((l|0)>=5)break e;p=e+(l<<1)+4172|0;n[p>>1]=(re(n[p>>1]|0,s)|0)>>>14;l=l+1|0}}}else{a[l>>2]=(a[e+2316>>2]<<16>>16)*4608;o=e+4172|0;n[o+0>>1]=0;n[o+2>>1]=0;n[o+4>>1]=0;n[o+6>>1]=0;n[o+8>>1]=0;o=e+2332|0;f=e+2324|0}}while(0);Ll(e+4182|0,i+64|0,a[e+2340>>2]<<1|0)|0;n[e+4236>>1]=a[i+136>>2];p=a[f>>2]|0;k=i+(p+-2<<2)+16|0;w=a[k+4>>2]|0;m=e+4240|0;a[m>>2]=a[k>>2];a[m+4>>2]=w;a[e+4256>>2]=a[o>>2];a[e+4252>>2]=p;h=r;return}function Gn(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,f=0,o=0,s=0,l=0,u=0;t=h;h=h+16|0;o=t+4|0;f=t;if(a[e+4160>>2]|0){os(e+4228|0,e+4232|0,i,r);a[e+4216>>2]=1;h=t;return}e:do{if(a[e+4216>>2]|0){os(f,o,i,r);s=a[o>>2]|0;o=a[e+4232>>2]|0;if((s|0)<=(o|0)){if((s|0)<(o|0))a[f>>2]=a[f>>2]>>o-s}else{l=e+4228|0;a[l>>2]=a[l>>2]>>s-o}o=a[f>>2]|0;s=e+4228|0;l=a[s>>2]|0;if((o|0)>(l|0)){u=Vn(l)|0;l=l<>2]=l;s=o>>(Wn(25-u|0,0)|0);a[f>>2]=s;s=(xn((l|0)/(((s|0)>1?s:1)|0)|0)|0)<<4;f=((65536-s|0)/(r|0)|0)<<2;o=0;while(1){if((o|0)>=(r|0))break e;u=i+(o<<1)|0;l=n[u>>1]|0;n[u>>1]=(re(s>>16,l)|0)+((re(s&65532,l)|0)>>>16);s=s+f|0;if((s|0)>65536)break e;o=o+1|0}}}}while(0);a[e+4216>>2]=0;h=t;return}function Vn(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function Wn(e,i){e=e|0;i=i|0;return((e|0)>(i|0)?e:i)|0}function xn(e){e=e|0;var i=0,r=0,t=0;i=h;h=h+16|0;r=i+4|0;t=i;if((e|0)<1){t=0;h=i;return t|0}Kn(e,r,t);r=a[r>>2]|0;r=((r&1|0)==0?46214:32768)>>>(r>>1);t=(re(a[t>>2]<<16>>16,13959168)|0)>>16;t=r+((re(r>>16,t)|0)+((re(r&65535,t)|0)>>16))|0;h=i;return t|0}function Kn(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;n=Vn(e)|0;a[i>>2]=n;a[r>>2]=(Hn(e,24-n|0)|0)&127;h=t;return}function Hn(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=0-i|0;do{if(i)if((i|0)<0){e=e<>>(i+32|0);break}else{e=e<<32-i|e>>>i;break}}while(0);h=r;return e|0}function zn(e,i,r,t,f,o,s,l){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;l=l|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0;u=h;b=h;h=h+((2*(s<<1)|0)+15&-16)|0;c=b;d=0;while(1){if((d|0)>=2)break;k=re(d+l+-2|0,s)|0;w=o+(d<<2)|0;m=0;while(1){if((m|0)>=(s|0))break;_=a[f+(m+k<<2)>>2]|0;p=a[w>>2]|0;v=p<<16>>16;p=(re(_>>16,v)|0)+((re(_&65535,v)|0)>>16)+(re(_,(p>>15)+1>>1)|0)>>8;if((p|0)>32767)p=32767;else p=(p|0)<-32768?-32768:p&65535;n[c+(m<<1)>>1]=p;m=m+1|0}c=c+(s<<1)|0;d=d+1|0}os(e,i,b,s);os(r,t,b+(s<<1)|0,s);h=u;return}function Yn(e){e=e|0;return((e|0)<0?0:e)|0}function qn(e){e=e|0;return((e|0)>1?1:e)|0}function jn(e){e=e|0;return(e<<16>>16<3277?3277:e)|0}function Jn(e,i){e=e|0;i=i|0;return((e|0)<(i|0)?e:i)|0}function Zn(e){e=e|0;var i=0,r=0,t=0,n=0,a=0,f=0;i=h;t=Vn((e|0)>0?e:0-e|0)|0;r=e<>16;e=536870911/(f|0)|0;a=e<<16;n=a>>16;r=536870912-((re(f,n)|0)+((re(r&65535,n)|0)>>16))<<3;e=a+((re(r>>16,n)|0)+((re(r&65528,n)|0)>>16))+(re(r,(e>>15)+1>>1)|0)|0;t=62-t|0;r=t+-46|0;if((r|0)>=1){h=i;return((r|0)<32?e>>r:0)|0}r=46-t|0;t=-2147483648>>r;n=2147483647>>>r;if((t|0)>(n|0)){if((e|0)>(t|0)){f=t;f=f<(n|0)){f=n;f=f<>2]=0;t=t+4|0}while((t|0)<(r|0));r=0;while(1){if((r|0)>=4){r=0;break}t=r+1|0;a[e+(r<<2)+92>>2]=Xn(50/(t|0)|0)|0;r=t}while(1){if((r|0)>=4)break;t=(a[e+(r<<2)+92>>2]|0)*100|0;a[e+(r<<2)+60>>2]=t;a[e+(r<<2)+76>>2]=2147483647/(t|0)|0;r=r+1|0}a[e+108>>2]=15;r=0;while(1){if((r|0)>=4)break;a[e+(r<<2)+40>>2]=25600;r=r+1|0}h=i;return 0}function Xn(e){e=e|0;return((e|0)>1?e:1)|0}function Qn(e,i){e=e|0;i=i|0;var r=0,t=0,f=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0;t=h;h=h+48|0;s=t+32|0;r=t+16|0;c=t;l=e+32|0;f=e+4608|0;m=a[f>>2]|0;_=m>>1;g=m>>2;d=m>>3;a[c>>2]=0;v=d+g|0;a[c+4>>2]=v;p=v+d|0;a[c+8>>2]=p;w=p+g|0;a[c+12>>2]=w;u=h;h=h+((2*(w+_|0)|0)+15&-16)|0;sa(i,l,u,u+(w<<1)|0,m);sa(u,e+40|0,u,u+(p<<1)|0,_);sa(u,e+48|0,u,u+(v<<1)|0,g);g=u+(d+-1<<1)|0;i=(n[g>>1]|0)>>>1&65535;n[g>>1]=i;while(1){b=d+-1|0;if((b|0)<=0)break;g=u+(d+-2<<1)|0;v=(n[g>>1]|0)>>>1;n[g>>1]=v;g=u+(b<<1)|0;n[g>>1]=(o[g>>1]|0)-v;d=b}k=e+88|0;n[u>>1]=(o[u>>1]|0)-(o[k>>1]|0);n[k>>1]=i;k=0;_=0;while(1){if((k|0)>=4)break;p=a[f>>2]|0;p=p>>(ea(4-k|0,3)|0)>>2;b=e+(k<<2)+56|0;v=a[b>>2]|0;d=s+(k<<2)|0;a[d>>2]=v;m=c+(k<<2)|0;i=0;w=0;while(1){if((w|0)<4){g=0;_=0}else break;while(1){if((g|0)>=(p|0))break;E=n[u+((a[m>>2]|0)+g+i<<1)>>1]>>3;g=g+1|0;_=_+(re(E,E)|0)|0}if((w|0)<3){g=v+_|0;E=(g|0)<0;v=E?2147483647:g;g=E?2147483647:g}else{g=v+(_>>1)|0;E=(g|0)<0;v=E?2147483647:g;g=E?2147483647:g}a[d>>2]=g;i=i+p|0;w=w+1|0}a[b>>2]=_;k=k+1|0}ia(s,l);u=0;l=0;c=0;while(1){if((l|0)>=4)break;d=a[s+(l<<2)>>2]|0;b=a[e+(l<<2)+92>>2]|0;i=d-b|0;if((i|0)>0){if(d>>>0<8388608){d=(d<<8|0)/(b+1|0)|0;a[r+(l<<2)>>2]=d}else{d=(d|0)/((b>>8)+1|0)|0;a[r+(l<<2)>>2]=d}b=(po(d)|0)+-1024|0;d=b<<16>>16;c=c+(re(d,d)|0)|0;if((i|0)<1048576){b=re((ra(i)|0)<<6>>16,d)|0;b=b+((re((ra(i)|0)<<6&65472,d)|0)>>16)|0}g=a[21232+(l<<2)>>2]|0;E=b<<16>>16;u=u+((re(g>>16,E)|0)+((re(g&65535,E)|0)>>16))|0}else a[r+(l<<2)>>2]=256;l=l+1|0}l=Wo((((ra((c|0)/4|0)|0)*196608>>16)*45e3>>16)+-128|0)|0;a[e+4744>>2]=((Wo(u)|0)<<1)+-32768;u=0;c=0;while(1){if((c|0)>=4)break;E=c+1|0;u=u+(re(E,(a[s+(c<<2)>>2]|0)-(a[e+(c<<2)+92>>2]|0)>>4)|0)|0;c=E}if((u|0)>=1){if((u|0)<32768){if((a[f>>2]|0)==((a[e+4600>>2]|0)*10|0)){if((u|0)>32767)s=32767;else s=(u|0)<-32768?-32768:u;s=s<<16}else{if((u|0)>65535)s=65535;else s=(u|0)<-65536?-65536:u;s=s<<15}E=(ra(s)|0)+32768|0;l=l<<16>>16;l=(re(E>>16,l)|0)+((re(E&65535,l)|0)>>16)|0}}else l=l>>1;a[e+4556>>2]=ea(l>>7,255)|0;s=l<<16>>16;s=((re(l>>16,s)|0)<<16)+(re(l&65535,s)|0)|0;f=(a[f>>2]|0)==((a[e+4600>>2]|0)*10|0)?s>>21:s>>20;s=0;while(1){if((s|0)>=4)break;g=e+(s<<2)+72|0;v=a[g>>2]|0;E=(a[r+(s<<2)>>2]|0)-v|0;E=v+((re(E>>16,f)|0)+((re(E&65535,f)|0)>>16))|0;a[g>>2]=E;a[e+(s<<2)+4728>>2]=Wo(((po(E)|0)*3|0)+-5120>>4)|0;s=s+1|0}h=t;return}function ea(e,i){e=e|0;i=i|0;return((e|0)<(i|0)?e:i)|0}function ia(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0;r=h;t=i+108|0;n=a[t>>2]|0;if((n|0)<1e3)f=32767/((n>>4)+1|0)|0;else f=0;n=0;while(1){if((n|0)>=4)break;o=i+(n<<2)+60|0;l=a[o>>2]|0;u=(a[e+(n<<2)>>2]|0)+(a[i+(n<<2)+92>>2]|0)|0;u=(u|0)<0?2147483647:u;s=2147483647/(u|0)|0;if((u|0)<=(l<<3|0)){if((u|0)<(l|0))l=1024;else{u=l<<16>>16;c=re(s>>16,u)|0;u=re(s&65535,u)|0;l=re(s,(l>>15)+1>>1)|0;l=c+(u>>16)+l>>16<<11|(c+(u>>>16)+l|0)>>>5&2047}}else l=128;c=ta(l,f)|0;u=i+(n<<2)+76|0;d=a[u>>2]|0;l=s-d|0;c=c<<16>>16;c=d+((re(l>>16,c)|0)+((re(l&65535,c)|0)>>16))|0;a[u>>2]=c;c=2147483647/(c|0)|0;a[o>>2]=(c|0)<16777215?c:16777215;n=n+1|0}a[t>>2]=(a[t>>2]|0)+1;h=r;return}function ra(e){e=e|0;var i=0,r=0,t=0;i=h;h=h+16|0;r=i+4|0;t=i;if((e|0)<1){t=0;h=i;return t|0}na(e,r,t);r=a[r>>2]|0;r=((r&1|0)==0?46214:32768)>>>(r>>1);t=(re(a[t>>2]<<16>>16,13959168)|0)>>16;t=r+((re(r>>16,t)|0)+((re(r&65535,t)|0)>>16))|0;h=i;return t|0}function ta(e,i){e=e|0;i=i|0;return((e|0)>(i|0)?e:i)|0}function na(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;n=aa(e)|0;a[i>>2]=n;a[r>>2]=(fa(e,24-n|0)|0)&127;h=t;return}function aa(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function fa(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=0-i|0;do{if(i)if((i|0)<0){e=e<>>(i+32|0);break}else{e=e<<32-i|e>>>i;break}}while(0);h=r;return e|0}function oa(e,i,r,n,s,l,u,c,d,b,k){e=e|0;i=i|0;r=r|0;n=n|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;var w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0;_=h;a[i>>2]=2147483647;v=n+2|0;w=n+4|0;m=n+6|0;p=n+8|0;M=d<<16>>16;O=s+4|0;T=s+8|0;L=s+12|0;R=s+16|0;C=s+28|0;P=s+32|0;B=s+36|0;d=s+24|0;g=s+52|0;E=s+56|0;N=s+48|0;A=s+76|0;S=s+72|0;y=s+96|0;D=0;while(1){if((D|0)>=(k|0))break;I=f[u+D>>0]|0;H=re(M,f[c+D>>0]|0)|0;W=I-b|0;K=a[O>>2]|0;F=(o[v>>1]|0)-(t[l+1>>0]<<7)<<16>>16;K=(re(K>>16,F)|0)+((re(K&65535,F)|0)>>16)|0;z=a[T>>2]|0;V=(o[w>>1]|0)-(t[l+2>>0]<<7)<<16>>16;z=K+((re(z>>16,V)|0)+((re(z&65535,V)|0)>>16))|0;K=a[L>>2]|0;G=(o[m>>1]|0)-(t[l+3>>0]<<7)<<16>>16;K=z+((re(K>>16,G)|0)+((re(K&65535,G)|0)>>16))|0;z=a[R>>2]|0;U=(o[p>>1]|0)-(t[l+4>>0]<<7)<<16>>16;z=K+((re(z>>16,U)|0)+((re(z&65535,U)|0)>>16))<<1;K=a[s>>2]|0;x=(o[n>>1]|0)-(t[l>>0]<<7)<<16>>16;K=z+((re(K>>16,x)|0)+((re(K&65535,x)|0)>>16))|0;x=H+((W|0)>0?W<<10:0)+((re(K>>16,x)|0)+((re(K&65535,x)|0)>>16))|0;K=a[C>>2]|0;K=(re(K>>16,V)|0)+((re(K&65535,V)|0)>>16)|0;W=a[P>>2]|0;W=K+((re(W>>16,G)|0)+((re(W&65535,G)|0)>>16))|0;K=a[B>>2]|0;K=W+((re(K>>16,U)|0)+((re(K&65535,U)|0)>>16))<<1;W=a[d>>2]|0;W=K+((re(W>>16,F)|0)+((re(W&65535,F)|0)>>16))|0;F=x+((re(W>>16,F)|0)+((re(W&65535,F)|0)>>16))|0;W=a[g>>2]|0;W=(re(W>>16,G)|0)+((re(W&65535,G)|0)>>16)|0;x=a[E>>2]|0;x=W+((re(x>>16,U)|0)+((re(x&65535,U)|0)>>16))<<1;W=a[N>>2]|0;W=x+((re(W>>16,V)|0)+((re(W&65535,V)|0)>>16))|0;V=F+((re(W>>16,V)|0)+((re(W&65535,V)|0)>>16))|0;W=a[A>>2]|0;W=(re(W>>16,U)|0)+((re(W&65535,U)|0)>>16)<<1;F=a[S>>2]|0;F=W+((re(F>>16,G)|0)+((re(F&65535,G)|0)>>16))|0;G=V+((re(F>>16,G)|0)+((re(F&65535,G)|0)>>16))|0;F=a[y>>2]|0;F=(re(F>>16,U)|0)+((re(F&65535,U)|0)>>16)|0;U=G+((re(F>>16,U)|0)+((re(F&65535,U)|0)>>16))|0;if((U|0)<(a[i>>2]|0)){a[i>>2]=U;t[e>>0]=D;a[r>>2]=I}l=l+5|0;D=D+1|0}h=_;return}function sa(e,i,r,t,f){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0;o=h;s=f>>1;l=i+4|0;f=0;while(1){if((f|0)>=(s|0))break;b=f<<1;k=n[e+(b<<1)>>1]<<10;d=k-(a[i>>2]|0)|0;u=(re(d>>16,-24290)|0)+((re(d&65535,-24290)|0)>>16)|0;c=k+u|0;a[i>>2]=k+(d+u);b=n[e+((b|1)<<1)>>1]<<10;u=a[l>>2]|0;d=b-u|0;d=((d>>16)*10788|0)+(((d&65535)*10788|0)>>>16)|0;u=u+d|0;a[l>>2]=b+d;d=(u+c>>10)+1>>1;if((d|0)>32767)d=32767;else d=(d|0)<-32768?-32768:d&65535;n[r+(f<<1)>>1]=d;u=(u-c>>10)+1>>1;if((u|0)>32767)u=32767;else u=(u|0)<-32768?-32768:u&65535;n[t+(f<<1)>>1]=u;f=f+1|0}h=o;return}function la(e,i,r,t,f,o){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;var s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0;s=h;k=0-(a[r>>2]|0)|0;l=0-(a[r+4>>2]|0)|0;d=t+4|0;b=k&16383;k=k>>>14<<16>>16;w=i+4|0;r=l&16383;l=l>>>14<<16>>16;u=i+8|0;c=0;while(1){if((c|0)>=(o|0))break;p=n[e+(c<<1)>>1]|0;m=a[i>>2]|0;m=(a[t>>2]|0)+((re(m>>16,p)|0)+((re(m&65535,p)|0)>>16))<<2;_=m>>16;v=m&65532;E=(a[d>>2]|0)+(((re(_,b)|0)+((re(v,b)|0)>>>16)>>13)+1>>1)+((re(_,k)|0)+((re(v,k)|0)>>16))|0;a[t>>2]=E;g=a[w>>2]|0;a[t>>2]=E+((re(g>>16,p)|0)+((re(g&65535,p)|0)>>16));v=(((re(_,r)|0)+((re(v,r)|0)>>>16)>>13)+1>>1)+((re(_,l)|0)+((re(v,l)|0)>>16))|0;a[d>>2]=v;_=a[u>>2]|0;a[d>>2]=v+((re(_>>16,p)|0)+((re(_&65535,p)|0)>>16));m=m+16383>>14;if((m|0)>32767)m=32767;else m=(m|0)<-32768?-32768:m&65535;n[f+(c<<1)>>1]=m;c=c+1|0}h=s;return}function ua(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0,f=0,o=0;t=h;a=r+-65536|0;i=i+-1|0;f=0;while(1){if((f|0)>=(i|0))break;o=e+(f<<1)|0;n[o>>1]=(((re(r,n[o>>1]|0)|0)>>>15)+1|0)>>>1;r=r+(((re(r,a)|0)>>15)+1>>1)|0;f=f+1|0}o=e+(i<<1)|0;n[o>>1]=(((re(r,n[o>>1]|0)|0)>>>15)+1|0)>>>1;h=t;return}function ha(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0,l=0,u=0;t=h;n=r+-65536|0;i=i+-1|0;f=0;while(1){o=r>>16;if((f|0)>=(i|0))break;s=e+(f<<2)|0;l=a[s>>2]|0;u=l<<16>>16;a[s>>2]=(re(o,u)|0)+((re(r&65535,u)|0)>>16)+(re(r,(l>>15)+1>>1)|0);r=r+(((re(r,n)|0)>>15)+1>>1)|0;f=f+1|0}u=e+(i<<2)|0;l=a[u>>2]|0;s=l<<16>>16;a[u>>2]=(re(o,s)|0)+((re(r&65535,s)|0)>>16)+(re(r,(l>>15)+1>>1)|0);h=t;return}function ca(e){e=e|0;var i=0,r=0,t=0,n=0,f=0;i=h;f=a[e+8>>2]|0;do{if((f|0)==48e3|(f|0)==44100|(f|0)==32e3|(f|0)==24e3|(f|0)==16e3|(f|0)==12e3|(f|0)==8e3){t=a[e+20>>2]|0;if((t|0)!=8e3){if((t|0)!=12e3){if((t|0)==16e3)t=16e3;else{e=-102;break}}else t=12e3}else t=8e3;n=a[e+12>>2]|0;if((n|0)!=8e3){if((n|0)!=12e3){if((n|0)==16e3)n=16e3;else{e=-102;break}}else n=12e3}else n=8e3;f=a[e+16>>2]|0;if((f|0)==12e3){f=12e3;r=10}else if((f|0)!=8e3){if((f|0)==16e3){f=16e3;r=10}else{e=-102;break}}else f=8e3;if((r|0)==10)if(f>>>0>t>>>0){e=-102;break}if(!(n>>>0>>0|f>>>0>n>>>0)){f=a[e+24>>2]|0;if((f|0)==60|(f|0)==40|(f|0)==20|(f|0)==10){f=a[e+32>>2]|0;if(!((f|0)<0|(f|0)>100)){f=a[e+44>>2]|0;if(!((f|0)<0|(f|0)>1)){f=a[e+48>>2]|0;if(!((f|0)<0|(f|0)>1)){f=a[e+40>>2]|0;if(!((f|0)<0|(f|0)>1)){r=a[e>>2]|0;if(!((r|0)<1|(r|0)>2)?(f=a[e+4>>2]|0,!((f|0)<1|(f|0)>2|(f|0)>(r|0))):0){f=a[e+36>>2]|0;h=i;return((f|0)<0|(f|0)>10?-106:0)|0}else e=-111}else e=-107}else e=-109}else e=-108}else e=-105}else e=-103}else e=-102}else e=-102}while(0);h=i;return e|0}function da(e,i,r,n,f,o){e=e|0;i=i|0;r=r|0;n=n|0;f=f|0;o=o|0;var s=0,l=0,u=0,c=0;s=h;h=h+16|0;l=s;t[l+1>>0]=0;n=((n<<1)+f<<16>>16)*7|0;r=r+8>>4;f=0;while(1){if((f|0)>=(r|0))break;u=a[o+(f<<2)>>2]|0;e:do{if((u|0)>0){t[l>>0]=t[26304+(n+((u&30)>>>0<6?u&31:6))>>0]|0;c=0;while(1){if((c|0)>=16)break e;u=t[i+c>>0]|0;if(u<<24>>24)Rr(e,(u<<24>>24>>15)+1|0,l,8);c=c+1|0}}}while(0);i=i+16|0;f=f+1|0}h=s;return}function ba(e,i,r,f,o,s){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;var l=0,u=0,c=0,d=0,b=0;l=h;h=h+16|0;u=l;t[u+1>>0]=0;f=((f<<1)+o<<16>>16)*7|0;r=r+8>>4;o=0;while(1){if((o|0)>=(r|0))break;c=a[s+(o<<2)>>2]|0;e:do{if((c|0)>0){t[u>>0]=t[26304+(f+((c&30)>>>0<6?c&31:6))>>0]|0;d=0;while(1){if((d|0)>=16)break e;c=i+(d<<1)|0;if((n[c>>1]|0)>0){b=((vr(e,u,8)|0)<<1)+-1|0;n[c>>1]=re(n[c>>1]|0,b)|0}d=d+1|0}}}while(0);i=i+32|0;o=o+1|0}h=l;return}function ka(e,i){e=e|0;i=i|0;var r=0,t=0,f=0,o=0,s=0,l=0;t=h;if((i|0)>8e4)f=8e4;else f=(i|0)<5e3?5e3:i;i=e+4632|0;if((f|0)==(a[i>>2]|0)){h=t;return}a[i>>2]=f;i=a[e+4600>>2]|0;if((i|0)==8)i=24720;else i=(i|0)==12?24752:24784;o=(a[e+4604>>2]|0)==2?f+-2200|0:f;s=1;while(1){if((s|0)>=8)break;f=a[i+(s<<2)>>2]|0;if((o|0)<=(f|0)){r=9;break}s=s+1|0}if((r|0)==9){l=s+-1|0;r=a[i+(l<<2)>>2]|0;i=n[24816+(l<<1)>>1]|0;a[e+4748>>2]=(i<<6)+(re((o-r<<6|0)/(f-r|0)|0,(n[24816+(s<<1)>>1]|0)-i|0)|0)}if(!(a[e+6124>>2]|0)){h=t;return}l=e+4748|0;a[l>>2]=(a[l>>2]|0)+(re(12-(a[e+6128>>2]|0)<<16>>16,-31)|0);h=t;return}function wa(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0;t=h;r=a[e+4600>>2]|0;s=r<<16>>16;n=s*1e3|0;if(!s){o=a[e+4596>>2]|0;s=a[e+4580>>2]|0;s=(((o|0)<(s|0)?o:s)|0)/1e3|0;h=t;return s|0}f=a[e+4580>>2]|0;o=a[e+4588>>2]|0;if(!((n|0)>(f|0)|(n|0)>(o|0))?(n|0)>=(a[e+4592>>2]|0):0){o=e+24|0;f=a[o>>2]|0;if((f|0)>255)a[e+28>>2]=0;if((a[e+4560>>2]|0)==0?(a[i+60>>2]|0)==0:0){s=r;h=t;return s|0}s=a[e+4596>>2]|0;if((n|0)>(s|0)){n=e+28|0;if(!(a[n>>2]|0)){a[o>>2]=256;f=e+16|0;a[f>>2]=0;a[f+4>>2]=0;f=256}if(a[i+60>>2]|0){a[n>>2]=0;s=(r|0)==16?12:8;h=t;return s|0}if((f|0)<1){a[i+84>>2]=1;s=i+52|0;o=a[s>>2]|0;a[s>>2]=o-((o*5|0)/((a[i+24>>2]|0)+5|0)|0);s=r;h=t;return s|0}else{a[n>>2]=-2;s=r;h=t;return s|0}}if((n|0)>=(s|0)){i=e+28|0;if((a[i>>2]|0)>=0){s=r;h=t;return s|0}a[i>>2]=1;s=r;h=t;return s|0}if(a[i+60>>2]|0){a[o>>2]=0;s=e+16|0;a[s>>2]=0;a[s+4>>2]=0;a[e+28>>2]=1;s=(r|0)==8?12:16;h=t;return s|0}e=e+28|0;if(!(a[e>>2]|0)){a[i+84>>2]=1;s=i+52|0;o=a[s>>2]|0;a[s>>2]=o-((o*5|0)/((a[i+24>>2]|0)+5|0)|0);s=r;h=t;return s|0}else{a[e>>2]=1;s=r;h=t;return s|0}}o=(f|0)<(o|0)?f:o;s=a[e+4592>>2]|0;s=(((o|0)>(s|0)?o:s)|0)/1e3|0;h=t;return s|0}function ma(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0;o=h;a[e+6108>>2]=a[i+44>>2];a[e+4708>>2]=a[i+48>>2];s=a[i+8>>2]|0;a[e+4580>>2]=s;a[e+4588>>2]=a[i+12>>2];a[e+4592>>2]=a[i+16>>2];a[e+4596>>2]=a[i+20>>2];a[e+6120>>2]=a[i+40>>2];a[e+5784>>2]=a[i>>2];a[e+5788>>2]=a[i+4>>2];a[e+4560>>2]=t;a[e+5792>>2]=n;n=e+4700|0;if((a[n>>2]|0)!=0?(a[e+4712>>2]|0)==0:0){if((s|0)==(a[e+4584>>2]|0)){t=0;h=o;return t|0}s=a[e+4600>>2]|0;if((s|0)<=0){t=0;h=o;return t|0}t=pa(e,s)|0;h=o;return t|0}t=wa(e,i)|0;t=(f|0)==0?t:f;f=pa(e,t)|0;t=f+(_a(e,t,a[i+24>>2]|0)|0)|0;t=t+(va(e,a[i+36>>2]|0)|0)|0;a[e+4640>>2]=a[i+32>>2];t=t+(ga(e,r)|0)|0;a[n>>2]=1;h=o;return t|0}function pa(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0;r=h;h=h+304|0;n=r;f=e+4600|0;t=a[f>>2]|0;if((t|0)==(i|0)?(a[e+4584>>2]|0)==(a[e+4580>>2]|0):0){i=0;n=e+4580|0;n=a[n>>2]|0;f=e+4584|0;a[f>>2]=n;h=r;return i|0}if(!t){i=So(e+5808|0,a[e+4580>>2]|0,i*1e3|0,1)|0;n=e+4580|0;n=a[n>>2]|0;f=e+4584|0;a[f>>2]=n;h=r;return i|0}else{u=((a[e+4604>>2]|0)*10|0)+5|0;b=re(u,t)|0;o=re(u,i)|0;t=Ee()|0;s=h;h=h+((2*((b|0)>(o|0)?b:o)|0)+15&-16)|0;l=e+9356|0;Aa(s,l,b);c=e+4580|0;d=So(n,(a[f>>2]<<16>>16)*1e3|0,a[c>>2]|0,0)|0;f=re(u,(a[c>>2]|0)/1e3|0)|0;u=h;h=h+((2*f|0)+15&-16)|0;yo(n,u,s,b);n=e+5808|0;i=d+(So(n,a[c>>2]|0,(i<<16>>16)*1e3|0,1)|0)|0;yo(n,s,u,f);Sa(l,s,o);ce(t|0);n=e+4580|0;n=a[n>>2]|0;f=e+4584|0;a[f>>2]=n;h=r;return i|0}return 0}function _a(e,i,r){e=e|0;i=i|0;r=r|0;var n=0,f=0,o=0,s=0,l=0,u=0;n=h;s=e+4636|0;if((a[s>>2]|0)==(r|0)){l=e+4600|0;f=l;l=a[l>>2]|0;o=0}else{l=(r|0)==10;do{if(!l){if(!((r|0)==60|(r|0)==40|(r|0)==20)){if((r|0)<11){o=-103;f=6;break}else o=-103}else o=0;a[e+5776>>2]=(r|0)/20|0;a[e+4604>>2]=4;l=i<<16>>16;a[e+4608>>2]=l*20;a[e+4572>>2]=l*24;l=a[e+4600>>2]|0;u=e+4720|0;if((l|0)==8){a[u>>2]=25232;l=8;break}else{a[u>>2]=25192;break}}else{o=0;f=6}}while(0);do{if((f|0)==6){a[e+5776>>2]=1;a[e+4604>>2]=l?2:1;l=i<<16>>16;a[e+4608>>2]=re(r<<16>>16,l)|0;a[e+4572>>2]=l*14;l=a[e+4600>>2]|0;f=e+4720|0;if((l|0)==8){a[f>>2]=25264;l=8;break}else{a[f>>2]=25248;break}}}while(0);a[s>>2]=r;a[e+4632>>2]=0;f=e+4600|0}if((l|0)==(i|0)){h=n;return o|0}r=e+7200|0;s=e+16|0;a[s>>2]=0;a[s+4>>2]=0;a[e+5772>>2]=0;a[e+5780>>2]=0;a[e+4632>>2]=0;yl(e+144|0,0,4412)|0;yl(r|0,0,2152)|0;a[e+4568>>2]=100;a[e+4696>>2]=1;a[e+9352>>2]=100;t[r>>0]=10;a[e+4500>>2]=100;a[e+4516>>2]=65536;t[e+4565>>0]=0;a[f>>2]=i;r=(i|0)==8;s=a[e+4604>>2]|0;l=(s|0)==4;f=e+4720|0;do{if(r){if(l){a[f>>2]=25232;s=4;f=21;break}else{a[f>>2]=25264;r=s;s=8;f=23;break}}else if(l){a[f>>2]=25192;s=4;f=21;break}else{a[f>>2]=25248;r=s;f=22;break}}while(0);if((f|0)==21)if(r){r=s;s=8;f=23}else{r=s;f=22}if((f|0)==22)if((i|0)==12){s=12;f=23}else{a[e+4664>>2]=16;a[e+4724>>2]=24608;s=i}if((f|0)==23){a[e+4664>>2]=10;a[e+4724>>2]=23520}a[e+4612>>2]=i*5;a[e+4608>>2]=re(i*327680>>16,r<<16>>16)|0;u=i<<16;i=u>>16;a[e+4616>>2]=i*20;a[e+4620>>2]=u>>15;a[e+4576>>2]=i*18;if((r|0)==4)a[e+4572>>2]=i*24;else a[e+4572>>2]=i*14;if((s|0)==12){a[e+4684>>2]=13;a[e+4716>>2]=25008;h=n;return o|0}else if((s|0)==16){a[e+4684>>2]=10;a[e+4716>>2]=25016;h=n;return o|0}else{a[e+4684>>2]=15;a[e+4716>>2]=24992;h=n;return o|0}return 0}function va(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0;r=h;do{if((i|0)>=2){if((i|0)<4){a[e+4668>>2]=1;a[e+4676>>2]=49807;a[e+4672>>2]=8;a[e+4660>>2]=10;n=a[e+4600>>2]|0;t=n*5|0;a[e+4624>>2]=t;a[e+4652>>2]=1;a[e+4656>>2]=0;a[e+4680>>2]=0;a[e+4692>>2]=4;a[e+4704>>2]=0;f=8;break}if((i|0)<6){a[e+4668>>2]=1;a[e+4676>>2]=48497;a[e+4672>>2]=10;a[e+4660>>2]=12;n=a[e+4600>>2]|0;t=n*5|0;a[e+4624>>2]=t;a[e+4652>>2]=2;a[e+4656>>2]=1;a[e+4680>>2]=0;a[e+4692>>2]=8;a[e+4704>>2]=n*983;f=10;break}t=e+4668|0;if((i|0)<8){a[t>>2]=1;a[e+4676>>2]=47186;a[e+4672>>2]=12;a[e+4660>>2]=14;n=a[e+4600>>2]|0;t=n*5|0;a[e+4624>>2]=t;a[e+4652>>2]=3;a[e+4656>>2]=1;a[e+4680>>2]=0;a[e+4692>>2]=16;a[e+4704>>2]=n*983;f=12;break}else{a[t>>2]=2;a[e+4676>>2]=45875;a[e+4672>>2]=16;a[e+4660>>2]=16;n=a[e+4600>>2]|0;t=n*5|0;a[e+4624>>2]=t;a[e+4652>>2]=4;a[e+4656>>2]=1;a[e+4680>>2]=0;a[e+4692>>2]=32;a[e+4704>>2]=n*983;f=16;break}}else{a[e+4668>>2]=0;a[e+4676>>2]=52429;a[e+4672>>2]=6;a[e+4660>>2]=8;n=a[e+4600>>2]|0;t=n*3|0;a[e+4624>>2]=t;a[e+4652>>2]=1;a[e+4656>>2]=0;a[e+4680>>2]=1;a[e+4692>>2]=2;a[e+4704>>2]=0;f=6}}while(0);a[e+4672>>2]=Ta(f,a[e+4664>>2]|0)|0;a[e+4628>>2]=(n*5|0)+(t<<1);a[e+4648>>2]=i;h=r;return 0}function ga(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0;r=h;t=e+6124|0;a[t>>2]=0;if(!(a[e+6120>>2]|0)){h=r;return 0}n=a[e+4640>>2]|0;if((n|0)<=0){h=r;return 0}f=a[e+4600>>2]|0;if((f|0)==8)f=12e3;else f=(f|0)==12?14e3:16e3;if((n|0)<25){s=n;o=n}else{s=25;o=25}if(((((re(f,125-s|0)|0)>>16)*655|0)+((((re(f,125-o|0)|0)&65520)*655|0)>>>16)|0)>=(i|0)){h=r;return 0}a[t>>2]=1;a[e+6128>>2]=Ea(7-(((n>>16)*26214|0)+(((n&65535)*26214|0)>>>16))|0)|0;h=r;return 0}function Ea(e){e=e|0;return((e|0)>2?e:2)|0}function Ta(e,i){e=e|0;i=i|0;return((e|0)<(i|0)?e:i)|0}function Aa(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0;t=h;while(1){a=r+-1|0;if((r|0)<=0)break;r=i+(a<<2)|0;if((ge(+ +l[r>>2])|0)<=32767){if((ge(+ +l[r>>2])|0)<-32768)r=-32768;else r=(ge(+ +l[r>>2])|0)&65535}else r=32767;n[e+(a<<1)>>1]=r;r=a}h=t;return}function Sa(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0;t=h;while(1){a=r+-1|0;if((r|0)<=0)break;l[e+(a<<2)>>2]=+(n[i+(a<<1)>>1]|0);r=a}h=t;return}function ya(e){e=e|0;a[e>>2]=8544;return 0}function Ma(e){e=e|0;var i=0,r=0;i=h;r=0;while(1){if((r|0)>=2)break;bo(e+(r*4260|0)|0);r=r+1|0}r=e+8520|0;n[r+0>>1]=0;n[r+2>>1]=0;n[r+4>>1]=0;n[r+6>>1]=0;n[r+8>>1]=0;n[r+10>>1]=0;a[e+8540>>2]=0;h=i;return 0}function La(e,i,r,f,s,l,u,c){e=e|0;i=i|0;r=r|0;f=f|0;s=s|0;l=l|0;u=u|0;c=c|0;var d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0;d=h;h=h+672|0;b=d+20|0;_=d+16|0;k=d+8|0;p=d;A=d+24|0;a[b>>2]=0;w=p;a[w>>2]=0;a[w+4>>2]=0;w=i+4|0;e:do{if(!f)M=a[w>>2]|0;else{f=0;while(1){M=a[w>>2]|0;if((f|0)>=(M|0))break e;a[e+(f*4260|0)+2388>>2]=0;f=f+1|0}}}while(0);f=i+4|0;w=e+8536|0;if((M|0)>(a[w>>2]|0)){bo(e+4260|0);M=a[f>>2]|0}if((M|0)==1?(a[w>>2]|0)==2:0)m=(a[i+12>>2]|0)==((a[e+2316>>2]|0)*1e3|0);else m=0;g=e+2388|0;e:do{if(!(a[g>>2]|0)){E=i+16|0;v=i+12|0;S=i+8|0;T=0;y=0;i:while(1){if((y|0)>=(M|0))break e;switch(a[E>>2]|0){case 20:{a[e+(y*4260|0)+2392>>2]=1;a[e+(y*4260|0)+2324>>2]=4;break};case 60:{a[e+(y*4260|0)+2392>>2]=3;a[e+(y*4260|0)+2324>>2]=4;break};case 10:{a[e+(y*4260|0)+2392>>2]=1;a[e+(y*4260|0)+2324>>2]=2;break};case 40:{a[e+(y*4260|0)+2392>>2]=2;a[e+(y*4260|0)+2324>>2]=4;break};case 0:{a[e+(y*4260|0)+2392>>2]=1;a[e+(y*4260|0)+2324>>2]=2;break};default:{e=-203;S=120;break i}}M=(a[v>>2]>>10)+1|0;if(!((M|0)==16|(M|0)==12|(M|0)==8)){e=-200;S=120;break}C=T+(Fa(e+(y*4260|0)|0,M,a[S>>2]|0)|0)|0;M=a[f>>2]|0;T=C;y=y+1|0}if((S|0)==120){h=d;return e|0}}else T=0}while(0);v=a[i>>2]|0;do{if((v|0)==2)if((M|0)==2){if((a[e+8532>>2]|0)!=1?(a[w>>2]|0)!=1:0){v=2;break}v=e+8520|0;n[v>>1]=0;n[v+2>>1]=0>>>16;v=e+8528|0;n[v>>1]=0;n[v+2>>1]=0>>>16;Ll(e+6692|0,e+2432|0,300)|0;v=a[i>>2]|0}else v=2}while(0);a[e+8532>>2]=v;a[w>>2]=a[f>>2];E=i+8|0;C=a[E>>2]|0;if((C|0)>48e3|(C|0)<8e3){C=-200;h=d;return C|0}v=(r|0)==1;e:do{if(!v?(a[g>>2]|0)==0:0){S=0;while(1){R=a[f>>2]|0;if((S|0)>=(R|0)){S=0;break}y=e+(S*4260|0)+2392|0;L=0;while(1){C=(L|0)<(a[y>>2]|0);M=_r(s,1)|0;if(!C)break;a[e+(S*4260|0)+(L<<2)+2404>>2]=M;L=L+1|0}a[e+(S*4260|0)+2416>>2]=M;S=S+1|0}while(1){if((S|0)>=(R|0))break;C=e+(S*4260|0)+2420|0;a[C+0>>2]=0;a[C+4>>2]=0;a[C+8>>2]=0;i:do{if(a[e+(S*4260|0)+2416>>2]|0){y=e+(S*4260|0)+2392|0;M=a[y>>2]|0;if((M|0)==1){a[e+(S*4260|0)+2420>>2]=1;break}L=(vr(s,a[24920+(M+-2<<2)>>2]|0,8)|0)+1|0;M=0;while(1){if((M|0)>=(a[y>>2]|0))break i;a[e+(S*4260|0)+(M<<2)+2420>>2]=L>>>M&1;M=M+1|0}}}while(0);R=a[f>>2]|0;S=S+1|0}if(!r){S=e+2392|0;M=0;while(1){if((M|0)>=(a[S>>2]|0))break e;L=e+(M<<2)+6680|0;y=M+-1|0;O=0;while(1){if((O|0)>=(R|0))break;if(a[e+(O*4260|0)+(M<<2)+2420>>2]|0){if((R|0)==2&(O|0)==0?(Jo(s,p),(a[L>>2]|0)==0):0)Zo(s,b);if((M|0)>0?(a[e+(O*4260|0)+(y<<2)+2420>>2]|0)!=0:0)R=2;else R=0;Ba(e+(O*4260|0)|0,s,M,1,R);Ua(s,A,t[e+(O*4260|0)+2765>>0]|0,t[e+(O*4260|0)+2766>>0]|0,a[e+(O*4260|0)+2328>>2]|0);R=a[f>>2]|0}O=O+1|0}M=M+1|0}}}}while(0);A=a[f>>2]|0;if((A|0)==2){if((r|0)==2){if((a[e+(a[g>>2]<<2)+2420>>2]|0)==1){Jo(s,p);if(!(a[e+(a[g>>2]<<2)+6680>>2]|0))S=62;else S=63}else{A=0;S=64}}else if(!r){Jo(s,p);if(!(a[e+(a[g>>2]<<2)+6664>>2]|0))S=62;else S=63}else{A=0;S=64}e:do{if((S|0)==62)Zo(s,b);else if((S|0)==63)a[b>>2]=0;else if((S|0)==64)while(1){if((A|0)>=2)break e;a[p+(A<<2)>>2]=n[e+(A<<1)+8520>>1];A=A+1|0;S=64}}while(0);A=a[f>>2]|0;if((A|0)==2)if((a[b>>2]|0)==0?(a[e+8540>>2]|0)==1:0){yl(e+5544|0,0,1024)|0;a[e+6568>>2]=100;t[e+6572>>0]=10;a[e+8424>>2]=0;a[e+6636>>2]=1;A=a[f>>2]|0}else A=2}y=re(a[i+12>>2]|0,A)|0;y=(y|0)<(re(a[E>>2]|0,a[i>>2]|0)|0);if(y){A=Ee()|0;a[k>>2]=l;L=l+((a[e+2328>>2]|0)+2<<1)|0;a[k+4>>2]=L;M=l}else{L=re(A,(a[e+2328>>2]|0)+2|0)|0;A=Ee()|0;M=h;h=h+((2*L|0)+15&-16)|0;a[k>>2]=M;L=M+((a[e+2328>>2]|0)+2<<1)|0;a[k+4>>2]=L}if(!r){S=e+8540|0;R=(a[b>>2]|0)==0&1}else{S=e+8540|0;if(a[S>>2]|0){if((a[f>>2]|0)==2&(r|0)==2)O=(a[e+(a[e+6648>>2]<<2)+6680>>2]|0)==1;else O=0}else O=1;R=O&1}O=(r|0)==2;R=(R|0)==0;N=0;while(1){C=a[f>>2]|0;if((N|0)>=(C|0))break;if((N|0)==0|R^1){C=(a[g>>2]|0)-N|0;do{if((C|0)<1)C=0;else{if(O){C=(a[e+(N*4260|0)+(C+-1<<2)+2420>>2]|0)!=0?2:0;break}if((N|0)>0?(a[S>>2]|0)!=0:0){C=1;break}C=2}}while(0);T=T+(Pa(e+(N*4260|0)|0,s,(a[k+(N<<2)>>2]|0)+4|0,_,r,C,c)|0)|0}else yl((a[k+(N<<2)>>2]|0)+4|0,0,a[_>>2]<<1|0)|0;C=e+(N*4260|0)+2388|0;a[C>>2]=(a[C>>2]|0)+1;N=N+1|0}if((a[i>>2]|0)==2&(C|0)==2){s=e+2316|0;r=a[_>>2]|0;jo(e+8520|0,M,L,p,a[s>>2]|0,r)}else{s=e+8524|0;r=o[s>>1]|o[s+2>>1]<<16;n[M>>1]=r;n[M+2>>1]=r>>>16;r=a[_>>2]|0;C=M+(r<<1)|0;C=o[C>>1]|o[C+2>>1]<<16;n[s>>1]=C;n[s+2>>1]=C>>>16;s=e+2316|0}p=re(r,a[E>>2]|0)|0;p=(p|0)/((a[s>>2]<<16>>16)*1e3|0)|0;a[u>>2]=p;_=a[i>>2]|0;if((_|0)==2){C=h;h=h+((2*p|0)+15&-16)|0;p=C}else p=l;if(y){C=(a[e+2328>>2]|0)+2|0;N=re(a[f>>2]|0,C)|0;M=h;h=h+((2*N|0)+15&-16)|0;Ll(M|0,l|0,N<<1|0)|0;a[k>>2]=M;a[k+4>>2]=M+(C<<1)}g=_;_=0;while(1){c=a[f>>2]|0;if((_|0)>=(((g|0)<(c|0)?g:c)|0))break;yo(e+(_*4260|0)+2432|0,p,(a[k+(_<<2)>>2]|0)+2|0,r);g=a[i>>2]|0;if((g|0)==2){c=0;while(1){if((c|0)>=(a[u>>2]|0))break;n[l+(_+(c<<1)<<1)>>1]=n[p+(c<<1)>>1]|0;c=c+1|0}g=a[i>>2]|0}_=_+1|0}e:do{if((g|0)==2&(c|0)==1){if(!m){k=0;while(1){if((k|0)>=(a[u>>2]|0))break e;C=k<<1;n[l+((C|1)<<1)>>1]=n[l+(C<<1)>>1]|0;k=k+1|0}}yo(e+6692|0,p,M+2|0,r);k=0;while(1){if((k|0)>=(a[u>>2]|0))break e;n[l+((k<<1|1)<<1)>>1]=n[p+(k<<1)>>1]|0;k=k+1|0}}}while(0);if((a[e+4164>>2]|0)==2)a[i+20>>2]=re(a[e+2308>>2]|0,a[21248+((a[s>>2]|0)+-8>>2<<2)>>2]|0)|0;else a[i+20>>2]=0;e:do{if(v){b=0;while(1){if((b|0)>=(a[w>>2]|0))break e;t[e+(b*4260|0)+2312>>0]=10;b=b+1|0}}else a[S>>2]=a[b>>2]}while(0);ce(A|0);C=T;h=d;return C|0}function Oa(e,i,r,f,o){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;var s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0;b=h;h=h+32|0;m=b;l=e+2336|0;d=a[l>>2]|0;s=h;h=h+((2*d|0)+15&-16)|0;_=e+2328|0;S=a[_>>2]|0;w=h;h=h+((4*(d+S|0)|0)+15&-16)|0;d=e+2332|0;c=a[d>>2]|0;k=h;h=h+((4*c|0)+15&-16)|0;u=h;h=h+((4*(c+16|0)|0)+15&-16)|0;c=e+2765|0;T=(t[e+2767>>0]|0)<4?1:0;g=n[24968+(t[c>>0]>>1<<2)+(t[e+2766>>0]<<1)>>1]<<4;E=t[e+2770>>0]|0;v=0;while(1){if((v|0)>=(S|0))break;E=(re(E,196314165)|0)+907633515|0;A=f+(v<<1)|0;y=n[A>>1]|0;M=y<<16>>16<<14;S=e+(v<<2)+4|0;a[S>>2]=M;if(y<<16>>16<=0){if(y<<16>>16<0){M=M|1280;a[S>>2]=M}}else{M=M+-1280|0;a[S>>2]=M}te=M+g|0;a[S>>2]=(E|0)<0?0-te|0:te;S=a[_>>2]|0;E=E+(n[A>>1]|0)|0;v=v+1|0}f=e+1284|0;z=u+0|0;Y=f+0|0;H=z+64|0;do{a[z>>2]=a[Y>>2];z=z+4|0;Y=Y+4|0}while((z|0)<(H|0));_=e+2324|0;E=e+2340|0;g=e+4160|0;v=i+136|0;S=(T|0)==0;K=m+2|0;B=m+4|0;P=m+6|0;C=m+8|0;N=m+10|0;R=m+12|0;O=m+14|0;L=m+16|0;M=m+18|0;U=m+20|0;F=m+22|0;G=m+24|0;V=m+26|0;W=m+28|0;x=m+30|0;A=e+4164|0;I=e+2308|0;T=e+4|0;D=r;q=a[l>>2]|0;y=0;while(1){if((y|0)>=(a[_>>2]|0))break;$=i+(y>>1<<5)+32|0;Ll(m|0,$|0,a[E>>2]<<1|0)|0;j=y*5|0;Y=i+(j<<1)+96|0;Q=t[c>>0]|0;J=Q<<24>>24;H=a[i+(y<<2)+16>>2]|0;z=H>>>6;Z=Ra(H)|0;X=a[e>>2]|0;e:do{if((H|0)==(X|0))X=65536;else{X=Na(X,H)|0;ee=X>>16;ie=X&65535;te=0;while(1){if((te|0)>=16)break e;ne=u+(te<<2)|0;ae=a[ne>>2]|0;fe=ae<<16>>16;a[ne>>2]=(re(ee,fe)|0)+((re(ie,fe)|0)>>16)+(re(X,(ae>>15)+1>>1)|0);te=te+1|0}}}while(0);a[e>>2]=H;if((a[g>>2]|0)!=0?(((a[A>>2]|0)!=2|Q<<24>>24==2)^1)&(y|0)<2:0){n[Y+0>>1]=0;n[Y+2>>1]=0;n[Y+4>>1]=0;n[Y+6>>1]=0;n[Y+8>>1]=0;n[i+(j+2<<1)+96>>1]=4096;a[i+(y<<2)>>2]=a[I>>2];p=18}else if((J|0)==2)p=18;else Y=T;e:do{if((p|0)==18){p=0;J=a[i+(y<<2)>>2]|0;Q=(y|0)==0;i:do{if(!Q){if(!((y|0)==2^1|S)){X=a[l>>2]|0;ee=X-J-(a[E>>2]|0)+-2|0;Ll(e+(X<<1)+1348|0,r|0,a[d>>2]<<2|0)|0;X=a[l>>2]|0;ie=a[E>>2]|0;p=22;break}if((X|0)!=65536){ee=J+2|0;Z=X>>16;Q=X&65535;$=0;while(1){if(($|0)>=(ee|0))break i;fe=w+(q-$+-1<<2)|0;ae=a[fe>>2]|0;ne=ae<<16>>16;a[fe>>2]=(re(Z,ne)|0)+((re(Q,ne)|0)>>16)+(re(X,(ae>>15)+1>>1)|0);$=$+1|0}}}else{X=a[l>>2]|0;ie=a[E>>2]|0;ee=X-J-ie+-2|0;p=22}}while(0);i:do{if((p|0)==22){p=0;Yt(s+(ee<<1)|0,e+(ee+(re(y,a[d>>2]|0)|0)<<1)+1348|0,$,X-ee|0,ie,o);if(Q){fe=a[v>>2]<<16>>16;Z=(re(Z>>16,fe)|0)+((re(Z&65535,fe)|0)>>16)<<2}X=J+2|0;$=Z>>16;Z=Z&65535;Q=0;while(1){if((Q|0)>=(X|0))break i;fe=n[s+((a[l>>2]|0)-Q+-1<<1)>>1]|0;a[w+(q-Q+-1<<2)>>2]=(re($,fe)|0)+((re(Z,fe)|0)>>16);Q=Q+1|0}}}while(0);X=i+(j+1<<1)+96|0;$=i+(j+2<<1)+96|0;Z=i+(j+3<<1)+96|0;Q=i+(j+4<<1)+96|0;j=a[d>>2]|0;J=w+(q-J+2<<2)|0;ee=0;while(1){if((ee|0)>=(j|0)){Y=k;break e}ae=a[J>>2]|0;fe=n[Y>>1]|0;fe=(re(ae>>16,fe)|0)+((re(ae&65535,fe)|0)>>16)+2|0;ae=a[J+-4>>2]|0;ne=n[X>>1]|0;ne=fe+((re(ae>>16,ne)|0)+((re(ae&65535,ne)|0)>>16))|0;ae=a[J+-8>>2]|0;fe=n[$>>1]|0;fe=ne+((re(ae>>16,fe)|0)+((re(ae&65535,fe)|0)>>16))|0;ae=a[J+-12>>2]|0;ne=n[Z>>1]|0;ne=fe+((re(ae>>16,ne)|0)+((re(ae&65535,ne)|0)>>16))|0;ae=a[J+-16>>2]|0;fe=n[Q>>1]|0;fe=ne+((re(ae>>16,fe)|0)+((re(ae&65535,fe)|0)>>16))|0;fe=(a[T+(ee<<2)>>2]|0)+(fe<<1)|0;a[k+(ee<<2)>>2]=fe;a[w+(q<<2)>>2]=fe<<1;J=J+4|0;q=q+1|0;ee=ee+1|0}}}while(0);z=z<<16>>16;H=(H>>21)+1>>1;j=0;while(1){J=a[d>>2]|0;if((j|0)>=(J|0))break;fe=a[u+(j+15<<2)>>2]|0;ae=n[m>>1]|0;ae=(a[E>>2]>>1)+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j+14<<2)>>2]|0;J=n[K>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0;fe=a[u+(j+13<<2)>>2]|0;ae=n[B>>1]|0;ae=J+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j+12<<2)>>2]|0;J=n[P>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0;fe=a[u+(j+11<<2)>>2]|0;ae=n[C>>1]|0;ae=J+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j+10<<2)>>2]|0;J=n[N>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0;fe=a[u+(j+9<<2)>>2]|0;ae=n[R>>1]|0;ae=J+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j+8<<2)>>2]|0;J=n[O>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0;fe=a[u+(j+7<<2)>>2]|0;ae=n[L>>1]|0;ae=J+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j+6<<2)>>2]|0;J=n[M>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0;if((a[E>>2]|0)==16){fe=a[u+(j+5<<2)>>2]|0;ae=n[U>>1]|0;ae=J+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j+4<<2)>>2]|0;J=n[F>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0;fe=a[u+(j+3<<2)>>2]|0;ae=n[G>>1]|0;ae=J+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j+2<<2)>>2]|0;J=n[V>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0;fe=a[u+(j+1<<2)>>2]|0;ae=n[W>>1]|0;ae=J+((re(fe>>16,ae)|0)+((re(fe&65535,ae)|0)>>16))|0;fe=a[u+(j<<2)>>2]|0;J=n[x>>1]|0;J=ae+((re(fe>>16,J)|0)+((re(fe&65535,J)|0)>>16))|0}J=(a[Y+(j<<2)>>2]|0)+(J<<4)|0;a[u+(j+16<<2)>>2]=J;J=((re(J>>16,z)|0)+((re(J&65535,z)|0)>>16)+(re(J,H)|0)>>7)+1>>1;if((J|0)>32767)J=32767;else J=(J|0)<-32768?-32768:J&65535;n[D+(j<<1)>>1]=J;j=j+1|0}z=u+0|0;Y=u+(J<<2)+0|0;H=z+64|0;do{a[z>>2]=a[Y>>2];z=z+4|0;Y=Y+4|0}while((z|0)<(H|0));T=T+(J<<2)|0;D=D+(J<<1)|0;y=y+1|0}z=f+0|0;Y=u+0|0;H=z+64|0;do{a[z>>2]=a[Y>>2];z=z+4|0;Y=Y+4|0}while((z|0)<(H|0));h=b;return}function Ra(e){e=e|0;var i=0,r=0,t=0,n=0,a=0,f=0;i=h;t=Ca((e|0)>0?e:0-e|0)|0;r=e<>16;e=536870911/(f|0)|0;a=e<<16;n=a>>16;r=536870912-((re(f,n)|0)+((re(r&65535,n)|0)>>16))<<3;e=a+((re(r>>16,n)|0)+((re(r&65528,n)|0)>>16))+(re(r,(e>>15)+1>>1)|0)|0;t=62-t|0;r=t+-47|0;if((r|0)>=1){h=i;return((r|0)<32?e>>r:0)|0}r=47-t|0;t=-2147483648>>r;n=2147483647>>>r;if((t|0)>(n|0)){if((e|0)>(t|0)){f=t;f=f<(n|0)){f=n;f=f<0?e:0-e|0)|0;f=e<0?i:0-i|0)|0)+-1|0;e=i<>16|0)|0)<<16>>16;a=(re(f>>16,i)|0)+((re(f&65535,i)|0)>>16)|0;e=Il(e|0,((e|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;e=Al(e|0,C|0,29)|0;e=f-(e&-8)|0;i=a+((re(e>>16,i)|0)+((re(e&65535,i)|0)>>16))|0;t=n+28-t|0;e=t+-16|0;if((e|0)>=0){h=r;return((e|0)<32?i>>e:0)|0}e=16-t|0;t=-2147483648>>e;n=2147483647>>>e;if((t|0)>(n|0)){if((i|0)>(t|0)){f=t;f=f<(n|0)){f=n;f=f<>2]|0;a[u+136>>2]=0;if(!f){b=e+2388|0;k=4}else if((f|0)==2?(b=e+2388|0,(a[e+(a[b>>2]<<2)+2420>>2]|0)==1):0)k=4;else k=5;if((k|0)==4){k=Ee()|0;w=h;h=h+((2*(l+15&-16)|0)+15&-16)|0;Ba(e,i,a[b>>2]|0,f,o);b=e+2765|0;Ua(i,w,t[b>>0]|0,t[e+2766>>0]|0,a[c>>2]|0);Da(e,u,o);Oa(e,u,r,w,s);In(e,u,r,0,s);a[e+4160>>2]=0;a[e+4164>>2]=t[b>>0];a[e+2376>>2]=0;ce(k|0)}else if((k|0)==5)In(e,u,r,1,s);k=a[c>>2]|0;w=(a[e+2336>>2]|0)-k|0;Ol(e+1348|0,e+(k<<1)+1348|0,w<<1|0)|0;Ll(e+(w<<1)+1348|0,r|0,a[c>>2]<<1|0)|0;Gt(e,u,r,l);Gn(e,r,l);a[e+2308>>2]=a[u+((a[e+2324>>2]|0)+-1<<2)>>2];a[n>>2]=l;h=d;return 0}function Ba(e,i,r,s,l){e=e|0;i=i|0;r=r|0;s=s|0;l=l|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0;u=h;h=h+48|0;c=u;k=u+32|0;if((s|0)==0?(a[e+(r<<2)+2404>>2]|0)==0:0)b=vr(i,24952,8)|0;else b=(vr(i,24944,8)|0)+2|0;r=b>>>1;s=e+2765|0;t[s>>0]=r;t[e+2766>>0]=b&1;b=(l|0)==2;if(b)t[e+2736>>0]=vr(i,24672,8)|0;else{m=e+2736|0;t[m>>0]=(vr(i,24648+(r<<24>>24<<3)|0,8)|0)<<3;w=vr(i,25016,8)|0;t[m>>0]=(f[m>>0]|0)+w}r=e+2324|0;w=1;while(1){if((w|0)>=(a[r>>2]|0))break;t[e+w+2736>>0]=vr(i,24672,8)|0;w=w+1|0}w=e+2732|0;p=a[w>>2]|0;m=re(t[s>>0]>>1,n[p>>1]|0)|0;m=vr(i,(a[p+12>>2]|0)+m|0,8)|0;t[e+2744>>0]=m;gn(c,k,a[w>>2]|0,m<<24>>24);k=0;while(1){m=a[w>>2]|0;if((k|0)>=(n[m+2>>1]|0))break;m=vr(i,(a[m+24>>2]|0)+(n[c+(k<<1)>>1]|0)|0,8)|0;if(!m)m=0-(vr(i,25024,8)|0)|0;else if((m|0)==8)m=(vr(i,25024,8)|0)+8|0;p=k+1|0;t[e+p+2744>>0]=m+252;k=p}if((a[r>>2]|0)==4)t[e+2767>>0]=vr(i,24960,8)|0;else t[e+2767>>0]=4;if((t[s>>0]|0)!=2){p=t[s>>0]|0;p=p<<24>>24;m=e+2396|0;a[m>>2]=p;m=vr(i,24992,8)|0;m=m&255;p=e+2770|0;t[p>>0]=m;h=u;return}if((b?(a[e+2396>>2]|0)==2:0)?(d=vr(i,25168,8)|0,(d&65535)<<16>>16>0):0){c=(o[e+2400>>1]|0)+(d+65527)&65535;n[e+2762>>1]=c}else{c=(vr(i,25136,8)|0)<<16>>16;p=e+2762|0;n[p>>1]=re(c,a[e+2316>>2]>>1)|0;c=vr(i,a[e+2380>>2]|0,8)|0;c=(o[p>>1]|0)+c&65535;n[p>>1]=c}n[e+2400>>1]=c;t[e+2764>>0]=vr(i,a[e+2384>>2]|0,8)|0;c=e+2768|0;t[c>>0]=vr(i,22256,8)|0;d=0;while(1){if((d|0)>=(a[r>>2]|0))break;t[e+d+2740>>0]=vr(i,a[22320+(t[c>>0]<<2)>>2]|0,8)|0;d=d+1|0}if(!l){t[e+2769>>0]=vr(i,24936,8)|0;p=t[s>>0]|0;p=p<<24>>24;m=e+2396|0;a[m>>2]=p;m=vr(i,24992,8)|0;m=m&255;p=e+2770|0;t[p>>0]=m;h=u;return}else{t[e+2769>>0]=0;p=t[s>>0]|0;p=p<<24>>24;m=e+2396|0;a[m>>2]=p;m=vr(i,24992,8)|0;m=m&255;p=e+2770|0;t[p>>0]=m;h=u;return}}function Da(e,i,r){e=e|0;i=i|0;r=r|0;var f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0;f=h;h=h+64|0;s=f+32|0;u=f;o=e+2324|0;uo(i+16|0,e+2736|0,e+2312|0,(r|0)==2&1,a[o>>2]|0);fn(s,e+2744|0,a[e+2732>>2]|0);r=i+64|0;l=e+2340|0;Qt(r,s,a[l>>2]|0);d=e+2767|0;if((a[e+2376>>2]|0)!=1){b=t[d>>0]|0;if(b<<24>>24<4){k=a[l>>2]|0;d=0;while(1){if((d|0)>=(k|0))break;w=n[e+(d<<1)+2344>>1]|0;n[u+(d<<1)>>1]=(w&65535)+((re(b<<24>>24,(n[s+(d<<1)>>1]|0)-(w<<16>>16)|0)|0)>>>2);d=d+1|0}Qt(i+32|0,u,k)}else c=8}else{t[d>>0]=4;c=8}if((c|0)==8)Ll(i+32|0,i+64|0,a[l>>2]<<1|0)|0;u=a[l>>2]|0;Ll(e+2344|0,s|0,u<<1|0)|0;if(a[e+4160>>2]|0){ua(i+32|0,u,63570);ua(r,a[l>>2]|0,63570)}if((t[e+2765>>0]|0)!=2){yl(i|0,0,a[o>>2]<<2|0)|0;yl(i+96|0,0,(a[o>>2]|0)*10|0)|0;t[e+2768>>0]=0;a[i+136>>2]=0;h=f;return}Ia(n[e+2762>>1]|0,t[e+2764>>0]|0,i,a[e+2316>>2]|0,a[o>>2]|0);u=a[22688+(t[e+2768>>0]<<2)>>2]|0;l=0;while(1){if((l|0)>=(a[o>>2]|0))break;c=(t[e+l+2740>>0]|0)*5|0;r=l*5|0;s=0;while(1){if((s|0)>=5)break;n[i+(r+s<<1)+96>>1]=t[u+(c+s)>>0]<<7;s=s+1|0}l=l+1|0}a[i+136>>2]=n[24976+(t[e+2769>>0]<<1)>>1];h=f;return}function Ia(e,i,r,n,f){e=e|0;i=i|0;r=r|0;n=n|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0;o=h;l=(f|0)==4;if((n|0)==8){s=l?11:3;l=l?21304:21264}else{s=l?34:12;l=l?21352:21272}u=n<<16;n=u>>15;u=(u>>16)*18|0;e=n+(e<<16>>16)|0;i=i<<24>>24;b=(n|0)>(u|0);d=0;while(1){if((d|0)>=(f|0))break;k=e+(t[l+((re(d,s)|0)+i)>>0]|0)|0;c=r+(d<<2)|0;a[c>>2]=k;if(b){if((k|0)>(n|0))k=n;else k=(k|0)<(u|0)?u:k}else if((k|0)>(u|0))k=u;else k=(k|0)<(n|0)?n:k;a[c>>2]=k;d=d+1|0}h=o;return}function Ua(e,i,r,t,f){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0;o=h;h=h+160|0;u=o+80|0;s=o;b=vr(e,25624+((r>>1)*9|0)|0,8)|0;l=f>>4;l=(l<<4|0)<(f|0)?l+1|0:l;b=25272+(b*18|0)|0;k=0;while(1){if((k|0)>=(l|0)){c=0;break}m=s+(k<<2)|0;a[m>>2]=0;w=u+(k<<2)|0;c=0;d=vr(e,b,8)|0;while(1){a[w>>2]=d;if((d|0)!=17)break;d=c+1|0;a[m>>2]=d;c=d;d=vr(e,25434+((d|0)==10&1)|0,8)|0}k=k+1|0}while(1){if((c|0)>=(l|0)){p=0;break}d=a[u+(c<<2)>>2]|0;b=i+(c<<16>>12<<1)|0;if((d|0)>0)Go(b,e,d);else{d=b+0|0;b=d+32|0;do{n[d>>1]=0;d=d+2|0}while((d|0)<(b|0))}c=c+1|0}while(1){if((p|0)>=(l|0))break;m=a[s+(p<<2)>>2]|0;if((m|0)>0){k=p<<16>>12;b=0;while(1){if((b|0)>=16)break;w=i+(k+b<<1)|0;c=n[w>>1]|0;d=0;while(1){if((d|0)>=(m|0))break;c=(c<<1)+(vr(e,24928,8)|0)|0;d=d+1|0}n[w>>1]=c;b=b+1|0}w=u+(p<<2)|0;a[w>>2]=a[w>>2]|m<<5}p=p+1|0}ba(e,i,f,r,t,u);h=o;return}function Fa(e,i,r){e=e|0;i=i|0;r=r|0;var n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0;s=h;n=i<<16>>16;a[e+2332>>2]=n*5;u=e+2324|0;o=re(a[u>>2]<<16>>16,n*327680>>16)|0;f=e+2316|0;d=e+2320|0;if((a[f>>2]|0)==(i|0)?(a[d>>2]|0)==(r|0):0){r=1;c=0;l=4}else l=3;if((l|0)==3){c=So(e+2432|0,n*1e3|0,r,0)|0;a[d>>2]=r;r=(a[f>>2]|0)==(i|0);if(r)l=4}if((l|0)==4)if((o|0)==(a[e+2328>>2]|0)){b=c;h=s;return b|0}d=(i|0)==8;u=(a[u>>2]|0)==4;b=e+2384|0;do{if(d){if(u){a[b>>2]=25232;break}else{a[b>>2]=25264;break}}else if(u){a[b>>2]=25192;break}else{a[b>>2]=25248;break}}while(0);if(!r){a[e+2336>>2]=n*20;if((i|0)==8|(i|0)==12){a[e+2340>>2]=10;a[e+2732>>2]=23520;if((i|0)==12)a[e+2380>>2]=25008;else l=18}else{a[e+2340>>2]=16;a[e+2732>>2]=24608;if((i|0)==16)a[e+2380>>2]=25016;else l=18}if((l|0)==18?d:0)a[e+2380>>2]=24992;a[e+2376>>2]=1;a[e+2308>>2]=100;t[e+2312>>0]=10;a[e+4164>>2]=0;yl(e+1284|0,0,1024)|0}a[f>>2]=i;a[e+2328>>2]=o;b=c;h=s;return b|0}function Ga(e){e=e|0;a[e>>2]=24564;return 0}function Va(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0;n=h;yl(e|0,0,24564)|0;t=0;f=0;while(1){if((f|0)>=2)break;t=t+(ko(e+(f*12240|0)|0,i)|0)|0;f=f+1|0}a[e+24540>>2]=1;a[e+24544>>2]=1;i=t+(Wa(e,r)|0)|0;h=n;return i|0}function Wa(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;a[i>>2]=a[e+24540>>2];a[i+4>>2]=a[e+24544>>2];a[i+8>>2]=a[e+4580>>2];a[i+12>>2]=a[e+4588>>2];a[i+16>>2]=a[e+4592>>2];a[i+20>>2]=a[e+4596>>2];a[i+24>>2]=a[e+4636>>2];a[i+28>>2]=a[e+4632>>2];a[i+32>>2]=a[e+4640>>2];a[i+36>>2]=a[e+4648>>2];a[i+40>>2]=a[e+6120>>2];a[i+44>>2]=a[e+6108>>2];a[i+48>>2]=a[e+4708>>2];t=e+4600|0;a[i+68>>2]=(a[t>>2]<<16>>16)*1e3;a[i+72>>2]=a[e+4560>>2];if((a[t>>2]|0)!=16){e=0;e=e&1;t=i+76|0;a[t>>2]=e;h=r;return 0}e=(a[e+28>>2]|0)==0;e=e&1;t=i+76|0;a[t>>2]=e;h=r;return 0}function xa(e,i,r,f,s,l,u){e=e|0;i=i|0;r=r|0;f=f|0;s=s|0;l=l|0;u=u|0;var c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0,ue=0,he=0,de=0,be=0,ke=0,we=0,me=0,pe=0,_e=0,ve=0,ge=0,Te=0,Ae=0,Se=0,ye=0,Me=0,Le=0,Oe=0,Re=0,Ne=0;c=h;h=h+16|0;p=c;_=c+8|0;if(a[i+64>>2]|0){a[e+4696>>2]=1;a[e+16936>>2]=1}a[e+18020>>2]=0;m=e+5780|0;a[m>>2]=0;d=ca(i)|0;if(d){Ne=d;h=c;return Ne|0}a[i+84>>2]=0;d=i+4|0;v=e+24544|0;if((a[d>>2]|0)>(a[v>>2]|0)){ve=ko(e+12240|0,a[e+5124>>2]|0)|0;Ne=e+24480|0;n[Ne>>1]=0;n[Ne+2>>1]=0>>>16;Ne=e+24488|0;n[Ne>>1]=0;n[Ne+2>>1]=0>>>16;a[e+24492>>2]=0;a[e+24496>>2]=1;a[e+24500>>2]=0;a[e+24504>>2]=1;n[e+24510>>1]=0;n[e+24508>>1]=16384;if((a[e+24540>>2]|0)==2){Ll(e+18048|0,e+5808|0,300)|0;Oe=e;Re=a[Oe+4>>2]|0;Ne=e+12240|0;a[Ne>>2]=a[Oe>>2];a[Ne+4>>2]=Re}}else ve=0;k=i+24|0;if((a[k>>2]|0)==(a[e+4636>>2]|0))M=(a[v>>2]|0)!=(a[d>>2]|0);else M=1;a[e+24540>>2]=a[i>>2];a[v>>2]=a[d>>2];E=f*100|0;g=a[i+8>>2]|0;L=(E|0)/(g|0)|0;v=(L|0)>1?L>>1:1;u=(u|0)==0;e:do{if(u){if((re(L,g)|0)!=(E|0)|(f|0)<0){Ne=-101;h=c;return Ne|0}if((f*1e3|0)>(re(a[k>>2]|0,g)|0)){Ne=-101;h=c;return Ne|0}else{R=a[d>>2]|0;g=0;E=0;break}}else{if((L|0)==1)g=0;else{Ne=-101;h=c;return Ne|0}while(1){R=a[d>>2]|0;if((g|0)>=(R|0))break;ve=ko(e+(g*12240|0)|0,a[e+(g*12240|0)+5124>>2]|0)|0;g=g+1|0}E=a[k>>2]|0;a[k>>2]=10;T=i+36|0;g=a[T>>2]|0;a[T>>2]=0;T=0;while(1){if((T|0)>=(R|0))break e;a[e+(T*12240|0)+4700>>2]=0;a[e+(T*12240|0)+4712>>2]=1;R=a[d>>2]|0;T=T+1|0}}}while(0);A=i+28|0;O=a[A>>2]>>R+-1;T=e+4600|0;y=e+24556|0;S=e+5776|0;N=R;R=0;while(1){if((R|0)>=(N|0))break;if((R|0)==1)N=a[T>>2]|0;else N=0;N=ma(e+(R*12240|0)|0,i,O,a[y>>2]|0,R,N)|0;if(N){b=146;break}e:do{if((a[e+(R*12240|0)+4696>>2]|0)==0^1|M){N=0;while(1){if((N|0)>=(a[S>>2]|0))break e;a[e+(R*12240|0)+(N<<2)+4756>>2]=0;N=N+1|0}}}while(0);a[e+(R*12240|0)+6112>>2]=a[e+(R*12240|0)+6108>>2];N=a[d>>2]|0;ve=0;R=R+1|0}if((b|0)==146){h=c;return N|0}ne=L*10|0;V=a[T>>2]|0;R=re(ne,V)|0;ie=e+4580|0;V=(re(R,a[ie>>2]|0)|0)/(V*1e3|0)|0;M=Ee()|0;te=h;h=h+((2*V|0)+15&-16)|0;V=e+4608|0;D=e+5772|0;O=e+24548|0;C=e+18048|0;B=e+5808|0;P=e+16848|0;W=e+18012|0;I=e+16840|0;U=s+20|0;N=s+28|0;fe=e+24536|0;H=e+24480|0;K=e+5132|0;x=e+17372|0;le=e+4556|0;L=i+56|0;de=e+24560|0;Z=e+19440|0;$=e+12384|0;X=e+12256|0;J=e+16808|0;j=e+16740|0;q=e+16805|0;Y=e+16756|0;z=e+16936|0;Q=e+12240|0;we=i+52|0;he=(v|0)==2;ke=i+48|0;ae=p+4|0;be=v<<1;ee=v+-1|0;ue=e+6112|0;se=e+24552|0;oe=e+18352|0;F=e+5128|0;G=e+24484|0;me=0;while(1){ge=a[D>>2]|0;_e=(a[V>>2]|0)-ge|0;_e=(_e|0)<(R|0)?_e:R;pe=re(_e,a[ie>>2]|0)|0;pe=(pe|0)/((a[T>>2]|0)*1e3|0)|0;do{if((a[i>>2]|0)==2){if((a[d>>2]|0)==2){Ae=a[m>>2]|0;Te=0;while(1){if((Te|0)>=(pe|0))break;n[te+(Te<<1)>>1]=n[r+(Te<<1<<1)>>1]|0;Te=Te+1|0}if((a[O>>2]|0)==1&(Ae|0)==0)Ll(C|0,B|0,300)|0;yo(B,e+(ge+2<<1)+5128|0,te,pe);a[D>>2]=(a[D>>2]|0)+_e;Te=a[W>>2]|0;ge=(a[P>>2]|0)-Te|0;_e=re(ne,a[I>>2]|0)|0;_e=(ge|0)<(_e|0)?ge:_e;ge=0;while(1){if((ge|0)>=(pe|0))break;n[te+(ge<<1)>>1]=n[r+((ge<<1|1)<<1)>>1]|0;ge=ge+1|0}yo(C,e+(Te+2<<1)+17368|0,te,pe);a[W>>2]=(a[W>>2]|0)+_e;ge=a[D>>2]|0;break}else{if((a[d>>2]|0)==1)Te=0;else{b=49;break}while(1){if((Te|0)>=(pe|0))break;Ne=Te<<1;Ne=(n[r+(Ne<<1)>>1]|0)+(n[r+((Ne|1)<<1)>>1]|0)|0;n[te+(Te<<1)>>1]=(Ne>>>1)+(Ne&1);Te=Te+1|0}yo(B,e+(ge+2<<1)+5128|0,te,pe);e:do{if((a[O>>2]|0)==2?(a[m>>2]|0)==0:0){yo(C,e+((a[W>>2]|0)+2<<1)+17368|0,te,pe);ge=0;while(1){if((ge|0)>=(a[V>>2]|0))break e;Ne=e+((a[D>>2]|0)+ge+2<<1)+5128|0;n[Ne>>1]=((n[Ne>>1]|0)+(n[e+((a[W>>2]|0)+ge+2<<1)+17368>>1]|0)|0)>>>1;ge=ge+1|0}}}while(0);ge=(a[D>>2]|0)+_e|0;a[D>>2]=ge;break}}else b=49}while(0);if((b|0)==49){b=0;Ll(te|0,r|0,pe<<1|0)|0;yo(B,e+(ge+2<<1)+5128|0,te,pe);ge=(a[D>>2]|0)+_e|0;a[D>>2]=ge}r=r+((re(pe,a[i>>2]|0)|0)<<1)|0;_e=f-pe|0;a[y>>2]=0;if((ge|0)<(a[V>>2]|0)){w=0;break}e:do{if(!((a[m>>2]|0)==0^1|u^1)){n[_>>1]=0;t[_>>0]=256-(256>>>(re((a[S>>2]|0)+1|0,a[d>>2]|0)|0));Rr(s,0,_,8);ge=0;while(1){Le=a[d>>2]|0;if((ge|0)>=(Le|0)){ge=0;break}Se=a[e+(ge*12240|0)+5776>>2]|0;Ae=0;Te=0;while(1){if((Te|0)>=(Se|0))break;Ae=Ae|a[e+(ge*12240|0)+(Te<<2)+4756>>2]<>0]=(Ae|0)>0&1;if((Ae|0)!=0&(Se|0)>1)Rr(s,Ae+-1|0,a[24920+(Se+-2<<2)>>2]|0,8);ge=ge+1|0}while(1){if((ge|0)>=(a[S>>2]|0)){ge=0;break}Te=e+(ge*6|0)+24514|0;ye=e+(ge<<2)+16996|0;Se=e+ge+24532|0;Ae=ge+-1|0;Me=0;while(1){if((Me|0)>=(Le|0))break;if(a[e+(Me*12240|0)+(ge<<2)+4756>>2]|0){if((Le|0)==2&(Me|0)==0?($o(s,Te),(a[ye>>2]|0)==0):0)Xo(s,t[Se>>0]|0);if((ge|0)>0?(a[e+(Me*12240|0)+(Ae<<2)+4756>>2]|0)!=0:0)Le=2;else Le=0;Ha(e+(Me*12240|0)|0,s,ge,1,Le);za(s,t[e+(Me*12240|0)+(ge*36|0)+6161>>0]|0,t[e+(Me*12240|0)+(ge*36|0)+6162>>0]|0,e+(Me*12240|0)+(ge*320|0)+6240|0,a[e+(Me*12240|0)+4608>>2]|0);Le=a[d>>2]|0}Me=Me+1|0}ge=ge+1|0}while(1){if((ge|0)>=(Le|0))break e;Le=e+(ge*12240|0)+4756|0;a[Le+0>>2]=0;a[Le+4>>2]=0;a[Le+8>>2]=0;Le=a[d>>2]|0;ge=ge+1|0}}}while(0);zt(e);ge=a[A>>2]|0;Ae=a[k>>2]|0;Se=(re(ge,Ae)|0)/1e3|0;if(u)Se=Se-((Ka(a[U>>2]|0,a[N>>2]|0)|0)>>1)|0;Te=a[m>>2]|0;Se=((Se|0)/((a[S>>2]|0)-Te|0)|0)<<16>>16;if((Ae|0)==10)Ae=Se*100|0;else Ae=Se*50|0;Ae=Ae-(((a[fe>>2]|0)*1e3|0)/500|0)|0;if((ge|0)>5e3){if((Ae|0)<=(ge|0))ge=(Ae|0)<5e3?5e3:Ae}else if((Ae|0)>5e3)ge=5e3;else ge=(Ae|0)<(ge|0)?ge:Ae;if((a[d>>2]|0)==2){Ho(H,K,x,e+(Te*6|0)+24514|0,e+Te+24532|0,p,ge,a[le>>2]|0,a[L>>2]|0,a[T>>2]|0,a[V>>2]|0);Te=a[m>>2]|0;if(!(t[e+Te+24532>>0]|0)){if((a[de>>2]|0)==1){Ne=X;a[Ne>>2]=0;a[Ne+4>>2]=0;yl($|0,0,4412)|0;yl(Z|0,0,2156)|0;a[J>>2]=100;a[j>>2]=100;t[Z>>0]=10;t[q>>0]=0;a[Y>>2]=65536;a[z>>2]=1}lf(Q)}else t[e+Te+16992>>0]=0;if(u?($o(s,e+((a[m>>2]|0)*6|0)+24514|0),w=a[m>>2]|0,(t[e+w+16992>>0]|0)==0):0)Xo(s,t[e+w+24532>>0]|0)}else{Ne=o[G>>1]|o[G+2>>1]<<16;n[F>>1]=Ne;n[F+2>>1]=Ne>>>16;Ne=e+(a[V>>2]<<1)+5128|0;Ne=o[Ne>>1]|o[Ne+2>>1]<<16;n[G>>1]=Ne;n[G+2>>1]=Ne>>>16}lf(e);Se=(me|0)==0;Ae=(a[ae>>2]|0)>0;Te=(me|0)==(ee|0);ye=(me|0)==1;Me=0;while(1){Re=a[d>>2]|0;if((Me|0)>=(Re|0))break;Oe=a[we>>2]|0;do{if(he){if(Se)Ne=(Oe*3|0)/5|0;else Ne=Oe}else if((v|0)==3){if(Se){Ne=(Oe<<1|0)/5|0;break}if(ye)Ne=(Oe*3|0)/4|0;else Ne=Oe}else Ne=Oe}while(0);Le=((a[ke>>2]|0)==0?0:Te)&1;if((Re|0)!=1){Re=a[p+(Me<<2)>>2]|0;if(!((Me|0)==0^1|Ae^1)){Ne=Ne-((Oe|0)/(be|0)|0)|0;Le=0}}else Re=ge;if((Re|0)>0){ka(e+(Me*12240|0)|0,Re);do{if(((a[m>>2]|0)-Me|0)<1)ve=0;else{if((Me|0)>0?(a[de>>2]|0)!=0:0){ve=1;break}ve=2}}while(0);ve=uf(e+(Me*12240|0)|0,l,s,ve,Ne,Le)|0}a[e+(Me*12240|0)+4700>>2]=0;a[e+(Me*12240|0)+5772>>2]=0;Ne=e+(Me*12240|0)+5780|0;a[Ne>>2]=(a[Ne>>2]|0)+1;Me=Me+1|0}Te=a[m>>2]|0;a[de>>2]=t[e+(Te+-1)+24532>>0];do{if((a[l>>2]|0)>0?(Te|0)==(a[S>>2]|0):0){ge=a[d>>2]|0;Me=0;Ae=0;while(1){if((Ae|0)>=(ge|0))break;Se=a[e+(Ae*12240|0)+5776>>2]|0;ye=0;while(1){Me=Me<<1;if((ye|0)>=(Se|0))break;Me=Me|t[e+(Ae*12240|0)+ye+4752>>0];ye=ye+1|0}Me=Me|t[e+(Ae*12240|0)+4755>>0];Ae=Ae+1|0}if(u)Br(s,Me,re(Te+1|0,ge)|0);do{if(a[ue>>2]|0){if((a[d>>2]|0)!=1?(a[oe>>2]|0)==0:0)break;a[l>>2]=0}}while(0);ge=(a[fe>>2]|0)+(a[l>>2]<<3)|0;a[fe>>2]=ge;ge=ge-((re(a[A>>2]|0,a[k>>2]|0)|0)/1e3|0)|0;a[fe>>2]=ge;if((ge|0)>1e4)ge=1e4;else ge=(ge|0)<0?0:ge;a[fe>>2]=ge;ge=a[se>>2]|0;if((a[le>>2]|0)<(((ge<<16>>16)*3188>>16)+13|0)){a[y>>2]=1;a[se>>2]=0;break}else{a[y>>2]=0;a[se>>2]=ge+(a[k>>2]|0);break}}}while(0);if((f|0)==(pe|0)){b=135;break}f=_e;me=me+1|0}if((b|0)==135)w=a[y>>2]|0;a[O>>2]=a[d>>2];a[i+72>>2]=w;if((a[T>>2]|0)==16)b=(a[e+28>>2]|0)==0;else b=0;a[i+76>>2]=b&1;a[i+68>>2]=(a[T>>2]<<16>>16)*1e3;if(!(a[L>>2]|0))b=n[e+24508>>1]|0;else b=0;a[i+80>>2]=b;e:do{if(!u){a[k>>2]=E;a[i+36>>2]=g;i=0;while(1){if((i|0)>=(a[d>>2]|0))break e;a[e+(i*12240|0)+4700>>2]=0;a[e+(i*12240|0)+4712>>2]=0;i=i+1|0}}}while(0);ce(M|0);Ne=ve;h=c;return Ne|0}function Ka(e,i){e=e|0;i=i|0;var r=0;r=h;i=(Sl(i|0)|0)+-32+e|0;h=r;return i|0}function Ha(e,i,r,o,s){e=e|0;i=i|0;r=r|0;o=o|0;s=s|0;var l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0;l=h;h=h+48|0;c=l;k=l+32|0;d=(o|0)==0;if(d)o=e+4768|0;else o=e+(r*36|0)+6132|0;r=o+29|0;b=(t[r>>0]<<1)+(t[o+30>>0]|0)|0;if(d^1|(b|0)>1)Rr(i,b+-2|0,24944,8);else Rr(i,b,24952,8);b=(s|0)==2;d=t[o>>0]|0;if(b)Rr(i,d,24672,8);else{Rr(i,d>>3,24648+(t[r>>0]<<3)|0,8);Rr(i,f[o>>0]&7,25016,8)}d=e+4604|0;w=1;while(1){if((w|0)>=(a[d>>2]|0))break;Rr(i,t[o+w>>0]|0,24672,8);w=w+1|0}p=o+8|0;w=e+4724|0;_=a[w>>2]|0;v=re(t[r>>0]>>1,n[_>>1]|0)|0;Rr(i,t[p>>0]|0,(a[_+12>>2]|0)+v|0,8);gn(c,k,a[w>>2]|0,t[p>>0]|0);p=0;while(1){_=a[w>>2]|0;if((p|0)>=(n[_+2>>1]|0))break;m=p+1|0;k=o+m+8|0;v=t[k>>0]|0;if(v<<24>>24>3){Rr(i,8,(a[_+24>>2]|0)+(n[c+(p<<1)>>1]|0)|0,8);Rr(i,(t[k>>0]|0)+-4|0,25024,8);p=m;continue}if(v<<24>>24<-3){Rr(i,0,(a[_+24>>2]|0)+(n[c+(p<<1)>>1]|0)|0,8);Rr(i,-4-(t[k>>0]|0)|0,25024,8);p=m;continue}else{Rr(i,(v<<24>>24)+4|0,(a[_+24>>2]|0)+(n[c+(p<<1)>>1]|0)|0,8);p=m;continue}}if((a[d>>2]|0)==4)Rr(i,t[o+31>>0]|0,24960,8);if((t[r>>0]|0)!=2){_=t[r>>0]|0;_=_<<24>>24;v=e+5800|0;a[v>>2]=_;v=o+34|0;v=t[v>>0]|0;v=v<<24>>24;Rr(i,v,24992,8);h=l;return}do{if(b?(a[e+5800>>2]|0)==2:0){c=(n[o+26>>1]|0)-(n[e+5804>>1]|0)|0;if((c|0)<-8|(c|0)>11){Rr(i,0,25168,8);u=28;break}else{Rr(i,c+9|0,25168,8);c=o+26|0;break}}else u=28}while(0);if((u|0)==28){c=o+26|0;p=n[c>>1]|0;v=a[e+4600>>2]|0;_=(p|0)/(v>>1|0)|0;v=p-(re(_<<16>>16,v<<15>>16)|0)|0;Rr(i,_,25136,8);Rr(i,v,a[e+4716>>2]|0,8)}n[e+5804>>1]=n[c>>1]|0;Rr(i,t[o+28>>0]|0,a[e+4720>>2]|0,8);u=o+32|0;Rr(i,t[u>>0]|0,22256,8);c=0;while(1){if((c|0)>=(a[d>>2]|0))break;Rr(i,t[o+c+4>>0]|0,a[22320+(t[u>>0]<<2)>>2]|0,8);c=c+1|0}if(s){_=t[r>>0]|0;_=_<<24>>24;v=e+5800|0;a[v>>2]=_;v=o+34|0;v=t[v>>0]|0;v=v<<24>>24;Rr(i,v,24992,8);h=l;return}Rr(i,t[o+33>>0]|0,24936,8);_=t[r>>0]|0;_=_<<24>>24;v=e+5800|0;a[v>>2]=_;v=o+34|0;v=t[v>>0]|0;v=v<<24>>24;Rr(i,v,24992,8);h=l;return}function za(e,i,r,n,o){e=e|0;i=i|0;r=r|0;n=n|0;o=o|0;var s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0;s=h;h=h+32|0;b=s;a[b+0>>2]=0;a[b+4>>2]=0;a[b+8>>2]=0;a[b+12>>2]=0;a[b+16>>2]=0;a[b+20>>2]=0;a[b+24>>2]=0;a[b+28>>2]=0;l=o>>4;if((l<<4|0)<(o|0)){l=l+1|0;c=n+o+0|0;u=c+16|0;do{t[c>>0]=0;c=c+1|0}while((c|0)<(u|0))}u=l<<4;d=h;h=h+((4*u|0)+15&-16)|0;c=0;while(1){if((c|0)>=(u|0))break;_=t[n+c>>0]|0;g=_<<24>>24;a[d+(c<<2)>>2]=_<<24>>24>0?g:0-g|0;g=c|1;_=t[n+g>>0]|0;v=_<<24>>24;a[d+(g<<2)>>2]=_<<24>>24>0?v:0-v|0;g=c|2;v=t[n+g>>0]|0;_=v<<24>>24;a[d+(g<<2)>>2]=v<<24>>24>0?_:0-_|0;g=c|3;_=t[n+g>>0]|0;v=_<<24>>24;a[d+(g<<2)>>2]=_<<24>>24>0?v:0-v|0;c=c+4|0}u=h;h=h+((4*l|0)+15&-16)|0;c=h;h=h+((4*l|0)+15&-16)|0;_=d;k=0;while(1){if((k|0)>=(l|0))break;w=c+(k<<2)|0;a[w>>2]=0;m=u+(k<<2)|0;e:while(1){g=Ya(b,_,8,8)|0;g=g+(Ya(b,b,10,4)|0)|0;g=g+(Ya(b,b,12,2)|0)|0;if((g|0)==(0-(Ya(m,b,16,1)|0)|0))break;a[w>>2]=(a[w>>2]|0)+1;p=0;while(1){if((p|0)>=16)continue e;g=_+(p<<2)|0;a[g>>2]=a[g>>2]>>1;p=p+1|0}}_=_+64|0;k=k+1|0}v=i>>1;g=0;b=2147483647;w=0;while(1){if((w|0)>=9)break;p=25473+(w*18|0)|0;m=0;_=f[25648+(v*9|0)+w>>0]|0;while(1){if((m|0)>=(l|0))break;if((a[c+(m<<2)>>2]|0)>0)k=t[p>>0]|0;else k=t[(a[u+(m<<2)>>2]|0)+(25456+(w*18|0))>>0]|0;m=m+1|0;_=_+(k&255)|0}p=(_|0)<(b|0);g=p?w:g;b=p?_:b;w=w+1|0}Rr(e,g,25624+(v*9|0)|0,8);b=25272+(g*18|0)|0;k=0;while(1){if((k|0)>=(l|0)){b=0;break}w=a[c+(k<<2)>>2]|0;if(!w)Rr(e,a[u+(k<<2)>>2]|0,b,8);else{Rr(e,17,b,8);w=w+-1|0;m=0;while(1){if((m|0)>=(w|0))break;Rr(e,17,25434|0,8);m=m+1|0}Rr(e,a[u+(k<<2)>>2]|0,25434|0,8)}k=k+1|0}while(1){if((b|0)>=(l|0)){m=0;break}if((a[u+(b<<2)>>2]|0)>0)Io(e,d+(b<<4<<2)|0);b=b+1|0}while(1){if((m|0)>=(l|0))break;w=a[c+(m<<2)>>2]|0;e:do{if((w|0)>0){k=m<<4;b=0;while(1){if((b|0)>=16)break e;p=t[n+(k+b)>>0]|0;d=p<<24>>24;d=(p<<24>>24>0?d:0-d|0)<<24>>24;p=w;while(1){p=p+-1|0;if((p|0)<=0)break;Rr(e,d>>>p&1,24928,8)}Rr(e,d&1,24928,8);b=b+1|0}}}while(0);m=m+1|0}da(e,n,o,i,r,u);h=s;return}function Ya(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0;n=h;f=0;while(1){if((f|0)>=(t|0)){f=0;i=5;break}o=f<<1;o=(a[i+(o<<2)>>2]|0)+(a[i+((o|1)<<2)>>2]|0)|0;if((o|0)>(r|0)){f=1;i=5;break}a[e+(f<<2)>>2]=o;f=f+1|0}if((i|0)==5){h=n;return f|0}return 0}function qa(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var a=0;a=h;switch(n|0){case 16:{Xa(e,i,r,t);break};case 8:{Ja(e,i,r,t);break};case 6:{ja(e,i,r,t);break};case 12:{$a(e,i,r,t);break};case 10:{Za(e,i,r,t);break};default:{}}yl(e|0,0,n<<2|0)|0;h=a;return}function ja(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0,u=0,c=0;s=h;f=i+4|0;o=i+8|0;n=i+12|0;u=i+16|0;c=i+20|0;a=6;while(1){if((a|0)>=(t|0))break;l[e+(a<<2)>>2]=+l[r+(a<<2)>>2]-(+l[r+(a+-1<<2)>>2]*+l[i>>2]+ +l[r+(a+-2<<2)>>2]*+l[f>>2]+ +l[r+(a+-3<<2)>>2]*+l[o>>2]+ +l[r+(a+-4<<2)>>2]*+l[n>>2]+ +l[r+(a+-5<<2)>>2]*+l[u>>2]+ +l[r+(a+-6<<2)>>2]*+l[c>>2]);a=a+1|0}h=s;return}function Ja(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0,u=0,c=0,d=0,b=0;u=h;f=i+4|0;o=i+8|0;s=i+12|0;n=i+16|0;c=i+20|0;d=i+24|0;b=i+28|0;a=8;while(1){if((a|0)>=(t|0))break;l[e+(a<<2)>>2]=+l[r+(a<<2)>>2]-(+l[r+(a+-1<<2)>>2]*+l[i>>2]+ +l[r+(a+-2<<2)>>2]*+l[f>>2]+ +l[r+(a+-3<<2)>>2]*+l[o>>2]+ +l[r+(a+-4<<2)>>2]*+l[s>>2]+ +l[r+(a+-5<<2)>>2]*+l[n>>2]+ +l[r+(a+-6<<2)>>2]*+l[c>>2]+ +l[r+(a+-7<<2)>>2]*+l[d>>2]+ +l[r+(a+-8<<2)>>2]*+l[b>>2]);a=a+1|0}h=u;return}function Za(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0;c=h;f=i+4|0;o=i+8|0;s=i+12|0;u=i+16|0;n=i+20|0;d=i+24|0;b=i+28|0;k=i+32|0;w=i+36|0;a=10;while(1){if((a|0)>=(t|0))break;l[e+(a<<2)>>2]=+l[r+(a<<2)>>2]-(+l[r+(a+-1<<2)>>2]*+l[i>>2]+ +l[r+(a+-2<<2)>>2]*+l[f>>2]+ +l[r+(a+-3<<2)>>2]*+l[o>>2]+ +l[r+(a+-4<<2)>>2]*+l[s>>2]+ +l[r+(a+-5<<2)>>2]*+l[u>>2]+ +l[r+(a+-6<<2)>>2]*+l[n>>2]+ +l[r+(a+-7<<2)>>2]*+l[d>>2]+ +l[r+(a+-8<<2)>>2]*+l[b>>2]+ +l[r+(a+-9<<2)>>2]*+l[k>>2]+ +l[r+(a+-10<<2)>>2]*+l[w>>2]);a=a+1|0}h=c;return}function $a(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0;d=h;f=i+4|0;o=i+8|0;s=i+12|0;u=i+16|0;c=i+20|0;n=i+24|0;b=i+28|0;k=i+32|0;w=i+36|0;m=i+40|0;p=i+44|0;a=12;while(1){if((a|0)>=(t|0))break;l[e+(a<<2)>>2]=+l[r+(a<<2)>>2]-(+l[r+(a+-1<<2)>>2]*+l[i>>2]+ +l[r+(a+-2<<2)>>2]*+l[f>>2]+ +l[r+(a+-3<<2)>>2]*+l[o>>2]+ +l[r+(a+-4<<2)>>2]*+l[s>>2]+ +l[r+(a+-5<<2)>>2]*+l[u>>2]+ +l[r+(a+-6<<2)>>2]*+l[c>>2]+ +l[r+(a+-7<<2)>>2]*+l[n>>2]+ +l[r+(a+-8<<2)>>2]*+l[b>>2]+ +l[r+(a+-9<<2)>>2]*+l[k>>2]+ +l[r+(a+-10<<2)>>2]*+l[w>>2]+ +l[r+(a+-11<<2)>>2]*+l[m>>2]+ +l[r+(a+-12<<2)>>2]*+l[p>>2]);a=a+1|0}h=d;return}function Xa(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0;k=h;f=i+4|0;o=i+8|0;s=i+12|0;u=i+16|0;c=i+20|0;d=i+24|0;b=i+28|0;n=i+32|0;w=i+36|0;m=i+40|0;p=i+44|0;_=i+48|0;v=i+52|0;g=i+56|0;E=i+60|0;a=16;while(1){if((a|0)>=(t|0))break;l[e+(a<<2)>>2]=+l[r+(a<<2)>>2]-(+l[r+(a+-1<<2)>>2]*+l[i>>2]+ +l[r+(a+-2<<2)>>2]*+l[f>>2]+ +l[r+(a+-3<<2)>>2]*+l[o>>2]+ +l[r+(a+-4<<2)>>2]*+l[s>>2]+ +l[r+(a+-5<<2)>>2]*+l[u>>2]+ +l[r+(a+-6<<2)>>2]*+l[c>>2]+ +l[r+(a+-7<<2)>>2]*+l[d>>2]+ +l[r+(a+-8<<2)>>2]*+l[b>>2]+ +l[r+(a+-9<<2)>>2]*+l[n>>2]+ +l[r+(a+-10<<2)>>2]*+l[w>>2]+ +l[r+(a+-11<<2)>>2]*+l[m>>2]+ +l[r+(a+-12<<2)>>2]*+l[p>>2]+ +l[r+(a+-13<<2)>>2]*+l[_>>2]+ +l[r+(a+-14<<2)>>2]*+l[v>>2]+ +l[r+(a+-15<<2)>>2]*+l[g>>2]+ +l[r+(a+-16<<2)>>2]*+l[E>>2]);a=a+1|0}h=k;return}function Qa(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,a=0.0,f=0.0,o=0.0,s=0,u=0,c=0,d=0.0;r=h;h=h+128|0;n=r;c=n+((i&1)<<6)|0;Ll(c|0,e|0,i<<2|0)|0;e=c;o=1.0;e:while(1){i=i+-1|0;if((i|0)<=0)break;a=+l[e+(i<<2)>>2];f=-a;if(a<-.9998999834060669|a>.9998999834060669){a=0.0;t=9;break}d=1.0-f*f;a=1.0/d;o=o*d;u=i&1;s=n+(u<<6)|0;c=0;while(1){if((c|0)>=(i|0)){e=s;continue e}l[n+(u<<6)+(c<<2)>>2]=(+l[e+(c<<2)>>2]-+l[e+(i-c+-1<<2)>>2]*f)*a;c=c+1|0}}if((t|0)==9){h=r;return+a}d=+l[e>>2];a=-d;if(d<-.9998999834060669|d>.9998999834060669){d=0.0;h=r;return+d}d=o*(1.0-a*a);h=r;return+d}function ef(e,i,r,t,n,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0.0,k=0,w=0.0,m=0,p=0,_=0,v=0.0;c=h;h=h+32|0;u=c;s=f+s|0;d=0;while(1){if((d|0)>=(o|0))break;p=i+(0-(a[t+(d<<2)>>2]|0)<<2)|0;b=+l[n+(d<<2)>>2];m=d*5|0;k=0;while(1){if((k|0)>=5){k=0;break}l[u+(k<<2)>>2]=+l[r+(m+k<<2)>>2];k=k+1|0}while(1){if((k|0)>=(s|0))break;w=+l[i+(k<<2)>>2];_=e+(k<<2)|0;l[_>>2]=w;m=0;while(1){if((m|0)>=5)break;v=w-+l[u+(m<<2)>>2]*+l[p+(2-m<<2)>>2];l[_>>2]=v;w=v;m=m+1|0}l[_>>2]=w*b;k=k+1|0;p=p+4|0}e=e+(s<<2)|0;d=d+1|0;i=i+(f<<2)|0}h=c;return}function rf(e,i,r){e=e|0;i=i|0;r=r|0;var f=0,o=0.0;f=h;if(!r){o=+((a[e+4640>>2]|0)+(a[e+5776>>2]|0)|0)*+l[i+872>>2]*.10000000149011612;if(!(o>2.0)){if(o<0.0)r=0;else r=~~o}else r=2;t[e+4801>>0]=r}else{t[e+4801>>0]=0;r=0}l[i+224>>2]=+(n[24976+(r<<24>>24<<1)>>1]|0)*6103515625.0e-14;h=f;return}function tf(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0.0,f=0.0,o=0.0,s=0.0,u=0;n=h;o=3.1415927410125732/+(t+1|0);a=2.0-o*o;if((r|0)<2){f=0.0;r=0}else{f=1.0;o=a*.5;r=0}while(1){if((r|0)>=(t|0))break;l[e+(r<<2)>>2]=+l[i+(r<<2)>>2]*.5*(f+o);u=r|1;l[e+(u<<2)>>2]=+l[i+(u<<2)>>2]*o;s=a*o-f;u=r|2;l[e+(u<<2)>>2]=+l[i+(u<<2)>>2]*.5*(o+s);u=r|3;l[e+(u<<2)>>2]=+l[i+(u<<2)>>2]*s;f=s;o=a*s-o;r=r+4|0}h=n;return}function nf(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0;n=h;t=(t|0)>(r|0)?r:t;a=0;while(1){if((a|0)>=(t|0))break;l[e+(a<<2)>>2]=+Tf(i,i+(a<<2)|0,r-a|0);a=a+1|0}h=n;return}function af(e,i,r,t,n,f){e=e|0;i=i|0;r=+r;t=t|0;n=n|0;f=f|0;var o=0,s=0,c=0,d=0.0,b=0,k=0,w=0,m=0,p=0.0,_=0,v=0.0,g=0,E=0.0,T=0.0,A=0,S=0,y=0,M=0.0,L=0,O=0,R=0.0,N=0.0,C=0.0,P=0;o=h;h=h+656|0;k=o+528|0;m=o+400|0;c=o+264|0;w=o+128|0;s=o;d=+mf(i,re(n,t)|0);_=k+0|0;g=_+128|0;do{a[_>>2]=0;_=_+4|0}while((_|0)<(g|0));A=f+1|0;g=0;while(1){if((g|0)>=(n|0))break;S=re(g,t)|0;_=i+(S<<2)|0;y=1;while(1){if((y|0)>=(A|0))break;M=+Tf(_,i+(S+y<<2)|0,t-y|0);O=k+(y+-1<<3)|0;u[O>>3]=+u[O>>3]+M;y=y+1|0}g=g+1|0}_=m+0|0;A=k+0|0;g=_+128|0;do{a[_>>2]=a[A>>2];_=_+4|0;A=A+4|0}while((_|0)<(g|0));p=d*9999999747378752.0e-21;v=d+p+9.999999717180685e-10;u[c>>3]=v;u[w>>3]=v;v=1.0;_=0;e:while(1){if((_|0)>=(f|0))break;A=t-_|0;g=A+-1|0;S=0;while(1){if((S|0)>=(n|0))break;y=re(S,t)|0;M=+l[i+(y+g<<2)>>2];L=i+(y+_<<2)|0;O=0;T=+l[i+(y+_<<2)>>2];E=M;while(1){if((O|0)>=(_|0)){L=0;break}C=+l[i+(y+(_-O+-1)<<2)>>2];P=k+(O<<3)|0;u[P>>3]=+u[P>>3]-+l[L>>2]*C;N=+l[i+(y+(A+O)<<2)>>2];P=m+(O<<3)|0;u[P>>3]=+u[P>>3]-M*N;R=+u[s+(O<<3)>>3];O=O+1|0;T=T+C*R;E=E+N*R}while(1){if((L|0)>(_|0))break;P=c+(L<<3)|0;u[P>>3]=+u[P>>3]-T*+l[i+(y+(_-L)<<2)>>2];P=w+(L<<3)|0;u[P>>3]=+u[P>>3]-E*+l[i+(y+(A+L+-1)<<2)>>2];L=L+1|0}S=S+1|0}g=0;T=+u[k+(_<<3)>>3];E=+u[m+(_<<3)>>3];while(1){if((g|0)>=(_|0))break;C=+u[s+(g<<3)>>3];P=_-g+-1|0;g=g+1|0;T=T+ +u[m+(P<<3)>>3]*C;E=E+ +u[k+(P<<3)>>3]*C}g=_+1|0;u[c+(g<<3)>>3]=T;u[w+(g<<3)>>3]=E;T=+u[w>>3];M=+u[c>>3];A=0;while(1){if((A|0)>=(_|0))break;C=+u[s+(A<<3)>>3];P=A+1|0;T=T+ +u[w+(P<<3)>>3]*C;M=M+ +u[c+(P<<3)>>3]*C;E=E+ +u[w+(_-A<<3)>>3]*C;A=P}T=E*-2.0/(M+T);M=v*(1.0-T*T);if(M<=r){T=+H(+(1.0-r/v));if(E>0.0){v=r;E=-T;A=1}else{v=r;E=T;A=1}}else{v=M;E=T;A=0}S=g>>1;y=0;while(1){if((y|0)>=(S|0))break;O=s+(y<<3)|0;C=+u[O>>3];P=s+(_-y+-1<<3)|0;N=+u[P>>3];u[O>>3]=C+E*N;u[P>>3]=N+E*C;y=y+1|0}u[s+(_<<3)>>3]=E;if(!A)A=0;else{b=30;break}while(1){if((A|0)>(g|0)){_=g;continue e}O=c+(A<<3)|0;C=+u[O>>3];P=w+(_-A+1<<3)|0;N=+u[P>>3];u[O>>3]=C+E*N;u[P>>3]=N+E*C;A=A+1|0}}if((b|0)==30){while(1){_=_+1|0;if((_|0)>=(f|0))break;u[s+(_<<3)>>3]=0.0;b=30}if(A){c=0;while(1){if((c|0)>=(f|0)){e=0;break}l[e+(c<<2)>>2]=-+u[s+(c<<3)>>3];c=c+1|0}while(1){if((e|0)>=(n|0))break;d=d-+mf(i+((re(e,t)|0)<<2)|0,f);e=e+1|0}C=d*v;h=o;return+C}}r=+u[c>>3];i=0;d=1.0;while(1){if((i|0)>=(f|0))break;C=+u[s+(i<<3)>>3];P=i+1|0;N=r+ +u[c+(P<<3)>>3]*C;l[e+(i<<2)>>2]=-C;r=N;i=P;d=d+C*C}C=r-p*d;h=o;return+C}function ff(e,i,r){e=e|0;i=i|0;r=+r;var t=0,n=0.0,a=0,f=0;t=h;i=i+-1|0;n=r;a=0;while(1){if((a|0)>=(i|0))break;f=e+(a<<2)|0;l[f>>2]=+l[f>>2]*n;n=n*r;a=a+1|0}f=e+(i<<2)|0;l[f>>2]=+l[f>>2]*n;h=t;return}function of(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0;n=h;e=e+16|0;a=0;while(1){if((a|0)>=5)break;l[t+(a<<2)>>2]=+Tf(e,i,r);e=e+-4|0;a=a+1|0}h=n;return}function sf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0,o=0,s=0,u=0.0,c=0.0,d=0.0,b=0;n=h;t=e+16|0;u=+mf(t,i);l[r>>2]=u;a=1;while(1){if((a|0)>=5)break;d=+l[e+(4-a<<2)>>2];c=+l[e+(i-a+4<<2)>>2];c=u+(d*d-c*c);l[r+(a*6<<2)>>2]=c;u=c;a=a+1|0}a=e+12|0;f=1;while(1){if((f|0)>=5)break;u=+Tf(t,a,i);d=u;l[r+(f*5<<2)>>2]=d;l[r+(f<<2)>>2]=d;o=5-f|0;s=1;while(1){if((s|0)>=(o|0))break;b=i-s|0;d=u+(+l[e+(4-s<<2)>>2]*+l[a+(0-s<<2)>>2]-+l[e+(b+4<<2)>>2]*+l[a+(b<<2)>>2]);c=d;b=f+s|0;l[r+((b*5|0)+s<<2)>>2]=c;l[r+((s*5|0)+b<<2)>>2]=c;u=d;s=s+1|0}a=a+-4|0;f=f+1|0}h=n;return}function lf(e){e=e|0;var i=0,r=0,n=0,f=0;i=h;Qn(e,e+5130|0);if((a[e+4556>>2]|0)>=13){a[e+6116>>2]=0;a[e+6112>>2]=0;t[e+4797>>0]=1;t[e+(a[e+5780>>2]|0)+4752>>0]=1;h=i;return}t[e+4797>>0]=0;r=e+6116|0;n=a[r>>2]|0;f=n+1|0;a[r>>2]=f;if((f|0)>=10){if((n|0)>29){a[r>>2]=10;a[e+6112>>2]=0}}else a[e+6112>>2]=0;t[e+(a[e+5780>>2]|0)+4752>>0]=0;h=i;return}function uf(e,i,r,f,o,s){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0,ue=0,he=0;E=h;h=h+15040|0;v=E+12840|0;d=E+11560|0;L=E+8872|0;c=E+8824|0;m=E+24|0;p=E;A=E+4444|0;u=E+64|0;g=E+48|0;_=E+13752|0;S=e+4644|0;k=a[S>>2]|0;a[S>>2]=k+1;S=e+4802|0;t[S>>0]=k&3;k=e+4616|0;R=a[k>>2]|0;M=e+(R<<2)+9356|0;O=L+(R<<2)|0;y=e+5130|0;b=e+4608|0;$t(e+16|0,y,a[b>>2]|0);w=e+4600|0;hf(e+(R+((a[w>>2]|0)*5|0)<<2)+9356|0,y,a[b>>2]|0);y=0;while(1){if((y|0)>=8)break;he=e+(R+(((a[w>>2]|0)*5|0)+(re(y,a[b>>2]>>3)|0))<<2)+9356|0;l[he>>2]=+l[he>>2]+ +(1-(y&2)|0)*9.999999974752427e-7;y=y+1|0}y=e+4712|0;e:do{if(!(a[y>>2]|0)){gf(e,v,L,M,a[e+5124>>2]|0);yf(e,v,O,M);Ef(e,v,L,M,f);xf(e,v,f);Gf(e,v,d,M);cf(e,v,d,f);D=e+4768|0;O=e+4604|0;oe=co(D,a[O>>2]|0)|0;se=c+0|0;he=r+0|0;le=se+48|0;do{a[se>>2]=a[he>>2];se=se+4|0;he=he+4|0}while((se|0)<(le|0));G=e+144|0;Ll(A|0,G|0,4380)|0;q=t[S>>0]|0;U=e+5804|0;Y=n[U>>1]|0;P=e+5800|0;I=a[P>>2]|0;N=v+852|0;M=v+908|0;B=e+7200|0;R=(f|0)==2&1;L=o+-5|0;C=r+24|0;z=r+28|0;F=e+4768|0;V=e+4804|0;W=e+5780|0;x=e+4797|0;K=e+4798|0;H=r+20|0;s=(s|0)==0;J=0;Z=0;$=0;fe=256;X=0;Q=0;ee=-1;te=-1;ne=0;ae=0;ie=0;j=0;while(1){ue=(oe|0)==(ee|0);if(!ue){if((oe|0)!=(te|0)){if((j|0)>0){se=r+0|0;he=c+0|0;le=se+48|0;do{a[se>>2]=a[he>>2];se=se+4|0;he=he+4|0}while((se|0)<(le|0));Ll(G|0,A|0,4380)|0;t[S>>0]=q;n[U>>1]=Y;a[P>>2]=I}fo(e,v,F,G,V,d);Ha(e,r,a[W>>2]|0,0,f);za(r,t[x>>0]|0,t[K>>0]|0,V,a[b>>2]|0);le=df(a[H>>2]|0,a[z>>2]|0)|0;if(s&(j|0)==0){if((le|0)<=(o|0))break e}else T=12}else{le=ae;T=12}}else{le=ne;T=12}if((T|0)==12){T=0;if((j|0)==6)break}se=(le|0)>(o|0);do{if(se){if((Z|0)==0&(j|0)>1){l[N>>2]=+l[N>>2]*1.5;$=0;te=-1;break}else{$=1;Q=fe<<16>>16;te=oe;ae=le;break}}else{if((le|0)>=(L|0))break e;X=fe<<16>>16;if(ue){Z=1;ee=oe;ne=le}else{a[m+0>>2]=a[r+0>>2];a[m+4>>2]=a[r+4>>2];a[m+8>>2]=a[r+8>>2];a[m+12>>2]=a[r+12>>2];a[m+16>>2]=a[r+16>>2];a[m+20>>2]=a[r+20>>2];ie=a[C>>2]|0;a[p+0>>2]=a[z+0>>2];a[p+4>>2]=a[z+4>>2];a[p+8>>2]=a[z+8>>2];a[p+12>>2]=a[z+12>>2];a[p+16>>2]=a[z+16>>2];Ll(_|0,a[r>>2]|0,ie|0)|0;Ll(u|0,G|0,4380)|0;J=t[B>>0]|0;Z=1;ee=oe;ne=le}}}while(0);do{if(Z&$){oe=Q-X|0;se=X+((re(oe,o-ne|0)|0)/(ae-ne|0)|0)|0;fe=oe>>2;if((se<<16>>16|0)>(X+fe|0)){se=X+(oe>>>2)|0;break}if((se<<16>>16|0)<(Q-fe|0))se=Q-(oe>>>2)|0}else{oe=bf(Eo(((le-o<<7|0)/(a[b>>2]|0)|0)+2048|0)|0)|0;if(se)oe=kf(oe)|0;se=fe<<16>>16;se=(re(oe>>16,se)|0)+((re(oe&65535,se)|0)>>>16)|0}}while(0);fe=se&65535;oe=a[O>>2]|0;le=se<<16>>16;se=0;while(1){if((se|0)>=(oe|0))break;ue=a[v+(se<<2)+892>>2]|0;ue=(re(ue>>16,le)|0)+((re(ue&65535,le)|0)>>16)|0;if((ue|0)>8388607)ue=2147483392;else ue=(ue|0)<-8388608?-2147483648:ue<<8;a[g+(se<<2)>>2]=ue;se=se+1|0}t[B>>0]=t[M>>0]|0;so(D,g,B,R,oe);se=a[O>>2]|0;oe=co(D,se)|0;le=0;while(1){if((le|0)>=(se|0))break;l[v+(le<<2)>>2]=+(a[g+(le<<2)>>2]|0)*152587890625.0e-16;le=le+1|0}j=j+1|0}if((Z|0)!=0?ue|(le|0)>(o|0):0){a[r+0>>2]=a[m+0>>2];a[r+4>>2]=a[m+4>>2];a[r+8>>2]=a[m+8>>2];a[r+12>>2]=a[m+12>>2];a[r+16>>2]=a[m+16>>2];a[r+20>>2]=a[m+20>>2];a[C>>2]=ie;a[z+0>>2]=a[p+0>>2];a[z+4>>2]=a[p+4>>2];a[z+8>>2]=a[p+8>>2];a[z+12>>2]=a[p+12>>2];a[z+16>>2]=a[p+16>>2];Ll(a[r>>2]|0,_|0,ie|0)|0;Ll(G|0,u|0,4380)|0;t[B>>0]=J}}}while(0);Ol(e+9356|0,e+(a[b>>2]<<2)+9356|0,(a[k>>2]|0)+((a[w>>2]|0)*5|0)<<2|0)|0;if(a[y>>2]|0){he=0;a[i>>2]=he;h=E;return 0}a[e+4568>>2]=a[v+((a[e+4604>>2]|0)+-1<<2)+228>>2];t[e+4565>>0]=t[e+4797>>0]|0;a[e+4696>>2]=0;he=(df(a[r+20>>2]|0,a[r+28>>2]|0)|0)+7>>3;a[i>>2]=he;h=E;return 0}function hf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0;t=h;while(1){a=r+-1|0;if((r|0)<=0)break;l[e+(a<<2)>>2]=+(n[i+(a<<1)>>1]|0);r=a}h=t;return}function cf(e,i,r,o){e=e|0;i=i|0;r=r|0;o=o|0;var s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0;k=h;h=h+4416|0;d=k+4400|0;s=k+4384|0;b=k;u=e+5780|0;w=a[u>>2]|0;c=e+(w*36|0)+6132|0;if(!(a[e+6124>>2]|0)){h=k;return}if((a[e+4556>>2]|0)<=77){h=k;return}a[e+(w<<2)+4756>>2]=1;Ll(b|0,e+144|0,4380)|0;p=c+0|0;m=e+4768|0;w=p+36|0;do{n[p>>1]=n[m>>1]|0;p=p+2|0;m=m+2|0}while((p|0)<(w|0));w=e+4604|0;p=a[w>>2]|0;Ll(s|0,i|0,p<<2|0)|0;m=a[u>>2]|0;if((m|0)!=0?(a[e+(m+-1<<2)+4756>>2]|0)!=0:0)m=e+4564|0;else{m=e+4564|0;t[m>>0]=t[e+7200>>0]|0;t[c>>0]=wf((f[c>>0]|0)+(a[e+6128>>2]|0)<<24>>24)|0;p=a[w>>2]|0}uo(d,c,m,(o|0)==2&1,p);o=0;while(1){if((o|0)>=(a[w>>2]|0))break;l[i+(o<<2)>>2]=+(a[d+(o<<2)>>2]|0)*152587890625.0e-16;o=o+1|0}fo(e,i,c,b,e+((a[u>>2]|0)*320|0)+6240|0,r);Ll(i|0,s|0,a[w>>2]<<2|0)|0;h=k;return}function df(e,i){e=e|0;i=i|0;var r=0;r=h;i=(Sl(i|0)|0)+-32+e|0;h=r;return i|0}function bf(e){e=e|0;return((e|0)<131072?e:131072)|0}function kf(e){e=e|0;return((e|0)>85197?e:85197)|0}function wf(e){e=e|0;return((e|0)<63?e:63)|0}function mf(e,i){e=e|0;i=i|0;var r=0,t=0.0,n=0,a=0,f=0.0,o=0.0,s=0.0,u=0.0;r=h;a=i&65532;t=0.0;n=0;while(1){if((n|0)>=(a|0))break;u=+l[e+(n<<2)>>2];s=+l[e+((n|1)<<2)>>2];o=+l[e+((n|2)<<2)>>2];f=+l[e+((n|3)<<2)>>2];t=t+(u*u+s*s+o*o+f*f);n=n+4|0}while(1){if((n|0)>=(i|0))break;u=+l[e+(n<<2)>>2];n=n+1|0;t=t+u*u}h=r;return+t}function pf(e,i,r,n){e=e|0;i=i|0;r=r|0;n=+n;var f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0.0,p=0.0,_=0,v=0;k=h;h=h+1696|0;f=k+1600|0;l=k+1664|0;u=k+1536|0;c=k;o=e+4664|0;b=a[o>>2]|0;d=(a[e+4612>>2]|0)+b|0;s=e+4799|0;t[s>>0]=4;w=e+4604|0;m=+af(f,r,n,d,a[w>>2]|0,b);e:do{if(((a[e+4656>>2]|0)!=0?(a[e+4696>>2]|0)==0:0)?(a[w>>2]|0)==4:0){b=d<<1;m=m-+af(u,r+(b<<2)|0,n,d,2,a[o>>2]|0);ro(i,u,a[o>>2]|0);e=e+4524|0;p=3.4028234663852886e+38;w=3;while(1){if((w|0)<=-1)break e;mo(l,e,i,w,a[o>>2]|0);no(u,l,a[o>>2]|0);qa(c,u,r,b,a[o>>2]|0);v=a[o>>2]|0;_=d-v|0;n=+mf(c+(v<<2)|0,_);n=n+ +mf(c+(v+d<<2)|0,_);if(!(np)break e}else{t[s>>0]=w;m=n}p=n;w=w+-1|0}}}while(0);if((t[s>>0]|0)!=4){h=k;return}ro(i,f,a[o>>2]|0);h=k;return}function _f(e,i,r,t,n,f,o,s,u){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;u=u|0;var c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0.0,v=0,g=0.0,E=0.0,T=0,A=0.0;c=h;h=h+112|0;b=c+96|0;k=c+72|0;d=c+56|0;m=c+40|0;p=c+16|0;w=c;_=+(o|0)*.009999999776482582;v=e;t=t+(u<<2)|0;u=0;while(1){if((u|0)>=(s|0))break;T=t+(-2-(a[n+(u<<2)>>2]|0)<<2)|0;sf(T,o,i);of(T,t,o,p);g=+mf(t,o);T=w+(u<<2)|0;l[T>>2]=g;Hf(i,T,(g+1.0+ +l[i>>2]+ +l[i+96>>2])*.01666666753590107);Zf(i,p,v);g=+zf(v,i,p,+l[T>>2]);l[m+(u<<2)>>2]=g;E=+l[f+(u<<2)>>2];jf(i,E/(g*E+_));l[d+(u<<2)>>2]=+l[i+48>>2];i=i+100|0;v=v+20|0;t=t+(o<<2)|0;u=u+1|0}if(!r){f=e;w=0}else{_=9.999999974752427e-7;g=0.0;p=0;while(1){if((p|0)>=(s|0))break;E=+l[f+(p<<2)>>2];_=_+ +l[m+(p<<2)>>2]*E;g=g+ +l[w+(p<<2)>>2]*E;p=p+1|0}l[r>>2]=+vf(g/_)*3.0;f=e;w=0}while(1){if((w|0)>=(s|0)){w=0;_=.0010000000474974513;break}r=b+(w<<2)|0;l[r>>2]=0.0;_=0.0;m=0;while(1){if((m|0)>=5)break;E=_+ +l[f+(m<<2)>>2];l[r>>2]=E;_=E;m=m+1|0}f=f+20|0;w=w+1|0}while(1){if((w|0)>=(s|0)){g=0.0;w=0;break}E=_+ +l[d+(w<<2)>>2];w=w+1|0;_=E}while(1){if((w|0)>=(s|0))break;g=g+ +l[b+(w<<2)>>2]*+l[d+(w<<2)>>2];w=w+1|0}_=g/_;w=0;while(1){if((w|0)>=(s|0))break;g=.10000000149011612/(+l[d+(w<<2)>>2]+.10000000149011612)*(_-+l[b+(w<<2)>>2]);f=0;E=0.0;while(1){if((f|0)>=5)break;A=+l[e+(f<<2)>>2];A=A>.10000000149011612?A:.10000000149011612;l[k+(f<<2)>>2]=A;f=f+1|0;E=E+A}g=g/E;f=0;while(1){if((f|0)>=5)break;T=e+(f<<2)|0;l[T>>2]=+l[T>>2]+ +l[k+(f<<2)>>2]*g;f=f+1|0}e=e+20|0;w=w+1|0}h=c;return}function vf(e){e=+e;var i=0;i=h;e=+be(+e)*3.32192809488736;h=i;return+e}function gf(e,i,r,f,o){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;var s=0,u=0,c=0,d=0,b=0,k=0,w=0.0,m=0,p=0,_=0,v=0,g=0;s=h;h=h+1744|0;m=s+1664|0;b=s+1600|0;k=s+1536|0;_=s;u=e+4620|0;v=a[u>>2]|0;d=v+(a[e+4608>>2]|0)|0;c=a[e+4616>>2]|0;p=e+4572|0;g=d-(a[p>>2]|0)|0;tf(_,f+(g<<2)|0,1,v);u=a[u>>2]|0;g=g+u|0;v=(a[p>>2]|0)-(u<<1)|0;Ll(_+(u<<2)|0,f+(g<<2)|0,v<<2|0)|0;tf(_+(u+v<<2)|0,f+(g+v<<2)|0,2,u);u=e+4672|0;nf(m,_,a[p>>2]|0,(a[u>>2]|0)+1|0);w=+l[m>>2];l[m>>2]=w+(w*.0010000000474974513+1.0);w=+Jf(k,m,a[u>>2]|0);l[i+868>>2]=+l[m>>2]/(w>1.0?w:1.0);Af(b,k,a[u>>2]|0);ff(b,a[u>>2]|0,.9900000095367432);qa(r,b,f+(0-c<<2)|0,d+c|0,a[u>>2]|0);f=e+4797|0;if((t[f>>0]|0)!=0?(a[e+4696>>2]|0)==0:0)if(!(Nf(r,i+228|0,e+4794|0,e+4796|0,e+12236|0,a[e+4568>>2]|0,+(a[e+4676>>2]|0)*152587890625.0e-16,.6000000238418579-+(a[u>>2]|0)*.004000000189989805-+(a[e+4556>>2]|0)*.10000000149011612*.00390625-+(t[e+4565>>0]>>1|0)*.15000000596046448-+(a[e+4744>>2]|0)*.10000000149011612*30517578125.0e-15,a[e+4600>>2]|0,a[e+4668>>2]|0,a[e+4604>>2]|0,o)|0)){t[f>>0]=2;h=s;return}else{t[f>>0]=1;h=s;return}g=i+228|0;a[g+0>>2]=0;a[g+4>>2]=0;a[g+8>>2]=0;a[g+12>>2]=0;n[e+4794>>1]=0;t[e+4796>>0]=0;l[e+12236>>2]=0.0;h=s;return}function Ef(e,i,r,f,o){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;var s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0.0,v=0,g=0,E=0;s=h;h=h+2e3|0;m=s+1568|0;b=s+1552|0;w=s+1536|0;u=s+1968|0;c=s;d=e+4604|0;k=a[d>>2]|0;p=0;while(1){if((p|0)>=(k|0))break;_=1.0/+l[i+(p<<2)>>2];l[b+(p<<2)>>2]=_;l[w+(p<<2)>>2]=_*_;p=p+1|0}if((t[e+4797>>0]|0)==2){E=i+144|0;g=i+228|0;v=e+4612|0;_f(E,m,i+872|0,r,g,w,a[v>>2]|0,k,a[e+4616>>2]|0);oo(E,e+4772|0,e+4800|0,e+4688|0,m,a[e+4684>>2]|0,a[e+4680>>2]|0,a[d>>2]|0,a[e+5124>>2]|0);rf(e,i,o);p=a[e+4664>>2]|0;ef(c,f+(0-p<<2)|0,E,g,b,a[v>>2]|0,a[d>>2]|0,p)}else{r=e+4664|0;E=a[r>>2]|0;w=e+4612|0;p=E;m=0;o=c;f=f+(0-E<<2)|0;while(1){if((m|0)>=(k|0))break;qf(o,f,+l[b+(m<<2)>>2],(a[w>>2]|0)+p|0);E=a[w>>2]|0;g=a[r>>2]|0;k=a[d>>2]|0;p=g;m=m+1|0;o=o+(E+g<<2)|0;f=f+(E<<2)|0}yl(i+144|0,0,k*20|0)|0;l[i+872>>2]=0.0;a[e+4688>>2]=0}if(a[e+4696>>2]|0){_=.009999999776482582;pf(e,u,c,_);v=i+16|0;p=e+4524|0;ao(e,v,u,p);p=i+876|0;g=e+4612|0;g=a[g>>2]|0;E=a[d>>2]|0;d=e+4664|0;d=a[d>>2]|0;Yf(p,c,v,i,g,E,d);c=e+4524|0;c=c+0|0;d=u+0|0;u=c+32|0;do{n[c>>1]=n[d>>1]|0;c=c+2|0;d=d+2|0}while((c|0)<(u|0));h=s;return}_=+pe(+(+l[i+872>>2]/3.0))/1.0e4;_=_/(+l[i+860>>2]*.75+.25);pf(e,u,c,_);v=i+16|0;p=e+4524|0;ao(e,v,u,p);p=i+876|0;g=e+4612|0;g=a[g>>2]|0;E=a[d>>2]|0;d=e+4664|0;d=a[d>>2]|0;Yf(p,c,v,i,g,E,d);c=e+4524|0;c=c+0|0;d=u+0|0;u=c+32|0;do{n[c>>1]=n[d>>1]|0;c=c+2|0;d=d+2|0}while((c|0)<(u|0));h=s;return}function Tf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0.0,a=0,f=0,o=0,s=0,u=0,c=0.0;t=h;f=r&65532;n=0.0;a=0;while(1){if((a|0)>=(f|0))break;u=a|1;s=a|2;o=a|3;n=n+(+l[e+(a<<2)>>2]*+l[i+(a<<2)>>2]+ +l[e+(u<<2)>>2]*+l[i+(u<<2)>>2]+ +l[e+(s<<2)>>2]*+l[i+(s<<2)>>2]+ +l[e+(o<<2)>>2]*+l[i+(o<<2)>>2]);a=a+4|0}while(1){if((a|0)>=(r|0))break;c=n+ +l[e+(a<<2)>>2]*+l[i+(a<<2)>>2];a=a+1|0;n=c}h=t;return+n}function Af(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0,o=0,s=0;n=h;h=h+64|0;t=n;a=0;while(1){if((a|0)<(r|0))f=0;else break;while(1){if((f|0)>=(a|0))break;l[t+(f<<2)>>2]=+l[e+(f<<2)>>2];f=f+1|0}f=i+(a<<2)|0;o=0;while(1){if((o|0)>=(a|0))break;s=e+(o<<2)|0;l[s>>2]=+l[s>>2]+ +l[t+(a-o+-1<<2)>>2]*+l[f>>2];o=o+1|0}l[e+(a<<2)>>2]=-+l[f>>2];a=a+1|0}h=n;return}function Sf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0.0,n=0,a=0,f=0,o=0.0,s=0.0,u=0.0,c=0,d=0,b=0,k=0;n=h;u=+l[i>>2];t=u*9.999999960041972e-13+9.999999717180685e-10;u=t>u?t:u;d=i+4|0;s=+l[d>>2]/u;l[e>>2]=s;s=u-s*+l[d>>2];if(t>s){s=t;f=1}else f=1;while(1){if((f|0)>=(r|0))break;a=f+1|0;c=0;u=+l[i+(a<<2)>>2];while(1){if((c|0)>=(f|0))break;o=u-+l[e+(c<<2)>>2]*+l[i+(f-c<<2)>>2];c=c+1|0;u=o}o=u/s;s=s-o*u;s=t>s?t:s;c=f>>1;d=0;while(1){if((d|0)>=(c|0))break;b=e+(d<<2)|0;k=e+(f-d+-1<<2)|0;u=+l[k>>2];l[k>>2]=u-o*+l[b>>2];l[b>>2]=+l[b>>2]-o*u;d=d+1|0}if(f&1){k=e+(c<<2)|0;u=+l[k>>2];l[k>>2]=u-o*u}l[e+(f<<2)>>2]=o;f=a}h=n;return+s}function yf(e,i,r,n){e=e|0;i=i|0;r=r|0;n=n|0;var f=0,o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0.0,m=0.0,p=0.0,_=0,v=0,g=0,E=0,T=0,A=0.0,S=0,y=0,M=0,L=0.0;f=h;h=h+1040|0;d=f+72|0;c=f;b=n+(0-(a[e+4624>>2]|0)<<2)|0;k=e+4748|0;p=+(a[k>>2]|0)*.0078125;u=e+4728|0;w=+((a[u>>2]|0)+(a[e+4732>>2]|0)|0)*.5*30517578125.0e-15;o=i+856|0;l[o>>2]=w;m=+Mf((p+-20.0)*.25);s=i+860|0;l[s>>2]=m;if(!(a[e+4708>>2]|0)){L=1.0-+(a[e+4556>>2]|0)*.00390625;m=p-m*2.0*(w*.5+.5)*L*L}else m=p;n=e+4797|0;if((t[n>>0]|0)==2){w=m+ +l[e+12236>>2]*2.0;t[e+4798>>0]=0;l[i+864>>2]=0.0}else{w=m+(+(a[k>>2]|0)*-.4000000059604645*.0078125+6.0)*(1.0-w);_=a[e+4600>>2]<<1;k=e+4604|0;m=+(_|0);p=0.0;L=0.0;v=0;while(1){if((v|0)>=(((a[k>>2]<<16>>16)*5|0)/2|0|0))break;A=+Lf(m+ +mf(r,_));if((v|0)>0)p=p+ +K(+(A-L));L=A;r=r+(_<<2)|0;v=v+1|0}L=+Mf((p+-5.0)*.4000000059604645);r=i+864|0;l[r>>2]=L;k=e+4798|0;if(L>.75)t[k>>0]=0;else t[k>>0]=1;w=w+(+l[r>>2]+-.5)*2.0}L=+l[i+868>>2]*.0010000000474974513;L=.949999988079071/(L*L+1.0);A=+l[s>>2];m=(1.0-A*.75)*.009999999776482582;p=L+m;m=(L-m)/p;_=e+4704|0;r=a[_>>2]|0;if((r|0)>0)A=+(r|0)*152587890625.0e-16+A*.009999999776482582;else A=0.0;r=e+4604|0;k=e+4600|0;T=e+4628|0;E=e+4612|0;v=e+4660|0;g=0;while(1){S=a[r>>2]|0;if((g|0)>=(S|0))break;M=a[k>>2]|0;S=M*3|0;y=((a[T>>2]|0)-S|0)/2|0;tf(d,b,1,y);Ll(d+(y<<2)|0,b+(y<<2)|0,M*12|0)|0;S=y+S|0;tf(d+(S<<2)|0,b+(S<<2)|0,2,y);b=b+(a[E>>2]<<2)|0;y=a[T>>2]|0;S=a[v>>2]|0;if((a[_>>2]|0)>0)io(c,d,A,y,S);else nf(c,d,y,S+1|0);L=+l[c>>2];l[c>>2]=L+L*4999999873689376.0e-20;y=g<<4;M=i+(y<<2)+500|0;L=+H(+ +Sf(M,c,a[v>>2]|0));S=i+(g<<2)|0;l[S>>2]=L;if((a[_>>2]|0)>0)l[S>>2]=L*+Of(M,A,a[v>>2]|0);ff(M,a[v>>2]|0,p);y=i+(y<<2)+244|0;Ll(y|0,M|0,a[v>>2]<<2|0)|0;ff(y,a[v>>2]|0,m);L=+Qa(M,a[v>>2]|0);l[i+(g<<2)+788>>2]=1.0-(1.0-L/+Qa(y,a[v>>2]|0))*.699999988079071;Rf(M,y,A,a[v>>2]|0);g=g+1|0}w=+pe(+(w*-.1599999964237213));c=0;while(1){if((c|0)>=(S|0))break;S=i+(c<<2)|0;l[S>>2]=+l[S>>2]*w+1.2483305931091309;S=a[r>>2]|0;c=c+1|0}w=+l[s>>2]*.10000000149011612+1.0499999523162842;c=0;while(1){if((c|0)>=(S|0))break;S=i+(c<<2)+788|0;l[S>>2]=+l[S>>2]*w;S=a[r>>2]|0;c=c+1|0}c=e+4556|0;w=((+(a[u>>2]|0)*30517578125.0e-15+-1.0)*.5+1.0)*4.0*+(a[c>>2]|0)*.00390625;e:do{if((t[n>>0]|0)==2){u=0;while(1){if((u|0)>=(S|0))break;L=.20000000298023224/+(a[k>>2]|0)+3.0/+(a[i+(u<<2)+228>>2]|0);l[i+(u<<2)+756>>2]=L+-1.0;l[i+(u<<2)+772>>2]=1.0-L-L*w;S=a[r>>2]|0;u=u+1|0}w=-.25-+(a[c>>2]|0)*.26249998807907104*.00390625}else{L=1.2999999523162842/+(a[k>>2]|0);u=i+756|0;l[u>>2]=L+-1.0;c=i+772|0;l[c>>2]=1.0-L-L*w*.6000000238418579;d=1;while(1){S=a[r>>2]|0;if((d|0)>=(S|0)){w=-.25;break e}l[i+(d<<2)+756>>2]=+l[u>>2];l[i+(d<<2)+772>>2]=+l[c>>2];d=d+1|0}}}while(0);p=1.0-+l[s>>2];A=+l[e+12236>>2];L=+l[o>>2];m=p*.10000000149011612*A+(1.0-L)*.10000000149011612;if((t[n>>0]|0)==2)p=((1.0-p*L)*.20000000298023224+.30000001192092896)*+H(+A);else p=0.0;o=e+7204|0;n=e+7208|0;e=e+7212|0;s=0;while(1){if((s|0)>=(S|0))break;L=+l[o>>2];L=L+(m-L)*.4000000059604645;l[o>>2]=L;l[i+(s<<2)+804>>2]=L;L=+l[n>>2];L=L+(p-L)*.4000000059604645;l[n>>2]=L;l[i+(s<<2)+836>>2]=L;L=+l[e>>2];L=L+(w-L)*.4000000059604645;l[e>>2]=L;l[i+(s<<2)+820>>2]=L;S=a[r>>2]|0;s=s+1|0}h=f;return}function Mf(e){e=+e;e=1.0/(+Q(+-e)+1.0);return+e}function Lf(e){e=+e;var i=0;i=h;e=+be(+e)*3.32192809488736;h=i;return+e}function Of(e,i,r){e=e|0;i=+i;r=r|0;var t=0,n=0.0;t=h;i=-i;n=+l[e+(r+-1<<2)>>2];r=r+-2|0;while(1){n=n*i;if((r|0)<=-1)break;n=n+ +l[e+(r<<2)>>2];r=r+-1|0}h=t;return+(1.0/(1.0-n))}function Rf(e,i,r,t){e=e|0;i=i|0;r=+r;t=t|0;var n=0,a=0.0,f=0,o=0,s=0.0,u=0.0,c=0.0,d=0,b=0,k=0.0,w=0.0,m=0,p=0;n=h;o=t;while(1){f=o+-1|0;if((f|0)<=0)break;b=o+-2|0;d=e+(b<<2)|0;l[d>>2]=+l[d>>2]-+l[e+(f<<2)>>2]*r;b=i+(b<<2)|0;l[b>>2]=+l[b>>2]-+l[i+(f<<2)>>2]*r;o=f}a=1.0-r*r;c=a/(+l[e>>2]*r+1.0);s=a/(+l[i>>2]*r+1.0);f=0;while(1){if((f|0)>=(t|0)){o=0;f=0;break}b=e+(f<<2)|0;l[b>>2]=+l[b>>2]*c;b=i+(f<<2)|0;l[b>>2]=+l[b>>2]*s;f=f+1|0}while(1){if((f|0)<10){u=-1.0;d=0}else{e=23;break}while(1){if((d|0)>=(t|0))break;w=+K(+ +l[e+(d<<2)>>2]);k=+K(+ +l[i+(d<<2)>>2]);k=w>k?w:k;b=k>u;o=b?d:o;u=b?k:u;d=d+1|0}if(!(u<=3.999000072479248))d=1;else{e=23;break}while(1){if((d|0)>=(t|0))break;b=d+-1|0;m=e+(b<<2)|0;l[m>>2]=+l[m>>2]+ +l[e+(d<<2)>>2]*r;b=i+(b<<2)|0;l[b>>2]=+l[b>>2]+ +l[i+(d<<2)>>2]*r;d=d+1|0}c=1.0/c;s=1.0/s;d=0;while(1){if((d|0)>=(t|0))break;m=e+(d<<2)|0;l[m>>2]=+l[m>>2]*c;m=i+(d<<2)|0;l[m>>2]=+l[m>>2]*s;d=d+1|0}w=.9900000095367432-(+(f|0)*.10000000149011612+.800000011920929)*(u+-3.999000072479248)/(u*+(o+1|0));ff(e,t,w);ff(i,t,w);d=t;while(1){b=d+-1|0;if((b|0)<=0)break;m=d+-2|0;p=e+(m<<2)|0;l[p>>2]=+l[p>>2]-+l[e+(b<<2)>>2]*r;m=i+(m<<2)|0;l[m>>2]=+l[m>>2]-+l[i+(b<<2)>>2]*r;d=b}c=a/(+l[e>>2]*r+1.0);s=a/(+l[i>>2]*r+1.0);d=0;while(1){if((d|0)>=(t|0))break;p=e+(d<<2)|0;l[p>>2]=+l[p>>2]*c;p=i+(d<<2)|0;l[p>>2]=+l[p>>2]*s;d=d+1|0}f=f+1|0}if((e|0)==23){h=n;return}}function Nf(e,i,r,f,s,u,c,d,b,k,w,m){e=e|0;i=i|0;r=r|0;f=f|0;s=s|0;u=u|0;c=+c;d=+d;b=b|0;k=k|0;w=w|0;m=m|0;var p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0.0,D=0.0,I=0,U=0,F=0.0,G=0.0,V=0,W=0,x=0.0,K=0.0,H=0,z=0.0,Y=0,q=0,j=0;p=h;h=h+13680|0;N=p+8888|0;C=p+8248|0;W=p+13032|0;I=p+12712|0;P=p;M=p+5864|0;R=p+5604|0;y=p+5560|0;S=p+5464|0;L=p+12408|0;g=p+2744|0;E=p+24|0;H=p+11128|0;Y=p+10168|0;q=re((w*5|0)+20|0,b)|0;U=(w*20|0)+80|0;V=(w*40|0)+160|0;A=b*5|0;_=b<<1;v=b*18|0;T=v+-1|0;O=(b|0)==16;do{if(!O){if((b|0)==12){Cf(Y,e,q);a[P+0>>2]=0;a[P+4>>2]=0;a[P+8>>2]=0;a[P+12>>2]=0;a[P+16>>2]=0;a[P+20>>2]=0;Lo(P,W,Y,q);Pf(N,W,V);H=P;break}else{Cf(W,e,V);H=P;break}}else{Cf(H,e,q);Y=P;a[Y>>2]=0;a[Y+4>>2]=0;Mo(P,W,H,q);Pf(N,W,V);H=P}}while(0);q=P;a[q>>2]=0;a[q+4>>2]=0;Mo(H,I,W,V);Pf(C,I,U);while(1){P=U+-1|0;if((P|0)<=0)break;q=C+(P<<2)|0;l[q>>2]=+l[q>>2]+ +l[C+(U+-2<<2)>>2];U=P}yl(M|0,0,w*596|0)|0;I=w>>1;V=R+256|0;P=M+32|0;U=0;Y=C+320|0;while(1){if((U|0)>=(I|0)){R=72;break}C=Y+-32|0;et(Y,Y+-288|0,R,40,65,m);z=+l[V>>2];B=+mf(Y,40);B=B+ +mf(C,40)+16.0e4;l[P>>2]=+l[P>>2]+z*2.0/B;W=8;while(1){H=W+1|0;if((W|0)>=72)break;q=C+-4|0;K=+l[q>>2];z=+l[C+156>>2];z=B+(K*K-z*z);j=M+(H<<2)|0;l[j>>2]=+l[j>>2]+ +l[R+(71-W<<2)>>2]*2.0/z;C=q;B=z;W=H}U=U+1|0;Y=Y+160|0}while(1){if((R|0)<8)break;j=M+(R<<2)|0;z=+l[j>>2];l[j>>2]=z-z*+(R|0)*.000244140625;R=R+-1|0}R=(k<<1)+4|0;eo(P,S,65,R);B=+l[P>>2];if(B<.20000000298023224){yl(i|0,0,w<<2|0)|0;l[s>>2]=0.0;n[r>>1]=0;t[f>>0]=0;j=1;h=p;return j|0}c=B*c;C=0;while(1){if((C|0)>=(R|0))break;if(!(+l[M+(C+8<<2)>>2]>c)){R=C;break}j=S+(C<<2)|0;a[j>>2]=(a[j>>2]<<1)+16;C=C+1|0}C=11;while(1){if((C|0)>=148){C=0;break}n[L+(C<<1)>>1]=0;C=C+1|0}while(1){if((C|0)>=(R|0)){R=146;break}n[L+(a[S+(C<<2)>>2]<<1)>>1]=1;C=C+1|0}while(1){if((R|0)<16){R=0;C=16;break}j=R+-1|0;q=L+(R<<1)|0;n[q>>1]=(o[q>>1]|0)+((o[L+(j<<1)>>1]|0)+(o[L+(R+-2<<1)>>1]|0));R=j}while(1){if((C|0)>=144){C=146;break}P=C+1|0;if((n[L+(P<<1)>>1]|0)<=0){C=P;continue}a[S+(R<<2)>>2]=C;R=R+1|0;C=P}while(1){if((C|0)<16){P=0;C=16;break}j=C+-1|0;q=L+(C<<1)|0;n[q>>1]=(o[q>>1]|0)+((o[L+(j<<1)>>1]|0)+(o[L+(C+-2<<1)>>1]|0)+(o[L+(C+-3<<1)>>1]|0));C=j}while(1){if((C|0)>=147)break;if((n[L+(C<<1)>>1]|0)>0){n[L+(P<<1)>>1]=C+65534;P=P+1|0}C=C+1|0}yl(M|0,0,2384)|0;C=(b|0)==8;if(C){I=0;W=e+640|0}else{I=0;W=N+640|0}while(1){if((I|0)>=(w|0))break;c=+mf(W,40)+1.0;N=0;while(1){if((N|0)>=(P|0))break;U=n[L+(N<<1)>>1]|0;V=W+(0-U<<2)|0;B=+Tf(V,W,40);if(B>0.0)l[M+(I*596|0)+(U<<2)>>2]=B*2.0/(+mf(V,40)+c);else l[M+(I*596|0)+(U<<2)>>2]=0.0;N=N+1|0}I=I+1|0;W=W+160|0}if((u|0)>0){if((b|0)==12)L=(u<<1|0)/3|0;else L=O?u>>1:u;u=L;c=+Bf(+(L|0))}else c=0.0;L=(w|0)==4;if(L){O=21304;N=11;P=C&(k|0)>0?11:3}else{O=21264;N=3;P=3}D=+(w|0);B=D*.20000000298023224;I=(u|0)>0;F=D*d;C=0;G=0.0;d=-1.0e3;u=-1;U=0;while(1){if((U|0)>=(R|0))break;V=a[S+(U<<2)>>2]|0;Y=0;while(1){if((Y|0)>=(P|0)){W=0;x=-1.0e3;H=0;break}H=y+(Y<<2)|0;l[H>>2]=0.0;x=0.0;W=0;while(1){if((W|0)>=(w|0))break;z=x+ +l[M+(W*596|0)+(V+(t[O+((re(W,N)|0)+Y)>>0]|0)<<2)>>2];l[H>>2]=z;x=z;W=W+1|0}Y=Y+1|0}while(1){if((H|0)>=(P|0))break;z=+l[y+(H<<2)>>2];j=z>x;W=j?H:W;x=j?z:x;H=H+1|0}z=+Bf(+(V|0));K=x-B*z;if(I){z=z-c;z=z*z;K=K-B*+l[s>>2]*z/(z+.5)}j=K>d&x>F;C=j?W:C;G=j?x:G;d=j?K:d;u=j?V:u;U=U+1|0}if((u|0)==-1){a[i+0>>2]=0;a[i+4>>2]=0;a[i+8>>2]=0;a[i+12>>2]=0;l[s>>2]=0.0;n[r>>1]=0;t[f>>0]=0;j=1;h=p;return j|0}l[s>>2]=G/D;if((b|0)>8){if((b|0)==12){S=(u<<16>>16)*3|0;S=(S>>1)+(S&1)|0}else S=u<<1;if((_|0)>(T|0)){if((S|0)>(_|0))M=_;else M=(S|0)<(T|0)?T:S}else if((S|0)>(T|0))M=T;else M=(S|0)<(_|0)?_:S;s=Df(M+-2|0,_)|0;y=If(M+2|0,T)|0;Uf(E,e,s,A,w,k,m);Ff(g,e,s,A,w,k);d=.05000000074505806/+(M|0);if(L){m=21352;S=34;k=t[21512+k>>0]|0}else{m=21272;S=12;k=12}c=+mf(e+(b*20<<2)|0,re(A,w)|0)+1.0;C=0;B=-1.0e3;b=0;e=M;A=s;while(1){if((A|0)>(y|0))break;else s=0;while(1){if((s|0)<(k|0)){F=0.0;D=c;M=0}else break;while(1){if((M|0)>=(w|0))break;F=F+ +l[E+(M*680|0)+(s*20|0)+(b<<2)>>2];D=D+ +l[g+(M*680|0)+(s*20|0)+(b<<2)>>2];M=M+1|0}if(F>0.0)D=F*2.0/D*(1.0-d*+(s|0));else D=0.0;if(D>B){j=(A+(t[21352+s>>0]|0)|0)>(T|0);C=j?C:s;B=j?B:D;e=j?e:A}s=s+1|0}b=b+1|0;A=A+1|0}T=(_|0)>(v|0);E=0;while(1){if((E|0)>=(w|0))break;b=e+(t[m+((re(E,S)|0)+C)>>0]|0)|0;g=i+(E<<2)|0;a[g>>2]=b;if(T){if((b|0)>(_|0))b=_;else b=(b|0)<(v|0)?v:b}else if((b|0)>(v|0))b=v;else b=(b|0)<(_|0)?_:b;a[g>>2]=b;E=E+1|0}i=e-_|0}else{_=0;while(1){if((_|0)>=(w|0))break;g=u+(t[O+((re(_,N)|0)+C)>>0]|0)|0;v=i+(_<<2)|0;a[v>>2]=g;if((g|0)>144)g=144;else g=(g|0)<16?16:g;a[v>>2]=g;_=_+1|0}i=u+65520|0}n[r>>1]=i;t[f>>0]=C;j=0;h=p;return j|0}function Cf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0;t=h;while(1){a=r+-1|0;if((r|0)<=0)break;r=i+(a<<2)|0;if((ge(+ +l[r>>2])|0)<=32767){if((ge(+ +l[r>>2])|0)<-32768)r=-32768;else r=(ge(+ +l[r>>2])|0)&65535}else r=32767;n[e+(a<<1)>>1]=r;r=a}h=t;return}function Pf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0;t=h;while(1){a=r+-1|0;if((r|0)<=0)break;l[e+(a<<2)>>2]=+(n[i+(a<<1)>>1]|0);r=a}h=t;return}function Bf(e){e=+e;var i=0;i=h;e=+be(+e)*3.32192809488736;h=i;return+e}function Df(e,i){e=e|0;i=i|0;return((e|0)>(i|0)?e:i)|0}function If(e,i){e=e|0;i=i|0;return((e|0)<(i|0)?e:i)|0}function Uf(e,i,r,n,a,f,o){e=e|0;i=i|0;r=r|0;n=n|0;a=a|0;f=f|0;o=o|0;var s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0;b=h;h=h+176|0;c=b+88|0;u=b;if((a|0)==4){d=21352;s=21488+(f<<3)|0;k=34;f=t[21512+f>>0]|0}else{d=21272;s=21296;k=12;f=12}w=0;i=i+(n<<2<<2)|0;while(1){if((w|0)>=(a|0))break;v=w<<1;m=t[s+v>>0]|0;v=t[s+(v|1)>>0]|0;et(i,i+(0-(v+r)<<2)|0,u,n,v-m+1|0,o);p=0;_=m;while(1){if((_|0)>(v|0))break;l[c+(p<<2)>>2]=+l[u+(v-_<<2)>>2];p=p+1|0;_=_+1|0}g=re(w,k)|0;v=0;while(1){if((v|0)>=(f|0))break;p=(t[d+(g+v)>>0]|0)-m|0;_=0;while(1){if((_|0)>=5)break;l[e+(w*680|0)+(v*20|0)+(_<<2)>>2]=+l[c+(p+_<<2)>>2];_=_+1|0}v=v+1|0}w=w+1|0;i=i+(n<<2)|0}h=b;return}function Ff(e,i,r,n,a,f){e=e|0;i=i|0;r=r|0;n=n|0;a=a|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0.0,v=0,g=0.0,E=0.0;s=h;h=h+96|0;o=s;if((a|0)==4){u=21352;d=21488+(f<<3)|0;c=34;b=t[21512+f>>0]|0}else{u=21272;d=21296;c=12;b=12}f=0;i=i+(n<<2<<2)|0;while(1){if((f|0)>=(a|0))break;m=f<<1;k=t[d+m>>0]|0;p=k+r|0;_=+mf(i+(0-p<<2)|0,n)+.001;l[o>>2]=_;m=(t[d+(m|1)>>0]|0)-k+1|0;v=1;w=1;while(1){if((w|0)>=(m|0))break;E=+l[i+(n-w-p<<2)>>2];g=+l[i+(0-(p+w)<<2)>>2];g=_-E*E+g*g;l[o+(v<<2)>>2]=g;_=g;v=v+1|0;w=w+1|0}p=re(f,c)|0;v=0;while(1){if((v|0)>=(b|0))break;m=(t[u+(p+v)>>0]|0)-k|0;w=0;while(1){if((w|0)>=5)break;l[e+(f*680|0)+(v*20|0)+(w<<2)>>2]=+l[o+(m+w<<2)>>2];w=w+1|0}v=v+1|0}f=f+1|0;i=i+(n<<2)|0}h=s;return}function Gf(e,i,r,n){e=e|0;i=i|0;r=r|0;n=n|0;var f=0,o=0,s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0.0,A=0,S=0.0,y=0,M=0,L=0.0,O=0.0,R=0.0;g=h;h=h+400|0;k=g+384|0;c=g;v=e+7216|0;_=e+4604|0;p=e+4797|0;o=k+4|0;s=k+8|0;u=e+9264|0;d=e+4704|0;b=e+4612|0;f=e+4660|0;w=i+860|0;m=e+9344|0;M=a[e+9352>>2]|0;E=0;while(1){A=a[_>>2]|0;if((E|0)>=(A|0))break;if((t[p>>0]|0)==2)M=a[i+(E<<2)+228>>2]|0;y=i+(E<<2)+804|0;S=+l[i+(E<<2)+836>>2]*(1.0-+l[y>>2]);L=S*.25;l[k>>2]=L;l[o>>2]=S*.4999847412109375;l[s>>2]=L;L=+l[i+(E<<2)+820>>2];T=+l[i+(E<<2)+756>>2];R=+l[i+(E<<2)+772>>2];Vf(u,c,i+(E<<4<<2)+244|0,n,+(a[d>>2]|0)*152587890625.0e-16,a[b>>2]|0,a[f>>2]|0);O=+l[i+(E<<2)+788>>2];S=-(O*(+l[y>>2]*S+.05000000074505806+ +l[w>>2]*.10000000149011612));l[r>>2]=O*+l[c>>2]+ +l[m>>2]*S;y=1;while(1){A=a[b>>2]|0;if((y|0)>=(A|0))break;l[r+(y<<2)>>2]=O*+l[c+(y<<2)>>2]+ +l[c+(y+-1<<2)>>2]*S;y=y+1|0}l[m>>2]=+l[c+(A+-1<<2)>>2];Wf(v,r,r,k,L,T,R,M,A);y=a[b>>2]|0;n=n+(y<<2)|0;r=r+(y<<2)|0;E=E+1|0}a[e+9352>>2]=a[i+(A+-1<<2)+228>>2];h=g;return}function Vf(e,i,r,t,n,a,f){e=e|0;i=i|0;r=r|0;t=t|0;n=+n;a=a|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0,k=0.0,w=0,m=0.0,p=0,_=0.0,v=0.0,g=0.0,E=0.0,T=0,A=0.0,S=0;b=h;o=e+4|0;s=e+8|0;u=e+(f<<2)|0;c=r+(f+-1<<2)|0;d=0;while(1){if((d|0)>=(a|0))break;g=+l[o>>2];k=+l[e>>2]+g*n;w=t+(d<<2)|0;l[e>>2]=+l[w>>2];v=+l[s>>2];l[o>>2]=k;_=v;m=+l[r>>2]*k;p=2;k=g+(v-k)*n;while(1){if((p|0)>=(f|0))break;S=e+((p|1)<<2)|0;E=+l[S>>2];g=_+(E-k)*n;l[e+(p<<2)>>2]=k;A=m+ +l[r+(p+-1<<2)>>2]*k;T=p+2|0;v=+l[e+(T<<2)>>2];l[S>>2]=g;_=v;m=A+ +l[r+(p<<2)>>2]*g;p=T;k=E+(v-g)*n}l[u>>2]=k;l[i+(d<<2)>>2]=+l[w>>2]-(m+ +l[c>>2]*k);d=d+1|0}h=b;return}function Wf(e,i,r,t,n,f,o,s,u){e=e|0;i=i|0;r=r|0;t=t|0;n=+n;f=+f;o=+o;s=s|0;u=u|0;var c=0,d=0,b=0.0,k=0,w=0,m=0,p=0,_=0,v=0,g=0.0,E=0,T=0.0,A=0,S=0.0,y=0.0;p=h;m=e+2116|0;d=e+2120|0;k=e+2124|0;c=(s|0)>0;_=t+4|0;v=t+8|0;w=a[m>>2]|0;g=+l[d>>2];b=+l[k>>2];E=0;while(1){if((E|0)>=(u|0))break;if(c){A=w+s|0;T=+l[e+((A+510&511)<<2)>>2]*+l[t>>2]+ +l[e+((A+511&511)<<2)>>2]*+l[_>>2]+ +l[e+((A&511)<<2)>>2]*+l[v>>2]}else T=0.0;y=+l[i+(E<<2)>>2]-g*n;S=y-(g*o+b*f);A=w+511&511;l[e+(A<<2)>>2]=S;l[r+(E<<2)>>2]=S-T;w=A;g=y;b=S;E=E+1|0}l[d>>2]=g;l[k>>2]=b;a[m>>2]=w;h=p;return}function xf(e,i,r){e=e|0;i=i|0;r=r|0;var f=0,o=0,s=0,u=0,c=0,d=0.0,b=0,k=0.0;f=h;h=h+16|0;s=f;o=e+4797|0;e:do{if((t[o>>0]|0)==2){d=1.0-+Kf((+l[i+872>>2]+-12.0)*.25)*.5;u=e+4604|0;c=0;while(1){if((c|0)>=(a[u>>2]|0))break e;b=i+(c<<2)|0;l[b>>2]=+l[b>>2]*d;c=c+1|0}}else u=e+4604|0}while(0);d=+pe(+((21.0-+(a[e+4748>>2]|0)*.0078125)*.33000001311302185));d=d/+(a[e+4612>>2]|0);b=0;while(1){c=a[u>>2]|0;if((b|0)>=(c|0)){b=0;break}c=i+(b<<2)|0;k=+l[c>>2];k=+H(+(k*k+ +l[i+(b<<2)+876>>2]*d));l[c>>2]=k<32767.0?k:32767.0;b=b+1|0}while(1){if((b|0)>=(c|0))break;a[s+(b<<2)>>2]=~~(+l[i+(b<<2)>>2]*65536.0);b=b+1|0}Ll(i+892|0,s|0,c<<2|0)|0;b=e+7200|0;t[i+908>>0]=t[b>>0]|0;so(e+4768|0,s,b,(r|0)==2&1,a[u>>2]|0);r=0;while(1){if((r|0)>=(a[u>>2]|0))break;l[i+(r<<2)>>2]=+(a[s+(r<<2)>>2]|0)*152587890625.0e-16;r=r+1|0}o=t[o>>0]|0;do{if(o<<24>>24==2){s=e+4798|0;if(+l[i+872>>2]+ +(a[e+4744>>2]|0)*30517578125.0e-15>1.0){t[s>>0]=0;s=0;break}else{t[s>>0]=1;s=1;break}}else s=t[e+4798>>0]|0}while(0);l[i+852>>2]=+(a[e+4652>>2]|0)*-.05000000074505806+1.2000000476837158+ +(a[e+4556>>2]|0)*-.20000000298023224*.00390625+ +l[i+856>>2]*-.10000000149011612+ +l[i+860>>2]*-.20000000298023224+ +(n[24968+(o<<24>>24>>1<<2)+(s<<24>>24<<1)>>1]|0)*.0009765625*.800000011920929;h=f;return}function Kf(e){e=+e;e=1.0/(+Q(+-e)+1.0);return+e}function Hf(e,i,r){e=e|0;i=i|0;r=+r;var t=0,n=0,a=0;t=h;n=0;while(1){if((n|0)>=5)break;a=e+(n*6<<2)|0;l[a>>2]=+l[a>>2]+r;n=n+1|0}l[i>>2]=+l[i>>2]+r;h=t;return}function zf(e,i,r,t){e=e|0;i=i|0;r=r|0;t=+t;var n=0,a=0,f=0.0,o=0.0,s=0,u=0,c=0.0,d=0,b=0.0;n=h;o=0.0;f=(+l[i>>2]+ +l[i+96>>2])*9.99999993922529e-9;a=0;while(1){if((a|0)<10){s=0;o=0.0}else{r=14;break}while(1){if((s|0)>=5)break;c=o+ +l[r+(s<<2)>>2]*+l[e+(s<<2)>>2];s=s+1|0;o=c}o=t-o*2.0;d=0;while(1){if((d|0)<5){s=d;c=0.0}else break;while(1){u=s+1|0;if((u|0)>=5)break;s=u;c=c+ +l[i+(d+(u*5|0)<<2)>>2]*+l[e+(u<<2)>>2]}b=+l[e+(d<<2)>>2];o=o+b*(c*2.0+ +l[i+(d*6<<2)>>2]*b);d=d+1|0}if(o>0.0){r=14;break}else s=0;while(1){if((s|0)>=5)break;d=i+(s*6<<2)|0;l[d>>2]=+l[d>>2]+f;s=s+1|0}f=f*2.0;a=a+1|0}if((r|0)==14){h=n;return+((a|0)==10?1.0:o)}return 0.0}function Yf(e,i,r,t,n,a,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0.0;d=h;h=h+768|0;o=d;u=o+(f<<2)|0;c=f+n|0;s=c<<1;qa(o,r,i,s,f);b=+l[t>>2];l[e>>2]=b*b*+mf(u,n);b=+l[t+4>>2];c=o+(c+f<<2)|0;l[e+4>>2]=b*b*+mf(c,n);if((a|0)!=4){h=d;return}qa(o,r+64|0,i+(s<<2)|0,s,f);b=+l[t+8>>2];l[e+8>>2]=b*b*+mf(u,n);b=+l[t+12>>2];l[e+12>>2]=b*b*+mf(c,n);h=d;return}function qf(e,i,r,t){e=e|0;i=i|0;r=+r;t=t|0;var n=0,a=0,f=0,o=0;n=h;f=t&65532;a=0;while(1){if((a|0)>=(f|0))break;l[e+(a<<2)>>2]=+l[i+(a<<2)>>2]*r;o=a|1;l[e+(o<<2)>>2]=+l[i+(o<<2)>>2]*r;o=a|2;l[e+(o<<2)>>2]=+l[i+(o<<2)>>2]*r;o=a|3;l[e+(o<<2)>>2]=+l[i+(o<<2)>>2]*r;a=a+4|0}while(1){if((a|0)>=(t|0))break;l[e+(a<<2)>>2]=+l[i+(a<<2)>>2]*r;a=a+1|0}h=n;return}function jf(e,i){e=e|0;i=+i;var r=0,t=0,n=0;r=h;t=0;while(1){if((t|0)>=24)break;n=e+(t<<2)|0;l[n>>2]=+l[n>>2]*i;n=e+((t|1)<<2)|0;l[n>>2]=+l[n>>2]*i;n=e+((t|2)<<2)|0;l[n>>2]=+l[n>>2]*i;n=e+((t|3)<<2)|0;l[n>>2]=+l[n>>2]*i;t=t+4|0}while(1){if((t|0)>=25)break;n=e+(t<<2)|0;l[n>>2]=+l[n>>2]*i;t=t+1|0}h=r;return}function Jf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0,o=0.0,s=0,u=0,c=0,d=0.0,b=0.0,k=0;n=h;h=h+144|0;t=n;f=r+1|0;a=0;while(1){if((a|0)>=(f|0))break;o=+l[i+(a<<2)>>2];l[t+(a<<3)+4>>2]=o;l[t+(a<<3)>>2]=o;a=a+1|0}i=t+4|0;s=0;e:while(1){if((s|0)>=(r|0))break;u=s+1|0;o=+l[i>>2];o=-+l[t+(u<<3)>>2]/(o>9.999999717180685e-10?o:9.999999717180685e-10);l[e+(s<<2)>>2]=o;a=r-s|0;f=0;while(1){if((f|0)>=(a|0)){s=u;continue e}k=t+(f+s+1<<3)|0;d=+l[k>>2];c=t+(f<<3)+4|0;b=+l[c>>2];l[k>>2]=d+b*o;l[c>>2]=b+d*o;f=f+1|0}}h=n;return+ +l[i>>2]}function Zf(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0;a=h;h=h+1152|0;t=a+128|0;n=a+64|0;f=a;$f(e,5,t,f);Xf(t,5,i,n);i=0;while(1){if((i|0)>=5)break;e=n+(i<<2)|0;l[e>>2]=+l[e>>2]*+l[f+(i<<2)>>2];i=i+1|0}Qf(t,5,n,r);h=a;return}function $f(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0.0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0.0,_=0,v=0.0,g=0.0;o=h;h=h+128|0;f=o+64|0;a=o;s=(+l[e>>2]+ +l[e+((re(i,i)|0)+-1<<2)>>2])*4999999873689376.0e-21;c=1;u=0;e:while(1){if((u|0)<(i|0)&(c|0)==1)d=0;else break;i:while(1){if((d|0)>=(i|0)){n=16;break}c=re(d,i)|0;k=c+d|0;b=0;p=+l[e+(k<<2)>>2];while(1){if((b|0)>=(d|0))break;g=+l[r+(c+b<<2)>>2];v=g*+l[a+(b<<2)>>2];l[f+(b<<2)>>2]=v;b=b+1|0;p=p-g*v}if(p>2]=p;b=t+(d<<2)|0;l[b>>2]=1.0/p;l[r+(k<<2)>>2]=1.0;k=d+1|0;w=r+((re(k,i)|0)<<2)|0;_=d;while(1){_=_+1|0;if((_|0)<(i|0)){m=0;p=0.0}else{d=k;continue i}while(1){if((m|0)>=(d|0))break;g=p+ +l[w+(m<<2)>>2]*+l[f+(m<<2)>>2];m=m+1|0;p=g}l[r+((re(_,i)|0)+d<<2)>>2]=(+l[e+(c+_<<2)>>2]-p)*+l[b>>2];w=w+(i<<2)|0}}if((n|0)==16){n=0;c=0;u=u+1|0;continue}u=u+1|0;p=+(u|0)*s-p;c=0;while(1){if((c|0)>=(i|0)){c=1;continue e}_=e+((re(c,i)|0)+c<<2)|0;l[_>>2]=+l[_>>2]+p;c=c+1|0}}h=o;return}function Xf(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0.0,o=0,s=0,u=0.0;n=h;a=0;while(1){if((a|0)>=(i|0))break;o=re(a,i)|0;s=0;f=0.0;while(1){if((s|0)>=(a|0))break;u=f+ +l[e+(o+s<<2)>>2]*+l[t+(s<<2)>>2];s=s+1|0;f=u}l[t+(a<<2)>>2]=+l[r+(a<<2)>>2]-f;a=a+1|0}h=n;return}function Qf(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0.0,o=0,s=0,u=0.0;n=h;o=i;while(1){a=o+-1|0;if((o|0)>0){o=i;f=0.0}else break;while(1){s=o+-1|0;if((s|0)<=(a|0))break;u=+l[e+(a+(re(s,i)|0)<<2)>>2];o=s;f=f+u*+l[t+(s<<2)>>2]}l[t+(a<<2)>>2]=+l[r+(a<<2)>>2]-f;o=a}h=n;return}function eo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0.0,u=0,c=0.0,d=0;n=h;f=0;while(1){if((f|0)>=(t|0)){f=1;break}a[i+(f<<2)>>2]=f;f=f+1|0}while(1){if((f|0)>=(t|0))break;s=+l[e+(f<<2)>>2];o=f;while(1){u=o+-1|0;if((o|0)<=0)break;c=+l[e+(u<<2)>>2];if(!(s>c))break;l[e+(o<<2)>>2]=c;a[i+(o<<2)>>2]=a[i+(u<<2)>>2];o=u}l[e+(o<<2)>>2]=s;a[i+(o<<2)>>2]=f;f=f+1|0}f=e+(t+-1<<2)|0;o=t+-2|0;while(1){if((t|0)>=(r|0))break;s=+l[e+(t<<2)>>2];if(s>+l[f>>2]){u=o;while(1){if((u|0)<=-1)break;c=+l[e+(u<<2)>>2];if(!(s>c))break;d=u+1|0;l[e+(d<<2)>>2]=c;a[i+(d<<2)>>2]=a[i+(u<<2)>>2];u=u+-1|0}d=u+1|0;l[e+(d<<2)>>2]=s;a[i+(d<<2)>>2]=t}t=t+1|0}h=n;return}function io(e,i,r,t,n){e=e|0;i=i|0;r=+r;t=t|0;n=n|0;var a=0,f=0,o=0,s=0,c=0,d=0,b=0.0,k=0,w=0.0,m=0.0,p=0.0,_=0.0,v=0,g=0,E=0;f=h;h=h+272|0;o=f+136|0;a=f;yl(o|0,0,136)|0;yl(a|0,0,136)|0;d=o+(n<<3)|0;c=a+(n<<3)|0;b=0.0;s=0;while(1){if((s|0)>=(t|0))break;k=0;w=+l[i+(s<<2)>>2];while(1){if((k|0)>=(n|0))break;g=k|1;E=o+(g<<3)|0;_=+u[E>>3];m=b+r*(_-w);u[o+(k<<3)>>3]=w;v=a+(k<<3)|0;u[v>>3]=+u[v>>3]+ +u[o>>3]*w;v=k+2|0;p=+u[o+(v<<3)>>3];u[E>>3]=m;g=a+(g<<3)|0;u[g>>3]=+u[g>>3]+ +u[o>>3]*m;b=p;k=v;w=_+r*(p-m)}u[d>>3]=w;b=+u[o>>3];u[c>>3]=+u[c>>3]+b*w;s=s+1|0}o=n+1|0;t=0;while(1){if((t|0)>=(o|0))break;l[e+(t<<2)>>2]=+u[a+(t<<3)>>3];t=t+1|0}h=f;return}function ro(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0;n=h;h=h+64|0;t=n;f=0;while(1){if((f|0)>=(r|0))break;a[t+(f<<2)>>2]=to(+l[i+(f<<2)>>2]*65536.0)|0;f=f+1|0}Pt(e,t,r);h=n;return}function to(e){e=+e;var i=0,r=0;r=h;i=ge(+e)|0;h=r;return i|0}function no(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0;t=h;h=h+32|0;a=t;Qt(a,i,r);i=0;while(1){if((i|0)>=(r|0))break;l[e+(i<<2)>>2]=+(n[a+(i<<1)>>1]|0)*.000244140625;i=i+1|0}h=t;return}function ao(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0;f=h;h=h+64|0;o=f;To(e,o,r,t);e=e+4664|0;t=0;while(1){if((t|0)<2)r=0;else break;while(1){if((r|0)>=(a[e>>2]|0))break;l[i+(t<<6)+(r<<2)>>2]=+(n[o+(t<<5)+(r<<1)>>1]|0)*.000244140625;r=r+1|0}t=t+1|0}h=f;return}function fo(e,i,r,f,o,s){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0;p=h;h=h+1584|0;c=p+64|0;u=p+48|0;_=p+1512|0;d=p+1472|0;b=p+1344|0;m=p+32|0;w=p+16|0;k=p;v=e+4604|0;E=e+4660|0;g=0;while(1){T=a[v>>2]|0;if((g|0)>=(T|0)){g=0;break}T=g<<4;A=0;while(1){if((A|0)>=(a[E>>2]|0))break;S=T+A|0;n[b+(S<<1)>>1]=to(+l[i+(S<<2)+500>>2]*8192.0)|0;A=A+1|0}g=g+1|0}while(1){if((g|0)>=(T|0))break;T=(to(+l[i+(g<<2)+772>>2]*16384.0)|0)<<16;a[m+(g<<2)>>2]=T|(to(+l[i+(g<<2)+756>>2]*16384.0)|0)&65535;a[w+(g<<2)>>2]=to(+l[i+(g<<2)+820>>2]*16384.0)|0;a[k+(g<<2)>>2]=to(+l[i+(g<<2)+836>>2]*16384.0)|0;T=a[v>>2]|0;g=g+1|0}g=to(+l[i+852>>2]*1024.0)|0;E=0;while(1){if((E|0)>=((a[v>>2]|0)*5|0))break;n[d+(E<<1)>>1]=to(+l[i+(E<<2)+144>>2]*16384.0)|0;E=E+1|0}E=e+4664|0;T=0;while(1){if((T|0)<2)A=0;else{E=0;break}while(1){if((A|0)>=(a[E>>2]|0))break;n[_+(T<<5)+(A<<1)>>1]=to(+l[i+(T<<6)+(A<<2)+16>>2]*4096.0)|0;A=A+1|0}T=T+1|0}while(1){if((E|0)>=(a[v>>2]|0))break;a[u+(E<<2)>>2]=to(+l[i+(E<<2)>>2]*65536.0)|0;E=E+1|0}if((t[r+29>>0]|0)==2)E=n[24976+(t[r+33>>0]<<1)>>1]|0;else E=0;v=e+4608|0;T=0;while(1){if((T|0)>=(a[v>>2]|0))break;a[c+(T<<2)>>2]=to(+l[s+(T<<2)>>2]*8.0)|0;T=T+1|0}if((a[e+4652>>2]|0)<=1?(a[e+4704>>2]|0)<=0:0){En(e,f,r,c,o,_,d,b,k,w,m,u,i+228|0,g,E);h=p;return}Ln(e,f,r,c,o,_,d,b,k,w,m,u,i+228|0,g,E);h=p;return}function oo(e,i,r,t,f,o,s,u,c){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;var d=0,b=0,k=0,w=0,m=0,p=0;k=h;h=h+448|0;b=k+400|0;w=k;d=u*5|0;m=0;while(1){if((m|0)>=(d|0))break;n[b+(m<<1)>>1]=to(+l[e+(m<<2)>>2]*16384.0)|0;m=m+1|0}m=u*25|0;p=0;while(1){if((p|0)>=(m|0))break;a[w+(p<<2)>>2]=to(+l[f+(p<<2)>>2]*262144.0)|0;p=p+1|0}Ao(b,i,r,t,w,o,s,u,c);o=0;while(1){if((o|0)>=(d|0))break;l[e+(o<<2)>>2]=+(n[b+(o<<1)>>1]|0)*6103515625.0e-14;o=o+1|0}h=k;return}function so(e,i,r,n,o){e=e|0;i=i|0;r=r|0;n=n|0;o=o|0;var s=0,l=0,u=0,c=0,d=0,b=0,k=0;s=h;u=(n|0)==0;n=0;while(1){if((n|0)>=(o|0))break;l=i+(n<<2)|0;po(a[l>>2]|0)|0;d=((((po(a[l>>2]|0)|0)<<16)+-136970240>>16)*2251|0)>>>16&255;c=e+n|0;t[c>>0]=d;if(d<<24>>24<(t[r>>0]|0)){d=d+1<<24>>24;t[c>>0]=d}if(d<<24>>24>63)d=63;else d=d<<24>>24<0?0:d;t[c>>0]=d;if((n|0)==0^1|u^1){k=(d&255)-(f[r>>0]|0)|0;b=k&255;t[c>>0]=b;d=(t[r>>0]|0)+8|0;k=k<<24>>24;if((k|0)>(d|0)){b=d+((k-d+1|0)>>>1)&255;t[c>>0]=b}if(b<<24>>24>36)k=36;else k=b<<24>>24<-4?-4:b;t[c>>0]=k;b=k<<24>>24;if((b|0)>(d|0))d=(f[r>>0]|0)+((b<<1)-d)|0;else d=(f[r>>0]|0)+(k&255)|0;t[r>>0]=d;t[c>>0]=(f[c>>0]|0)+4;c=t[r>>0]|0}else{c=(t[r>>0]|0)+-4|0;d=t[e>>0]|0;if((c|0)>63){b=d<<24>>24;if((b|0)<=(c|0))c=d<<24>>24<63?63:b}else if(d<<24>>24>63)c=63;else{k=d<<24>>24;c=(k|0)<(c|0)?c:k}c=c&255;t[e>>0]=c;t[r>>0]=c}k=c<<24>>24;a[l>>2]=Eo(lo((k*29|0)+(k*7281>>16)+2090|0)|0)|0;n=n+1|0}h=s;return}function lo(e){e=e|0;return((e|0)<3967?e:3967)|0}function uo(e,i,r,n,f){e=e|0;i=i|0;r=r|0;n=n|0;f=f|0;var o=0,s=0,l=0,u=0,c=0;o=h;n=(n|0)==0;s=0;while(1){if((s|0)>=(f|0))break;do{if((s|0)==0^1|n^1){u=(t[i+s>>0]|0)+-4|0;c=t[r>>0]|0;l=(c<<24>>24)+8|0;if((u|0)>(l|0)){l=(c&255)+((u<<1)-l)&255;t[r>>0]=l;break}else{l=(c&255)+u&255;t[r>>0]=l;break}}else{l=(ho(t[i>>0]|0,(t[r>>0]|0)+-16|0)|0)&255;t[r>>0]=l}}while(0);if(l<<24>>24>63)l=63;else l=l<<24>>24<0?0:l;t[r>>0]=l;c=l<<24>>24;a[e+(s<<2)>>2]=Eo(lo((c*29|0)+(c*7281>>16)+2090|0)|0)|0;s=s+1|0}h=o;return}function ho(e,i){e=e|0;i=i|0;return((e|0)>(i|0)?e:i)|0}function co(e,i){e=e|0;i=i|0;var r=0,n=0,a=0;r=h;n=0;a=0;while(1){if((a|0)>=(i|0))break;n=(t[e+a>>0]|0)+(n<<8)|0;a=a+1|0}h=r;return n|0}function bo(e){e=e|0;var i=0;i=h;yl(e|0,0,4260)|0;a[e+2376>>2]=1;a[e>>2]=65536;Ft(e);Dn(e);h=i;return}function ko(e,i){e=e|0;i=i|0;var r=0;r=h;yl(e|0,0,12240)|0;a[e+5124>>2]=i;i=((po(3932160)|0)<<8)+-524288|0;a[e+8>>2]=i;a[e+12>>2]=i;a[e+4696>>2]=1;i=$n(e+32|0)|0;h=r;return i|0}function wo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var a=0,f=0,o=0,s=0;a=h;o=0;f=0;while(1){if((o|0)>=(t|0))break;s=f+((re(n[e+(o<<1)>>1]|0,n[i+(o<<1)>>1]|0)|0)>>r)|0;o=o+1|0;f=s}h=a;return f|0}function mo(e,i,r,t,a){e=e|0;i=i|0;r=r|0;t=t|0;a=a|0;var f=0,s=0,l=0;f=h;s=t<<16>>16;t=0;while(1){if((t|0)>=(a|0))break;l=o[i+(t<<1)>>1]|0;n[e+(t<<1)>>1]=l+((re((o[r+(t<<1)>>1]|0)-l<<16>>16,s)|0)>>>2);t=t+1|0}h=f;return}function po(e){e=e|0;var i=0,r=0,t=0;t=h;h=h+16|0;r=t+4|0;i=t;_o(e,r,i);i=a[i>>2]|0;e=re(i,128-i|0)|0;h=t;return(31-(a[r>>2]|0)<<7)+(i+(((e>>16)*179|0)+(((e&65535)*179|0)>>>16)))|0}function _o(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;n=vo(e)|0;a[i>>2]=n;a[r>>2]=(go(e,24-n|0)|0)&127;h=t;return}function vo(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function go(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=0-i|0;do{if(i)if((i|0)<0){e=e<>>(i+32|0);break}else{e=e<<32-i|e>>>i;break}}while(0);h=r;return e|0}function Eo(e){e=e|0;var i=0,r=0,t=0,n=0;i=h;if((e|0)<0){n=0;h=i;return n|0}if((e|0)>3966){n=2147483647;h=i;return n|0}t=e>>7;r=1<>16)<>7;else e=re(r>>7,n+((re(re(n,128-n|0)|0,-174)|0)>>16)|0)|0;n=r+e|0;h=i;return n|0}function To(e,i,r,f){e=e|0;i=i|0;r=r|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0;s=h;h=h+96|0;o=s+64|0;l=s+32|0;u=s;d=a[e+4556>>2]<<16>>16;d=(re(d,-5)|0)+(d*59246>>16)+3146|0;if((a[e+4604>>2]|0)==2)d=d+(d>>1)|0;c=e+4664|0;tn(l,r,a[c>>2]|0);e:do{if((a[e+4656>>2]|0)==1){k=e+4799|0;w=t[k>>0]|0;m=w<<24>>24<4;b=m&1;if(m){mo(o,f,r,w<<24>>24,a[c>>2]|0);tn(u,o,a[c>>2]|0);w=t[k>>0]|0;w=(re(w,w)|0)<<27;k=a[c>>2]|0;w=w>>16;m=0;while(1){if((m|0)>=(k|0))break e;p=l+(m<<1)|0;_=n[u+(m<<1)>>1]|0;n[p>>1]=((n[p>>1]|0)>>>1)+((re(_<<16>>16>>16,w)|0)+((re(_&65535,w)|0)>>>16));m=m+1|0}}}else b=0}while(0);dn(e+4776|0,r,a[e+4724>>2]|0,l,d,a[e+4692>>2]|0,t[e+4797>>0]|0);Qt(i+32|0,r,a[c>>2]|0);if(!b){Ll(i|0,i+32|0,a[c>>2]<<1|0)|0;h=s;return}else{mo(o,f,r,t[e+4799>>0]|0,a[c>>2]|0);Qt(i,o,a[c>>2]|0);h=s;return}}function Ao(e,i,r,f,o,s,l,u,c){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;var d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0;c=h;h=h+16|0;k=c+8|0;b=c+4|0;d=c;l=(l|0)!=0;m=0;p=2147483647;w=0;while(1){if((w|0)>=3)break;E=a[22392+(w<<2)>>2]|0;v=a[22688+(w<<2)>>2]|0;g=a[22760+(w<<2)>>2]|0;T=t[22776+w>>0]|0;A=o;S=e;M=0;y=0;_=a[f>>2]|0;while(1){if((y|0)>=(u|0))break;oa(k+y|0,b,d,S,A,v,g,E,s,(Eo(5333-_+896|0)|0)+-51|0,T);M=M+(a[b>>2]|0)|0;L=(a[d>>2]|0)+51|0;if((_+(po(L)|0)+-896|0)<0)_=0;else _=_+(po(L)|0)+-896|0;A=A+100|0;S=S+10|0;M=(M|0)<0?2147483647:M;y=y+1|0}v=(M|0)==2147483647?2147483646:M;if((v|0)<(p|0)){t[r>>0]=w;Ll(i|0,k|0,u|0)|0;m=_;p=v}if(l&(v|0)<12304)break;w=w+1|0}b=a[22688+(t[r>>0]<<2)>>2]|0;s=0;while(1){if((s|0)>=(u|0))break;d=i+s|0;o=s*5|0;r=0;while(1){if((r|0)>=5)break;n[e+(o+r<<1)>>1]=t[b+(((t[d>>0]|0)*5|0)+r)>>0]<<7;r=r+1|0}s=s+1|0}a[f>>2]=m;h=c;return}function So(e,i,r,n){e=e|0;i=i|0;r=r|0;n=n|0;var f=0,o=0,s=0;f=h;yl(e|0,0,300)|0;do{if(!n){if(!((i|0)==8e3|(i|0)==12e3|(i|0)==16e3)){o=-1;h=f;return o|0}if((r|0)==48e3|(r|0)==24e3|(r|0)==16e3|(r|0)==12e3|(r|0)==8e3){a[e+292>>2]=t[((r>>12)-((r|0)>16e3&1)>>((r|0)>24e3&1))+-1+(21536+((((i>>12)-((i|0)>16e3&1)>>((i|0)>24e3&1))+-1|0)*5|0))>>0];break}else{o=-1;h=f;return o|0}}else{if(!((i|0)==8e3|(i|0)==12e3|(i|0)==16e3|(i|0)==24e3|(i|0)==48e3)){o=-1;h=f;return o|0}if((r|0)==16e3|(r|0)==12e3|(r|0)==8e3){a[e+292>>2]=t[((r>>12)-((r|0)>16e3&1)>>((r|0)>24e3&1))+-1+(21520+((((i>>12)-((i|0)>16e3&1)>>((i|0)>24e3&1))+-1|0)*3|0))>>0];break}else{o=-1;h=f;return o|0}}}while(0);o=(i|0)/1e3|0;a[e+284>>2]=o;a[e+288>>2]=(r|0)/1e3|0;a[e+268>>2]=o*10;do{if((r|0)>(i|0)){n=e+264|0;if((i<<1|0)==(r|0)){a[n>>2]=1;o=0;break}else{a[n>>2]=2;o=1;break}}else{n=e+264|0;if((r|0)>=(i|0)){a[n>>2]=0;o=0;break}a[n>>2]=3;o=r<<2;if((o|0)==(i*3|0)){a[e+280>>2]=3;a[e+276>>2]=18;a[e+296>>2]=21552;o=0;break}n=r*3|0;if((n|0)==(i<<1|0)){a[e+280>>2]=2;a[e+276>>2]=18;a[e+296>>2]=21616;o=0;break}if((r<<1|0)==(i|0)){a[e+280>>2]=1;a[e+276>>2]=24;a[e+296>>2]=21656;o=0;break}if((n|0)==(i|0)){a[e+280>>2]=1;a[e+276>>2]=36;a[e+296>>2]=21688;o=0;break}if((o|0)==(i|0)){a[e+280>>2]=1;a[e+276>>2]=36;a[e+296>>2]=21728;o=0;break}if((r*6|0)==(i|0)){a[e+280>>2]=1;a[e+276>>2]=36;a[e+296>>2]=21768;o=0;break}else{o=-1;h=f;return o|0}}}while(0);s=((i<<(o|14)|0)/(r|0)|0)<<2;n=e+272|0;a[n>>2]=s;e=r<<16>>16;r=(r>>15)+1>>1;o=i<>16,e)|0)+((re(i&65535,e)|0)>>16)+(re(i,r)|0)|0)>=(o|0)){i=0;break}s=i+1|0;a[n>>2]=s;i=s}h=f;return i|0}function yo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,l=0;n=h;o=e+284|0;f=e+292|0;l=a[f>>2]|0;s=(a[o>>2]|0)-l|0;Ll(e+(l<<1)+168|0,r|0,s<<1|0)|0;l=a[e+264>>2]|0;if((l|0)==1){Do(e,i,e+168|0,a[o>>2]|0);Do(e,i+(a[e+288>>2]<<1)|0,r+(s<<1)|0,t-(a[o>>2]|0)|0)}else if((l|0)==3){Co(e,i,e+168|0,a[o>>2]|0);Co(e,i+(a[e+288>>2]<<1)|0,r+(s<<1)|0,t-(a[o>>2]|0)|0)}else if((l|0)==2){Ro(e,i,e+168|0,a[o>>2]|0);Ro(e,i+(a[e+288>>2]<<1)|0,r+(s<<1)|0,t-(a[o>>2]|0)|0)}else{Ll(i|0,e+168|0,a[o>>2]<<1|0)|0;Ll(i+(a[e+288>>2]<<1)|0,r+(s<<1)|0,t-(a[o>>2]|0)<<1|0)|0}i=a[f>>2]|0;Ll(e+168|0,r+(t-i<<1)|0,i<<1|0)|0;h=n;return}function Mo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0;f=h;o=t>>1;t=e+4|0;s=0;while(1){if((s|0)>=(o|0))break;b=s<<1;d=n[r+(b<<1)>>1]<<10;u=d-(a[e>>2]|0)|0;c=(re(u>>16,-25727)|0)+((re(u&65535,-25727)|0)>>16)|0;a[e>>2]=d+(u+c);b=n[r+((b|1)<<1)>>1]<<10;u=a[t>>2]|0;l=b-u|0;l=((l>>16)*9872|0)+(((l&65535)*9872|0)>>>16)|0;a[t>>2]=b+l;l=(d+c+u+l>>10)+1>>1;if((l|0)>32767)l=32767;else l=(l|0)<-32768?-32768:l&65535;n[i+(s<<1)>>1]=l;s=s+1|0}h=f;return}function Lo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0;f=h;h=h+1936|0;l=f;a[l+0>>2]=a[e+0>>2];a[l+4>>2]=a[e+4>>2];a[l+8>>2]=a[e+8>>2];a[l+12>>2]=a[e+12>>2];o=e+16|0;s=l+16|0;while(1){u=(t|0)<480?t:480;Oo(o,s,r,21808,u);b=l;c=u;while(1){if((c|0)<=2)break;v=a[b>>2]|0;k=b+4|0;_=a[k>>2]|0;w=b+8|0;p=a[w>>2]|0;d=b+12|0;m=a[d>>2]|0;m=(((v>>16)*4697|0)+(((v&65535)*4697|0)>>>16)+(((_>>16)*10739|0)+(((_&65535)*10739|0)>>>16))+(((p>>16)*8276|0)+(((p&65535)*8276|0)>>>16))+(((m>>16)*1567|0)+(((m&65535)*1567|0)>>>16))>>5)+1>>1;if((m|0)>32767)m=32767;else m=(m|0)<-32768?-32768:m&65535;n[i>>1]=m;p=a[k>>2]|0;_=a[w>>2]|0;v=a[d>>2]|0;b=a[b+16>>2]|0;b=(((p>>16)*1567|0)+(((p&65535)*1567|0)>>>16)+(((_>>16)*8276|0)+(((_&65535)*8276|0)>>>16))+(((v>>16)*10739|0)+(((v&65535)*10739|0)>>>16))+(((b>>16)*4697|0)+(((b&65535)*4697|0)>>>16))>>5)+1>>1;if((b|0)>32767)b=32767;else b=(b|0)<-32768?-32768:b&65535;n[i+2>>1]=b;i=i+4|0;b=d;c=c+-3|0}t=t-u|0;if((t|0)<=0)break;v=r+(u<<1)|0;_=l+(u<<2)|0;a[l+0>>2]=a[_+0>>2];a[l+4>>2]=a[_+4>>2];a[l+8>>2]=a[_+8>>2];a[l+12>>2]=a[_+12>>2];r=v}v=l+(u<<2)|0;a[e+0>>2]=a[v+0>>2];a[e+4>>2]=a[v+4>>2];a[e+8>>2]=a[v+8>>2];a[e+12>>2]=a[v+12>>2];h=f;return}function Oo(e,i,r,t,f){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0;o=h;l=e+4|0;u=t+2|0;s=0;while(1){if((s|0)>=(f|0))break;d=(a[e>>2]|0)+(n[r+(s<<1)>>1]<<8)|0;a[i+(s<<2)>>2]=d;d=d<<2;b=d>>16;c=n[t>>1]|0;d=d&65532;a[e>>2]=(a[l>>2]|0)+((re(b,c)|0)+((re(d,c)|0)>>16));c=n[u>>1]|0;a[l>>2]=(re(b,c)|0)+((re(d,c)|0)>>16);s=s+1|0}h=o;return}function Ro(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0;o=h;d=a[e+268>>2]|0;c=h;h=h+((2*((d<<1)+8|0)|0)+15&-16)|0;f=e+24|0;n[c+0>>1]=n[f+0>>1]|0;n[c+2>>1]=n[f+2>>1]|0;n[c+4>>1]=n[f+4>>1]|0;n[c+6>>1]=n[f+6>>1]|0;n[c+8>>1]=n[f+8>>1]|0;n[c+10>>1]=n[f+10>>1]|0;n[c+12>>1]=n[f+12>>1]|0;n[c+14>>1]=n[f+14>>1]|0;l=a[e+272>>2]|0;u=e+268|0;s=c+16|0;while(1){d=(t|0)<(d|0)?t:d;Bo(e,s,r,d);i=No(i,c,d<<17,l)|0;t=t-d|0;if((t|0)<=0)break;b=r+(d<<1)|0;d=c+(d<<1<<1)|0;n[c+0>>1]=n[d+0>>1]|0;n[c+2>>1]=n[d+2>>1]|0;n[c+4>>1]=n[d+4>>1]|0;n[c+6>>1]=n[d+6>>1]|0;n[c+8>>1]=n[d+8>>1]|0;n[c+10>>1]=n[d+10>>1]|0;n[c+12>>1]=n[d+12>>1]|0;n[c+14>>1]=n[d+14>>1]|0;r=b;d=a[u>>2]|0}b=c+(d<<1<<1)|0;n[f+0>>1]=n[b+0>>1]|0;n[f+2>>1]=n[b+2>>1]|0;n[f+4>>1]=n[b+4>>1]|0;n[f+6>>1]=n[b+6>>1]|0;n[f+8>>1]=n[b+8>>1]|0;n[f+10>>1]=n[b+10>>1]|0;n[f+12>>1]=n[b+12>>1]|0;n[f+14>>1]=n[b+14>>1]|0;h=o;return}function No(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var a=0,f=0,o=0,s=0,l=0;a=h;f=0;while(1){if((f|0)>=(r|0))break;o=((f&65535)*12|0)>>>16;s=f>>16;l=re(n[i+(s<<1)>>1]|0,n[21824+(o<<3)>>1]|0)|0;l=l+(re(n[i+(s+1<<1)>>1]|0,n[21826+(o<<3)>>1]|0)|0)|0;l=l+(re(n[i+(s+2<<1)>>1]|0,n[21828+(o<<3)>>1]|0)|0)|0;l=l+(re(n[i+(s+3<<1)>>1]|0,n[21830+(o<<3)>>1]|0)|0)|0;o=11-o|0;l=l+(re(n[i+(s+4<<1)>>1]|0,n[21830+(o<<3)>>1]|0)|0)|0;l=l+(re(n[i+(s+5<<1)>>1]|0,n[21828+(o<<3)>>1]|0)|0)|0;l=l+(re(n[i+(s+6<<1)>>1]|0,n[21826+(o<<3)>>1]|0)|0)|0;o=(l+(re(n[i+(s+7<<1)>>1]|0,n[21824+(o<<3)>>1]|0)|0)>>14)+1>>1;if((o|0)>32767)o=32767;else o=(o|0)<-32768?-32768:o&65535;n[e>>1]=o;e=e+2|0;f=f+t|0}h=a;return e|0}function Co(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0;s=h;k=a[e+268>>2]|0;w=a[e+276>>2]|0;f=h;h=h+((4*(k+w|0)|0)+15&-16)|0;b=e+24|0;o=e+276|0;Ll(f|0,b|0,w<<2|0)|0;l=e+296|0;u=(a[l>>2]|0)+4|0;d=a[e+272>>2]|0;n=e+268|0;c=e+280|0;while(1){k=(t|0)<(k|0)?t:k;Oo(e,f+(w<<2)|0,r,a[l>>2]|0,k);i=Po(i,f,u,a[o>>2]|0,a[c>>2]|0,k<<16,d)|0;t=t-k|0;if((t|0)<=1)break;w=a[o>>2]|0;Ll(f|0,f+(k<<2)|0,w<<2|0)|0;r=r+(k<<1)|0;k=a[n>>2]|0}Ll(b|0,f+(k<<2)|0,a[o>>2]<<2|0)|0;h=s;return}function Po(e,i,r,t,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;s=s|0;var l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0;l=h;if((t|0)==36){c=r+2|0;d=r+4|0;b=r+6|0;k=r+8|0;w=r+10|0;m=r+12|0;p=r+14|0;_=r+16|0;v=r+18|0;g=r+20|0;E=r+22|0;T=r+24|0;A=r+26|0;S=r+28|0;u=r+30|0;f=r+32|0;t=r+34|0;y=0;while(1){if((y|0)>=(o|0))break;L=y>>16;M=(a[i+(L<<2)>>2]|0)+(a[i+(L+35<<2)>>2]|0)|0;O=n[r>>1]|0;O=(re(M>>16,O)|0)+((re(M&65535,O)|0)>>16)|0;M=(a[i+(L+1<<2)>>2]|0)+(a[i+(L+34<<2)>>2]|0)|0;R=n[c>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+2<<2)>>2]|0)+(a[i+(L+33<<2)>>2]|0)|0;O=n[d>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;M=(a[i+(L+3<<2)>>2]|0)+(a[i+(L+32<<2)>>2]|0)|0;R=n[b>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+4<<2)>>2]|0)+(a[i+(L+31<<2)>>2]|0)|0;O=n[k>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;M=(a[i+(L+5<<2)>>2]|0)+(a[i+(L+30<<2)>>2]|0)|0;R=n[w>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+6<<2)>>2]|0)+(a[i+(L+29<<2)>>2]|0)|0;O=n[m>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;M=(a[i+(L+7<<2)>>2]|0)+(a[i+(L+28<<2)>>2]|0)|0;R=n[p>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+8<<2)>>2]|0)+(a[i+(L+27<<2)>>2]|0)|0;O=n[_>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;M=(a[i+(L+9<<2)>>2]|0)+(a[i+(L+26<<2)>>2]|0)|0;R=n[v>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+10<<2)>>2]|0)+(a[i+(L+25<<2)>>2]|0)|0;O=n[g>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;M=(a[i+(L+11<<2)>>2]|0)+(a[i+(L+24<<2)>>2]|0)|0;R=n[E>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+12<<2)>>2]|0)+(a[i+(L+23<<2)>>2]|0)|0;O=n[T>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;M=(a[i+(L+13<<2)>>2]|0)+(a[i+(L+22<<2)>>2]|0)|0;R=n[A>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+14<<2)>>2]|0)+(a[i+(L+21<<2)>>2]|0)|0;O=n[S>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;M=(a[i+(L+15<<2)>>2]|0)+(a[i+(L+20<<2)>>2]|0)|0;R=n[u>>1]|0;R=O+((re(M>>16,R)|0)+((re(M&65535,R)|0)>>16))|0;M=(a[i+(L+16<<2)>>2]|0)+(a[i+(L+19<<2)>>2]|0)|0;O=n[f>>1]|0;O=R+((re(M>>16,O)|0)+((re(M&65535,O)|0)>>16))|0;L=(a[i+(L+17<<2)>>2]|0)+(a[i+(L+18<<2)>>2]|0)|0;M=n[t>>1]|0;M=(O+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))>>5)+1>>1;if((M|0)>32767)M=32767;else M=(M|0)<-32768?-32768:M&65535;n[e>>1]=M;e=e+2|0;y=y+s|0}h=l;return e|0}else if((t|0)==18){t=f<<16>>16;f=f+-1|0;u=0;while(1){if((u|0)>=(o|0))break;R=u>>16;c=(re(u&65535,t)|0)>>16;O=c*9|0;L=a[i+(R<<2)>>2]|0;y=n[r+(O<<1)>>1]|0;y=(re(L>>16,y)|0)+((re(L&65535,y)|0)>>16)|0;L=a[i+(R+1<<2)>>2]|0;M=n[r+(O+1<<1)>>1]|0;M=y+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+2<<2)>>2]|0;y=n[r+(O+2<<1)>>1]|0;y=M+((re(L>>16,y)|0)+((re(L&65535,y)|0)>>16))|0;L=a[i+(R+3<<2)>>2]|0;M=n[r+(O+3<<1)>>1]|0;M=y+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+4<<2)>>2]|0;y=n[r+(O+4<<1)>>1]|0;y=M+((re(L>>16,y)|0)+((re(L&65535,y)|0)>>16))|0;L=a[i+(R+5<<2)>>2]|0;M=n[r+(O+5<<1)>>1]|0;M=y+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+6<<2)>>2]|0;y=n[r+(O+6<<1)>>1]|0;y=M+((re(L>>16,y)|0)+((re(L&65535,y)|0)>>16))|0;L=a[i+(R+7<<2)>>2]|0;M=n[r+(O+7<<1)>>1]|0;M=y+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+8<<2)>>2]|0;O=n[r+(O+8<<1)>>1]|0;O=M+((re(L>>16,O)|0)+((re(L&65535,O)|0)>>16))|0;c=(f-c|0)*9|0;L=a[i+(R+17<<2)>>2]|0;M=n[r+(c<<1)>>1]|0;M=O+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+16<<2)>>2]|0;O=n[r+(c+1<<1)>>1]|0;O=M+((re(L>>16,O)|0)+((re(L&65535,O)|0)>>16))|0;L=a[i+(R+15<<2)>>2]|0;M=n[r+(c+2<<1)>>1]|0;M=O+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+14<<2)>>2]|0;O=n[r+(c+3<<1)>>1]|0;O=M+((re(L>>16,O)|0)+((re(L&65535,O)|0)>>16))|0;L=a[i+(R+13<<2)>>2]|0;M=n[r+(c+4<<1)>>1]|0;M=O+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+12<<2)>>2]|0;O=n[r+(c+5<<1)>>1]|0;O=M+((re(L>>16,O)|0)+((re(L&65535,O)|0)>>16))|0;L=a[i+(R+11<<2)>>2]|0;M=n[r+(c+6<<1)>>1]|0;M=O+((re(L>>16,M)|0)+((re(L&65535,M)|0)>>16))|0;L=a[i+(R+10<<2)>>2]|0;O=n[r+(c+7<<1)>>1]|0;O=M+((re(L>>16,O)|0)+((re(L&65535,O)|0)>>16))|0;R=a[i+(R+9<<2)>>2]|0;c=n[r+(c+8<<1)>>1]|0;c=(O+((re(R>>16,c)|0)+((re(R&65535,c)|0)>>16))>>5)+1>>1;if((c|0)>32767)c=32767;else c=(c|0)<-32768?-32768:c&65535;n[e>>1]=c;e=e+2|0;u=u+s|0}h=l;return e|0}else if((t|0)==24){u=r+2|0;_=r+4|0;p=r+6|0;m=r+8|0;w=r+10|0;k=r+12|0;b=r+14|0;d=r+16|0;c=r+18|0;t=r+20|0;f=r+22|0;v=0;while(1){if((v|0)>=(o|0))break;R=v>>16;g=(a[i+(R<<2)>>2]|0)+(a[i+(R+23<<2)>>2]|0)|0;O=n[r>>1]|0;O=(re(g>>16,O)|0)+((re(g&65535,O)|0)>>16)|0;g=(a[i+(R+1<<2)>>2]|0)+(a[i+(R+22<<2)>>2]|0)|0;L=n[u>>1]|0;L=O+((re(g>>16,L)|0)+((re(g&65535,L)|0)>>16))|0;g=(a[i+(R+2<<2)>>2]|0)+(a[i+(R+21<<2)>>2]|0)|0;O=n[_>>1]|0;O=L+((re(g>>16,O)|0)+((re(g&65535,O)|0)>>16))|0;g=(a[i+(R+3<<2)>>2]|0)+(a[i+(R+20<<2)>>2]|0)|0;L=n[p>>1]|0;L=O+((re(g>>16,L)|0)+((re(g&65535,L)|0)>>16))|0;g=(a[i+(R+4<<2)>>2]|0)+(a[i+(R+19<<2)>>2]|0)|0;O=n[m>>1]|0;O=L+((re(g>>16,O)|0)+((re(g&65535,O)|0)>>16))|0;g=(a[i+(R+5<<2)>>2]|0)+(a[i+(R+18<<2)>>2]|0)|0;L=n[w>>1]|0;L=O+((re(g>>16,L)|0)+((re(g&65535,L)|0)>>16))|0;g=(a[i+(R+6<<2)>>2]|0)+(a[i+(R+17<<2)>>2]|0)|0;O=n[k>>1]|0;O=L+((re(g>>16,O)|0)+((re(g&65535,O)|0)>>16))|0;g=(a[i+(R+7<<2)>>2]|0)+(a[i+(R+16<<2)>>2]|0)|0;L=n[b>>1]|0;L=O+((re(g>>16,L)|0)+((re(g&65535,L)|0)>>16))|0;g=(a[i+(R+8<<2)>>2]|0)+(a[i+(R+15<<2)>>2]|0)|0;O=n[d>>1]|0;O=L+((re(g>>16,O)|0)+((re(g&65535,O)|0)>>16))|0;g=(a[i+(R+9<<2)>>2]|0)+(a[i+(R+14<<2)>>2]|0)|0;L=n[c>>1]|0;L=O+((re(g>>16,L)|0)+((re(g&65535,L)|0)>>16))|0;g=(a[i+(R+10<<2)>>2]|0)+(a[i+(R+13<<2)>>2]|0)|0;O=n[t>>1]|0;O=L+((re(g>>16,O)|0)+((re(g&65535,O)|0)>>16))|0;R=(a[i+(R+11<<2)>>2]|0)+(a[i+(R+12<<2)>>2]|0)|0;g=n[f>>1]|0;g=(O+((re(R>>16,g)|0)+((re(R&65535,g)|0)>>16))>>5)+1>>1;if((g|0)>32767)g=32767;else g=(g|0)<-32768?-32768:g&65535;n[e>>1]=g;e=e+2|0;v=v+s|0}h=l;return e|0}else{R=e;h=l;return R|0}return 0}function Bo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0;d=h;l=e+4|0;u=e+8|0;f=e+12|0;o=e+16|0;s=e+20|0;c=0;while(1){if((c|0)>=(t|0))break;k=n[r+(c<<1)>>1]<<10;b=a[e>>2]|0;w=k-b|0;w=((w>>16)*1746|0)+(((w&65535)*1746|0)>>>16)|0;b=b+w|0;a[e>>2]=k+w;w=a[l>>2]|0;m=b-w|0;m=((m>>16)*14986|0)+(((m&65535)*14986|0)>>>16)|0;w=w+m|0;a[l>>2]=b+m;m=w-(a[u>>2]|0)|0;b=(re(m>>16,-26453)|0)+((re(m&65535,-26453)|0)>>16)|0;a[u>>2]=w+(m+b);b=(w+b>>9)+1>>1;if((b|0)>32767)w=32767;else w=(b|0)<-32768?-32768:b&65535;b=c<<1;n[i+(b<<1)>>1]=w;p=a[f>>2]|0;m=k-p|0;m=((m>>16)*6854|0)+(((m&65535)*6854|0)>>>16)|0;p=p+m|0;a[f>>2]=k+m;m=a[o>>2]|0;w=p-m|0;w=((w>>16)*25769|0)+(((w&65535)*25769|0)>>>16)|0;m=m+w|0;a[o>>2]=p+w;w=m-(a[s>>2]|0)|0;k=(re(w>>16,-9994)|0)+((re(w&65535,-9994)|0)>>16)|0;a[s>>2]=m+(w+k);k=(m+k>>9)+1>>1;if((k|0)>32767)k=32767;else k=(k|0)<-32768?-32768:k&65535;n[i+((b|1)<<1)>>1]=k;c=c+1|0}h=d;return}function Do(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0;n=h;Bo(e,i,r,t);h=n;return}function Io(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,f=0,o=0,s=0;r=h;h=h+64|0;t=r+32|0;f=r+16|0;n=r+8|0;s=r;Uo(t,i,8);Uo(f,t,4);Uo(n,f,2);Uo(s,n,1);o=a[n>>2]|0;Fo(e,o,a[s>>2]|0,26128);s=a[f>>2]|0;Fo(e,s,o,25976);o=a[t>>2]|0;Fo(e,o,s,25824);Fo(e,a[i>>2]|0,o,25672);Fo(e,a[i+8>>2]|0,a[t+4>>2]|0,25672);o=a[t+8>>2]|0;Fo(e,o,a[f+4>>2]|0,25824);Fo(e,a[i+16>>2]|0,o,25672);Fo(e,a[i+24>>2]|0,a[t+12>>2]|0,25672);o=a[f+8>>2]|0;Fo(e,o,a[n+4>>2]|0,25976);n=a[t+16>>2]|0;Fo(e,n,o,25824);Fo(e,a[i+32>>2]|0,n,25672);Fo(e,a[i+40>>2]|0,a[t+20>>2]|0,25672);n=a[t+24>>2]|0;Fo(e,n,a[f+12>>2]|0,25824);Fo(e,a[i+48>>2]|0,n,25672);Fo(e,a[i+56>>2]|0,a[t+28>>2]|0,25672);h=r;return}function Uo(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0;t=h;n=0;while(1){if((n|0)>=(r|0))break;f=n<<1;a[e+(n<<2)>>2]=(a[i+(f<<2)>>2]|0)+(a[i+((f|1)<<2)>>2]|0);n=n+1|0}h=t;return}function Fo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0;n=h;if((r|0)<=0){h=n;return}Rr(e,i,t+(f[26280+r>>0]|0)|0,8);h=n;return}function Go(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,a=0,f=0,o=0,s=0,l=0;t=h;h=h+32|0;s=t+24|0;f=t+16|0;o=t;a=s+2|0;Vo(s,a,i,r,26128);l=f+2|0;Vo(f,l,i,n[s>>1]|0,25976);r=o+2|0;Vo(o,r,i,n[f>>1]|0,25824);Vo(e,e+2|0,i,n[o>>1]|0,25672);Vo(e+4|0,e+6|0,i,n[r>>1]|0,25672);r=o+4|0;s=o+6|0;Vo(r,s,i,n[l>>1]|0,25824);Vo(e+8|0,e+10|0,i,n[r>>1]|0,25672);Vo(e+12|0,e+14|0,i,n[s>>1]|0,25672);s=f+4|0;f=f+6|0;Vo(s,f,i,n[a>>1]|0,25976);r=o+8|0;a=o+10|0;Vo(r,a,i,n[s>>1]|0,25824);Vo(e+16|0,e+18|0,i,n[r>>1]|0,25672);Vo(e+20|0,e+22|0,i,n[a>>1]|0,25672);a=o+12|0;r=o+14|0;Vo(a,r,i,n[f>>1]|0,25824);Vo(e+24|0,e+26|0,i,n[a>>1]|0,25672);Vo(e+28|0,e+30|0,i,n[r>>1]|0,25672);h=t;return}function Vo(e,i,r,t,a){e=e|0;i=i|0;r=r|0;t=t|0;a=a|0;var o=0;o=h;if((t|0)>0){a=vr(r,a+(f[26280+t>>0]|0)|0,8)|0;n[e>>1]=a;e=t-a&65535;n[i>>1]=e;h=o;return}else{n[e>>1]=0;e=0;n[i>>1]=e;h=o;return}}function Wo(e){e=e|0;var i=0,r=0;i=h;if((e|0)<0){e=0-e|0;if((e|0)>191){e=0;h=i;return e|0}r=e>>5;e=(a[21920+(r<<2)>>2]|0)-(re(a[21944+(r<<2)>>2]<<16>>16,e&31)|0)|0;h=i;return e|0}else{if((e|0)>191){r=32767;h=i;return r|0}r=e>>5;r=(a[21968+(r<<2)>>2]|0)+(re(a[21944+(r<<2)>>2]<<16>>16,e&31)|0)|0;h=i;return r|0}return 0}function xo(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,l=0,u=0,c=0;n=h;f=0;while(1){if((f|0)>=(t|0)){f=1;break}a[i+(f<<2)>>2]=f;f=f+1|0}while(1){if((f|0)>=(t|0))break;o=a[e+(f<<2)>>2]|0;s=f;while(1){l=s+-1|0;if((s|0)<=0)break;u=a[e+(l<<2)>>2]|0;if((o|0)>=(u|0))break;a[e+(s<<2)>>2]=u;a[i+(s<<2)>>2]=a[i+(l<<2)>>2];s=l}a[e+(s<<2)>>2]=o;a[i+(s<<2)>>2]=f;f=f+1|0}f=e+(t+-1<<2)|0;o=t+-2|0;while(1){if((t|0)>=(r|0))break;s=a[e+(t<<2)>>2]|0;if((s|0)<(a[f>>2]|0)){l=o;while(1){if((l|0)<=-1)break;u=a[e+(l<<2)>>2]|0;if((s|0)>=(u|0))break;c=l+1|0;a[e+(c<<2)>>2]=u;a[i+(c<<2)>>2]=a[i+(l<<2)>>2];l=l+-1|0}c=l+1|0;a[e+(c<<2)>>2]=s;a[i+(c<<2)>>2]=t}t=t+1|0}h=n;return}function Ko(e,i){e=e|0;i=i|0;var r=0,t=0,a=0,f=0,o=0,s=0;r=h;t=1;while(1){if((t|0)>=(i|0))break;a=n[e+(t<<1)>>1]|0;f=t;while(1){o=f+-1|0;if((f|0)<=0)break;s=n[e+(o<<1)>>1]|0;if(a<<16>>16>=s<<16>>16)break;n[e+(f<<1)>>1]=s;f=o}n[e+(f<<1)>>1]=a;t=t+1|0}h=r;return}function Ho(e,i,r,f,s,l,u,c,d,b,k){e=e|0;i=i|0;r=r|0;f=f|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;var w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0;w=h;h=h+16|0;p=w+8|0;E=w+4|0;T=w;v=i+-4|0;g=k+2|0;m=h;h=h+((2*g|0)+15&-16)|0;A=0;while(1){if((A|0)>=(g|0))break;S=A+-2|0;y=n[i+(S<<1)>>1]|0;S=n[r+(S<<1)>>1]|0;M=y+S|0;S=y-S|0;n[i+(A+-2<<1)>>1]=(M>>>1)+(M&1);S=(S>>1)+(S&1)|0;if((S|0)>32767)S=32767;else S=(S|0)<-32768?-32768:S&65535;n[m+(A<<1)>>1]=S;A=A+1|0}g=e+4|0;A=o[g>>1]|o[g+2>>1]<<16;n[v>>1]=A;n[v+2>>1]=A>>>16;v=e+8|0;A=o[v>>1]|o[v+2>>1]<<16;a[m>>2]=A;S=i+(k+-2<<1)|0;S=o[S>>1]|o[S+2>>1]<<16;n[g>>1]=S;n[g+2>>1]=S>>>16;g=m+(k<<1)|0;g=o[g>>1]|o[g+2>>1]<<16;n[v>>1]=g;n[v+2>>1]=g>>>16;v=h;h=h+((2*k|0)+15&-16)|0;g=h;h=h+((2*k|0)+15&-16)|0;A=A&65535;S=0;while(1){if((S|0)>=(k|0))break;y=n[i+(S+-1<<1)>>1]|0;M=((n[i+(S+-2<<1)>>1]|0)+(n[i+(S<<1)>>1]|0)+(y<<16>>16<<1)>>1)+1>>1;n[v+(S<<1)>>1]=M;n[g+(S<<1)>>1]=(y&65535)-M;S=S+1|0}y=h;h=h+((2*k|0)+15&-16)|0;S=h;h=h+((2*k|0)+15&-16)|0;M=0;while(1){if((M|0)>=(k|0))break;L=M+1|0;O=n[m+(L<<1)>>1]|0;R=((A<<16>>16)+(n[m+(M+2<<1)>>1]|0)+(O<<16>>16<<1)>>1)+1>>1;n[y+(M<<1)>>1]=R;n[S+(M<<1)>>1]=(O&65535)-R;A=O;M=L}R=(b*10|0)==(k|0);A=R?328:655;c=c<<16>>16;c=re(c,c)|0;A=(re(c>>>16,A)|0)+((re(c&65535,A)|0)>>>16)|0;v=Qo(E,v,y,e+12|0,k,A)|0;a[p>>2]=v;g=Qo(T,g,S,e+20|0,k,A)|0;c=p+4|0;a[c>>2]=g;E=(a[T>>2]|0)+((a[E>>2]<<16>>16)*3|0)|0;E=(E|0)<65536?E:65536;u=u-(R?1200:600)|0;u=(u|0)<1?1:u;T=((b<<16>>16)*900|0)+2e3|0;y=E*3|0;S=zo(u,y+851968|0,19)|0;a[l>>2]=S;if((S|0)<(T|0)){a[l>>2]=T;R=u-T|0;a[l+4>>2]=R;S=T<<16>>16;S=zo((R<<1)-T|0,(re(y+65536>>16,S)|0)+((re(y&65535,S)|0)>>16)|0,16)|0;if((S|0)>16384)y=16384;else y=(S|0)<0?0:S}else{a[l+4>>2]=u-S;y=16384}S=e+28|0;L=n[S>>1]|0;O=L&65535;R=A<<16>>16;n[S>>1]=O+((re(y-(L<<16>>16)>>16,R)|0)+((re(y-O&65535,R)|0)>>>16));t[s>>0]=0;e:do{if(!d){A=(n[e+30>>1]|0)==0;do{if(A){if((u<<3|0)>=(T*13|0)){d=n[S>>1]|0;R=d<<16>>16;if(((re(E>>16,R)|0)+((re(E&65535,R)|0)>>16)|0)>=819){if(!A){_=25;break}d=n[S>>1]|0;break}}else d=n[S>>1]|0;_=d<<16>>16;a[p>>2]=(re(_,v<<16>>16)|0)>>14;a[c>>2]=(re(_,g<<16>>16)|0)>>14;fs(p,f);a[p>>2]=0;a[c>>2]=0;a[l>>2]=u;a[l+4>>2]=0;t[s>>0]=1;f=0;_=33;break e}else _=25}while(0);do{if((_|0)==25){if((u<<3|0)>=(T*11|0)){_=n[S>>1]|0;R=_<<16>>16;if(((re(E>>16,R)|0)+((re(E&65535,R)|0)>>16)|0)>=328){d=_;break}}else _=n[S>>1]|0;_=_<<16>>16;a[p>>2]=(re(_,v<<16>>16)|0)>>14;a[c>>2]=(re(_,g<<16>>16)|0)>>14;fs(p,f);a[p>>2]=0;a[c>>2]=0;f=0;_=32;break e}}while(0);if(d<<16>>16>15565){fs(p,f);f=16384;_=32;break}else{_=d<<16>>16;a[p>>2]=(re(_,v<<16>>16)|0)>>14;a[c>>2]=(re(_,g<<16>>16)|0)>>14;fs(p,f);f=n[S>>1]|0;_=32;break}}else{a[p>>2]=0;a[c>>2]=0;fs(p,f);f=0;_=32}}while(0);if((_|0)==32)if((t[s>>0]|0)==1)_=33;else{n[e+32>>1]=0;_=37}do{if((_|0)==33){_=e+32|0;R=(o[_>>1]|0)+(k-(b<<3))|0;n[_>>1]=R;if((R<<16>>16|0)<(b*5|0)){t[s>>0]=0;_=38;break}else{n[_>>1]=1e4;_=37;break}}}while(0);if((_|0)==37)if(!(t[s>>0]|0))_=38;else l=f;if((_|0)==38){s=l+4|0;if((a[s>>2]|0)<1){a[s>>2]=1;a[l>>2]=Yo(u+-1|0)|0;l=f}else l=f}E=n[e>>1]|0;s=e+2|0;T=n[s>>1]|0;_=e+30|0;R=n[_>>1]|0;g=R<<16>>16;f=b<<3;p=a[p>>2]|0;u=(65536/(f|0)|0)<<16>>16;d=((re(p-(E&65535)<<16>>16,u)|0)>>15)+1>>1;b=a[c>>2]|0;v=((re(b-(T&65535)<<16>>16,u)|0)>>15)+1>>1;u=(re(l-g>>16,u)|0)+((re(l-(R&65535)&65535,u)|0)>>16)<<10;E=0-(E<<16>>16)|0;T=0-(T<<16>>16)|0;c=0;g=g<<10;while(1){if((c|0)>=(f|0))break;E=E-d|0;T=T-v|0;g=g+u|0;A=c+1|0;R=n[i+(c+-1<<1)>>1]|0;L=(n[i+(c+-2<<1)>>1]|0)+(n[i+(c<<1)>>1]|0)+(R<<1)|0;M=n[m+(A<<1)>>1]|0;O=E<<16>>16;S=T<<16>>16;S=((re(g>>16,M)|0)+((re(g&64512,M)|0)>>16)+((re(L>>7,O)|0)+((re(L<<9&65024,O)|0)>>16))+((re(R>>5,S)|0)+((re(R<<11&63488,S)|0)>>16))>>7)+1>>1;if((S|0)>32767)S=32767;else S=(S|0)<-32768?-32768:S&65535;n[r+(c+-1<<1)>>1]=S;c=A}v=l>>6;c=l<<10&64512;d=0-p<<16>>16;u=0-b<<16>>16;while(1){if((f|0)>=(k|0))break;g=f+1|0;E=n[i+(f+-1<<1)>>1]|0;R=(n[i+(f+-2<<1)>>1]|0)+(n[i+(f<<1)>>1]|0)+(E<<1)|0;O=n[m+(g<<1)>>1]|0;E=((re(v,O)|0)+((re(c,O)|0)>>16)+((re(R>>7,d)|0)+((re(R<<9&65024,d)|0)>>16))+((re(E>>5,u)|0)+((re(E<<11&63488,u)|0)>>16))>>7)+1>>1;if((E|0)>32767)E=32767;else E=(E|0)<-32768?-32768:E&65535;n[r+(f+-1<<1)>>1]=E;f=g}n[e>>1]=p;n[s>>1]=b;n[_>>1]=l;h=w;return}function zo(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0,o=0;t=h;a=qo((e|0)>0?e:0-e|0)|0;o=e<0?i:0-i|0)|0)+-1|0;e=i<>16|0)|0)<<16>>16;f=(re(o>>16,i)|0)+((re(o&65535,i)|0)>>16)|0;e=Il(e|0,((e|0)<0)<<31>>31|0,f|0,((f|0)<0)<<31>>31|0)|0;e=Al(e|0,C|0,29)|0;e=o-(e&-8)|0;i=f+((re(e>>16,i)|0)+((re(e&65535,i)|0)>>16))|0;r=a+28-n-r|0;if((r|0)>=0){h=t;return((r|0)<32?i>>r:0)|0}r=0-r|0;e=-2147483648>>r;n=2147483647>>>r;if((e|0)>(n|0)){if((i|0)>(e|0)){o=e;o=o<(n|0)){o=n;o=o<>1]|o[u+2>>1]<<16;n[i>>1]=m;n[i+2>>1]=m>>>16;m=e+8|0;w=o[m>>1]|o[m+2>>1]<<16;n[r>>1]=w;n[r+2>>1]=w>>>16;w=i+(s<<1)|0;w=o[w>>1]|o[w+2>>1]<<16;n[u>>1]=w;n[u+2>>1]=w>>>16;u=r+(s<<1)|0;u=o[u>>1]|o[u+2>>1]<<16;n[m>>1]=u;n[m+2>>1]=u>>>16;m=n[e>>1]|0;u=e+2|0;w=n[u>>1]|0;c=f<<3;d=(65536/(c|0)|0)<<16>>16;k=((re((a[t>>2]|0)-(m&65535)<<16>>16,d)|0)>>15)+1>>1;f=t+4|0;d=((re((a[f>>2]|0)-(w&65535)<<16>>16,d)|0)>>15)+1>>1;m=m<<16>>16;w=w<<16>>16;p=0;while(1){if((p|0)>=(c|0))break;m=m+k|0;w=w+d|0;b=p+1|0;v=n[i+(b<<1)>>1]|0;E=(n[i+(p<<1)>>1]|0)+(n[i+(p+2<<1)>>1]|0)+(v<<1)|0;p=r+(b<<1)|0;g=m<<16>>16;_=w<<16>>16;_=((n[p>>1]<<8)+((re(E>>7,g)|0)+((re(E<<9&65024,g)|0)>>16))+((re(v>>5,_)|0)+((re(v<<11&63488,_)|0)>>16))>>7)+1>>1;if((_|0)>32767)_=32767;else _=(_|0)<-32768?-32768:_&65535;n[p>>1]=_;p=b}d=a[t>>2]<<16>>16;b=a[f>>2]<<16>>16;while(1){if((c|0)>=(s|0))break;k=c+1|0;w=n[i+(k<<1)>>1]|0;E=(n[i+(c<<1)>>1]|0)+(n[i+(c+2<<1)>>1]|0)+(w<<1)|0;c=r+(k<<1)|0;w=((n[c>>1]<<8)+((re(E>>7,d)|0)+((re(E<<9&65024,d)|0)>>16))+((re(w>>5,b)|0)+((re(w<<11&63488,b)|0)>>16))>>7)+1>>1;if((w|0)>32767)w=32767;else w=(w|0)<-32768?-32768:w&65535;n[c>>1]=w;c=k}n[e>>1]=a[t>>2];n[u>>1]=a[f>>2];t=0;while(1){if((t|0)>=(s|0))break;t=t+1|0;f=i+(t<<1)|0;E=n[f>>1]|0;u=r+(t<<1)|0;e=n[u>>1]|0;c=E+e|0;e=E-e|0;if((c|0)>32767)c=32767;else c=(c|0)<-32768?-32768:c&65535;n[f>>1]=c;if((e|0)>32767)e=32767;else e=(e|0)<-32768?-32768:e&65535;n[u>>1]=e}h=l;return}function Jo(e,i){e=e|0;i=i|0;var r=0,t=0,f=0,o=0;r=h;h=h+32|0;t=r;o=vr(e,24864,8)|0;f=(o|0)/5|0;a[t+8>>2]=f;a[t+20>>2]=o+(re(f,-5)|0);f=0;while(1){if((f|0)>=2){f=0;break}a[t+(f*12|0)>>2]=vr(e,24984,8)|0;a[t+(f*12|0)+4>>2]=vr(e,25e3,8)|0;f=f+1|0}while(1){if((f|0)>=2)break;e=t+(f*12|0)|0;o=(a[e>>2]|0)+((a[t+(f*12|0)+8>>2]|0)*3|0)|0;a[e>>2]=o;e=n[24832+(o<<1)>>1]|0;o=n[24832+(o+1<<1)>>1]|0;o=(re((o<<16>>16)-e>>16,429522944)|0)+(((o&65535)-e&65535)*6554|0)>>16;a[i+(f<<2)>>2]=e+(re(o,a[t+(f*12|0)+4>>2]<<17>>16|1)|0);f=f+1|0}a[i>>2]=(a[i>>2]|0)-(a[i+4>>2]|0);h=r;return}function Zo(e,i){e=e|0;i=i|0;var r=0;r=h;a[i>>2]=vr(e,24896,8)|0;h=r;return}function $o(e,i){e=e|0;i=i|0;var r=0,n=0;r=h;Rr(e,((t[i+2>>0]|0)*5|0)+(t[i+5>>0]|0)|0,24864,8);n=0;while(1){if((n|0)>=2)break;Rr(e,t[i+(n*3|0)>>0]|0,24984,8);Rr(e,t[i+(n*3|0)+1>>0]|0,25e3,8);n=n+1|0}h=r;return}function Xo(e,i){e=e|0;i=i|0;var r=0;r=h;Rr(e,i<<24>>24,24896,8);h=r;return}function Qo(e,i,r,t,n,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;var o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0;o=h;h=h+16|0;s=o+12|0;c=o+8|0;d=o+4|0;l=o;os(d,s,i,n);os(l,c,r,n);s=a[s>>2]|0;c=a[c>>2]|0;u=es(s,c)|0;u=u+(u&1)|0;c=a[l>>2]>>u-c;a[l>>2]=c;s=es(a[d>>2]>>u-s,1)|0;a[d>>2]=s;n=wo(i,r,u,n)|0;r=is(n,s,13)|0;if((r|0)>16384)r=16384;else r=(r|0)<-16384?-16384:r;b=r<<16>>16;k=(re(r>>16,b)|0)+((re(r&65535,b)|0)>>16)|0;d=es(f,(k|0)>0?k:0-k|0)|0;i=u>>1;w=a[t>>2]|0;f=(rs(s)|0)<>16;f=re(f-(a[t>>2]|0)>>16,d)|0;u=(rs(s)|0)<>2]=w+(f+((re(u-(a[t>>2]|0)&65535,d)|0)>>16));u=k<<16>>16;u=c-((re(n>>16,b)|0)+((re(n&65535,b)|0)>>16)<<4)+((re(s>>16,u)|0)+((re(s&65535,u)|0)>>16)<<6)|0;a[l>>2]=u;f=t+4|0;c=a[f>>2]|0;n=(rs(u)|0)<>2]|0)>>16,d)|0;i=(rs(u)|0)<>2]|0)&65535,d)|0)>>16))|0;a[f>>2]=d;f=a[t>>2]|0;f=is(d,(f|0)>1?f:1,14)|0;a[e>>2]=f;if((f|0)>32767){w=32767;a[e>>2]=w;h=o;return r|0}w=(f|0)<0?0:f;a[e>>2]=w;h=o;return r|0}function es(e,i){e=e|0;i=i|0;return((e|0)>(i|0)?e:i)|0}function is(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0,f=0,o=0;t=h;a=ns((e|0)>0?e:0-e|0)|0;o=e<0?i:0-i|0)|0)+-1|0;e=i<>16|0)|0)<<16>>16;f=(re(o>>16,i)|0)+((re(o&65535,i)|0)>>16)|0;e=Il(e|0,((e|0)<0)<<31>>31|0,f|0,((f|0)<0)<<31>>31|0)|0;e=Al(e|0,C|0,29)|0;e=o-(e&-8)|0;i=f+((re(e>>16,i)|0)+((re(e&65535,i)|0)>>16))|0;r=a+28-n-r|0;if((r|0)>=0){h=t;return((r|0)<32?i>>r:0)|0}r=0-r|0;e=-2147483648>>r;n=2147483647>>>r;if((e|0)>(n|0)){if((i|0)>(e|0)){o=e;o=o<(n|0)){o=n;o=o<>2]|0;r=((r&1|0)==0?46214:32768)>>>(r>>1);t=(re(a[t>>2]<<16>>16,13959168)|0)>>16;t=r+((re(r>>16,t)|0)+((re(r&65535,t)|0)>>16))|0;h=i;return t|0}function ts(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;n=ns(e)|0;a[i>>2]=n;a[r>>2]=(as(e,24-n|0)|0)&127;h=t;return}function ns(e){e=e|0;var i=0;i=h;if(!e)e=32;else e=Sl(e|0)|0;h=i;return e|0}function as(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;t=0-i|0;do{if(i)if((i|0)<0){e=e<>>(i+32|0);break}else{e=e<<32-i|e>>>i;break}}while(0);h=r;return e|0}function fs(e,i){e=e|0;i=i|0;var r=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0;s=h;k=0;o=0;while(1){if((o|0)>=2)break;r=e+(o<<2)|0;f=i+(o*3|0)|0;l=i+(o*3|0)+1|0;w=2147483647;b=0;e:while(1){if((b|0)>=15)break;u=n[24832+(b<<1)>>1]|0;d=b+1|0;c=n[24832+(d<<1)>>1]|0;c=(re((c<<16>>16)-u>>16,429522944)|0)+(((c&65535)-u&65535)*6554|0)>>16;b=b&255;m=0;while(1){if((m|0)>=5){b=d;continue e}_=u+(re(c,m<<17>>16|1)|0)|0;p=a[r>>2]|0;v=p-_|0;p=(v|0)>0?v:_-p|0;if((p|0)>=(w|0))break e;t[f>>0]=b;t[l>>0]=m;w=p;k=_;m=m+1|0}}_=t[f>>0]|0;v=(_<<24>>24|0)/3|0;t[i+(o*3|0)+2>>0]=v;t[f>>0]=(_&255)+(re(v<<24>>24,-3)|0);a[r>>2]=k;o=o+1|0}a[e>>2]=(a[e>>2]|0)-(a[e+4>>2]|0);h=s;return}function os(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,l=0,u=0,c=0;f=h;t=t+-1|0;u=0;o=0;while(1){if((o|0)>=(t|0)){l=0;break}l=n[r+(o<<1)>>1]|0;l=u+(re(l,l)|0)|0;u=n[r+((o|1)<<1)>>1]|0;u=l+(re(u,u)|0)|0;if((u|0)<0){s=4;break}o=o+2|0}if((s|0)==4){o=o+2|0;u=u>>>2;l=2}while(1){if((o|0)>=(t|0))break;c=n[r+(o<<1)>>1]|0;c=re(c,c)|0;s=n[r+(o+1<<1)>>1]|0;u=u+((c+(re(s,s)|0)|0)>>>l)|0;if((u|0)<0){u=u>>>2;l=l+2|0}o=o+2|0}if((o|0)==(t|0)){c=n[r+(t<<1)>>1]|0;u=u+((re(c,c)|0)>>>l)|0}if(u>>>0<=1073741823){c=u;u=l;a[i>>2]=u;a[e>>2]=c;h=f;return}c=u>>>2;u=l+2|0;a[i>>2]=u;a[e>>2]=c;h=f;return}function ss(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0,u=0.0,c=0,d=0.0;t=h;f=e+8504|0;s=a[f>>2]|0;o=a[e+8500>>2]|0;n=o-s|0;n=(n|0)<0?n+200|0:n;if(!((r|0)<=480|(s|0)==(o|0))){s=s+1|0;s=(s|0)==200?0:s}c=(s|0)==(o|0);o=o+-1|0;o=e+((((c?o:s)|0)<0?199:c?o:s)*28|0)+8512|0;a[i+0>>2]=a[o+0>>2];a[i+4>>2]=a[o+4>>2];a[i+8>>2]=a[o+8>>2];a[i+12>>2]=a[o+12>>2];a[i+16>>2]=a[o+16>>2];a[i+20>>2]=a[o+20>>2];a[i+24>>2]=a[o+24>>2];o=e+8508|0;r=(a[o>>2]|0)+((r|0)/120|0)|0;a[o>>2]=r;while(1){if((r|0)<=3)break;c=r+-4|0;a[o>>2]=c;a[f>>2]=(a[f>>2]|0)+1;r=c}r=a[f>>2]|0;if((r|0)>199)a[f>>2]=r+-200;f=n+-10|0;f=200-((f|0)>0?f:0)|0;u=0.0;n=0;while(1){if((n|0)>=(f|0))break;u=u+ +l[e+(n<<2)+7684>>2];n=n+1|0}while(1){if((n|0)>=200)break;d=u+ +l[e+(n<<2)+6884>>2];n=n+1|0;u=d}l[i+20>>2]=u*+l[e+8488>>2]+(1.0-u)*+l[e+8484>>2];h=t;return}function ls(e,i,r,t,n,f,o,s,l,u,c,d){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;c=c|0;d=d|0;var b=0,k=0,w=0;b=h;if(!r){a[d>>2]=0;ss(e,d,n);h=b;return}l=(l*195|0)/100|0;l=(l|0)<(t|0)?l:t;t=e+6880|0;w=a[t>>2]|0;k=w;w=l-w|0;while(1){us(e,i,r,(w|0)>480?480:w,k,f,o,s,u,c);w=w+-480|0;if((w|0)<=0)break;else k=k+480|0}a[t>>2]=l-n;a[d>>2]=0;ss(e,d,n);h=b;return}function us(e,i,r,t,n,f,o,s,u,c){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;var d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0.0,g=0,E=0.0,T=0,A=0,S=0,y=0,M=0,L=0.0,O=0.0,R=0.0,N=0.0,C=0.0,P=0.0,B=0.0,D=0.0,I=0.0,U=0.0,F=0,G=0.0,V=0.0,W=0.0,Y=0,q=0,j=0,J=0,Z=0,$=0.0,X=0.0;d=h;h=h+9888|0;S=d+9816|0;g=d+9744|0;_=d+9712|0;p=d+9608|0;m=d+9600|0;F=d+5760|0;T=d+1920|0;A=d+960|0;y=d;b=e+6860|0;a[b>>2]=(a[b>>2]|0)+1;w=e+6864|0;k=a[w>>2]|0;if((k|0)>19){v=1.0/20.0;if((k|0)>49)E=50.0;else M=4}else{v=1.0/+(k+1|0);M=4}if((M|0)==4)E=+(k+1|0);E=1.0/E;if((k|0)<=999){N=1.0/+(k+1|0);if((k|0)<4){l[e+6840>>2]=.5;q=a[i+72>>2]|0;if(!k){a[e+5760>>2]=240;k=240}else M=10}else M=8}else{N=1.0/1.0e3;M=8}if((M|0)==8){q=a[i+72>>2]|0;M=10}if((M|0)==10)k=a[e+5760>>2]|0;Y=e+5760|0;j=720-k|0;xl[c&3](r,e+(k<<2)+2880|0,(j|0)>(t|0)?t:j,n,f,o,s);j=a[Y>>2]|0;k=j+t|0;if((k|0)<720){a[Y>>2]=k;h=d;return}J=e+8500|0;i=a[J>>2]|0;k=e+(i*28|0)+8512|0;a[J>>2]=(i|0)>198?i+-199|0:i+1|0;J=0;while(1){if((J|0)>=240)break;W=+l[26352+(J<<2)>>2];l[F+(J<<3)>>2]=W*+l[e+(J<<2)+2880>>2];l[F+(J<<3)+4>>2]=W*+l[e+(J+240<<2)+2880>>2];Z=480-J+-1|0;l[F+(Z<<3)>>2]=W*+l[e+(Z<<2)+2880>>2];l[F+(Z<<3)+4>>2]=W*+l[e+(720-J+-1<<2)+2880>>2];J=J+1|0}Ll(e+2880|0,e+4800|0,960)|0;Z=j+-720+t|0;xl[c&3](r,e+3840|0,Z,n+720-j|0,f,o,s);a[Y>>2]=Z+240;Hr(q,F,T);W=+l[T>>2];if(W!=W|0.0!=0.0){a[k>>2]=0;h=d;return}else s=1;while(1){if((s|0)>=240)break;D=+l[T+(s<<3)>>2];j=480-s|0;B=+l[T+(j<<3)>>2];U=+l[T+(s<<3)+4>>2];G=+l[T+(j<<3)+4>>2];V=+hs(U-G,D+B)*.15915493667125702;j=e+(s<<2)|0;W=V-+l[j>>2];J=e+(s<<2)+960|0;I=W-+l[J>>2];G=+hs(B-D,U+G)*.15915493667125702;V=G-V;W=V-W;I=I-+x(+(I+.5));U=I*I;W=W-+x(+(W+.5));l[y+(s<<2)>>2]=+K(+I)+ +K(+W);W=W*W;W=W*W;Z=e+(s<<2)+1920|0;l[A+(s<<2)>>2]=1.0/((+l[Z>>2]+U*U*2.0+W)*.25*62341.81640625+1.0)+-.014999999664723873;l[j>>2]=G;l[J>>2]=V;l[Z>>2]=W;s=s+1|0}s=e+(i*28|0)+8528|0;l[s>>2]=0.0;e:do{if(!(a[w>>2]|0)){t=0;while(1){if((t|0)>=18)break e;l[e+(t<<2)+6416>>2]=1.0e10;l[e+(t<<2)+6488>>2]=-1.0e10;t=t+1|0}}}while(0);t=e+6852|0;B=0.0;P=0.0;R=0.0;D=0.0;O=0.0;C=0.0;L=0.0;r=0;while(1){if((r|0)>=18)break;c=r+1|0;n=a[27312+(c<<2)>>2]|0;G=0.0;V=0.0;F=a[27312+(r<<2)>>2]|0;I=0.0;while(1){if((F|0)>=(n|0))break;X=+l[T+(F<<3)>>2];Z=480-F|0;$=+l[T+(Z<<3)>>2];W=+l[T+(F<<3)+4>>2];U=+l[T+(Z<<3)+4>>2];U=X*X+$*$+W*W+U*U;W=I+U*+l[A+(F<<2)>>2];G=G+U;V=V+U*2.0*(.5-+l[y+(F<<2)>>2]);F=F+1|0;I=W}if(!(G<1.0e9)|(G!=G|0.0!=0.0)){M=30;break}l[e+((a[t>>2]|0)*72|0)+(r<<2)+5840>>2]=G;U=G+1.0000000036274937e-15;P=P+V/U;G=G+1.000000013351432e-10;B=B+ +H(+G);G=+ee(+G);l[g+(r<<2)>>2]=G;F=e+(r<<2)+6416|0;W=+l[F>>2]+.009999999776482582;W=G>2]=W;n=e+(r<<2)+6488|0;V=+l[n>>2]+-.10000000149011612;V=G>V?G:V;l[n>>2]=V;if(V>2]=V;W=W+-.5;l[F>>2]=W}C=C+(G-W)/(V+1.0000000036274937e-15-W);G=0.0;V=0.0;n=0;while(1){if((n|0)>=8)break;X=+l[e+(n*72|0)+(r<<2)+5840>>2];G=G+ +H(+X);V=V+X;n=n+1|0}G=G/+H(+(V*8.0+1.0e-15));G=G>.9900000095367432?.9900000095367432:G;G=G*G;G=G*G;X=I/U;n=e+(r<<2)+5764|0;I=G*+l[n>>2];I=X>I?X:I;l[S+(r<<2)>>2]=I;D=D+I;if((r|0)>8)D=D-+l[S+(r+-9<<2)>>2];X=(+(r+-18|0)*.029999999329447746+1.0)*D;l[n>>2]=I;R=R+G;O=O>X?O:X;L=L+I*+(r+-8|0);r=c}if((M|0)==30){a[k>>2]=0;h=d;return}y=u+-8|0;D=.0005699999746866524/+(1<<((y|0)<0?0:y)|0);D=D*D;N=1.0-N;y=0;I=0.0;G=0.0;u=0;while(1){if((u|0)>=21)break;S=a[27392+(u<<2)>>2]|0;A=u+1|0;M=a[27392+(A<<2)>>2]|0;U=0.0;c=S;while(1){if((c|0)>=(M|0))break;V=+l[T+(c<<3)>>2];Z=480-c|0;W=+l[T+(Z<<3)>>2];$=+l[T+(c<<3)+4>>2];X=+l[T+(Z<<3)+4>>2];U=U+(V*V+W*W+$*$+X*X);c=c+1|0}G=G>U?G:U;Z=e+(u<<2)+6560|0;X=N*+l[Z>>2];X=X>U?X:U;l[Z>>2]=X;U=U>X?U:X;I=I*.05000000074505806;I=I>U?I:U;if(!(U>I*.1&U*1.0e9>G)){Z=y;u=A;y=Z;continue}if(!(U>D*+(M-S|0))){Z=y;u=A;y=Z;continue}y=u;u=A}T=(a[w>>2]|0)<3?20:y;$=+be(+B)*20.0;A=e+6844|0;X=+l[A>>2]+-.029999999329447746;X=X>$?X:$;l[A>>2]=X;A=e+6848|0;N=+l[A>>2]*(1.0-E);if($>2]=N;u=0;while(1){if((u|0)>=8)break;S=u<<4;y=0;E=0.0;while(1){if((y|0)>=16)break;X=E+ +l[27480+(S+y<<2)>>2]*+l[g+(y<<2)>>2];y=y+1|0;E=X}l[_+(u<<2)>>2]=E;u=u+1|0}R=R/18.0;E=P/18.0;l[s>>2]=E+(1.0-E)*((a[w>>2]|0)<10?.5:C/18.0);$=O/9.0;g=e+5836|0;X=+l[g>>2]*.800000011920929;X=$>X?$:X;l[g>>2]=X;g=e+(i*28|0)+8520|0;l[g>>2]=L*.015625;a[t>>2]=((a[t>>2]|0)+1|0)%8|0;a[w>>2]=(a[w>>2]|0)+1;u=e+(i*28|0)+8516|0;l[u>>2]=X;S=0;while(1){if((S|0)>=4)break;l[p+(S<<2)>>2]=(+l[_+(S<<2)>>2]+ +l[e+(S+24<<2)+6644>>2])*-.12298999726772308+(+l[e+(S<<2)+6644>>2]+ +l[e+(S+16<<2)+6644>>2])*.49195000529289246+ +l[e+(S+8<<2)+6644>>2]*.6969299912452698-+l[e+(S<<2)+6772>>2]*1.4349000453948975;S=S+1|0}L=1.0-v;S=0;while(1){if((S|0)>=4){S=0;break}Z=e+(S<<2)+6772|0;l[Z>>2]=L*+l[Z>>2]+v*+l[_+(S<<2)>>2];S=S+1|0}while(1){if((S|0)>=4){S=0;break}l[p+(S+4<<2)>>2]=(+l[_+(S<<2)>>2]-+l[e+(S+24<<2)+6644>>2])*.6324599981307983+(+l[e+(S<<2)+6644>>2]-+l[e+(S+16<<2)+6644>>2])*.31622999906539917;S=S+1|0}while(1){if((S|0)>=3)break;Z=S+8|0;l[p+(Z<<2)>>2]=(+l[_+(S<<2)>>2]+ +l[e+(S+24<<2)+6644>>2])*.5345199704170227-(+l[e+(S<<2)+6644>>2]+ +l[e+(S+16<<2)+6644>>2])*.26725998520851135-+l[e+(Z<<2)+6644>>2]*.5345199704170227;S=S+1|0}e:do{if((a[w>>2]|0)>5){S=0;while(1){if((S|0)>=9){S=0;break e}Z=e+(S<<2)+6804|0;X=+l[p+(S<<2)>>2];l[Z>>2]=L*+l[Z>>2]+v*X*X;S=S+1|0}}else S=0}while(0);while(1){if((S|0)>=8){_=0;break}Z=e+(S+16<<2)+6644|0;l[e+(S+24<<2)+6644>>2]=+l[Z>>2];J=e+(S+8<<2)+6644|0;l[Z>>2]=+l[J>>2];Z=e+(S<<2)+6644|0;l[J>>2]=+l[Z>>2];l[Z>>2]=+l[_+(S<<2)>>2];S=S+1|0}while(1){if((_|0)>=9)break;l[p+(_+11<<2)>>2]=+H(+ +l[e+(_<<2)+6804>>2]);_=_+1|0}l[p+80>>2]=+l[u>>2];l[p+84>>2]=+l[s>>2];l[p+88>>2]=R;l[p+92>>2]=+l[g>>2];l[p+96>>2]=+l[A>>2];cs(p,m);v=(+l[m>>2]+1.0)*.5;v=v*1.2100000381469727*v+.009999999776482582-+z(+v,10.0)*.23000000417232513;Z=m+4|0;L=+l[Z>>2]*.5+.5;l[Z>>2]=L;v=L*v+(1.0-L)*.5;l[m>>2]=v;O=L*4999999873689376.0e-20;if(!(v>.949999988079071)){if(v<.05000000074505806)P=.05000000074505806;else P=v}else P=.949999988079071;m=e+6840|0;N=+l[m>>2];if(!(N>.949999988079071)){if(N<.05000000074505806)C=.05000000074505806;else C=N}else C=.949999988079071;V=1.0-N;R=1.0-O;W=1.0-v;X=+K(+(P-C))*.05000000074505806/(P*(1.0-C)+C*(1.0-P))+.009999999776482582;$=v;C=(N*R+V*O)*+z(+$,+X);C=C/((V*R+N*O)*+z(+W,+X)+C);l[m>>2]=C;l[e+(i*28|0)+8532>>2]=C;C=+z(+W,+X);N=+z(+$,+X);p=e+6884|0;if((a[w>>2]|0)==1){l[p>>2]=.5;l[e+7684>>2]=.5;P=.5;B=.5}else{P=+l[p>>2];B=+l[e+7684>>2]}P=P+ +l[e+6888>>2];B=B+ +l[e+7688>>2];l[e+6884>>2]=P*R*C;l[e+7684>>2]=B*R*N;w=1;while(1){if((w|0)>=199)break;Z=w+1|0;l[e+(w<<2)+6884>>2]=+l[e+(Z<<2)+6884>>2]*C;l[e+(w<<2)+7684>>2]=+l[e+(Z<<2)+7684>>2]*N;w=Z}l[e+7680>>2]=B*O*C;l[e+8480>>2]=P*O*N;O=9.999999682655225e-21;w=0;while(1){if((w|0)>=200)break;O=O+(+l[e+(w<<2)+6884>>2]+ +l[e+(w<<2)+7684>>2]);w=w+1|0}O=1.0/O;w=0;while(1){if((w|0)>=200){w=1;break}Z=e+(w<<2)+6884|0;l[Z>>2]=+l[Z>>2]*O;Z=e+(w<<2)+7684|0;l[Z>>2]=+l[Z>>2]*O;w=w+1|0}while(1){if((w|0)>=200)break;w=w+1|0}if(L>.75){L=+l[m>>2];if(L>.9){Z=e+8496|0;J=(a[Z>>2]|0)+1|0;a[Z>>2]=J;a[Z>>2]=(J|0)<500?J:500;Z=e+8488|0;$=+l[Z>>2];X=v-$;l[Z>>2]=$+1.0/+(J|0)*(X<-.20000000298023224?-.20000000298023224:X)}if(L<.1){Z=e+8492|0;J=(a[Z>>2]|0)+1|0;a[Z>>2]=J;a[Z>>2]=(J|0)<500?J:500;Z=e+8484|0;$=+l[Z>>2];X=v-$;l[Z>>2]=$+1.0/+(J|0)*(X>.20000000298023224?.20000000298023224:X)}}else{if(!(a[e+8496>>2]|0))l[e+8488>>2]=.8999999761581421;if(!(a[e+8492>>2]|0))l[e+8484>>2]=.10000000149011612}w=e+6856|0;m=+l[m>>2]>.5&1;if((a[w>>2]|0)!=(m|0))a[b>>2]=0;a[w>>2]=m;a[e+(i*28|0)+8536>>2]=T;l[e+(i*28|0)+8524>>2]=E;a[k>>2]=1;h=d;return}function hs(e,i){e=+e;i=+i;var r=0,t=0.0,n=0.0,a=0.0;r=h;if(+K(+i)+ +K(+e)<9.999999717180685e-10){e=e*999999995904.0;i=i*999999995904.0}t=i*i;n=e*e;if(t=15){n=0;break}f=s;a=0;o=+l[s>>2];while(1){f=f+4|0;if((a|0)>=25)break;u=o+ +l[e+(a<<2)>>2]*+l[f>>2];a=a+1|0;o=u}l[r+(n<<2)>>2]=+ds(o);s=f;n=n+1|0}while(1){if((n|0)>=2)break;a=s;e=0;o=+l[s>>2];while(1){s=a+4|0;if((e|0)>=15)break;u=o+ +l[r+(e<<2)>>2]*+l[s>>2];a=s;e=e+1|0;o=u}l[i+(n<<2)>>2]=+ds(o);n=n+1|0}h=t;return}function ds(e){e=+e;var i=0,r=0.0,t=0.0,n=0;i=h;if(!(e<8.0)){e=1.0;h=i;return+e}if(!(e>-8.0)){e=-1.0;h=i;return+e}if(e!=e|0.0!=0.0){e=0.0;h=i;return+e}if(e<0.0){e=-e;r=-1.0}else r=1.0;n=~~+x(+(e*25.0+.5));e=e-+(n|0)*.03999999910593033;t=+l[27992+(n<<2)>>2];e=r*(t+e*(1.0-t*t)*(1.0-t*e));h=i;return+e}function bs(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0.0,u=0,c=0,d=0,b=0.0,k=0,w=0.0,m=0,p=0.0,_=0.0,v=0;n=h;if((r|0)<1|(i|0)<1|(e|0)==0|(t|0)==0){h=n;return}o=re(i,r)|0;f=0;while(1){if((f|0)>=(o|0)){a=0;break}a=e+(f<<2)|0;s=+l[a>>2];if(!(s>2.0)){if(s<-2.0)s=-2.0}else s=2.0;l[a>>2]=s;f=f+1|0}while(1){if((a|0)>=(r|0))break;o=e+(a<<2)|0;f=t+(a<<2)|0;w=+l[f>>2];u=0;while(1){if((u|0)>=(i|0))break;c=e+(a+(re(u,r)|0)<<2)|0;b=+l[c>>2];s=b*w;if(s>=0.0)break;l[c>>2]=b+s*b;u=u+1|0}s=+l[o>>2];d=0;while(1){c=d;while(1){if((c|0)>=(i|0))break;_=+l[e+(a+(re(c,r)|0)<<2)>>2];if(_>1.0|_<-1.0)break;c=c+1|0}if((c|0)==(i|0)){b=0.0;break}w=+l[e+(a+(re(c,r)|0)<<2)>>2];b=+K(+w);k=c;while(1){if((k|0)<=0){u=c;break}u=k+-1|0;if(!(w*+l[e+(a+(re(u,r)|0)<<2)>>2]>=0.0)){u=c;break}else k=u}while(1){if((u|0)>=(i|0))break;p=+l[e+(a+(re(u,r)|0)<<2)>>2];if(!(w*p>=0.0))break;_=+K(+p);v=_>b;m=v?u:c;u=u+1|0;b=v?_:b;c=m}if(!k)m=w*+l[o>>2]>=0.0;else m=0;b=(b+-1.0)/(b*b);if(w>0.0)b=-b;while(1){if((k|0)>=(u|0))break;v=e+(a+(re(k,r)|0)<<2)|0;_=+l[v>>2];l[v>>2]=_+b*_*_;k=k+1|0}e:do{if(m&(c|0)>1){p=s-+l[o>>2];w=p/+(c|0);while(1){if((d|0)>=(c|0))break e;p=p-w;k=e+(a+(re(d,r)|0)<<2)|0;_=+l[k>>2]+p;l[k>>2]=_;if(!(_>1.0)){if(_<-1.0)_=-1.0}else _=1.0;l[k>>2]=_;d=d+1|0}}}while(0);if((u|0)==(i|0))break;else d=u}l[f>>2]=b;a=a+1|0}h=n;return}function ks(e,i){e=e|0;i=i|0;var r=0,n=0;r=h;if((e|0)<252){t[i>>0]=e;i=1;h=r;return i|0}else{n=e|252;t[i>>0]=n;t[i+1>>0]=(e-(n&255)|0)>>>2;i=2;h=r;return i|0}return 0}function ws(e,i){e=e|0;i=i|0;var r=0;r=h;e=t[e>>0]|0;do{if(e<<24>>24>=0){if((e&96)==96){if(!(e&8)){i=(i|0)/100|0;break}else{i=(i|0)/50|0;break}}else{e=(e&255)>>>3&3;if((e|0)==3){i=(i*60|0)/1e3|0;break}else{i=(i<>>3&3)|0)/400|0}while(0);h=r;return i|0}function ms(e,i,r,f,o,s,l,u){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;l=l|0;u=u|0;var c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0;c=h;if(!s){i=-1;h=c;return i|0}G=ws(e,48e3)|0;L=e+1|0;d=t[e>>0]|0;B=i+-1|0;F=d&3;e:do{if((F|0)==1){if(!r){if(!(B&1)){N=(B|0)/2|0;n[s>>1]=N;y=L;A=B;S=1;M=2;O=0;G=30;break}else{i=-4;h=c;return i|0}}else{p=L;_=B;m=1;k=2;w=B;b=0;G=31}}else if(!F){y=L;A=B;S=0;M=1;N=B;O=0;G=30}else if((F|0)==2){A=ps(L,B,s)|0;T=B-A|0;S=n[s>>1]|0;if(S<<16>>16<0){i=-4;h=c;return i|0}L=S<<16>>16;if((L|0)>(T|0)){i=-4;h=c;return i|0}else{y=e+(A+1)|0;A=T;S=0;M=2;N=T-L|0;O=0;G=30;break}}else{if((i|0)<2){i=-4;h=c;return i|0}V=e+2|0;F=t[L>>0]|0;L=F&63;if(!L){i=-4;h=c;return i|0}if((re(G,L)|0)>5760){i=-4;h=c;return i|0}G=i+-2|0;do{if(F&64){i=0;while(1){if((G|0)<1){R=-4;G=51;break}I=V+1|0;D=t[V>>0]|0;U=G+-1|0;if(D<<24>>24!=-1){G=16;break}V=I;G=U-254|0;i=i+254|0}if((G|0)==16){T=D&255;P=I;C=U-T|0;T=i+T|0;break}else if((G|0)==51){h=c;return R|0}}else{P=V;C=G;T=0}}while(0);if((C|0)<0){i=-4;h=c;return i|0}i=(F&255)>>>7;D=i&255^1;if(i<<24>>24!=1){if(r){p=P;_=C;m=D;k=L;w=B;b=T;G=31;break}N=(C|0)/(L|0)|0;if((re(N,L)|0)!=(C|0)){i=-4;h=c;return i|0}A=L+-1|0;y=N&65535;S=0;while(1){if((S|0)>=(A|0)){y=P;A=C;S=D;M=L;O=T;G=30;break e}n[s+(S<<1)>>1]=y;S=S+1|0}}B=L+-1|0;I=C;F=0;while(1){if((F|0)>=(B|0)){G=24;break}V=s+(F<<1)|0;U=ps(P,I,V)|0;G=I-U|0;V=n[V>>1]|0;if(V<<16>>16<0){R=-4;G=51;break}V=V<<16>>16;if((V|0)>(G|0)){R=-4;G=51;break}P=P+U|0;I=G;C=C-(U+V)|0;F=F+1|0}if((G|0)==24){if((C|0)<0)R=-4;else{y=P;A=I;S=D;M=L;N=C;O=T;G=30;break}h=c;return R|0}else if((G|0)==51){h=c;return R|0}}}while(0);do{if((G|0)==30)if(!r){if((N|0)>1275){i=-4;h=c;return i|0}else{n[s+(M+-1<<1)>>1]=N;E=y;v=M;g=O;break}}else{p=y;_=A;m=S;k=M;w=N;b=O;G=31}}while(0);e:do{if((G|0)==31){g=k+-1|0;v=s+(g<<1)|0;r=ps(p,_,v)|0;_=_-r|0;E=n[v>>1]|0;if(E<<16>>16<0){i=-4;h=c;return i|0}T=E<<16>>16;if((T|0)>(_|0)){i=-4;h=c;return i|0}E=p+r|0;if(!m){if((r+T|0)>(w|0))R=-4;else{v=k;g=b;break}h=c;return R|0}if((re(T,k)|0)>(_|0)){i=-4;h=c;return i|0}else w=0;while(1){if((w|0)>=(g|0)){v=k;g=b;break e}n[s+(w<<1)>>1]=n[v>>1]|0;w=w+1|0}}}while(0);if(l)a[l>>2]=E-e;b=(o|0)==0;k=0;while(1){if((k|0)>=(v|0))break;if(!b)a[o+(k<<2)>>2]=E;E=E+(n[s+(k<<1)>>1]|0)|0;k=k+1|0}if(u)a[u>>2]=g+(E-e);if(!f){i=v;h=c;return i|0}t[f>>0]=d;i=v;h=c;return i|0}function ps(e,i,r){e=e|0;i=i|0;r=r|0;var a=0,o=0;a=h;do{if((i|0)>=1){o=t[e>>0]|0;if((o&255)<252){n[r>>1]=o&255;r=1;break}if((i|0)<2){n[r>>1]=-1;r=-1;break}else{n[r>>1]=((f[e+1>>0]|0)<<2)+(o&255);r=2;break}}else{n[r>>1]=-1;r=-1}}while(0);h=a;return r|0}function _s(e){e=e|0;var i=0,r=0,t=0;i=h;h=h+16|0;r=i;if((e|0)<1|(e|0)>2){r=0;h=i;return r|0}if(ya(r)|0);t=vs(a[r>>2]|0)|0;a[r>>2]=t;r=_i(e)|0;r=(vs(88)|0)+t+r|0;h=i;return r|0}function vs(e){e=e|0;return e+3&-4|0}function gs(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0,o=0,s=0;t=h;h=h+16|0;n=t;f=t+4|0;if(!((i|0)==8e3|(i|0)==12e3|(i|0)==16e3|(i|0)==24e3|(i|0)==48e3)){f=-1;h=t;return f|0}if((r+-1|0)>>>0>=2){f=-1;h=t;return f|0}yl(e|0,0,_s(r)|0)|0;if(ya(f)|0);s=vs(a[f>>2]|0)|0;a[f>>2]=s;o=vs(88)|0;a[e+4>>2]=o;f=o+s|0;a[e>>2]=f;f=e+f|0;a[e+8>>2]=r;a[e+44>>2]=r;a[e+12>>2]=i;a[e+24>>2]=i;a[e+16>>2]=r;if(Ma(e+o|0)|0);if(gi(f,i,r)|0){s=-3;h=t;return s|0}a[n>>2]=0;Ri(f,10016,n);a[e+56>>2]=0;a[e+60>>2]=(i|0)/400|0;a[e+84>>2]=0;s=0;h=t;return s|0}function Es(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0;n=h;do{if((e|0)==8e3|(e|0)==12e3|(e|0)==16e3|(e|0)==24e3|(e|0)==48e3?(i+-1|0)>>>0<2:0){f=Ts(_s(i)|0)|0;if(!f){if(!r){f=0;break}a[r>>2]=-7;f=0;break}e=gs(f,e,i)|0;if(r)a[r>>2]=e;if(e){As(f);f=0}}else t=3}while(0);if((t|0)==3)if(!r)f=0;else{a[r>>2]=-1;f=0}h=n;return f|0}function Ts(e){e=e|0;var i=0;i=h;e=vl(e)|0;h=i;return e|0}function As(e){e=e|0;var i=0;i=h;gl(e);h=i;return}function Ss(e,i,r,f,o,s,u){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;u=u|0;var c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0;c=h;h=h+112|0;E=c;T=c+104|0;d=c+8|0;if((s|0)<0|(s|0)>1){T=-1;h=c;return T|0}g=(s|0)==0;if(g^1|(r|0)==0|(i|0)==0?((o|0)%((a[e+12>>2]|0)/400|0|0)|0|0)!=0:0){T=-1;h=c;return T|0}if((r|0)==0|(i|0)==0){d=e+8|0;w=0;do{u=ys(e,0,0,f+((re(w,a[d>>2]|0)|0)<<2)|0,o-w|0,0)|0;if((u|0)<0){b=u;k=28;break}w=w+u|0}while((w|0)<(o|0));if((k|0)==28){h=c;return b|0}a[e+68>>2]=w;T=w;h=c;return T|0}if((r|0)<0){T=-1;h=c;return T|0}_=Ms(i)|0;p=Ls(i)|0;s=ws(i,a[e+12>>2]|0)|0;v=Os(t[i>>0]|0)|0;r=ms(i,r,0,T,0,d,E,0)|0;if((r|0)<0){T=r;h=c;return T|0}i=i+(a[E>>2]|0)|0;if(g){if((re(r,s)|0)>(o|0)){T=-2;h=c;return T|0}a[e+52>>2]=_;a[e+48>>2]=p;a[e+60>>2]=s;a[e+44>>2]=v;w=e+8|0;_=0;m=0;while(1){if((m|0)>=(r|0))break;p=d+(m<<1)|0;s=ys(e,i,n[p>>1]|0,f+((re(_,a[w>>2]|0)|0)<<2)|0,o-_|0,0)|0;if((s|0)<0){b=s;k=28;break}i=i+(n[p>>1]|0)|0;_=_+s|0;m=m+1|0}if((k|0)==28){h=c;return b|0}a[e+68>>2]=_;if(!u){l[e+76>>2]=0.0;l[e+72>>2]=0.0;T=_;h=c;return T|0}else{bs(f,_,a[w>>2]|0,e+72|0);T=_;h=c;return T|0}}else{if(!((s|0)>(o|0)|(_|0)==1002)?(w=e+52|0,(a[w>>2]|0)!=1002):0){b=e+68|0;r=a[b>>2]|0;k=o-s|0;if((s|0)!=(o|0)?(m=Ss(e,0,0,f,k,0,u)|0,(m|0)<0):0){a[b>>2]=r;T=m;h=c;return T|0}a[w>>2]=_;a[e+48>>2]=p;a[e+60>>2]=s;a[e+44>>2]=v;e=ys(e,i,n[d>>1]|0,f+((re(a[e+8>>2]|0,k)|0)<<2)|0,s,1)|0;if((e|0)<0){T=e;h=c;return T|0}a[b>>2]=o;T=o;h=c;return T|0}T=Ss(e,0,0,f,o,0,u)|0;h=c;return T|0}return 0}function ys(e,i,r,t,f,o){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;var s=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,x=0.0;s=h;h=h+80|0;w=s;u=s+16|0;M=s+12|0;c=s+8|0;v=s+64|0;p=s+4|0;a[c>>2]=0;y=e+(a[e+4>>2]|0)|0;m=e+(a[e>>2]|0)|0;b=e+12|0;g=a[b>>2]|0;_=(g|0)/50|0;N=_>>1;k=_>>2;d=_>>3;if((d|0)>(f|0)){W=-2;h=s;return W|0}A=((g|0)/25|0)*3|0;A=(A|0)>(f|0)?f:A;if((r|0)>=2){C=(i|0)==0;if(C)E=6;else{T=a[e+60>>2]|0;f=a[e+52>>2]|0;cr(u,i,r);E=20}}else{C=a[e+60>>2]|0;i=0;A=(A|0)<(C|0)?A:C;C=1;E=6}do{if((E|0)==6){f=a[e+56>>2]|0;if(!f){e=e+8|0;u=0;while(1){if((u|0)>=(re(A,a[e>>2]|0)|0))break;l[t+(u<<2)>>2]=0.0;u=u+1|0}h=s;return A|0}if((A|0)>(_|0)){u=e+8|0;d=A;while(1){c=ys(e,0,0,t,(d|0)<(_|0)?d:_,0)|0;if((c|0)<0){A=c;E=115;break}t=t+((re(c,a[u>>2]|0)|0)<<2)|0;d=d-c|0;if((d|0)<=0){E=115;break}}if((E|0)==115){h=s;return A|0}}if((A|0)<(_|0)){if((A|0)<=(N|0)){if((f|0)!=1e3){if((A|0)>(k|0)&(A|0)<(N|0)){if(C){T=k;E=27;break}else{T=k;E=20;break}}else T=A}else{T=A;f=1e3}}else T=N}else T=A;if(C)E=27;else E=20}}while(0);do{if((E|0)==20){S=a[e+56>>2]|0;if((S|0)>0){g=(f|0)==1002;S=(S|0)==1002;if(g){if(S){E=27;break}if(a[e+64>>2]|0){E=27;break}if(g){R=re(k,a[e+8>>2]|0)|0;g=Ee()|0;O=h;h=h+((4*R|0)+15&-16)|0;R=1}else E=28}else if(S)E=28;else{E=27;break}if((E|0)==28){R=re(k,a[e+8>>2]|0)|0;g=Ee()|0;O=h;h=h+16|0;if((f|0)!=1002){S=0;O=0;L=1;break}}ys(e,0,0,O,(k|0)<(T|0)?k:T,0)|0;S=0;L=1}else E=27}}while(0);if((E|0)==27){g=Ee()|0;S=1;O=0;R=1;L=0}e:do{if((T|0)>(A|0))e=-1;else{A=(f|0)==1002;if(A){y=h;h=h+16|0}else{W=re((N|0)>(T|0)?N:T,a[e+8>>2]|0)|0;N=h;h=h+((2*W|0)+15&-16)|0;if((a[e+56>>2]|0)==1002)Ma(y)|0;W=(T*1e3|0)/(a[b>>2]|0)|0;a[e+32>>2]=(W|0)<10?10:W;if(C)P=1;else{a[e+20>>2]=a[e+44>>2];do{if((f|0)==1e3){P=a[e+48>>2]|0;if((P|0)==1101){a[e+28>>2]=8e3;break}else if((P|0)==1102){a[e+28>>2]=12e3;break}else if((P|0)==1103){a[e+28>>2]=16e3;break}else{a[e+28>>2]=16e3;break}}else a[e+28>>2]=16e3}while(0);P=o<<1}G=e+16|0;F=e+84|0;D=e+8|0;B=(P|0)==0;I=0;U=N;while(1){i:do{if(!(La(y,G,P,(I|0)==0&1,u,U,M,a[F>>2]|0)|0))W=a[D>>2]|0;else{if(B){e=-3;break e}a[M>>2]=T;V=0;while(1){W=a[D>>2]|0;if((V|0)>=(re(T,W)|0))break i;n[U+(V<<1)>>1]=0;V=V+1|0}}}while(0);V=a[M>>2]|0;U=U+((re(V,W)|0)<<1)|0;I=I+V|0;if((I|0)>=(T|0)){y=N;break}}}M=(o|0)==0;do{if(M){if(!A){if(!C){C=u+20|0;P=u+28|0;W=(Fs(a[C>>2]|0,a[P>>2]|0)|0)+17|0;if((W+((a[e+52>>2]|0)==1001?20:0)|0)>(r<<3|0)){o=0;N=0;C=0;E=61}else{if((f|0)==1001){N=_r(u,12)|0;if(!N){o=0;N=0;C=0;E=61;break}o=_r(u,1)|0;E=(gr(u,256)|0)+2|0;C=a[C>>2]|0;P=a[P>>2]|0}else{o=_r(u,1)|0;C=a[C>>2]|0;P=a[P>>2]|0;E=r-((Fs(C,P)|0)+7>>3)|0;N=1}r=r-E|0;W=(r<<3|0)<(Fs(C,P)|0);C=W?0:E;E=u+4|0;a[E>>2]=(a[E>>2]|0)-C;r=W?0:r;N=W?0:N;E=61}}else{o=0;N=0;C=0;E=62}}else{o=0;N=0;C=0;P=0}}else{o=0;N=0;C=0;E=61}}while(0);if((E|0)==61)if(A)P=0;else E=62;if((E|0)==62)P=17;B=a[e+48>>2]|0;if((B|0)==1103|(B|0)==1102)B=17;else if((B|0)==1104)B=19;else if((B|0)==1101)B=13;else B=21;a[w>>2]=B;Ri(m,10012,w);a[w>>2]=a[e+44>>2];Ri(m,10008,w);N=(N|0)==0;do{if(N){B=h;h=h+((4*R|0)+15&-16)|0;if(!S){if(!A){ys(e,0,0,B,(k|0)<(T|0)?k:T,0)|0;O=B}if(!N){E=73;break}}else L=0;S=h;h=h+16|0}else{L=0;E=73}}while(0);if((E|0)==73){W=re(k,a[e+8>>2]|0)|0;S=h;h=h+((4*W|0)+15&-16)|0;if(o){a[w>>2]=0;Ri(m,10010,w);Ti(m,i+r|0,C,S,k,0,0)|0;a[w>>2]=c;Ri(m,4031,w)}}a[w>>2]=P;Ri(m,10010,w);do{if((f|0)==1e3){n[v>>1]=-1;_=e+8|0;E=0;while(1){if((E|0)>=(re(T,a[_>>2]|0)|0))break;l[t+(E<<2)>>2]=0.0;E=E+1|0}if((a[e+56>>2]|0)==1001){if(!(N|(o|0)==0)?(a[e+64>>2]|0)!=0:0){_=0;break}a[w>>2]=0;Ri(m,10010,w);Ti(m,v,2,t,d,0,0)|0;_=0}else _=0}else{_=(_|0)<(T|0)?_:T;W=a[e+56>>2]|0;if((f|0)!=(W|0)&(W|0)>0?(a[e+64>>2]|0)==0:0)Ri(m,4028,w);_=Ti(m,M?i:0,r,t,_,u,0)|0}}while(0);i:do{if(!A){v=e+8|0;E=0;while(1){if((E|0)>=(re(T,a[v>>2]|0)|0))break i;W=t+(E<<2)|0;l[W>>2]=+l[W>>2]+ +(n[y+(E<<1)>>1]|0)*30517578125.0e-15;E=E+1|0}}}while(0);a[w>>2]=p;Ri(m,10015,w);p=a[(a[p>>2]|0)+60>>2]|0;do{if(!N){if(!o){Ri(m,4028,w);a[w>>2]=0;Ri(m,10010,w);Ti(m,i+r|0,C,S,k,0,0)|0;a[w>>2]=c;Ri(m,4031,w);W=a[e+8>>2]|0;V=t+((re(W,T-d|0)|0)<<2)|0;G=S+((re(W,d)|0)<<2)|0;Gs(V,G,V,d,W,p,a[b>>2]|0);break}w=e+8|0;m=0;while(1){v=a[w>>2]|0;if((m|0)<(v|0))v=0;else break;while(1){if((v|0)>=(d|0))break;W=(re(a[w>>2]|0,v)|0)+m|0;l[t+(W<<2)>>2]=+l[S+(W<<2)>>2];v=v+1|0}m=m+1|0}V=re(v,d)|0;W=t+(V<<2)|0;Gs(S+(V<<2)|0,W,W,d,v,p,a[b>>2]|0)}}while(0);do{if(L){w=e+8|0;if((T|0)<(k|0)){Gs(O,t,t,d,a[w>>2]|0,p,a[b>>2]|0);break}else v=0;while(1){k=a[w>>2]|0;m=re(k,d)|0;if((v|0)>=(m|0))break;l[t+(v<<2)>>2]=+l[O+(v<<2)>>2];v=v+1|0}W=t+(m<<2)|0;Gs(O+(m<<2)|0,W,W,d,k,p,a[b>>2]|0)}}while(0);d=a[e+40>>2]|0;i:do{if(d){x=+Q(+(+(d|0)*.0006488140788860619*.6931471805599453));b=e+8|0;d=0;while(1){if((d|0)>=(re(T,a[b>>2]|0)|0))break i;W=t+(d<<2)|0;l[W>>2]=+l[W>>2]*x;d=d+1|0}}}while(0);if((r|0)<2)a[e+80>>2]=0;else a[e+80>>2]=a[u+28>>2]^a[c>>2];a[e+56>>2]=f;a[e+64>>2]=(N?0:(o|0)==0)&1;e=(_|0)>-1?T:_}}while(0);ce(g|0);W=e;h=s;return W|0}function Ms(e){e=e|0;var i=0;i=h;e=t[e>>0]|0;if(e<<24>>24<0){h=i;return 1002}else{h=i;return((e&96)==96?1001:1e3)|0}return 0}function Ls(e){e=e|0;var i=0;i=h;e=t[e>>0]|0;if(e<<24>>24<0){e=(e&255)>>>5&3;h=i;return((e|0)==0?1101:e+1102|0)|0}if((e&96)==96){e=(e&16)!=0?1105:1104;h=i;return e|0}else{e=((e&255)>>>5&3)+1101|0;h=i;return e|0}return 0}function Os(e){e=e|0;return((e&4)!=0?2:1)|0}function Rs(e,i,r,t,f,o){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;o=o|0;var s=0,u=0,c=0,d=0,b=0;s=h;if((f|0)<1){f=-1;h=s;return f|0}do{if((i|0)!=0&(r|0)>0&(o|0)==0){u=Ns(a[e+12>>2]|0,i,r)|0;if((u|0)>0){f=(u|0)>(f|0)?f:u;break}else{f=-4;h=s;return f|0}}}while(0);d=e+8|0;b=re(f,a[d>>2]|0)|0;u=Ee()|0;c=h;h=h+((4*b|0)+15&-16)|0;r=Ss(e,i,r,c,f,o,1)|0;e:do{if((r|0)>0){o=0;while(1){if((o|0)>=(re(r,a[d>>2]|0)|0))break e;n[t+(o<<1)>>1]=Cs(+l[c+(o<<2)>>2])|0;o=o+1|0}}}while(0);ce(u|0);b=r;h=s;return b|0}function Ns(e,i,r){e=e|0;i=i|0;r=r|0;var t=0;t=h;i=Us(i,r,e)|0;h=t;return i|0}function Cs(e){e=+e;var i=0,r=0;r=h;e=e*32768.0;if(e>-32768.0){if(e<32767.0)i=3;else e=32767.0}else{e=-32768.0;i=3}i=(ge(+e)|0)&65535;h=r;return i|0}function Ps(e,i,r,t,n,a){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;var f=0;f=h;if((n|0)<1)e=-1;else e=Ss(e,i,r,t,n,a,0)|0;h=f;return e|0}function Bs(e,i,r){e=e|0;i=i|0;r=r|0;var n=0,f=0,o=0,s=0,l=0;n=h;h=h+32|0;s=n;f=n+8|0;l=a[e+4>>2]|0;o=e+(a[e>>2]|0)|0;a[f>>2]=r;e:do{switch(i|0){case 4009:{l=a[f>>2]|0;o=a[l>>2]|0;a[f>>2]=l+4;if(!o)e=20;else{a[o>>2]=a[e+48>>2];f=0;e=19}break};case 4029:{l=a[f>>2]|0;o=a[l>>2]|0;a[f>>2]=l+4;if(!o)e=20;else{a[o>>2]=a[e+12>>2];f=0;e=19}break};case 4039:{l=a[f>>2]|0;o=a[l>>2]|0;a[f>>2]=l+4;if(!o)e=20;else{a[o>>2]=a[e+68>>2];f=0;e=19}break};case 4031:{l=a[f>>2]|0;o=a[l>>2]|0;a[f>>2]=l+4;if(!o)e=20;else{a[o>>2]=a[e+80>>2];f=0;e=19}break};case 4028:{i=e+l|0;r=e+44|0;l=r+0|0;f=l+44|0;do{t[l>>0]=0;l=l+1|0}while((l|0)<(f|0));Ri(o,4028,s);Ma(i)|0;a[r>>2]=a[e+8>>2];a[e+60>>2]=(a[e+12>>2]|0)/400|0;f=0;e=19;break};case 4045:{l=a[f>>2]|0;o=a[l>>2]|0;a[f>>2]=l+4;if(!o)e=20;else{a[o>>2]=a[e+40>>2];f=0;e=19}break};case 4033:{l=a[f>>2]|0;i=a[l>>2]|0;a[f>>2]=l+4;if(i){if((a[e+56>>2]|0)==1002){a[s>>2]=i;Ri(o,4033,s);f=0;e=19;break e}else{a[i>>2]=a[e+36>>2];f=0;e=19;break e}}else e=20;break};case 4034:{l=a[f>>2]|0;o=a[l>>2]|0;a[f>>2]=l+4;if((o|0)<-32768|(o|0)>32767)e=20;else{a[e+40>>2]=o;f=0;e=19}break};default:{f=-5;e=19}}}while(0);if((e|0)==19){l=f;h=n;return l|0}else if((e|0)==20){l=-1;h=n;return l|0}return 0}function Ds(e){e=e|0;var i=0;i=h;As(e);h=i;return}function Is(e,i){e=e|0;i=i|0;var r=0,t=0;r=h;if((i|0)>=1){t=(f[e>>0]|0)&3;if(t){if((t|0)==3){if((i|0)<2)i=-4;else i=(f[e+1>>0]|0)&63}else i=2}else i=1}else i=-1;h=r;return i|0}function Us(e,i,r){e=e|0;i=i|0;r=r|0;var t=0;t=h;i=Is(e,i)|0;if((i|0)<0){h=t;return i|0}else{i=re(i,ws(e,r)|0)|0;h=t;return((i*25|0)>(r*3|0)?-4:i)|0}return 0}function Fs(e,i){e=e|0;i=i|0;var r=0;r=h;i=(Sl(i|0)|0)+-32+e|0;h=r;return i|0}function Gs(e,i,r,t,n,a,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;var o=0,s=0,u=0,c=0,d=0.0;o=h;f=48e3/(f|0)|0;s=0;while(1){if((s|0)<(n|0))u=0;else break;while(1){if((u|0)>=(t|0))break;d=+l[a+((re(u,f)|0)<<2)>>2];d=d*d;c=(re(u,n)|0)+s|0;l[r+(c<<2)>>2]=d*+l[i+(c<<2)>>2]+(1.0-d)*+l[e+(c<<2)>>2];u=u+1|0}s=s+1|0}h=o;return}function Vs(e){e=e|0;var i=0,r=0,t=0;i=h;h=h+16|0;r=i;if((e|0)<1|(e|0)>2){r=0;h=i;return r|0}if(Ga(r)|0);t=Ws(a[r>>2]|0)|0;a[r>>2]=t;r=Ci(e)|0;r=(Ws(18220)|0)+t+r|0;h=i;return r|0}function Ws(e){e=e|0;return e+3&-4|0}function xs(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var f=0,o=0,s=0,u=0,c=0,d=0;o=h;h=h+16|0;f=o;s=o+4|0;if(!((i|0)==8e3|(i|0)==12e3|(i|0)==16e3|(i|0)==24e3|(i|0)==48e3)){d=-1;h=o;return d|0}if((r+-1|0)>>>0>=2){d=-1;h=o;return d|0}if(!((t|0)==2051|(t|0)==2049|(t|0)==2048)){d=-1;h=o;return d|0}yl(e|0,0,Vs(r)|0)|0;if(Ga(s)|0);u=Ws(a[s>>2]|0)|0;a[s>>2]=u;d=Ws(18220)|0;a[e+4>>2]=d;s=d+u|0;a[e>>2]=s;s=e+s|0;a[e+100>>2]=r;a[e+168>>2]=r;u=e+132|0;a[u>>2]=i;c=e+18216|0;a[c>>2]=0;if(Va(e+d|0,0,e+8|0)|0){d=-3;h=o;return d|0}a[e+8>>2]=r;a[e+12>>2]=r;a[e+16>>2]=a[u>>2];a[e+20>>2]=16e3;a[e+24>>2]=8e3;a[e+28>>2]=16e3;a[e+32>>2]=20;a[e+36>>2]=25e3;a[e+40>>2]=0;d=e+44|0;a[d>>2]=9;a[e+48>>2]=0;a[e+52>>2]=0;a[e+56>>2]=0;a[e+72>>2]=0;if(Bi(s,i,r,a[c>>2]|0)|0){d=-3;h=o;return d|0}a[f>>2]=0;$i(s,10016,f)|0;a[f>>2]=a[d>>2];$i(s,4010,f)|0;a[e+136>>2]=1;a[e+140>>2]=1;a[e+152>>2]=-1e3;a[e+148>>2]=(re(i,r)|0)+3e3;a[e+96>>2]=t;a[e+112>>2]=-1e3;a[e+116>>2]=-1e3;a[e+120>>2]=1105;a[e+108>>2]=-1e3;a[e+124>>2]=-1e3;a[e+128>>2]=-1;d=a[u>>2]|0;a[e+160>>2]=(d|0)/100|0;a[e+156>>2]=24;a[e+144>>2]=5e3;a[e+104>>2]=(d|0)/250|0;n[e+172>>1]=16384;l[e+180>>2]=1.0;a[e+176>>2]=(po(60)|0)<<8;a[e+224>>2]=1;a[e+200>>2]=1001;a[e+216>>2]=1105;d=0;h=o;return d|0}function Ks(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0;f=h;do{if(((e|0)==8e3|(e|0)==12e3|(e|0)==16e3|(e|0)==24e3|(e|0)==48e3?(i+-1|0)>>>0<2:0)?(r|0)==2051|(r|0)==2049|(r|0)==2048:0){o=Hs(Vs(i)|0)|0;if(!o){if(!t){o=0;break}a[t>>2]=-7;o=0;break}e=xs(o,e,i,r)|0;if(t)a[t>>2]=e;if(e){zs(o);o=0}}else n=4}while(0);if((n|0)==4)if(!t)o=0;else{a[t>>2]=-1;o=0}h=f;return o|0}function Hs(e){e=e|0;var i=0;i=h;e=vl(e)|0;h=i;return e|0}function zs(e){e=e|0;var i=0;i=h;gl(e);h=i;return}function Ys(e,i,r,t,n,a,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;var o=0,s=0,u=0.0;o=h;s=0;while(1){if((s|0)>=(r|0))break;l[i+(s<<2)>>2]=+l[e+((re(s+t|0,f)|0)+n<<2)>>2]*32768.0;s=s+1|0}e:do{if((a|0)<=-1){if((a|0)==-2){a=1;while(1){if((a|0)<(f|0))s=0;else break e;while(1){if((s|0)>=(r|0))break;u=+l[e+((re(s+t|0,f)|0)+a<<2)>>2]*32768.0;n=i+(s<<2)|0;l[n>>2]=+l[n>>2]+u;s=s+1|0}a=a+1|0}}}else{s=0;while(1){if((s|0)>=(r|0))break e;u=+l[e+((re(s+t|0,f)|0)+a<<2)>>2]*32768.0;n=i+(s<<2)|0;l[n>>2]=+l[n>>2]+u;s=s+1|0}}}while(0);u=(f|0)==-2?-.5:.5;f=0;while(1){if((f|0)>=(r|0))break;n=i+(f<<2)|0;l[n>>2]=+l[n>>2]*u;f=f+1|0}h=o;return}function qs(e,i,r,t,a,f,o){e=e|0;i=i|0;r=r|0;t=t|0;a=a|0;f=f|0;o=o|0;var s=0,u=0,c=0.0;s=h;u=0;while(1){if((u|0)>=(r|0))break;l[i+(u<<2)>>2]=+(n[e+((re(u+t|0,o)|0)+a<<1)>>1]|0);u=u+1|0}e:do{if((f|0)<=-1){if((f|0)==-2){f=1;while(1){if((f|0)<(o|0))u=0;else break e;while(1){if((u|0)>=(r|0))break;c=+(n[e+((re(u+t|0,o)|0)+f<<1)>>1]|0);a=i+(u<<2)|0;l[a>>2]=+l[a>>2]+c;u=u+1|0}f=f+1|0}}}else{u=0;while(1){if((u|0)>=(r|0))break e;c=+(n[e+((re(u+t|0,o)|0)+f<<1)>>1]|0);a=i+(u<<2)|0;l[a>>2]=+l[a>>2]+c;u=u+1|0}}}while(0);c=(o|0)==-2?-152587890625.0e-16:152587890625.0e-16;o=0;while(1){if((o|0)>=(r|0))break;a=i+(o<<2)|0;l[a>>2]=+l[a>>2]*c;o=o+1|0}h=s;return}function js(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,a=0;t=h;a=(r|0)/400|0;if((a|0)>(e|0)){i=-1;h=t;return i|0}do{if((i|0)==5010){a=(r|0)/50|0;n=6}else if((i|0)!=5e3)if((i|0)>5e3&(i|0)<5007){n=(r*3|0)/50|0;a=a<(e|0)){i=-1;h=t;return i|0}else e=a;if(!((e*400|0)==(r|0)|(e*200|0)==(r|0)|(e*100|0)==(r|0))?(i=e*50|0,!((i|0)==(r|0)|(e*25|0)==(r|0)|(i|0)==(r*3|0))):0){i=-1;h=t;return i|0}i=e;h=t;return i|0}function Js(e,i,r,t,n,a,f,o,s){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;o=o|0;s=s|0;var l=0,u=0;u=h;e:do{if((r|0)==5010?((n|0)/200|0|0)<=(i|0):0){r=(n|0)/400|0;e=Zs(e,i,t,n,a,s,f,o)|0;while(1){t=r<>2];l[u>>2]=_;l[c>>2]=1.0/(_+1.0000000036274937e-15);t=(f|0)==0;if(t){k=0;f=1}else{k=(b<<1)-f|0;_=+l[a+4>>2];l[u+4>>2]=_;l[c+4>>2]=1.0/(_+1.0000000036274937e-15);_=+l[a+8>>2];l[u+8>>2]=_;l[c+8>>2]=1.0/(_+1.0000000036274937e-15);i=i-k|0;f=3}i=(i|0)/(b|0)|0;i=(i|0)<24?i:24;_=0.0;w=0;while(1){if((w|0)>=(i|0))break;p=(re(w,b)|0)+k|0;xl[o&3](e,d,b,p,0,-2,r);_=(w|0)==0?+l[d>>2]:_;p=0;m=1.0000000036274937e-15;while(1){if((p|0)>=(b|0))break;g=+l[d+(p<<2)>>2];v=g-_;_=g;p=p+1|0;m=m+v*v}p=w+f|0;l[u+(p<<2)>>2]=m;l[c+(p<<2)>>2]=1.0/m;w=w+1|0}p=w+f|0;l[u+(p<<2)>>2]=+l[u+(p+-1<<2)>>2];if(!t){i=i+2|0;i=(i|0)>24?24:i}r=dl(u,c,i,~~+((r*60|0)+40|0),(n|0)/400|0)|0;n=1<>2]=+l[u+(n<<2)>>2];if(t){h=s;return r|0}l[a+4>>2]=+l[u+(n+1<<2)>>2];l[a+8>>2]=+l[u+(n+2<<2)>>2];h=s;return r|0}function $s(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0.0,f=0.0,o=0.0,s=0,u=0.0,c=0.0,d=0.0,b=0.0,k=0.0,w=0.0,m=0.0,p=0.0,_=0.0,v=0;n=h;r=(r|0)/(i|0)|0;if((r|0)<50)a=50.0;else a=+(r|0);a=1.0-25.0/a;s=0;u=0.0;f=0.0;o=0.0;while(1){if((s|0)>=(i|0))break;v=s<<1;_=+l[e+(v<<2)>>2];k=+l[e+((v|1)<<2)>>2];p=+l[e+((v|2)<<2)>>2];b=+l[e+((v|3)<<2)>>2];m=+l[e+((v|4)<<2)>>2];d=+l[e+((v|5)<<2)>>2];w=+l[e+((v|6)<<2)>>2];c=+l[e+((v|7)<<2)>>2];s=s+4|0;u=u+(_*_+p*p+m*m+w*w);f=f+(_*k+p*b+m*d+w*c);o=o+(k*k+b*b+d*d+c*c)}p=+l[t>>2];p=p+a*(u-p);l[t>>2]=p;i=t+4|0;_=+l[i>>2];_=_+a*(f-_);l[i>>2]=_;v=t+8|0;f=+l[v>>2];f=f+a*(o-f);l[v>>2]=f;o=p<0.0?0.0:p;l[t>>2]=o;a=_<0.0?0.0:_;l[i>>2]=a;f=f<0.0?0.0:f;l[v>>2]=f;if((o>f?o:f)>.0007999999797903001){w=+H(+o);p=+H(+f);_=+H(+w);m=+H(+p);p=w*p;w=a>2]=w;p=w/(p+1.0000000036274937e-15);m=+H(+(1.0-p*p))*(+K(+(_-m))/(_+1.0000000036274937e-15+m));v=t+12|0;_=+l[v>>2];p=+(r|0);_=_+(m-_)/p;l[v>>2]=_;v=t+16|0;p=+l[v>>2]-.019999999552965164/p;_=p>_?p:_;l[v>>2]=_;_=_*20.0;v=_>1.0;_=v?1.0:_;h=n;return+_}else{_=+l[t+16>>2];_=_*20.0;v=_>1.0;_=v?1.0:_;h=n;return+_}return 0.0}function Xs(e,i,r,f,o,s,u,c,d,b,k,w,m){e=e|0;i=i|0;r=r|0;f=f|0;o=o|0;s=s|0;u=u|0;c=c|0;d=d|0;b=b|0;k=k|0;w=w|0;m=m|0;var p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0,B=0,D=0,I=0,U=0,F=0,G=0,V=0,W=0,K=0,H=0,z=0,Y=0,q=0,j=0,J=0,Z=0,$=0,X=0,Q=0,ee=0,ie=0,te=0,ne=0,ae=0,fe=0,oe=0,se=0,le=0,ue=0,he=0,de=0,be=0,ke=0.0,we=0,me=0,pe=0.0,_e=0.0,ve=0.0;p=h;h=h+528|0;y=p;G=p+520|0;T=p+472|0;A=p+464|0;N=p+460|0;L=p+432|0;le=p+344|0;oe=p+312|0;Y=p+8|0;V=p+4|0;M=p+526|0;S=p+524|0;a[A>>2]=0;R=(o|0)>1276?1276:o;E=e+18212|0;a[E>>2]=0;I=e+144|0;do{if(!(a[I>>2]|0)){O=r*400|0;v=a[e+132>>2]|0;if((O|0)==(v|0)){v=e+132|0;break}if(!((r*200|0)==(v|0)|(r*100|0)==(v|0))?(me=r*50|0,!((me|0)==(v|0)|(r*25|0)==(v|0)|(me|0)==(v*3|0))):0){me=-1;h=p;return me|0}else _=7}else{O=r*400|0;v=a[e+132>>2]|0;_=7}}while(0);if((_|0)==7)if((O|0)<(v|0)){me=-1;h=p;return me|0}else v=e+132|0;if((R|0)<1){me=-1;h=p;return me|0}ee=a[e+4>>2]|0;W=e+ee|0;O=e+(a[e>>2]|0)|0;X=e+96|0;if((a[X>>2]|0)==2051)C=0;else C=a[e+104>>2]|0;$=a[e+156>>2]|0;$=($|0)>(s|0)?s:$;a[L>>2]=0;a[y>>2]=N;$i(O,10015,y)|0;se=e+44|0;if((a[se>>2]|0)>6?(a[v>>2]|0)==48e3:0){ae=a[e+12596>>2]|0;ne=a[e+12600>>2]|0;ls(e+4092|0,a[N>>2]|0,u,c,r,d,b,k,48e3,$,w,L)}else{ae=-1;ne=-1}B=e+128|0;a[B>>2]=-1;fe=e+18204|0;a[fe>>2]=0;do{if(a[L>>2]|0){if((a[e+112>>2]|0)==-1e3)a[B>>2]=~~+x(+((1.0-+l[L+20>>2])*100.0+.5));c=a[L+24>>2]|0;if((c|0)<13){a[fe>>2]=1101;break}if((c|0)<15){a[fe>>2]=1102;break}if((c|0)<17){a[fe>>2]=1103;break}if((c|0)<19){a[fe>>2]=1104;break}else{a[fe>>2]=1105;break}}}while(0);c=e+100|0;if((a[c>>2]|0)==2?(a[e+108>>2]|0)!=1:0)ke=+$s(i,r,a[v>>2]|0,e+232|0);else ke=0.0;de=Qs(e,r,R)|0;u=e+148|0;a[u>>2]=de;z=a[v>>2]|0;Z=(z|0)/(r|0)|0;do{if((R|0)>=3?(de|0)>=(Z*24|0):0){if((Z|0)<50?(re(R,Z)|0)<300|(de|0)<2400:0)break;g=e+136|0;he=(a[g>>2]|0)==0;if(he){me=Z<<3;de=(de+(Z<<2)|0)/(me|0)|0;R=(de|0)<(R|0)?de:R;de=re(R,me)|0;a[u>>2]=de}K=re(Z,R)|0;H=K<<3;U=a[c>>2]|0;D=Z+-50|0;s=de-(re((U*40|0)+20|0,D)|0)|0;F=a[e+112>>2]|0;do{if((F|0)!=3001){if((F|0)!=3002){B=a[B>>2]|0;if((B|0)<=-1){ue=(a[X>>2]|0)==2048?115:48;break}ue=B*327>>8;if((a[X>>2]|0)==2049)ue=(ue|0)<115?ue:115}else ue=0}else ue=127}while(0);Q=e+108|0;B=a[Q>>2]|0;F=(U|0)==2;if((B|0)==-1e3){if(F){me=e+168|0;B=(s|0)>(((a[me>>2]|0)==2?29e3:31e3)|0)?2:1;a[me>>2]=B}else _=55}else if(F)a[e+168>>2]=B;else _=55;if((_|0)==55){a[e+168>>2]=U;B=U}s=e+168|0;D=de-(re((B*40|0)+20|0,D)|0)|0;U=a[X>>2]|0;do{if((U|0)!=2051){we=a[e+124>>2]|0;if((we|0)==-1e3){ve=1.0-ke;F=~~(ve*16.0e3+ke*16.0e3);F=F+((re(re(ue,ue)|0,~~(ve*64.0e3+ke*36.0e3)-F|0)|0)>>14)|0;U=(U|0)==2048?F+8e3|0:F;F=a[e+204>>2]|0;if((F|0)==1002)U=U+-4e3|0;else U=(F|0)>0?U+4e3|0:U;we=(D|0)>=(U|0)?1002:1e3;U=e+200|0;a[U>>2]=we;do{if(a[e+48>>2]|0){if((a[e+40>>2]|0)<=(128-ue>>4|0))break;a[U>>2]=1e3;we=1e3}}while(0);if((a[e+52>>2]|0)!=0&(ue|0)>100){a[U>>2]=1e3;F=e+200|0;we=1e3}else _=68}else{a[e+200>>2]=we;_=68}if((_|0)==68){F=e+200|0;if((we|0)==1002){we=1002;break}}if(((z|0)/100|0|0)>(r|0)){a[F>>2]=1002;we=1002}}else{a[e+200>>2]=1002;F=e+200|0;we=1002}}while(0);te=e+164|0;if(a[te>>2]|0){a[F>>2]=1002;we=1002}q=(Z|0)>50;if((R|0)<((re(q?12e3:8e3,r)|0)/(z<<3|0)|0|0)){a[F>>2]=1002;we=1002}do{if(((B|0)==1?(a[e+208>>2]|0)==2:0)?(P=e+64|0,!((a[P>>2]|0)!=0|(we|0)==1002)):0){be=a[e+204>>2]|0;if((be|0)==1002){_=80;break}a[P>>2]=1;a[s>>2]=2}else _=80}while(0);if((_|0)==80){a[e+64>>2]=0;be=a[e+204>>2]|0}B=e+204|0;do{if((be|0)>0){P=(be|0)==1002;if((we|0)!=1002){if(P)P=1002;else{J=0;j=0;P=0;break}me=(we|0)!=1002;J=me&1;if(me){j=1;P=0;break}}else{if(P){we=1002;J=0;j=0;P=0;break}P=be;J=(we|0)!=1002&1}if(((z|0)/100|0|0)>(r|0)){we=1002;j=0;P=0;break}a[F>>2]=P;we=P;j=1;P=1}else{J=0;j=0;P=0}}while(0);U=e+220|0;if(!(a[U>>2]|0)){me=0;if(!j){he=me;z=0}else _=92}else{a[U>>2]=0;J=1;me=1;j=1;_=92}do{if((_|0)==92){z=(z|0)/200|0;z=(re(R,z)|0)/(z+r|0)|0;z=(z|0)>257?257:z;if(he){he=me;break}de=(de|0)/1600|0;he=me;z=(z|0)<(de|0)?z:de}}while(0);e:do{if((we|0)==1002){se=1;le=D;_=103}else{if((be|0)==1002){Va(W,a[e+18216>>2]|0,le)|0;we=a[F>>2]|0;he=1}le=(we|0)==1002;if(le){se=le;le=D;_=103;break}do{if(!(a[e+224>>2]|0)){if(a[e+80>>2]|0){_=le;if(_){se=_;le=D;_=103;break e}else break}else{be=a[e+216>>2]|0;ue=le;oe=he;break e}}else _=le}while(0);le=(re(D,(a[se>>2]|0)+45|0)|0)/50|0;se=_;le=(a[g>>2]|0)==0?le+-1e3|0:le;_=103}}while(0);do{if((_|0)==103){if((a[c>>2]|0)==2?(a[Q>>2]|0)!=1:0){de=30520;be=30488}else{de=30584;be=30552}we=re(ue,ue)|0;ue=0;while(1){if((ue|0)>=8)break;me=a[de+(ue<<2)>>2]|0;a[oe+(ue<<2)>>2]=me+((re(we,(a[be+(ue<<2)>>2]|0)-me|0)|0)>>14);ue=ue+1|0}ue=(a[e+224>>2]|0)==0;de=e+216|0;be=1105;do{me=be<<1;we=a[oe+(me+-2204<<2)>>2]|0;me=a[oe+(me+-2203<<2)>>2]|0;do{if(ue)if((a[de>>2]|0)<(be|0)){we=we+me|0;break}else{we=we-me|0;break}}while(0);if((le|0)>=(we|0))break;be=be+-1|0}while((be|0)>1101);a[de>>2]=be;if(ue^1|se){ue=se;oe=he;break}if(!((a[e+84>>2]|0)==0&(be|0)>1103)){ue=se;oe=he;break}a[de>>2]=1103;be=1103;ue=se;oe=he}}while(0);se=e+216|0;le=a[e+120>>2]|0;if((be|0)>(le|0)){a[se>>2]=le;be=le}le=e+116|0;he=a[le>>2]|0;if((he|0)==-1e3)he=-1e3;else{a[se>>2]=he;be=he}if((ue^1)&(H|0)<15e3){be=(be|0)<1103?be:1103;a[se>>2]=be}de=a[v>>2]|0;do{if((de|0)<24001){if((be|0)>1104){a[se>>2]=1104;be=1104}if((de|0)>=16001)break;if((be|0)>1103){a[se>>2]=1103;be=1103}if((de|0)>=12001)break;if((be|0)>1102){a[se>>2]=1102;be=1102}if(!((de|0)<8001&(be|0)>1101))break;a[se>>2]=1101;be=1101}}while(0);de=a[fe>>2]|0;if((de|0)!=0&(he|0)==-1e3){he=a[s>>2]|0;do{if((D|0)>(he*18e3|0)|ue^1){if(!((D|0)>(he*24e3|0)|ue^1)){ue=1102;break}if((D|0)<=(he*3e4|0)){ue=1103;break}ue=(D|0)>(he*44e3|0)?1105:1104}else ue=1101}while(0);me=(de|0)>(ue|0)?de:ue;a[fe>>2]=me;a[se>>2]=(be|0)<(me|0)?be:me}a[y>>2]=$;$i(O,4036,y)|0;ue=a[F>>2]|0;he=(ue|0)==1002;do{if(he){if((a[se>>2]|0)!=1102)break;a[se>>2]=1103}}while(0);if(a[te>>2]|0)a[se>>2]=1101;fe=a[v>>2]|0;do{if(((fe|0)/50|0|0)<(r|0)){if(!he?(ie=a[se>>2]|0,(ie|0)<=1103):0)break;if((ae|0)!=-1){a[e+12596>>2]=ae;a[e+12600>>2]=ne}y=((fe|0)/25|0|0)<(r|0)?3:2;O=(o+-3|0)/(y|0)|0;O=(O|0)>1276?1276:O;r=re(y,O)|0;E=Ee()|0;R=h;h=h+((1*r|0)+15&-16)|0;kl(Y);r=e+124|0;S=a[r>>2]|0;A=a[le>>2]|0;T=a[Q>>2]|0;a[r>>2]=a[F>>2];a[le>>2]=a[se>>2];s=a[s>>2]|0;a[Q>>2]=s;L=e+64|0;M=a[L>>2]|0;if(!M)a[e+208>>2]=s;else a[Q>>2]=1;N=(P|0)!=0;s=y+-1|0;P=0;while(1){if((P|0)>=(y|0)){_=163;break}a[L>>2]=0;if(N&(P|0)==(s|0))a[r>>2]=1002;C=a[v>>2]|0;B=R+(re(P,O)|0)|0;C=Xs(e,i+((re(P,(re(a[c>>2]|0,C)|0)/50|0)|0)<<2)|0,(C|0)/50|0,B,O,$,0,0,d,b,k,w,m)|0;if((C|0)<0){f=-3;break}if((wl(Y,B,C)|0)<0){f=-3;break}P=P+1|0}do{if((_|0)==163){e=(a[g>>2]|0)==0;if(e){me=((a[u>>2]|0)*3|0)/(1200/(y>>>0)|0|0)|0;o=(me|0)<(o|0)?me:o}f=pl(Y,y,f,o,e&1)|0;if((f|0)<0){f=-3;break}a[r>>2]=S;a[le>>2]=A;a[Q>>2]=T;a[L>>2]=M}}while(0);ce(E|0);me=f;h=p;return me|0}else ie=a[se>>2]|0}while(0);do{if((ue|0)==1e3){if((ie|0)<=1103)break;a[F>>2]=1001;if((ie|0)<1104)_=172}else if((ue|0)==1001&(ie|0)<1104)_=172}while(0);if((_|0)==172)a[F>>2]=1e3;d=R-z|0;$=(re(a[u>>2]|0,r)|0)/(fe<<3|0)|0;$=((d|0)<($|0)?d:$)+-1|0;d=R+-1|0;Ar(T,f+1|0,d);k=C+r|0;w=re(k,a[c>>2]|0)|0;Y=Ee()|0;o=h;h=h+((4*w|0)+15&-16)|0;w=e+160|0;me=a[c>>2]|0;Ll(o|0,e+((re((a[w>>2]|0)-C|0,me)|0)<<2)+252|0,(re(C,me)|0)<<2|0)|0;if((a[F>>2]|0)==1002)b=(po(60)|0)<<8;else b=a[e+(ee+8)>>2]|0;me=e+176|0;we=a[me>>2]|0;b=b-we|0;b=we+(((b>>16)*983|0)+(((b&65535)*983|0)>>>16))|0;a[me>>2]=b;if((a[X>>2]|0)==2048){be=Eo(b>>8)|0;me=a[c>>2]|0;we=o+((re(C,me)|0)<<2)|0;il(i,be,we,e+184|0,r,me,a[v>>2]|0)}else{me=a[c>>2]|0;we=o+((re(C,me)|0)<<2)|0;rl(i,we,e+184|0,r,me,a[v>>2]|0)}do{if(m){i=a[c>>2]|0;m=o+((re(C,i)|0)<<2)|0;i=re(i,r)|0;ve=+tl(m,m,i);if(!(!(ve<1.0e9)|(ve!=ve|0.0!=0.0)))break;yl(m|0,0,i<<2|0)|0}}while(0);e:do{if((a[F>>2]|0)==1002){ke=1.0;G=0;_=244}else{Q=re(a[c>>2]|0,r)|0;i=Ee()|0;m=h;h=h+((2*Q|0)+15&-16)|0;Q=re($<<3,Z)|0;Z=a[F>>2]|0;b=(Z|0)==1001;do{if(!b){a[e+36>>2]=Q;X=a[e+228>>2]|0;if(!X)ke=1.0;else{ke=1.0;_=191}}else{ee=a[s>>2]|0;ae=re(ee,(a[v>>2]|0)==(r*100|0)?6e3:5e3)|0;X=e+36|0;a[X>>2]=ae;ne=(ie|0)==1104;fe=Q-ae|0;if(ne)fe=(fe<<1|0)/3|0;else fe=(fe*3|0)/5|0;me=ae+fe|0;we=(Q<<2|0)/5|0;be=(me|0)>(we|0);ae=be?we:me;a[X>>2]=be?we:me;X=a[e+228>>2]|0;if(X){Q=ae;ke=1.0;_=191;break}ke=+(Q-ae|0);ke=ke/(ke+ +(re(ee,ne?3e3:3600)|0));if(!(ke<.8571428656578064)){Q=ae;ke=1.0;break}Q=ae;ke=ke+.1428571492433548}}while(0);do{if((_|0)==191){if(!(a[g>>2]|0))break;if(a[te>>2]|0)break;ee=a[se>>2]|0;if((ee|0)==1101){fe=13;pe=8.0e3}else{me=(ee|0)==1102;fe=me?15:17;pe=me?12.0e3:16.0e3}ne=a[c>>2]|0;_e=0.0;ae=0;while(1){if((ae|0)>=(ne|0))break;te=ae*21|0;se=0;while(1){if((se|0)>=(fe|0))break;ve=+l[X+(te+se<<2)>>2];do{if(ve<.5){if(!(ve>-2.0)){ve=-2.0;break}if(ve>0.0)_=202}else{ve=.5;_=202}}while(0);if((_|0)==202){_=0;ve=ve*.5}_e=_e+ve;se=se+1|0}ae=ae+1|0}me=~~(pe*(_e/+(fe|0)*+(ne|0)+.20000000298023224));X=(re(Q,-2)|0)/3|0;X=(me|0)>(X|0)?me:X;if((ee+-1104|0)>>>0<2)ee=(X*3|0)/5|0;else ee=X;Q=Q+ee|0;a[e+36>>2]=Q;me=re(X,r)|0;$=$+((me|0)/(a[v>>2]<<3|0)|0)|0}}while(0);ee=a[v>>2]|0;a[e+32>>2]=(r*1e3|0)/(ee|0)|0;X=a[c>>2]|0;a[e+8>>2]=X;a[e+12>>2]=a[s>>2];if((ie|0)==1101){a[e+28>>2]=8e3;te=8e3}else if((ie|0)==1102){a[e+28>>2]=12e3;te=12e3}else{a[e+28>>2]=16e3;te=16e3}ne=e+24|0;do{if(b){a[ne>>2]=16e3;_=221}else{a[ne>>2]=8e3;if((Z|0)!=1e3){_=221;break}Z=e+20|0;a[Z>>2]=16e3;if(q)H=(K<<4|0)/3|0;if((H|0)<13e3){a[Z>>2]=12e3;te=te>>>0>12e3?12e3:te;a[e+28>>2]=te}if((H|0)>=9600)break;a[Z>>2]=8e3;a[e+28>>2]=(te|0)>8e3?8e3:te}}while(0);if((_|0)==221)a[e+20>>2]=16e3;H=(a[g>>2]|0)==0;a[e+56>>2]=H&1;q=d-z|0;q=(q|0)>1275?1275:q;a[G>>2]=q;K=e+60|0;if(b)q=(q*72|0)/10|0;else q=q<<3;a[K>>2]=q;if(H){a[K>>2]=((re(Q,r)|0)/(ee<<3|0)|0)<<3;me=Q+-2e3|0;a[e+36>>2]=(me|0)<1?1:me}if(!oe)V=0;else{a[V>>2]=0;we=(ee|0)/400|0;H=re(X,(a[w>>2]|0)-(a[e+104>>2]|0)-we|0)|0;be=e+(H<<2)+252|0;me=a[N>>2]|0;nl(be,be,0.0,1.0,a[me+4>>2]|0,we,X,a[me+60>>2]|0,ee);yl(e+252|0,0,H<<2|0)|0;H=0;while(1){K=a[w>>2]|0;if((H|0)>=(re(K,a[c>>2]|0)|0))break;n[m+(H<<1)>>1]=al(+l[e+(H<<2)+252>>2])|0;H=H+1|0}xa(W,e+8|0,m,K,0,V,1)|0;V=0}while(1){K=a[c>>2]|0;if((V|0)>=(re(K,r)|0))break;n[m+(V<<1)>>1]=al(+l[o+((re(C,K)|0)+V<<2)>>2])|0;V=V+1|0}V=xa(W,e+8|0,m,r,T,G,0)|0;do{if(!V){if(!(a[G>>2]|0)){a[E>>2]=0;t[f>>0]=el(a[F>>2]|0,(a[v>>2]|0)/(r|0)|0,ie,a[s>>2]|0)|0;R=1;break}do{if((a[F>>2]|0)==1e3){_=a[e+76>>2]|0;if((_|0)==8e3){ie=1101;break}if((_|0)==12e3){ie=1102;break}ie=(_|0)==16e3?1103:ie}}while(0);me=a[e+92>>2]|0;a[e+68>>2]=me;if(me){a[U>>2]=1;J=0;j=1}ce(i|0);G=V;_=244;break e}else R=-3}while(0);ce(i|0)}}while(0);e:do{if((_|0)==244){if((ie|0)==1101)V=13;else if((ie|0)==1103|(ie|0)==1102)V=17;else if((ie|0)==1104)V=19;else V=21;a[y>>2]=V;$i(O,10012,y)|0;a[y>>2]=a[s>>2];$i(O,10008,y)|0;a[y>>2]=-1;$i(O,4002,y)|0;do{if((a[F>>2]|0)==1e3){K=a[c>>2]|0;$=(re(K,a[v>>2]|0)|0)/400|0;I=h;h=h+((4*$|0)+15&-16)|0;$=0}else{a[y>>2]=0;$i(O,4006,y)|0;a[y>>2]=(a[e+72>>2]|0)==0?2:0;$i(O,10002,y)|0;V=a[F>>2]|0;if((V|0)!=1001){if(a[g>>2]|0){do{if((a[I>>2]|0)==5010){I=a[v>>2]|0;if(((I|0)/50|0|0)==(r|0)){I=0;break}I=re(((a[s>>2]|0)*60|0)+40|0,((I|0)/(r|0)|0)+-50|0)|0;if(!(a[L>>2]|0))break;I=~~(+(I|0)*(+l[L+4>>2]*.5+1.0))}else I=0}while(0);a[y>>2]=1;$i(O,4006,y)|0;a[y>>2]=a[e+140>>2];$i(O,4020,y)|0;a[y>>2]=(a[u>>2]|0)+I;$i(O,4002,y)|0;V=a[F>>2]|0;$=d-z|0}K=a[c>>2]|0;W=a[v>>2]|0;H=(re(K,W)|0)/400|0;I=h;h=h+((4*H|0)+15&-16)|0;if((V|0)==1e3)break}else{I=(fl(a[T+20>>2]|0,a[T+28>>2]|0)|0)+7>>3;I=(j|0)==0?I:I+3|0;if(!(a[g>>2]|0))$=(I|0)>($|0)?I:$;else{me=re(a[e+36>>2]|0,r)|0;$=I+$-((me|0)/(a[v>>2]<<3|0)|0)|0}K=a[c>>2]|0;W=a[v>>2]|0;H=(re(K,W)|0)/400|0;I=h;h=h+((4*H|0)+15&-16)|0;V=1001}me=a[B>>2]|0;if(!((V|0)!=(me|0)&(me|0)>0))break;Ll(I|0,e+((re((a[w>>2]|0)-C-((W|0)/400|0)|0,K)|0)<<2)+252|0,H<<2|0)|0}}while(0);W=a[w>>2]|0;V=e+252|0;if((re(K,W-k|0)|0)>0){me=re(K,W-r-C|0)|0;Ol(V|0,e+((re(K,r)|0)<<2)+252|0,me<<2|0)|0;Ll(e+(me<<2)+252|0,o|0,(re(k,K)|0)<<2|0)|0}else Ll(V|0,o+((re(k-W|0,K)|0)<<2)|0,(re(W,K)|0)<<2|0)|0;C=e+180|0;pe=+l[C>>2];if(pe<1.0|ke<1.0){me=a[N>>2]|0;nl(o,o,pe,ke,a[me+4>>2]|0,r,a[c>>2]|0,a[me+60>>2]|0,a[v>>2]|0)}l[C>>2]=ke;C=a[F>>2]|0;if(!((C|0)==1001?(a[s>>2]|0)!=1:0)){if((D+-3e4|0)<0)D=0;else{D=(D<<1)+-6e4|0;D=(D|0)>16384?16384:D}a[e+88>>2]=D}do{if(!(a[e+228>>2]|0)){if((a[c>>2]|0)!=2)break;V=e+172|0;W=n[V>>1]|0;D=a[e+88>>2]|0;if(!(W<<16>>16<16384|(D|0)<16384))break;C=a[N>>2]|0;ol(o,o,+(W<<16>>16)*6103515625.0e-14,+(D|0)*6103515625.0e-14,a[C+4>>2]|0,r,2,a[C+60>>2]|0,a[v>>2]|0);n[V>>1]=a[e+88>>2];C=a[F>>2]|0}}while(0);do{if((C|0)==1002)_=291;else{D=T+20|0;N=T+28|0;V=fl(a[D>>2]|0,a[N>>2]|0)|0;C=(C|0)==1001;if((V+17+(C?20:0)|0)>((R<<3)+-8|0)){_=291;break}if(C){if((j|0)==0?(V+37|0)>($<<3|0):0){_=291;break}Or(T,j,12)}if(!j){_=291;break}Or(T,J,1);C=(a[F>>2]|0)==1001;if(C)N=$;else N=(fl(a[D>>2]|0,a[N>>2]|0)|0)+7>>3;me=d-N|0;u=(a[u>>2]|0)/1600|0;u=(me|0)<(u|0)?me:u;if((u|0)<2)u=2;else u=(u|0)>257?257:u;if(!C)break;Nr(T,u+-2|0,256)}}while(0);if((_|0)==291){a[U>>2]=0;j=0;u=0}N=a[F>>2]|0;do{if((N|0)==1002){C=0;_=295}else{if((N|0)!=1e3){C=17;_=295;break}G=(fl(a[T+20>>2]|0,a[T+28>>2]|0)|0)+7>>3;Ir(T);N=G;C=17}}while(0);if((_|0)==295){N=d-u|0;N=(N|0)<($|0)?N:$;Dr(T,N)}_=(j|0)==0;do{if(_){if((a[F>>2]|0)==1e3)break;a[y>>2]=L;$i(O,10022,y)|0}else{a[y>>2]=L;$i(O,10022,y)|0;if(!J)break;a[y>>2]=0;$i(O,10010,y)|0;a[y>>2]=0;$i(O,4006,y)|0;if((Fi(O,o,(a[v>>2]|0)/200|0,f+(N+1)|0,u,0)|0)<0){R=-3;break e}a[y>>2]=A;$i(O,4031,y)|0;$i(O,4028,y)|0}}while(0);a[y>>2]=C;$i(O,10010,y)|0;L=a[F>>2]|0;do{if((L|0)!=1e3){me=a[B>>2]|0;if((L|0)!=(me|0)&(me|0)>0){$i(O,4028,y)|0;Fi(O,I,(a[v>>2]|0)/400|0,M,2,0)|0;a[y>>2]=0;$i(O,10002,y)|0}if((fl(a[T+20>>2]|0,a[T+28>>2]|0)|0)>(N<<3|0))break;G=Fi(O,o,r,0,N,T)|0;if((G|0)<0){R=-3;break e}}}while(0);if((_^1)&(J|0)==0){be=a[v>>2]|0;me=(be|0)/200|0;be=(be|0)/400|0;$i(O,4028,y)|0;a[y>>2]=0;$i(O,10010,y)|0;a[y>>2]=0;$i(O,10002,y)|0;we=r-me|0;Fi(O,o+((re(a[c>>2]|0,we-be|0)|0)<<2)|0,be,S,2,0)|0;if((Fi(O,o+((re(a[c>>2]|0,we)|0)<<2)|0,me,f+(N+1)|0,u,0)|0)<0){R=-3;break}a[y>>2]=A;$i(O,4031,y)|0}t[f>>0]=el(a[F>>2]|0,(a[v>>2]|0)/(r|0)|0,ie,a[s>>2]|0)|0;v=a[T+28>>2]|0;a[E>>2]=v^a[A>>2];if(!P)c=a[F>>2]|0;else c=1002;a[B>>2]=c;a[e+208>>2]=a[s>>2];a[e+212>>2]=r;a[e+224>>2]=0;i:do{if((fl(a[T+20>>2]|0,v)|0)>((R<<3)+-8|0)){if((R|0)<2){R=-2;break e}t[f+1>>0]=0;a[E>>2]=0;G=1}else{if((a[F>>2]|0)==1e3^1|_^1)break;while(1){if((G|0)<=2)break i;if(t[f+G>>0]|0)break i;G=G+-1|0}}}while(0);e=G+(u+1)|0;if(!(a[g>>2]|0)){if(_l(f,e,R)|0){R=-3;break}}else R=e}}while(0);ce(Y|0);me=R;h=p;return me|0}}while(0);c=a[e+200>>2]|0;v=a[e+216>>2]|0;v=(v|0)==0?1101:v;do{if((Z|0)<=100){if((Z|0)>=50?(g=(c|0)==0?1e3:c,(g|0)!=1e3):0)if((g|0)==1002){_=38;break}else{_=39;break}if((v|0)>1103){v=1103;g=1e3}else{g=1e3;_=40}}else{g=1002;_=38}}while(0);if((_|0)==38)if((v|0)==1102)v=1101;else _=39;if((_|0)==39)if((v|0)<1105)_=40;if((_|0)==40)v=1104;t[f>>0]=el(g,Z,v,a[e+168>>2]|0)|0;me=1;h=p;return me|0}function Qs(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0;t=h;if(!i)i=(a[e+132>>2]|0)/400|0;n=a[e+152>>2]|0;if((n|0)==-1){n=(re(r<<3,a[e+132>>2]|0)|0)/(i|0)|0;h=t;return n|0}else if((n|0)==-1e3){n=a[e+132>>2]|0;n=((n*60|0)/(i|0)|0)+(re(n,a[e+100>>2]|0)|0)|0;h=t;return n|0}else{h=t;return n|0}return 0}function el(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0;n=h;a=0;while(1){if((i|0)>=400)break;i=i<<1;a=a+1|0}if((e|0)==1e3)r=(r<<5)+96&224|(a<<3)+-16;else if((e|0)==1002){r=r+-1102|0;r=((r|0)<0?0:r)<<5&96|a<<3|128}else r=r<<4|(a<<3)+240|96;h=n;return(r|((t|0)==2&1)<<2)&255|0}function il(e,i,r,t,n,f,o){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;var s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0;s=h;h=h+32|0;l=s+8|0;u=s;c=((i<<16>>16)*2471|0)/((o|0)/1e3|0|0)|0;o=re(c,-471)|0;i=o+268435456|0;a[l>>2]=i;a[l+4>>2]=-268435456-o<<1;a[l+8>>2]=i;o=i>>6;b=c<<16>>16;k=re(c>>16,b)|0;b=re(c&65535,b)|0;c=re(c,(c>>15)+1>>1)|0;w=k+(b>>>16)+c<<16>>16;d=o&65535;a[u>>2]=(re(i>>22,w)|0)+((re(d,w)|0)>>16)+(re(o,(k+(b>>16)+c+-8388608>>15)+1>>1)|0);c=o<<16>>16;a[u+4>>2]=(re(i>>22,c)|0)+((re(d,c)|0)>>16)+(re(o,(i>>21)+1>>1)|0);cl(e,l,u,t,r,n,f);if((f|0)!=2){h=s;return}cl(e+4|0,l,u,t+8|0,r+4|0,n,2);h=s;return}function rl(e,i,r,t,n,a){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;var f=0,o=0.0,s=0,u=0,c=0,d=0,b=0.0,k=0.0;f=h;o=12.0/+(a|0);a=0;while(1){if((a|0)>=(n|0))break;u=a<<1;s=r+(u<<2)|0;u=r+((u|1)<<2)|0;c=0;while(1){if((c|0)>=(t|0))break;d=(re(c,n)|0)+a|0;k=+l[s>>2];b=+l[e+(d<<2)>>2]-k;l[s>>2]=k+o*b+1.0000000031710769e-30;k=+l[u>>2];b=b-k;l[u>>2]=k+o*b+1.0000000031710769e-30;l[i+(d<<2)>>2]=b;c=c+1|0}a=a+1|0}h=f;return}function tl(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0.0,a=0,f=0.0;t=h;a=0;n=0.0;while(1){if((a|0)>=(r|0))break;f=n+ +l[e+(a<<2)>>2]*+l[i+(a<<2)>>2];a=a+1|0;n=f}h=t;return+n}function nl(e,i,r,t,n,a,f,o,s){e=e|0;i=i|0;r=+r;t=+t;n=n|0;a=a|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0.0,b=0;u=h;s=48e3/(s|0)|0;n=(n|0)/(s|0)|0;e:do{if((f|0)==1){c=0;while(1){if((c|0)>=(n|0)){o=0;break e}d=+l[o+((re(c,s)|0)<<2)>>2];d=d*d;l[i+(c<<2)>>2]=(d*t+(1.0-d)*r)*+l[e+(c<<2)>>2];c=c+1|0}}else{c=0;while(1){if((c|0)>=(n|0)){o=0;break e}d=+l[o+((re(c,s)|0)<<2)>>2];d=d*d;d=d*t+(1.0-d)*r;b=c<<1;l[i+(b<<2)>>2]=d*+l[e+(b<<2)>>2];b=b|1;l[i+(b<<2)>>2]=d*+l[e+(b<<2)>>2];c=c+1|0}}}while(0);do{s=n;while(1){if((s|0)>=(a|0))break;b=(re(s,f)|0)+o|0;l[i+(b<<2)>>2]=+l[e+(b<<2)>>2]*t;s=s+1|0}o=o+1|0}while((o|0)<(f|0));h=u;return}function al(e){e=+e;var i=0,r=0;r=h;e=e*32768.0;if(e>-32768.0){if(e<32767.0)i=3;else e=32767.0}else{e=-32768.0;i=3}i=(ge(+e)|0)&65535;h=r;return i|0}function fl(e,i){e=e|0;i=i|0;var r=0;r=h;i=(Sl(i|0)|0)+-32+e|0;h=r;return i|0}function ol(e,i,r,t,n,a,f,o,s){e=e|0;i=i|0;r=+r;t=+t;n=n|0;a=a|0;f=f|0;o=o|0;s=s|0;var u=0,c=0,d=0,b=0.0,k=0;u=h;s=48e3/(s|0)|0;n=(n|0)/(s|0)|0;r=1.0-r;t=1.0-t;c=0;while(1){if((c|0)>=(n|0))break;b=+l[o+((re(c,s)|0)<<2)>>2];b=b*b;k=re(c,f)|0;d=k+1|0;b=(b*t+(1.0-b)*r)*(+l[e+(k<<2)>>2]-+l[e+(d<<2)>>2])*.5;k=i+(k<<2)|0;l[k>>2]=+l[k>>2]-b;d=i+(d<<2)|0;l[d>>2]=+l[d>>2]+b;c=c+1|0}while(1){if((c|0)>=(a|0))break;d=re(c,f)|0;k=d+1|0;b=t*(+l[e+(d<<2)>>2]-+l[e+(k<<2)>>2])*.5;d=i+(d<<2)|0;l[d>>2]=+l[d>>2]-b;k=i+(k<<2)|0;l[k>>2]=+l[k>>2]+b;c=c+1|0}h=u;return}function sl(e,i,r,t,f){e=e|0;i=i|0;r=r|0;t=t|0;f=f|0;var o=0,s=0,u=0,c=0,d=0,b=0;o=h;if((a[e+96>>2]|0)==2051)s=0;else s=a[e+104>>2]|0;d=e+100|0;c=Js(i,r,a[e+144>>2]|0,a[d>>2]|0,a[e+132>>2]|0,a[e+148>>2]|0,s,1,e+10960|0)|0;d=a[d>>2]|0;b=re(c,d)|0;u=h;h=h+((4*b|0)+15&-16)|0;s=0;while(1){if((s|0)>=(b|0))break;l[u+(s<<2)>>2]=+(n[i+(s<<1)>>1]|0)*30517578125.0e-15;s=s+1|0}b=Xs(e,u,c,t,f,16,i,r,0,-2,d,1,0)|0;h=o;return b|0}function ll(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0,s=0;f=h;if((a[e+96>>2]|0)==2051)o=0;else o=a[e+104>>2]|0;s=e+100|0;o=Js(i,r,a[e+144>>2]|0,a[s>>2]|0,a[e+132>>2]|0,a[e+148>>2]|0,o,2,e+10960|0)|0;o=Xs(e,i,o,t,n,24,i,r,0,-2,a[s>>2]|0,2,1)|0;h=f;return o|0}function ul(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,f=0,o=0,s=0;t=h;h=h+112|0;o=t;f=t+96|0;s=t+8|0;a[f>>2]=r;r=e+(a[e>>2]|0)|0;e:do{switch(i|0){case 4013:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+48>>2];f=0;e=99}break};case 4008:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;do{if((o|0)>=1101){if((o|0)>1105){e=100;break e}a[e+116>>2]=o;if((o|0)==1101){a[e+20>>2]=8e3;f=0;e=99;break e}else if((o|0)==1102){a[e+20>>2]=12e3;f=0;e=99;break e}else break}else{if((o|0)!=-1e3){e=100;break e}a[e+116>>2]=o}}while(0);a[e+20>>2]=16e3;f=0;e=99;break};case 4004:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!((o|0)<1101|(o|0)>1105)){a[e+120>>2]=o;if((o|0)==1102){a[e+20>>2]=12e3;f=0;e=99;break e}else if((o|0)==1101){a[e+20>>2]=8e3;f=0;e=99;break e}else{a[e+20>>2]=16e3;f=0;e=99;break e}}else e=100;break};case 4009:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+216>>2];f=0;e=99}break};case 4010:{i=a[f>>2]|0;s=a[i>>2]|0;a[f>>2]=i+4;if((s|0)<0|(s|0)>10)e=100;else{a[e+44>>2]=s;a[o>>2]=s;$i(r,4010,o)|0;f=0;e=99}break};case 4002:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)!=-1e3){if((o|0)!=-1){if((o|0)<1){e=100;break e}if((o|0)<501)f=500;else{f=(a[e+100>>2]|0)*3e5|0;f=(o|0)>(f|0)?f:o}}else f=-1}else f=-1e3;a[e+152>>2]=f;f=0;e=99;break};case 10024:{s=a[f>>2]|0;i=a[s>>2]|0;a[f>>2]=s+4;a[e+164>>2]=i;a[o>>2]=i;f=$i(r,10024,o)|0;e=99;break};case 4015:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+40>>2];f=0;e=99}break};case 4017:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+52>>2];f=0;e=99}break};case 4023:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+108>>2];f=0;e=99}break};case 4011:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+44>>2];f=0;e=99}break};case 4036:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<8|(o|0)>24)e=100;else{a[e+156>>2]=o;f=0;e=99}break};case 4037:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+156>>2];f=0;e=99}break};case 4007:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+136>>2];f=0;e=99}break};case 11002:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<1e3){if((o|0)!=-1e3){e=100;break e}}else if((o|0)>1002){e=100;break e}a[e+124>>2]=o;f=0;e=99;break};case 4028:{i=e+(a[e+4>>2]|0)|0;f=e+168|0;yl(f|0,0,18052)|0;$i(r,4028,o)|0;Va(i,a[e+18216>>2]|0,s)|0;a[f>>2]=a[e+100>>2];n[e+172>>1]=16384;l[e+180>>2]=1.0;a[e+224>>2]=1;a[e+200>>2]=1001;a[e+216>>2]=1105;a[e+176>>2]=(po(60)|0)<<8;f=0;e=99;break};case 11019:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+128>>2];f=0;e=99}break};case 4e3:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)==2051|(o|0)==2049|(o|0)==2048){f=e+96|0;if((a[e+224>>2]|0)==0?(a[f>>2]|0)!=(o|0):0){f=-1;e=99;break e}a[f>>2]=o;f=0;e=99}else{f=-1;e=99}break};case 4003:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=Qs(e,a[e+212>>2]|0,1276)|0;f=0;e=99}break};case 4014:{i=a[f>>2]|0;s=a[i>>2]|0;a[f>>2]=i+4;if((s|0)<0|(s|0)>100)e=100;else{a[e+40>>2]=s;a[o>>2]=s;$i(r,4014,o)|0;f=0;e=99}break};case 4027:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(o){f=(a[e+132>>2]|0)/400|0;a[o>>2]=f;if((a[e+96>>2]|0)==2051){f=0;e=99}else{a[o>>2]=f+(a[e+104>>2]|0);f=0;e=99}}else e=100;break};case 4022:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<1){if((o|0)!=-1e3){e=100;break e}}else if((o|0)>(a[e+100>>2]|0)){e=100;break e}a[e+108>>2]=o;f=0;e=99;break};case 4040:{i=a[f>>2]|0;s=a[i>>2]|0;a[f>>2]=i+4;switch(s|0){case 5010:case 5006:case 5005:case 5004:case 5003:case 5002:case 5001:case 5e3:break;default:{e=100;break e}}a[e+144>>2]=s;a[o>>2]=s;$i(r,4040,o)|0;f=0;e=99;break};case 4041:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+144>>2];f=0;e=99}break};case 4006:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<0|(o|0)>1)e=100;else{a[e+136>>2]=o;a[e+56>>2]=1-o;f=0;e=99}break};case 4001:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+96>>2];f=0;e=99}break};case 4021:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+140>>2];f=0;e=99}break};case 4031:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+18212>>2];f=0;e=99}break};case 4016:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<0|(o|0)>1)e=100;else{a[e+52>>2]=o;f=0;e=99}break};case 11018:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<-1|(o|0)>100)e=100;else{a[e+128>>2]=o;f=0;e=99}break};case 4005:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+120>>2];f=0;e=99}break};case 4042:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)>1|(o|0)<0)e=100;else{a[e+72>>2]=o;f=0;e=99}break};case 4043:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+72>>2];f=0;e=99}break};case 4012:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<0|(o|0)>1)e=100;else{a[e+48>>2]=o;f=0;e=99}break};case 4029:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+132>>2];f=0;e=99}break};case 4024:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)==3002|(o|0)==3001|(o|0)==-1e3){a[e+112>>2]=o;f=0;e=99}else e=100;break};case 4025:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if(!o)e=100;else{a[o>>2]=a[e+112>>2];f=0;e=99}break};case 10026:{s=a[f>>2]|0;i=a[s>>2]|0;a[f>>2]=s+4;a[e+228>>2]=i;a[o>>2]=i;f=$i(r,10026,o)|0;e=99;break};case 10015:{i=a[f>>2]|0;e=a[i>>2]|0;a[f>>2]=i+4;if(!e)e=100;else{a[o>>2]=e;f=$i(r,10015,o)|0;e=99}break};case 4020:{i=a[f>>2]|0;o=a[i>>2]|0;a[f>>2]=i+4;if((o|0)<0|(o|0)>1)e=100;else{a[e+140>>2]=o;f=0;e=99}break};default:{f=-5;e=99}}}while(0);if((e|0)==99){i=f;h=t;return i|0}else if((e|0)==100){i=-1;h=t;return i|0}return 0}function hl(e){e=e|0;var i=0;i=h;zs(e);h=i;return}function cl(e,i,r,t,n,f,o){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;f=f|0;o=o|0;var s=0.0,u=0,c=0.0,d=0.0,b=0.0,k=0.0,w=0,m=0.0,p=0.0;u=h;s=+(a[r>>2]|0)*3.725290298461914e-9;b=+(a[r+4>>2]|0)*3.725290298461914e-9;c=+(a[i>>2]|0)*3.725290298461914e-9;d=+(a[i+4>>2]|0)*3.725290298461914e-9;k=+(a[i+8>>2]|0)*3.725290298461914e-9;i=t+4|0;r=0;while(1){if((r|0)>=(f|0))break;w=re(r,o)|0;p=+l[e+(w<<2)>>2];m=+l[t>>2]+c*p;l[t>>2]=+l[i>>2]-m*s+d*p;l[i>>2]=k*p-m*b+1.0000000031710769e-30;l[n+(w<<2)>>2]=m;r=r+1|0}h=u;return}function dl(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0,s=0,u=0.0,c=0,d=0,b=0,k=0.0,w=0,m=0,p=0,_=0,v=0.0,g=0,E=0,T=0,A=0.0,S=0,y=0;f=h;h=h+3072|0;s=f+1536|0;o=f;if((n|0)>=80){if((n|0)>160)u=1.0;else u=(+(n|0)+-80.0)/80.0}else u=0.0;c=0;while(1){if((c|0)>=16)break;a[o+(c<<2)>>2]=-1;l[s+(c<<2)>>2]=1.0e10;c=c+1|0}c=r+1|0;d=0;while(1){if((d|0)>=4){c=1;break}y=1<>2]=+((n<>2]=d;d=d+1|0}while(1){if((c|0)>=(r|0))break;d=c+-1|0;b=2;while(1){if((b|0)>=16)break;y=b+-1|0;l[s+(c<<6)+(b<<2)>>2]=+l[s+(d<<6)+(y<<2)>>2];a[o+(c<<6)+(b<<2)>>2]=y;b=b+1|0}b=s+(d<<6)+4|0;_=e+(c<<2)|0;p=i+(c<<2)|0;w=r-c|0;m=w+1|0;k=+(w|0);g=0;while(1){if((g|0)>=4)break;E=1<>2]=1;v=+l[b>>2];y=1;while(1){if((y|0)>=4)break;y=y+1|0;S=(1<>2];if(!(A>2]=S;v=A}A=+((n<>2]=v;if((w|0)<(E|0))A=A*k/+(E|0);l[T>>2]=v+A;g=g+1|0}c=c+1|0}i=r+-1|0;u=+l[s+(i<<6)+4>>2];e=1;t=2;while(1){if((t|0)>=16)break;A=+l[s+(i<<6)+(t<<2)>>2];y=A>2]|0;r=s}h=f;return e|0}function bl(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0.0,f=0.0,o=0.0,s=0.0;n=h;r=1<=(t|0))break;s=f+ +l[e+(r<<2)>>2];o=a+ +l[i+(r<<2)>>2];r=r+1|0;f=s;a=o}a=(f*a/+(re(t,t)|0)+-2.0)*.05000000074505806;i=a<0.0;if(i)f=0.0;else f=a;if(+H(+f)>1.0){s=1.0;h=n;return+s}if(i)a=0.0;s=+H(+a);h=n;return+s}function kl(e){e=e|0;a[e+4>>2]=0;return}function wl(e,i,r){e=e|0;i=i|0;r=r|0;var t=0;t=h;e=ml(e,i,r)|0;h=t;return e|0}function ml(e,i,r){e=e|0;i=i|0;r=r|0;var n=0,f=0,o=0,s=0,l=0;n=h;h=h+16|0;s=n;if((r|0)<1){l=-4;h=n;return l|0}f=e+4|0;l=a[f>>2]|0;if(l){if(((t[e>>0]^t[i>>0])&255)>=4){l=-4;h=n;return l|0}}else{t[e>>0]=t[i>>0]|0;a[e+296>>2]=ws(i,8e3)|0}o=Is(i,r)|0;if((o|0)<1){l=-4;h=n;return l|0}if((re(o+l|0,a[e+296>>2]|0)|0)>960){l=-4;h=n;return l|0}e=ms(i,r,0,s,e+(l<<2)+8|0,e+(l<<1)+200|0,0,0)|0;if((e|0)<1){l=e;h=n;return l|0}a[f>>2]=(a[f>>2]|0)+o;l=0;h=n;return l|0}function pl(e,i,r,o,s){e=e|0;i=i|0;r=r|0;o=o|0;s=s|0;var l=0,u=0,c=0,d=0,b=0,k=0;l=h;if((i|0)<=0){k=-1;h=l;return k|0}if((a[e+4>>2]|0)<(i|0)){k=-1;h=l;return k|0}d=e+200|0;do{if((i|0)==1){k=n[d>>1]|0;if((k|0)<(o|0)){t[r>>0]=f[e>>0]&252;b=r+1|0;k=k+1|0;break}else{k=-2;h=l;return k|0}}else if((i|0)==2){k=n[e+202>>1]|0;b=n[d>>1]|0;if(k<<16>>16==b<<16>>16){k=k<<16>>16<<1|1;if((k|0)>(o|0)){k=-2;h=l;return k|0}else{t[r>>0]=f[e>>0]&252|1;b=r+1|0;break}}else{k=(b<<16>>16)+(k<<16>>16)+2+(b<<16>>16>251&1)|0;if((k|0)>(o|0)){k=-2;h=l;return k|0}else{t[r>>0]=f[e>>0]&252|2;b=r+((ks(n[d>>1]|0,r+1|0)|0)+1)|0;break}}}else{b=r;k=0}}while(0);if(!((i|0)<=2?!((s|0)!=0&(k|0)<(o|0)):0)){b=1;c=13}e:do{if((c|0)==13){while(1){if((b|0)>=(i|0)){c=21;break}if((n[e+(b<<1)+200>>1]|0)!=(n[d>>1]|0)){c=16;break}b=b+1|0;c=13}do{if((c|0)==16){d=i+-1|0;b=0;c=2;while(1){if((b|0)>=(d|0))break;k=n[e+(b<<1)+200>>1]|0;b=b+1|0;c=c+((k<<16>>16>251?2:1)+(k<<16>>16))|0}k=c+(n[e+(d<<1)+200>>1]|0)|0;if((k|0)>(o|0)){k=-2;h=l;return k|0}else{t[r>>0]=f[e>>0]|3;b=i|128;t[r+1>>0]=b;d=1;break}}else if((c|0)==21){k=(re(n[d>>1]|0,i)|0)+2|0;if((k|0)>(o|0)){k=-2;h=l;return k|0}else{t[r>>0]=f[e>>0]|3;t[r+1>>0]=i;b=i;d=0;break}}}while(0);c=r+2|0;if((s|0)!=0?(u=o-k|0,(k|0)!=(o|0)):0){t[r+1>>0]=b|64;b=(u+-1|0)/255|0;k=0;while(1){if((k|0)>=(b|0))break;t[c>>0]=-1;c=c+1|0;k=k+1|0}t[c>>0]=u+(re(b,-255)|0)+255;b=c+1|0;k=o}else b=c;if(d){u=i+-1|0;c=0;while(1){if((c|0)>=(u|0))break e;b=b+(ks(n[e+(c<<1)+200>>1]|0,b)|0)|0;c=c+1|0}}}}while(0);u=0;while(1){if((u|0)>=(i|0))break;d=e+(u<<1)+200|0;Ol(b|0,a[e+(u<<2)+8>>2]|0,n[d>>1]|0)|0;b=b+(n[d>>1]|0)|0;u=u+1|0}if(!s){h=l;return k|0}r=r+o|0;while(1){if(b>>>0>=r>>>0)break;t[b>>0]=0;b=b+1|0}h=l;return k|0}function _l(e,i,r){e=e|0;i=i|0;r=r|0;var t=0,n=0,f=0;t=h;h=h+304|0;n=t;if((i|0)<1){i=-1;h=t;return i|0}if((i|0)==(r|0)){i=0;h=t;return i|0}if((i|0)>(r|0)){i=-1;h=t;return i|0}else{kl(n);f=e+(r-i)|0;Ol(f|0,e|0,i|0)|0;wl(n,f,i)|0;i=pl(n,a[n+4>>2]|0,e,r,1)|0;h=t;return((i|0)>0?0:i)|0}return 0}function vl(e){e=e|0;var i=0,r=0,t=0,n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0,T=0,A=0,S=0,y=0,M=0,L=0,O=0,R=0,N=0,C=0,P=0;i=h;do{if(e>>>0<245){if(e>>>0<11)e=16;else e=e+11&-8;g=e>>>3;k=a[7654]|0;E=k>>>g;if(E&3){o=(E&1^1)+g|0;f=o<<1;t=30656+(f<<2)|0;f=30656+(f+2<<2)|0;s=a[f>>2]|0;r=s+8|0;n=a[r>>2]|0;do{if((t|0)!=(n|0)){if(n>>>0<(a[7658]|0)>>>0)ye();l=n+12|0;if((a[l>>2]|0)==(s|0)){a[l>>2]=t;a[f>>2]=n;break}else ye()}else a[7654]=k&~(1<>2]=P|3;P=s+(P|4)|0;a[P>>2]=a[P>>2]|1;P=r;h=i;return P|0}if(e>>>0>(a[7656]|0)>>>0){if(E){o=2<>>12&16;o=o>>>r;n=o>>>5&8;o=o>>>n;f=o>>>2&4;o=o>>>f;t=o>>>1&2;o=o>>>t;s=o>>>1&1;s=(n|r|f|t|s)+(o>>>s)|0;o=s<<1;t=30656+(o<<2)|0;o=30656+(o+2<<2)|0;f=a[o>>2]|0;r=f+8|0;n=a[r>>2]|0;do{if((t|0)!=(n|0)){if(n>>>0<(a[7658]|0)>>>0)ye();l=n+12|0;if((a[l>>2]|0)==(f|0)){a[l>>2]=t;a[o>>2]=n;break}else ye()}else a[7654]=k&~(1<>2]=e|3;t=f+e|0;a[f+(e|4)>>2]=n|1;a[f+o>>2]=n;o=a[7656]|0;if(o){f=a[7659]|0;l=o>>>3;s=l<<1;o=30656+(s<<2)|0;u=a[7654]|0;l=1<>2]|0;if(l>>>0<(a[7658]|0)>>>0)ye();else{O=s;L=l}}else{a[7654]=u|l;O=30656+(s+2<<2)|0;L=o}a[O>>2]=f;a[L+12>>2]=f;a[f+8>>2]=L;a[f+12>>2]=o}a[7656]=n;a[7659]=t;P=r;h=i;return P|0}k=a[7655]|0;if(k){t=(k&0-k)+-1|0;C=t>>>12&16;t=t>>>C;N=t>>>5&8;t=t>>>N;P=t>>>2&4;t=t>>>P;n=t>>>1&2;t=t>>>n;r=t>>>1&1;r=a[30920+((N|C|P|n|r)+(t>>>r)<<2)>>2]|0;t=(a[r+4>>2]&-8)-e|0;n=r;while(1){f=a[n+16>>2]|0;if(!f){f=a[n+20>>2]|0;if(!f)break}n=(a[f+4>>2]&-8)-e|0;P=n>>>0>>0;t=P?n:t;n=f;r=P?f:r}o=a[7658]|0;if(r>>>0>>0)ye();n=r+e|0;if(r>>>0>=n>>>0)ye();f=a[r+24>>2]|0;l=a[r+12>>2]|0;do{if((l|0)==(r|0)){l=r+20|0;s=a[l>>2]|0;if(!s){l=r+16|0;s=a[l>>2]|0;if(!s){M=0;break}}while(1){u=s+20|0;c=a[u>>2]|0;if(c){s=c;l=u;continue}c=s+16|0;u=a[c>>2]|0;if(!u)break;else{s=u;l=c}}if(l>>>0>>0)ye();else{a[l>>2]=0;M=s;break}}else{s=a[r+8>>2]|0;if(s>>>0>>0)ye();o=s+12|0;if((a[o>>2]|0)!=(r|0))ye();u=l+8|0;if((a[u>>2]|0)==(r|0)){a[o>>2]=l;a[u>>2]=s;M=l;break}else ye()}}while(0);do{if(f){o=a[r+28>>2]|0;s=30920+(o<<2)|0;if((r|0)==(a[s>>2]|0)){a[s>>2]=M;if(!M){a[7655]=a[7655]&~(1<>>0<(a[7658]|0)>>>0)ye();o=f+16|0;if((a[o>>2]|0)==(r|0))a[o>>2]=M;else a[f+20>>2]=M;if(!M)break}if(M>>>0<(a[7658]|0)>>>0)ye();a[M+24>>2]=f;f=a[r+16>>2]|0;do{if(f)if(f>>>0<(a[7658]|0)>>>0)ye();else{a[M+16>>2]=f;a[f+24>>2]=M;break}}while(0);f=a[r+20>>2]|0;if(f)if(f>>>0<(a[7658]|0)>>>0)ye();else{a[M+20>>2]=f;a[f+24>>2]=M;break}}}while(0);if(t>>>0<16){P=t+e|0;a[r+4>>2]=P|3;P=r+(P+4)|0;a[P>>2]=a[P>>2]|1}else{a[r+4>>2]=e|3;a[r+(e|4)>>2]=t|1;a[r+(t+e)>>2]=t;o=a[7656]|0;if(o){f=a[7659]|0;u=o>>>3;s=u<<1;o=30656+(s<<2)|0;l=a[7654]|0;u=1<>2]|0;if(l>>>0<(a[7658]|0)>>>0)ye();else{y=s;S=l}}else{a[7654]=l|u;y=30656+(s+2<<2)|0;S=o}a[y>>2]=f;a[S+12>>2]=f;a[f+8>>2]=S;a[f+12>>2]=o}a[7656]=t;a[7659]=n}P=r+8|0;h=i;return P|0}}}else if(e>>>0<=4294967231){S=e+11|0;e=S&-8;M=a[7655]|0;if(M){y=0-e|0;S=S>>>8;if(S){if(e>>>0>16777215)L=31;else{C=(S+1048320|0)>>>16&8;P=S<>>16&4;P=P<>>16&2;L=14-(N|C|L)+(P<>>15)|0;L=e>>>(L+7|0)&1|L<<1}}else L=0;O=a[30920+(L<<2)>>2]|0;e:do{if(!O){N=0;S=0}else{if((L|0)==31)S=0;else S=25-(L>>>1)|0;N=0;R=e<>2]&-8;C=P-e|0;if(C>>>0>>0)if((P|0)==(e|0)){y=C;N=O;S=O;break e}else{y=C;S=O}P=a[O+20>>2]|0;O=a[O+(R>>>31<<2)+16>>2]|0;N=(P|0)==0|(P|0)==(O|0)?N:P;if(!O)break;else R=R<<1}}}while(0);if((N|0)==0&(S|0)==0){P=2<>>12&16;P=P>>>O;L=P>>>5&8;P=P>>>L;R=P>>>2&4;P=P>>>R;C=P>>>1&2;P=P>>>C;N=P>>>1&1;N=a[30920+((L|O|R|C|N)+(P>>>N)<<2)>>2]|0}if(N)while(1){P=(a[N+4>>2]&-8)-e|0;M=P>>>0>>0;y=M?P:y;S=M?N:S;M=a[N+16>>2]|0;if(M){N=M;continue}N=a[N+20>>2]|0;if(!N)break}if((S|0)!=0?y>>>0<((a[7656]|0)-e|0)>>>0:0){n=a[7658]|0;if(S>>>0>>0)ye();r=S+e|0;if(S>>>0>=r>>>0)ye();t=a[S+24>>2]|0;o=a[S+12>>2]|0;do{if((o|0)==(S|0)){o=S+20|0;f=a[o>>2]|0;if(!f){o=S+16|0;f=a[o>>2]|0;if(!f){T=0;break}}while(1){s=f+20|0;l=a[s>>2]|0;if(l){f=l;o=s;continue}s=f+16|0;l=a[s>>2]|0;if(!l)break;else{f=l;o=s}}if(o>>>0>>0)ye();else{a[o>>2]=0;T=f;break}}else{f=a[S+8>>2]|0;if(f>>>0>>0)ye();n=f+12|0;if((a[n>>2]|0)!=(S|0))ye();s=o+8|0;if((a[s>>2]|0)==(S|0)){a[n>>2]=o;a[s>>2]=f;T=o;break}else ye()}}while(0);do{if(t){f=a[S+28>>2]|0;n=30920+(f<<2)|0;if((S|0)==(a[n>>2]|0)){a[n>>2]=T;if(!T){a[7655]=a[7655]&~(1<>>0<(a[7658]|0)>>>0)ye();n=t+16|0;if((a[n>>2]|0)==(S|0))a[n>>2]=T;else a[t+20>>2]=T;if(!T)break}if(T>>>0<(a[7658]|0)>>>0)ye();a[T+24>>2]=t;t=a[S+16>>2]|0;do{if(t)if(t>>>0<(a[7658]|0)>>>0)ye();else{a[T+16>>2]=t;a[t+24>>2]=T;break}}while(0);t=a[S+20>>2]|0;if(t)if(t>>>0<(a[7658]|0)>>>0)ye();else{a[T+20>>2]=t;a[t+24>>2]=T;break}}}while(0);e:do{if(y>>>0>=16){a[S+4>>2]=e|3;a[S+(e|4)>>2]=y|1;a[S+(y+e)>>2]=y;n=y>>>3;if(y>>>0<256){o=n<<1;t=30656+(o<<2)|0;f=a[7654]|0;n=1<>2]|0;if(f>>>0>=(a[7658]|0)>>>0){E=n;g=f;break}ye()}}while(0);a[E>>2]=r;a[g+12>>2]=r;a[S+(e+8)>>2]=g;a[S+(e+12)>>2]=t;break}t=y>>>8;if(t){if(y>>>0>16777215)t=31;else{C=(t+1048320|0)>>>16&8;P=t<>>16&4;P=P<>>16&2;t=14-(N|C|t)+(P<>>15)|0;t=y>>>(t+7|0)&1|t<<1}}else t=0;n=30920+(t<<2)|0;a[S+(e+28)>>2]=t;a[S+(e+20)>>2]=0;a[S+(e+16)>>2]=0;o=a[7655]|0;f=1<>2]=r;a[S+(e+24)>>2]=n;a[S+(e+12)>>2]=r;a[S+(e+8)>>2]=r;break}n=a[n>>2]|0;if((t|0)==31)t=0;else t=25-(t>>>1)|0;i:do{if((a[n+4>>2]&-8|0)!=(y|0)){t=y<>>31<<2)+16|0;o=a[f>>2]|0;if(!o)break;if((a[o+4>>2]&-8|0)==(y|0)){k=o;break i}else{t=t<<1;n=o}}if(f>>>0<(a[7658]|0)>>>0)ye();else{a[f>>2]=r;a[S+(e+24)>>2]=n;a[S+(e+12)>>2]=r;a[S+(e+8)>>2]=r;break e}}else k=n}while(0);n=k+8|0;t=a[n>>2]|0;f=a[7658]|0;if(k>>>0>>0)ye();if(t>>>0>>0)ye();else{a[t+12>>2]=r;a[n>>2]=r;a[S+(e+8)>>2]=t;a[S+(e+12)>>2]=k;a[S+(e+24)>>2]=0;break}}else{P=y+e|0;a[S+4>>2]=P|3;P=S+(P+4)|0;a[P>>2]=a[P>>2]|1}}while(0);P=S+8|0;h=i;return P|0}}}else e=-1}while(0);k=a[7656]|0;if(e>>>0<=k>>>0){t=k-e|0;r=a[7659]|0;if(t>>>0>15){a[7659]=r+e;a[7656]=t;a[r+(e+4)>>2]=t|1;a[r+k>>2]=t;a[r+4>>2]=e|3}else{a[7656]=0;a[7659]=0;a[r+4>>2]=k|3;P=r+(k+4)|0;a[P>>2]=a[P>>2]|1}P=r+8|0;h=i;return P|0}k=a[7657]|0;if(e>>>0>>0){C=k-e|0;a[7657]=C;P=a[7660]|0;a[7660]=P+e;a[P+(e+4)>>2]=C|1;a[P+4>>2]=e|3;P=P+8|0;h=i;return P|0}do{if(!(a[7772]|0)){k=_e(30)|0;if(!(k+-1&k)){a[7774]=k;a[7773]=k;a[7775]=-1;a[7776]=-1;a[7777]=0;a[7765]=0;a[7772]=(Me(0)|0)&-16^1431655768;break}else ye()}}while(0);E=e+48|0;k=a[7774]|0;T=e+47|0;S=k+T|0;k=0-k|0;g=S&k;if(g>>>0<=e>>>0){P=0;h=i;return P|0}y=a[7764]|0;if((y|0)!=0?(C=a[7762]|0,P=C+g|0,P>>>0<=C>>>0|P>>>0>y>>>0):0){P=0;h=i;return P|0}e:do{if(!(a[7765]&4)){M=a[7660]|0;i:do{if(M){y=31064|0;while(1){L=a[y>>2]|0;if(L>>>0<=M>>>0?(A=y+4|0,(L+(a[A>>2]|0)|0)>>>0>M>>>0):0)break;y=a[y+8>>2]|0;if(!y){b=182;break i}}if(y){M=S-(a[7657]|0)&k;if(M>>>0<2147483647){k=we(M|0)|0;y=(k|0)==((a[y>>2]|0)+(a[A>>2]|0)|0);A=k;S=M;k=y?k:-1;y=y?M:0;b=191}else y=0}else b=182}else b=182}while(0);do{if((b|0)==182){k=we(0)|0;if((k|0)!=(-1|0)){S=k;y=a[7773]|0;A=y+-1|0;if(!(A&S))y=g;else y=g-S+(A+S&0-y)|0;A=a[7762]|0;S=A+y|0;if(y>>>0>e>>>0&y>>>0<2147483647){P=a[7764]|0;if((P|0)!=0?S>>>0<=A>>>0|S>>>0>P>>>0:0){y=0;break}A=we(y|0)|0;b=(A|0)==(k|0);S=y;k=b?k:-1;y=b?y:0;b=191}else y=0}else y=0}}while(0);i:do{if((b|0)==191){b=0-S|0;if((k|0)!=(-1|0)){w=y;b=202;break e}do{if((A|0)!=(-1|0)&S>>>0<2147483647&S>>>0>>0?(v=a[7774]|0,v=T-S+v&0-v,v>>>0<2147483647):0)if((we(v|0)|0)==(-1|0)){we(b|0)|0;break i}else{S=v+S|0;break}}while(0);if((A|0)!=(-1|0)){k=A;w=S;b=202;break e}}}while(0);a[7765]=a[7765]|4;b=199}else{y=0;b=199}}while(0);if((((b|0)==199?g>>>0<2147483647:0)?(_=we(g|0)|0,p=we(0)|0,(p|0)!=(-1|0)&(_|0)!=(-1|0)&_>>>0

          >>0):0)?(m=p-_|0,w=m>>>0>(e+40|0)>>>0,w):0){k=_;w=w?m:y;b=202}if((b|0)==202){m=(a[7762]|0)+w|0;a[7762]=m;if(m>>>0>(a[7763]|0)>>>0)a[7763]=m;m=a[7660]|0;e:do{if(m){g=31064|0;while(1){_=a[g>>2]|0;v=g+4|0;p=a[v>>2]|0;if((k|0)==(_+p|0)){b=214;break}E=a[g+8>>2]|0;if(!E)break;else g=E}if(((b|0)==214?(a[g+12>>2]&8|0)==0:0)?m>>>0>=_>>>0&m>>>0>>0:0){a[v>>2]=p+w;r=(a[7657]|0)+w|0;t=m+8|0;if(!(t&7))t=0;else t=0-t&7;P=r-t|0;a[7660]=m+t;a[7657]=P;a[m+(t+4)>>2]=P|1;a[m+(r+4)>>2]=40;a[7661]=a[7776];break}if(k>>>0<(a[7658]|0)>>>0)a[7658]=k;_=k+w|0;p=31064|0;while(1){if((a[p>>2]|0)==(_|0)){b=224;break}v=a[p+8>>2]|0;if(!v)break;else p=v}if((b|0)==224?(a[p+12>>2]&8|0)==0:0){a[p>>2]=k;o=p+4|0;a[o>>2]=(a[o>>2]|0)+w;o=k+8|0;if(!(o&7))o=0;else o=0-o&7;s=k+(w+8)|0;if(!(s&7))d=0;else d=0-s&7;b=k+(d+w)|0;s=o+e|0;l=k+s|0;c=b-(k+o)-e|0;a[k+(o+4)>>2]=e|3;i:do{if((b|0)!=(a[7660]|0)){if((b|0)==(a[7659]|0)){P=(a[7656]|0)+c|0;a[7656]=P;a[7659]=l;a[k+(s+4)>>2]=P|1;a[k+(P+s)>>2]=P;break}m=w+4|0;_=a[k+(m+d)>>2]|0;if((_&3|0)==1){e=_&-8;p=_>>>3;r:do{if(_>>>0>=256){u=a[k+((d|24)+w)>>2]|0;v=a[k+(w+12+d)>>2]|0;do{if((v|0)==(b|0)){v=d|16;_=k+(m+v)|0;p=a[_>>2]|0;if(!p){_=k+(v+w)|0;p=a[_>>2]|0;if(!p){f=0;break}}while(1){v=p+20|0;g=a[v>>2]|0;if(g){p=g;_=v;continue}v=p+16|0;g=a[v>>2]|0;if(!g)break;else{p=g;_=v}}if(_>>>0<(a[7658]|0)>>>0)ye();else{a[_>>2]=0;f=p;break}}else{_=a[k+((d|8)+w)>>2]|0;if(_>>>0<(a[7658]|0)>>>0)ye();g=_+12|0;if((a[g>>2]|0)!=(b|0))ye();p=v+8|0;if((a[p>>2]|0)==(b|0)){a[g>>2]=v;a[p>>2]=_;f=v;break}else ye()}}while(0);if(!u)break;_=a[k+(w+28+d)>>2]|0;p=30920+(_<<2)|0;do{if((b|0)!=(a[p>>2]|0)){if(u>>>0<(a[7658]|0)>>>0)ye();p=u+16|0;if((a[p>>2]|0)==(b|0))a[p>>2]=f;else a[u+20>>2]=f;if(!f)break r}else{a[p>>2]=f;if(f)break;a[7655]=a[7655]&~(1<<_);break r}}while(0);if(f>>>0<(a[7658]|0)>>>0)ye();a[f+24>>2]=u;u=d|16;b=a[k+(u+w)>>2]|0;do{if(b)if(b>>>0<(a[7658]|0)>>>0)ye();else{a[f+16>>2]=b;a[b+24>>2]=f;break}}while(0);u=a[k+(m+u)>>2]|0;if(!u)break;if(u>>>0<(a[7658]|0)>>>0)ye();else{a[f+20>>2]=u;a[u+24>>2]=f;break}}else{m=a[k+((d|8)+w)>>2]|0;f=a[k+(w+12+d)>>2]|0;_=30656+(p<<1<<2)|0;do{if((m|0)!=(_|0)){if(m>>>0<(a[7658]|0)>>>0)ye();if((a[m+12>>2]|0)==(b|0))break;ye()}}while(0);if((f|0)==(m|0)){a[7654]=a[7654]&~(1<>>0<(a[7658]|0)>>>0)ye();p=f+8|0;if((a[p>>2]|0)==(b|0)){u=p;break}ye()}}while(0);a[m+12>>2]=f;a[u>>2]=m}}while(0);b=k+((e|d)+w)|0;c=e+c|0}f=b+4|0;a[f>>2]=a[f>>2]&-2;a[k+(s+4)>>2]=c|1;a[k+(c+s)>>2]=c;f=c>>>3;if(c>>>0<256){c=f<<1;r=30656+(c<<2)|0;u=a[7654]|0;f=1<>2]|0;if(f>>>0>=(a[7658]|0)>>>0){n=u;t=f;break}ye()}}while(0);a[n>>2]=l;a[t+12>>2]=l;a[k+(s+8)>>2]=t;a[k+(s+12)>>2]=r;break}t=c>>>8;do{if(!t)t=0;else{if(c>>>0>16777215){t=31;break}C=(t+1048320|0)>>>16&8;P=t<>>16&4;P=P<>>16&2;t=14-(N|C|t)+(P<>>15)|0;t=c>>>(t+7|0)&1|t<<1}}while(0);u=30920+(t<<2)|0;a[k+(s+28)>>2]=t;a[k+(s+20)>>2]=0;a[k+(s+16)>>2]=0;n=a[7655]|0;f=1<>2]=l;a[k+(s+24)>>2]=u;a[k+(s+12)>>2]=l;a[k+(s+8)>>2]=l;break}u=a[u>>2]|0;if((t|0)==31)t=0;else t=25-(t>>>1)|0;r:do{if((a[u+4>>2]&-8|0)!=(c|0)){t=c<>>31<<2)+16|0;n=a[f>>2]|0;if(!n)break;if((a[n+4>>2]&-8|0)==(c|0)){r=n;break r}else{t=t<<1;u=n}}if(f>>>0<(a[7658]|0)>>>0)ye();else{a[f>>2]=l;a[k+(s+24)>>2]=u;a[k+(s+12)>>2]=l;a[k+(s+8)>>2]=l;break i}}else r=u}while(0);n=r+8|0;t=a[n>>2]|0;f=a[7658]|0;if(r>>>0>>0)ye();if(t>>>0>>0)ye();else{a[t+12>>2]=l;a[n>>2]=l;a[k+(s+8)>>2]=t;a[k+(s+12)>>2]=r;a[k+(s+24)>>2]=0;break}}else{P=(a[7657]|0)+c|0;a[7657]=P;a[7660]=l;a[k+(s+4)>>2]=P|1}}while(0);P=k+(o|8)|0;h=i;return P|0}t=31064|0;while(1){r=a[t>>2]|0;if(r>>>0<=m>>>0?(d=a[t+4>>2]|0,c=r+d|0,c>>>0>m>>>0):0)break;t=a[t+8>>2]|0}t=r+(d+-39)|0;if(!(t&7))t=0;else t=0-t&7;r=r+(d+-47+t)|0;r=r>>>0<(m+16|0)>>>0?m:r;t=r+8|0;n=k+8|0;if(!(n&7))n=0;else n=0-n&7;P=w+-40-n|0;a[7660]=k+n;a[7657]=P;a[k+(n+4)>>2]=P|1;a[k+(w+-36)>>2]=40;a[7661]=a[7776];a[r+4>>2]=27;a[t+0>>2]=a[7766];a[t+4>>2]=a[7767];a[t+8>>2]=a[7768];a[t+12>>2]=a[7769];a[7766]=k;a[7767]=w;a[7769]=0;a[7768]=t;t=r+28|0;a[t>>2]=7;if((r+32|0)>>>0>>0)do{P=t;t=t+4|0;a[t>>2]=7}while((P+8|0)>>>0>>0);if((r|0)!=(m|0)){r=r-m|0;t=m+(r+4)|0;a[t>>2]=a[t>>2]&-2;a[m+4>>2]=r|1;a[m+r>>2]=r;t=r>>>3;if(r>>>0<256){f=t<<1;r=30656+(f<<2)|0;n=a[7654]|0;t=1<>2]|0;if(t>>>0>=(a[7658]|0)>>>0){l=n;s=t;break}ye()}}while(0);a[l>>2]=m;a[s+12>>2]=m;a[m+8>>2]=s;a[m+12>>2]=r;break}t=r>>>8;if(t){if(r>>>0>16777215)t=31;else{C=(t+1048320|0)>>>16&8;P=t<>>16&4;P=P<>>16&2;t=14-(N|C|t)+(P<>>15)|0;t=r>>>(t+7|0)&1|t<<1}}else t=0;s=30920+(t<<2)|0;a[m+28>>2]=t;a[m+20>>2]=0;a[m+16>>2]=0;n=a[7655]|0;f=1<>2]=m;a[m+24>>2]=s;a[m+12>>2]=m;a[m+8>>2]=m;break}n=a[s>>2]|0;if((t|0)==31)t=0;else t=25-(t>>>1)|0;i:do{if((a[n+4>>2]&-8|0)!=(r|0)){t=r<>>31<<2)+16|0;f=a[s>>2]|0;if(!f)break;if((a[f+4>>2]&-8|0)==(r|0)){o=f;break i}else{t=t<<1;n=f}}if(s>>>0<(a[7658]|0)>>>0)ye();else{a[s>>2]=m;a[m+24>>2]=n;a[m+12>>2]=m;a[m+8>>2]=m;break e}}else o=n}while(0);n=o+8|0;t=a[n>>2]|0;r=a[7658]|0;if(o>>>0>>0)ye();if(t>>>0>>0)ye();else{a[t+12>>2]=m;a[n>>2]=m;a[m+8>>2]=t;a[m+12>>2]=o;a[m+24>>2]=0;break}}}else{P=a[7658]|0;if((P|0)==0|k>>>0

          >>0)a[7658]=k;a[7766]=k;a[7767]=w;a[7769]=0;a[7663]=a[7772];a[7662]=-1;r=0;do{P=r<<1;C=30656+(P<<2)|0;a[30656+(P+3<<2)>>2]=C;a[30656+(P+2<<2)>>2]=C;r=r+1|0}while((r|0)!=32);r=k+8|0;if(!(r&7))r=0;else r=0-r&7;P=w+-40-r|0;a[7660]=k+r;a[7657]=P;a[k+(r+4)>>2]=P|1;a[k+(w+-36)>>2]=40;a[7661]=a[7776]}}while(0);r=a[7657]|0;if(r>>>0>e>>>0){C=r-e|0;a[7657]=C;P=a[7660]|0;a[7660]=P+e;a[P+(e+4)>>2]=C|1;a[P+4>>2]=e|3;P=P+8|0;h=i;return P|0}}a[(Se()|0)>>2]=12;P=0;h=i;return P|0}function gl(e){e=e|0;var i=0,r=0,t=0,n=0,f=0,o=0,s=0,l=0,u=0,c=0,d=0,b=0,k=0,w=0,m=0,p=0,_=0,v=0,g=0,E=0;i=h;if(!e){h=i;return}w=e+-8|0;m=a[7658]|0;if(w>>>0>>0)ye();b=a[e+-4>>2]|0;d=b&3;if((d|0)==1)ye();s=b&-8;o=e+(s+-8)|0;do{if(!(b&1)){v=a[w>>2]|0;if(!d){h=i;return}w=-8-v|0;b=e+w|0;d=v+s|0;if(b>>>0>>0)ye();if((b|0)==(a[7659]|0)){r=e+(s+-4)|0;if((a[r>>2]&3|0)!=3){r=b;c=d;break}a[7656]=d;a[r>>2]=a[r>>2]&-2;a[e+(w+4)>>2]=d|1;a[o>>2]=d;h=i;return}_=v>>>3;if(v>>>0<256){r=a[e+(w+8)>>2]|0;c=a[e+(w+12)>>2]|0;k=30656+(_<<1<<2)|0;if((r|0)!=(k|0)){if(r>>>0>>0)ye();if((a[r+12>>2]|0)!=(b|0))ye()}if((c|0)==(r|0)){a[7654]=a[7654]&~(1<<_);r=b;c=d;break}if((c|0)!=(k|0)){if(c>>>0>>0)ye();k=c+8|0;if((a[k>>2]|0)==(b|0))p=k;else ye()}else p=c+8|0;a[r+12>>2]=c;a[p>>2]=r;r=b;c=d;break}p=a[e+(w+24)>>2]|0;_=a[e+(w+12)>>2]|0;do{if((_|0)==(b|0)){v=e+(w+20)|0;_=a[v>>2]|0;if(!_){v=e+(w+16)|0;_=a[v>>2]|0;if(!_){k=0;break}}while(1){E=_+20|0;g=a[E>>2]|0;if(g){_=g;v=E;continue}g=_+16|0;E=a[g>>2]|0;if(!E)break;else{_=E;v=g}}if(v>>>0>>0)ye();else{a[v>>2]=0;k=_;break}}else{v=a[e+(w+8)>>2]|0;if(v>>>0>>0)ye();m=v+12|0;if((a[m>>2]|0)!=(b|0))ye();g=_+8|0;if((a[g>>2]|0)==(b|0)){a[m>>2]=_;a[g>>2]=v;k=_;break}else ye()}}while(0);if(p){_=a[e+(w+28)>>2]|0;m=30920+(_<<2)|0;if((b|0)==(a[m>>2]|0)){a[m>>2]=k;if(!k){a[7655]=a[7655]&~(1<<_);r=b;c=d;break}}else{if(p>>>0<(a[7658]|0)>>>0)ye();m=p+16|0;if((a[m>>2]|0)==(b|0))a[m>>2]=k;else a[p+20>>2]=k;if(!k){r=b;c=d;break}}if(k>>>0<(a[7658]|0)>>>0)ye();a[k+24>>2]=p;m=a[e+(w+16)>>2]|0;do{if(m)if(m>>>0<(a[7658]|0)>>>0)ye();else{a[k+16>>2]=m;a[m+24>>2]=k;break}}while(0);w=a[e+(w+20)>>2]|0;if(w){if(w>>>0<(a[7658]|0)>>>0)ye();else{a[k+20>>2]=w;a[w+24>>2]=k;r=b;c=d;break}}else{r=b;c=d}}else{r=b;c=d}}else{r=w;c=s}}while(0);if(r>>>0>=o>>>0)ye();d=e+(s+-4)|0;b=a[d>>2]|0;if(!(b&1))ye();if(!(b&2)){if((o|0)==(a[7660]|0)){E=(a[7657]|0)+c|0;a[7657]=E;a[7660]=r;a[r+4>>2]=E|1;if((r|0)!=(a[7659]|0)){h=i;return}a[7659]=0;a[7656]=0;h=i;return}if((o|0)==(a[7659]|0)){E=(a[7656]|0)+c|0;a[7656]=E;a[7659]=r;a[r+4>>2]=E|1;a[r+E>>2]=E;h=i;return}c=(b&-8)+c|0;d=b>>>3;do{if(b>>>0>=256){u=a[e+(s+16)>>2]|0;w=a[e+(s|4)>>2]|0;do{if((w|0)==(o|0)){b=e+(s+12)|0;d=a[b>>2]|0;if(!d){b=e+(s+8)|0;d=a[b>>2]|0;if(!d){l=0;break}}while(1){k=d+20|0;w=a[k>>2]|0;if(w){d=w;b=k;continue}k=d+16|0;w=a[k>>2]|0;if(!w)break;else{d=w;b=k}}if(b>>>0<(a[7658]|0)>>>0)ye();else{a[b>>2]=0;l=d;break}}else{b=a[e+s>>2]|0;if(b>>>0<(a[7658]|0)>>>0)ye();k=b+12|0;if((a[k>>2]|0)!=(o|0))ye();d=w+8|0;if((a[d>>2]|0)==(o|0)){a[k>>2]=w;a[d>>2]=b;l=w;break}else ye()}}while(0);if(u){d=a[e+(s+20)>>2]|0;b=30920+(d<<2)|0;if((o|0)==(a[b>>2]|0)){a[b>>2]=l;if(!l){a[7655]=a[7655]&~(1<>>0<(a[7658]|0)>>>0)ye();d=u+16|0;if((a[d>>2]|0)==(o|0))a[d>>2]=l;else a[u+20>>2]=l;if(!l)break}if(l>>>0<(a[7658]|0)>>>0)ye();a[l+24>>2]=u;o=a[e+(s+8)>>2]|0;do{if(o)if(o>>>0<(a[7658]|0)>>>0)ye();else{a[l+16>>2]=o;a[o+24>>2]=l;break}}while(0);o=a[e+(s+12)>>2]|0;if(o)if(o>>>0<(a[7658]|0)>>>0)ye();else{a[l+20>>2]=o;a[o+24>>2]=l;break}}}else{l=a[e+s>>2]|0;e=a[e+(s|4)>>2]|0;s=30656+(d<<1<<2)|0;if((l|0)!=(s|0)){if(l>>>0<(a[7658]|0)>>>0)ye();if((a[l+12>>2]|0)!=(o|0))ye()}if((e|0)==(l|0)){a[7654]=a[7654]&~(1<>>0<(a[7658]|0)>>>0)ye();s=e+8|0;if((a[s>>2]|0)==(o|0))u=s;else ye()}else u=e+8|0;a[l+12>>2]=e;a[u>>2]=l}}while(0);a[r+4>>2]=c|1;a[r+c>>2]=c;if((r|0)==(a[7659]|0)){a[7656]=c;h=i;return}}else{a[d>>2]=b&-2;a[r+4>>2]=c|1;a[r+c>>2]=c}o=c>>>3;if(c>>>0<256){e=o<<1;t=30656+(e<<2)|0;s=a[7654]|0;o=1<>2]|0;if(e>>>0<(a[7658]|0)>>>0)ye();else{n=o;f=e}}else{a[7654]=s|o;n=30656+(e+2<<2)|0;f=t}a[n>>2]=r;a[f+12>>2]=r;a[r+8>>2]=f;a[r+12>>2]=t;h=i;return}n=c>>>8;if(n){if(c>>>0>16777215)n=31;else{g=(n+1048320|0)>>>16&8;E=n<>>16&4;E=E<>>16&2;n=14-(v|g|n)+(E<>>15)|0;n=c>>>(n+7|0)&1|n<<1}}else n=0;f=30920+(n<<2)|0;a[r+28>>2]=n;a[r+20>>2]=0;a[r+16>>2]=0;e=a[7655]|0;o=1<>2]|0;if((n|0)==31)n=0;else n=25-(n>>>1)|0;i:do{if((a[f+4>>2]&-8|0)!=(c|0)){n=c<>>31<<2)+16|0;f=a[o>>2]|0;if(!f)break;if((a[f+4>>2]&-8|0)==(c|0)){t=f;break i}else{n=n<<1;e=f}}if(o>>>0<(a[7658]|0)>>>0)ye();else{a[o>>2]=r;a[r+24>>2]=e;a[r+12>>2]=r;a[r+8>>2]=r;break e}}else t=f}while(0);f=t+8|0;n=a[f>>2]|0;o=a[7658]|0;if(t>>>0>>0)ye();if(n>>>0>>0)ye();else{a[n+12>>2]=r;a[f>>2]=r;a[r+8>>2]=n;a[r+12>>2]=t;a[r+24>>2]=0;break}}else{a[7655]=e|o;a[f>>2]=r;a[r+24>>2]=f;a[r+12>>2]=r;a[r+8>>2]=r}}while(0);E=(a[7662]|0)+-1|0;a[7662]=E;if(!E)r=31072|0;else{h=i;return}while(1){r=a[r>>2]|0;if(!r)break;else r=r+8|0}a[7662]=-1;h=i;return}function El(){}function Tl(e,i,r){e=e|0;i=i|0;r=r|0;if((r|0)<32){C=i>>r;return e>>>r|(i&(1<>r-32|0}function Al(e,i,r){e=e|0;i=i|0;r=r|0;if((r|0)<32){C=i>>>r;return e>>>r|(i&(1<>>r-32|0}function Sl(e){e=e|0;var i=0;i=t[w+(e>>>24)>>0]|0;if((i|0)<8)return i|0;i=t[w+(e>>16&255)>>0]|0;if((i|0)<8)return i+8|0;i=t[w+(e>>8&255)>>0]|0;if((i|0)<8)return i+16|0;return(t[w+(e&255)>>0]|0)+24|0}function yl(e,i,r){e=e|0;i=i|0;r=r|0;var n=0,f=0,o=0,s=0;n=e+r|0;if((r|0)>=20){i=i&255;s=e&3;o=i|i<<8|i<<16|i<<24;f=n&~3;if(s){s=e+4-s|0;while((e|0)<(s|0)){t[e>>0]=i;e=e+1|0}}while((e|0)<(f|0)){a[e>>2]=o;e=e+4|0}}while((e|0)<(n|0)){t[e>>0]=i;e=e+1|0}return e-r|0}function Ml(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;r=e+r>>>0;return(C=i+t+(r>>>0>>0|0)>>>0,r|0)|0}function Ll(e,i,r){e=e|0;i=i|0;r=r|0;var n=0;if((r|0)>=4096)return me(e|0,i|0,r|0)|0;n=e|0;if((e&3)==(i&3)){while(e&3){if(!r)return n|0;t[e>>0]=t[i>>0]|0;e=e+1|0;i=i+1|0;r=r-1|0}while((r|0)>=4){a[e>>2]=a[i>>2];e=e+4|0;i=i+4|0;r=r-4|0}}while((r|0)>0){t[e>>0]=t[i>>0]|0;e=e+1|0;i=i+1|0;r=r-1|0}return n|0}function Ol(e,i,r){e=e|0;i=i|0;r=r|0;var n=0;if((i|0)<(e|0)&(e|0)<(i+r|0)){n=e;i=i+r|0;e=e+r|0;while((r|0)>0){e=e-1|0;i=i-1|0;r=r-1|0;t[e>>0]=t[i>>0]|0}e=n}else Ll(e,i,r)|0;return e|0}function Rl(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;i=i-t-(r>>>0>e>>>0|0)>>>0;return(C=i,e-r>>>0|0)|0}function Nl(e,i,r){e=e|0;i=i|0;r=r|0;if((r|0)<32){C=i<>>32-r;return e<>0]|0;if((i|0)<8)return i|0;i=t[k+(e>>8&255)>>0]|0;if((i|0)<8)return i+8|0;i=t[k+(e>>16&255)>>0]|0;if((i|0)<8)return i+16|0;return(t[k+(e>>>24)>>0]|0)+24|0}function Pl(e,i){e=e|0;i=i|0;var r=0,t=0,n=0,a=0;a=e&65535;t=i&65535;r=re(t,a)|0;n=e>>>16;t=(r>>>16)+(re(t,n)|0)|0;i=i>>>16;e=re(i,a)|0;return(C=(t>>>16)+(re(i,n)|0)+(((t&65535)+e|0)>>>16)|0,t+e<<16|r&65535|0)|0}function Bl(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0,f=0,o=0,s=0,l=0;l=i>>31|((i|0)<0?-1:0)<<1;s=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;a=t>>31|((t|0)<0?-1:0)<<1;n=((t|0)<0?-1:0)>>31|((t|0)<0?-1:0)<<1;o=Rl(l^e,s^i,l,s)|0;f=C;i=a^l;e=n^s;e=Rl((Gl(o,f,Rl(a^r,n^t,a,n)|0,C,0)|0)^i,C^e,i,e)|0;return e|0}function Dl(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0,o=0,s=0,l=0,u=0;n=h;h=h+8|0;s=n|0;o=i>>31|((i|0)<0?-1:0)<<1;f=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;u=t>>31|((t|0)<0?-1:0)<<1;l=((t|0)<0?-1:0)>>31|((t|0)<0?-1:0)<<1;i=Rl(o^e,f^i,o,f)|0;e=C;Gl(i,e,Rl(u^r,l^t,u,l)|0,C,s)|0;e=Rl(a[s>>2]^o,a[s+4>>2]^f,o,f)|0;i=C;h=n;return(C=i,e)|0}function Il(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,a=0;n=e;a=r;e=Pl(n,a)|0;r=C;return(C=(re(i,a)|0)+(re(t,n)|0)+r|r&0,e|0|0)|0}function Ul(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;e=Gl(e,i,r,t,0)|0;return e|0}function Fl(e,i,r,t){e=e|0;i=i|0;r=r|0;t=t|0;var n=0,f=0;f=h;h=h+8|0;n=f|0;Gl(e,i,r,t,n)|0;h=f;return(C=a[n+4>>2]|0,a[n>>2]|0)|0}function Gl(e,i,r,t,n){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;var f=0,o=0,s=0,l=0,u=0,h=0,c=0,d=0,b=0,k=0;o=e;l=i;s=l;h=r;f=t;u=f;if(!s){f=(n|0)!=0;if(!u){if(f){a[n>>2]=(o>>>0)%(h>>>0);a[n+4>>2]=0}u=0;c=(o>>>0)/(h>>>0)>>>0;return(C=u,c)|0}else{if(!f){h=0;c=0;return(C=h,c)|0}a[n>>2]=e|0;a[n+4>>2]=i&0;h=0;c=0;return(C=h,c)|0}}c=(u|0)==0;do{if(h){if(!c){u=(Sl(u|0)|0)-(Sl(s|0)|0)|0;if(u>>>0<=31){c=u+1|0;h=31-u|0;e=u-31>>31;l=c;i=o>>>(c>>>0)&e|s<>>(c>>>0)&e;u=0;h=o<>2]=e|0;a[n+4>>2]=l|i&0;h=0;c=0;return(C=h,c)|0}u=h-1|0;if(u&h){h=(Sl(h|0)|0)+33-(Sl(s|0)|0)|0;k=64-h|0;c=32-h|0;d=c>>31;b=h-32|0;e=b>>31;l=h;i=c-1>>31&s>>>(b>>>0)|(s<>>(h>>>0))&e;e=e&s>>>(h>>>0);u=o<>>(b>>>0))&d|o<>31;break}if(n){a[n>>2]=u&o;a[n+4>>2]=0}if((h|0)==1){b=l|i&0;k=e|0|0;return(C=b,k)|0}else{k=Cl(h|0)|0;b=s>>>(k>>>0)|0;k=s<<32-k|o>>>(k>>>0)|0;return(C=b,k)|0}}else{if(c){if(n){a[n>>2]=(s>>>0)%(h>>>0);a[n+4>>2]=0}b=0;k=(s>>>0)/(h>>>0)>>>0;return(C=b,k)|0}if(!o){if(n){a[n>>2]=0;a[n+4>>2]=(s>>>0)%(u>>>0)}b=0;k=(s>>>0)/(u>>>0)>>>0;return(C=b,k)|0}h=u-1|0;if(!(h&u)){if(n){a[n>>2]=e|0;a[n+4>>2]=h&s|i&0}b=0;k=s>>>((Cl(u|0)|0)>>>0);return(C=b,k)|0}u=(Sl(u|0)|0)-(Sl(s|0)|0)|0;if(u>>>0<=30){e=u+1|0;h=31-u|0;l=e;i=s<>>(e>>>0);e=s>>>(e>>>0);u=0;h=o<>2]=e|0;a[n+4>>2]=l|i&0;b=0;k=0;return(C=b,k)|0}}while(0);if(!l){f=h;t=0;s=0}else{o=r|0|0;f=f|t&0;t=Ml(o,f,-1,-1)|0;r=C;s=0;do{c=h;h=u>>>31|h<<1;u=s|u<<1;c=i<<1|c>>>31|0;d=i>>>31|e<<1|0;Rl(t,r,c,d)|0;k=C;b=k>>31|((k|0)<0?-1:0)<<1;s=b&1;i=Rl(c,d,b&o,(((k|0)<0?-1:0)>>31|((k|0)<0?-1:0)<<1)&f)|0;e=C;l=l-1|0}while((l|0)!=0);f=h;t=0}o=0;if(n){a[n>>2]=i;a[n+4>>2]=e}b=(u|0)>>>31|(f|o)<<1|(o<<1|u>>>31)&0|t;k=(u<<1|0>>>31)&-2|s;return(C=b,k)|0}function Vl(e,i,r,t,n,a,f,o){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;o=o|0;xl[e&3](i|0,r|0,t|0,n|0,a|0,f|0,o|0)}function Wl(e,i,r,t,n,a,f){e=e|0;i=i|0;r=r|0;t=t|0;n=n|0;a=a|0;f=f|0;te(0)}var xl=[Wl,qs,Ys,Wl];return{_opus_get_version_string:pi,_free:gl,_opus_encode_float:ll,_opus_decoder_create:Es,_i64Add:Ml,_memmove:Ol,_opus_decode_float:Ps,_bitshift64Ashr:Tl,_opus_encoder_destroy:hl,_memset:yl,_malloc:vl,_opus_decoder_destroy:Ds,_opus_encoder_create:Ks,_opus_encode:sl,_llvm_ctlz_i32:Sl,_bitshift64Lshr:Al,_opus_decode:Rs,_opus_decoder_ctl:Bs,_memcpy:Ll,_opus_encoder_ctl:ul,runPostSets:El,stackAlloc:Ne,stackSave:Ce,stackRestore:Pe,setThrew:Be,setTempRet0:Ue,getTempRet0:Fe,dynCall_viiiiiii:Vl}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_opus_get_version_string=Module._opus_get_version_string=asm._opus_get_version_string,_free=Module._free=asm._free,_opus_encode_float=Module._opus_encode_float=asm._opus_encode_float,_opus_decoder_create=Module._opus_decoder_create=asm._opus_decoder_create,_i64Add=Module._i64Add=asm._i64Add,_memmove=Module._memmove=asm._memmove,_opus_decode_float=Module._opus_decode_float=asm._opus_decode_float,_bitshift64Ashr=Module._bitshift64Ashr=asm._bitshift64Ashr,_opus_encoder_destroy=Module._opus_encoder_destroy=asm._opus_encoder_destroy,_memset=Module._memset=asm._memset,_malloc=Module._malloc=asm._malloc,_opus_decoder_destroy=Module._opus_decoder_destroy=asm._opus_decoder_destroy,_opus_encoder_create=Module._opus_encoder_create=asm._opus_encoder_create,_opus_encode=Module._opus_encode=asm._opus_encode,_llvm_ctlz_i32=Module._llvm_ctlz_i32=asm._llvm_ctlz_i32,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_opus_decode=Module._opus_decode=asm._opus_decode;Module._opus_decoder_ctl=asm._opus_decoder_ctl;var _memcpy=Module._memcpy=asm._memcpy,initialStackTop;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Module._opus_encoder_ctl=asm._opus_encoder_ctl,Module.runPostSets=asm.runPostSets,Module.dynCall_viiiiiii=asm.dynCall_viiiiiii,Runtime.stackAlloc=asm.stackAlloc,Runtime.stackSave=asm.stackSave,Runtime.stackRestore=asm.stackRestore,Runtime.setTempRet0=asm.setTempRet0,Runtime.getTempRet0=asm.getTempRet0,function(){var e={math:{}};function i(e,i,r){null!=e&&("number"==typeof e?this.fromNumber(e,i,r):null==i&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,i))}function r(){return new i(null)}e.math.Long=function(e,i){this.low_=0|e,this.high_=0|i},e.math.Long.IntCache_={},e.math.Long.fromInt=function(i){if(-128<=i&&i<128){var r=e.math.Long.IntCache_[i];if(r)return r}var t=new e.math.Long(0|i,i<0?-1:0);return-128<=i&&i<128&&(e.math.Long.IntCache_[i]=t),t},e.math.Long.fromNumber=function(i){return isNaN(i)||!isFinite(i)?e.math.Long.ZERO:i<=-e.math.Long.TWO_PWR_63_DBL_?e.math.Long.MIN_VALUE:i+1>=e.math.Long.TWO_PWR_63_DBL_?e.math.Long.MAX_VALUE:i<0?e.math.Long.fromNumber(-i).negate():new e.math.Long(i%e.math.Long.TWO_PWR_32_DBL_|0,i/e.math.Long.TWO_PWR_32_DBL_|0)},e.math.Long.fromBits=function(i,r){return new e.math.Long(i,r)},e.math.Long.fromString=function(i,r){if(0==i.length)throw Error("number format error: empty string");var t=r||10;if(t<2||36=0)throw Error('number format error: interior "-" character: '+i);for(var n=e.math.Long.fromNumber(Math.pow(t,8)),a=e.math.Long.ZERO,f=0;f=0?this.low_:e.math.Long.TWO_PWR_32_DBL_+this.low_},e.math.Long.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.equals(e.math.Long.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var i=0!=this.high_?this.high_:this.low_,r=31;r>0&&0==(i&1<0},e.math.Long.prototype.greaterThanOrEqual=function(e){return this.compare(e)>=0},e.math.Long.prototype.compare=function(e){if(this.equals(e))return 0;var i=this.isNegative(),r=e.isNegative();return i&&!r?-1:!i&&r?1:this.subtract(e).isNegative()?-1:1},e.math.Long.prototype.negate=function(){return this.equals(e.math.Long.MIN_VALUE)?e.math.Long.MIN_VALUE:this.not().add(e.math.Long.ONE)},e.math.Long.prototype.add=function(i){var r=this.high_>>>16,t=65535&this.high_,n=this.low_>>>16,a=65535&this.low_,f=i.high_>>>16,o=65535&i.high_,s=i.low_>>>16,l=0,u=0,h=0,c=0;return h+=(c+=a+(65535&i.low_))>>>16,c&=65535,u+=(h+=n+s)>>>16,h&=65535,l+=(u+=t+o)>>>16,u&=65535,l+=r+f,l&=65535,e.math.Long.fromBits(h<<16|c,l<<16|u)},e.math.Long.prototype.subtract=function(e){return this.add(e.negate())},e.math.Long.prototype.multiply=function(i){if(this.isZero())return e.math.Long.ZERO;if(i.isZero())return e.math.Long.ZERO;if(this.equals(e.math.Long.MIN_VALUE))return i.isOdd()?e.math.Long.MIN_VALUE:e.math.Long.ZERO;if(i.equals(e.math.Long.MIN_VALUE))return this.isOdd()?e.math.Long.MIN_VALUE:e.math.Long.ZERO;if(this.isNegative())return i.isNegative()?this.negate().multiply(i.negate()):this.negate().multiply(i).negate();if(i.isNegative())return this.multiply(i.negate()).negate();if(this.lessThan(e.math.Long.TWO_PWR_24_)&&i.lessThan(e.math.Long.TWO_PWR_24_))return e.math.Long.fromNumber(this.toNumber()*i.toNumber());var r=this.high_>>>16,t=65535&this.high_,n=this.low_>>>16,a=65535&this.low_,f=i.high_>>>16,o=65535&i.high_,s=i.low_>>>16,l=65535&i.low_,u=0,h=0,c=0,d=0;return c+=(d+=a*l)>>>16,d&=65535,h+=(c+=n*l)>>>16,c&=65535,h+=(c+=a*s)>>>16,c&=65535,u+=(h+=t*l)>>>16,h&=65535,u+=(h+=n*s)>>>16,h&=65535,u+=(h+=a*o)>>>16,h&=65535,u+=r*l+t*s+n*o+a*f,u&=65535,e.math.Long.fromBits(c<<16|d,u<<16|h)},e.math.Long.prototype.div=function(i){if(i.isZero())throw Error("division by zero");if(this.isZero())return e.math.Long.ZERO;if(this.equals(e.math.Long.MIN_VALUE)){if(i.equals(e.math.Long.ONE)||i.equals(e.math.Long.NEG_ONE))return e.math.Long.MIN_VALUE;if(i.equals(e.math.Long.MIN_VALUE))return e.math.Long.ONE;if((n=this.shiftRight(1).div(i).shiftLeft(1)).equals(e.math.Long.ZERO))return i.isNegative()?e.math.Long.ONE:e.math.Long.NEG_ONE;var r=this.subtract(i.multiply(n));return n.add(r.div(i))}if(i.equals(e.math.Long.MIN_VALUE))return e.math.Long.ZERO;if(this.isNegative())return i.isNegative()?this.negate().div(i.negate()):this.negate().div(i).negate();if(i.isNegative())return this.div(i.negate()).negate();var t=e.math.Long.ZERO;for(r=this;r.greaterThanOrEqual(i);){for(var n=Math.max(1,Math.floor(r.toNumber()/i.toNumber())),a=Math.ceil(Math.log(n)/Math.LN2),f=a<=48?1:Math.pow(2,a-48),o=e.math.Long.fromNumber(n),s=o.multiply(i);s.isNegative()||s.greaterThan(r);)n-=f,s=(o=e.math.Long.fromNumber(n)).multiply(i);o.isZero()&&(o=e.math.Long.ONE),t=t.add(o),r=r.subtract(s)}return t},e.math.Long.prototype.modulo=function(e){return this.subtract(this.div(e).multiply(e))},e.math.Long.prototype.not=function(){return e.math.Long.fromBits(~this.low_,~this.high_)},e.math.Long.prototype.and=function(i){return e.math.Long.fromBits(this.low_&i.low_,this.high_&i.high_)},e.math.Long.prototype.or=function(i){return e.math.Long.fromBits(this.low_|i.low_,this.high_|i.high_)},e.math.Long.prototype.xor=function(i){return e.math.Long.fromBits(this.low_^i.low_,this.high_^i.high_)},e.math.Long.prototype.shiftLeft=function(i){if(0==(i&=63))return this;var r=this.low_;if(i<32){var t=this.high_;return e.math.Long.fromBits(r<>>32-i)}return e.math.Long.fromBits(0,r<>>i|r<<32-i,r>>i)}return e.math.Long.fromBits(r>>i-32,r>=0?0:-1)},e.math.Long.prototype.shiftRightUnsigned=function(i){if(0==(i&=63))return this;var r=this.high_;if(i<32){var t=this.low_;return e.math.Long.fromBits(t>>>i|r<<32-i,r>>>i)}return 32==i?e.math.Long.fromBits(r,0):e.math.Long.fromBits(r>>>i-32,0)},i.prototype.am=function(e,i,r,t,n,a){for(;--a>=0;){var f=i*this[e++]+r[t]+n;n=Math.floor(f/67108864),r[t++]=67108863&f}return n},i.prototype.DB=26,i.prototype.DM=67108863,i.prototype.DV=1<<26;i.prototype.FV=Math.pow(2,52),i.prototype.F1=26,i.prototype.F2=0;var t,n,a=new Array;for(t="0".charCodeAt(0),n=0;n<=9;++n)a[t++]=n;for(t="a".charCodeAt(0),n=10;n<36;++n)a[t++]=n;for(t="A".charCodeAt(0),n=10;n<36;++n)a[t++]=n;function f(e){return"0123456789abcdefghijklmnopqrstuvwxyz".charAt(e)}function o(e,i){var r=a[e.charCodeAt(i)];return null==r?-1:r}function s(e){var i=r();return i.fromInt(e),i}function l(e){var i,r=1;return 0!=(i=e>>>16)&&(e=i,r+=16),0!=(i=e>>8)&&(e=i,r+=8),0!=(i=e>>4)&&(e=i,r+=4),0!=(i=e>>2)&&(e=i,r+=2),0!=(i=e>>1)&&(e=i,r+=1),r}function u(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<=0?e.mod(this.m):e},u.prototype.revert=function(e){return e},u.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},u.prototype.mulTo=function(e,i,r){e.multiplyTo(i,r),this.reduce(r)},u.prototype.sqrTo=function(e,i){e.squareTo(i),this.reduce(i)},h.prototype.convert=function(e){var t=r();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(i.ZERO)>0&&this.m.subTo(t,t),t},h.prototype.revert=function(e){var i=r();return e.copyTo(i),this.reduce(i),i},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=i+this.m.t]+=this.m.am(0,t,e,i,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,i,r){e.multiplyTo(i,r),this.reduce(r)},h.prototype.sqrTo=function(e,i){e.squareTo(i),this.reduce(i)},i.prototype.copyTo=function(e){for(var i=this.t-1;i>=0;--i)e[i]=this[i];e.t=this.t,e.s=this.s},i.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+DV:this.t=0},i.prototype.fromString=function(e,r){var t;if(16==r)t=4;else if(8==r)t=3;else if(256==r)t=8;else if(2==r)t=1;else if(32==r)t=5;else{if(4!=r)return void this.fromRadix(e,r);t=2}this.t=0,this.s=0;for(var n=e.length,a=!1,f=0;--n>=0;){var s=8==t?255&e[n]:o(e,n);s<0?"-"==e.charAt(n)&&(a=!0):(a=!1,0==f?this[this.t++]=s:f+t>this.DB?(this[this.t-1]|=(s&(1<>this.DB-f):this[this.t-1]|=s<=this.DB&&(f-=this.DB))}8==t&&0!=(128&e[0])&&(this.s=-1,f>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==e;)--this.t},i.prototype.dlShiftTo=function(e,i){var r;for(r=this.t-1;r>=0;--r)i[r+e]=this[r];for(r=e-1;r>=0;--r)i[r]=0;i.t=this.t+e,i.s=this.s},i.prototype.drShiftTo=function(e,i){for(var r=e;r=0;--r)i[r+f+1]=this[r]>>n|o,o=(this[r]&a)<=0;--r)i[r]=0;i[f]=o,i.t=this.t+f+1,i.s=this.s,i.clamp()},i.prototype.rShiftTo=function(e,i){i.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)i.t=0;else{var t=e%this.DB,n=this.DB-t,a=(1<>t;for(var f=r+1;f>t;t>0&&(i[this.t-r-1]|=(this.s&a)<>=this.DB;if(e.t>=this.DB;t+=this.s}else{for(t+=this.s;r>=this.DB;t-=e.s}i.s=t<0?-1:0,t<-1?i[r++]=this.DV+t:t>0&&(i[r++]=t),i.t=r,i.clamp()},i.prototype.multiplyTo=function(e,r){var t=this.abs(),n=e.abs(),a=t.t;for(r.t=a+n.t;--a>=0;)r[a]=0;for(a=0;a=0;)e[r]=0;for(r=0;r=i.DV&&(e[r+i.t]-=i.DV,e[r+i.t+1]=1)}e.t>0&&(e[e.t-1]+=i.am(r,i[r],e,2*r,0,1)),e.s=0,e.clamp()},i.prototype.divRemTo=function(e,t,n){var a=e.abs();if(!(a.t<=0)){var f=this.abs();if(f.t0?(a.lShiftTo(h,o),f.lShiftTo(h,n)):(a.copyTo(o),f.copyTo(n));var c=o.t,d=o[c-1];if(0!=d){var b=d*(1<1?o[c-2]>>this.F2:0),k=this.FV/b,w=(1<=0&&(n[n.t++]=1,n.subTo(v,n)),i.ONE.dlShiftTo(c,v),v.subTo(o,o);o.t=0;){var g=n[--p]==d?this.DM:Math.floor(n[p]*k+(n[p-1]+m)*w);if((n[p]+=o.am(0,g,n,_,0,c))0&&n.rShiftTo(h,n),s<0&&i.ZERO.subTo(n,n)}}},i.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var i=3&e;return(i=(i=(i=(i=i*(2-(15&e)*i)&15)*(2-(255&e)*i)&255)*(2-((65535&e)*i&65535))&65535)*(2-e*i%this.DV)%this.DV)>0?this.DV-i:-i},i.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},i.prototype.exp=function(e,t){if(e>4294967295||e<1)return i.ONE;var n=r(),a=r(),f=t.convert(this),o=l(e)-1;for(f.copyTo(n);--o>=0;)if(t.sqrTo(n,a),(e&1<0)t.mulTo(a,f,n);else{var s=n;n=a,a=s}return t.revert(n)},i.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var i;if(16==e)i=4;else if(8==e)i=3;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return this.toRadix(e);i=2}var r,t=(1<0)for(s>s)>0&&(n=!0,a=f(r));o>=0;)s>(s+=this.DB-i)):(r=this[o]>>(s-=i)&t,s<=0&&(s+=this.DB,--o)),r>0&&(n=!0),n&&(a+=f(r));return n?a:"0"},i.prototype.negate=function(){var e=r();return i.ZERO.subTo(this,e),e},i.prototype.abs=function(){return this.s<0?this.negate():this},i.prototype.compareTo=function(e){var i=this.s-e.s;if(0!=i)return i;var r=this.t;if(0!=(i=r-e.t))return this.s<0?-i:i;for(;--r>=0;)if(0!=(i=this[r]-e[r]))return i;return 0},i.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+l(this[this.t-1]^this.s&this.DM)},i.prototype.mod=function(e){var t=r();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(i.ZERO)>0&&e.subTo(t,t),t},i.prototype.modPowInt=function(e,i){var r;return r=e<256||i.isEven()?new u(i):new h(i),this.exp(e,r)},i.ZERO=s(0),i.ONE=s(1),i.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var t=this.chunkSize(r),n=Math.pow(r,t),a=!1,f=0,s=0,l=0;l=t&&(this.dMultiply(n),this.dAddOffset(s,0),f=0,s=0))}f>0&&(this.dMultiply(Math.pow(r,f)),this.dAddOffset(s,0)),a&&i.ZERO.subTo(this,this)},i.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},i.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},i.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},i.prototype.dAddOffset=function(e,i){if(0!=e){for(;this.t<=i;)this[this.t++]=0;for(this[i]+=e;this[i]>=this.DV;)this[i]-=this.DV,++i>=this.t&&(this[this.t++]=0),++this[i]}},i.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var i=this.chunkSize(e),t=Math.pow(e,i),n=s(t),a=r(),f=r(),o="";for(this.divRemTo(n,a,f);a.signum()>0;)o=(t+f.intValue()).toString(e).substr(1)+o,a.divRemTo(n,a,f);return f.intValue().toString(e)+o},i.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>=this.DB;if(e.t>=this.DB;t+=this.s}else{for(t+=this.s;r>=this.DB;t+=e.s}i.s=t<0?-1:0,t>0?i[r++]=t:t<-1&&(i[r++]=this.DV+t),i.t=r,i.clamp()};var c={abs:function(i,r){var t,n=new e.math.Long(i,r);t=n.isNegative()?n.negate():n,HEAP32[tempDoublePtr>>2]=t.low_,HEAP32[tempDoublePtr+4>>2]=t.high_},ensureTemps:function(){c.ensuredTemps||(c.ensuredTemps=!0,c.two32=new i,c.two32.fromString("4294967296",10),c.two64=new i,c.two64.fromString("18446744073709551616",10),c.temp1=new i,c.temp2=new i)},lh2bignum:function(e,r){var t=new i;t.fromString(r.toString(),10);var n=new i;t.multiplyTo(c.two32,n);var a=new i;a.fromString(e.toString(),10);var f=new i;return a.addTo(n,f),f},stringify:function(r,t,n){var a=new e.math.Long(r,t).toString();if(n&&"-"==a[0]){c.ensureTemps();var f=new i;f.fromString(a,10),a=new i,c.two64.addTo(f,a),a=a.toString(10)}return a},fromString:function(r,t,n,a,f){c.ensureTemps();var o=new i;o.fromString(r,t);var s=new i;s.fromString(n,10);var l=new i;if(l.fromString(a,10),f&&o.compareTo(i.ZERO)<0){var u=new i;o.addTo(c.two64,u),o=u}var h=!1;o.compareTo(s)<0?(o=s,h=!0):o.compareTo(l)>0&&(o=l,h=!0);var d=e.math.Long.fromString(o.toString());if(HEAP32[tempDoublePtr>>2]=d.low_,HEAP32[tempDoublePtr+4>>2]=d.high_,h)throw"range error"}}}(),ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var preloadStartTime=null;function run(e){function i(){Module.calledRun||(Module.calledRun=!0,ABORT||(ensureInitRuntime(),preMain(),ENVIRONMENT_IS_WEB&&null!==preloadStartTime&&Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms"),Module._main&&shouldRunNow&&Module.callMain(e),postRun()))}e=e||Module.arguments,null===preloadStartTime&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0||Module.calledRun||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),i()}),1)):i()))}function exit(e){if(!Module.noExitRuntime)throw ABORT=!0,STACKTOP=initialStackTop,exitRuntime(),ENVIRONMENT_IS_SHELL&&"function"==typeof quit&&quit(e),new ExitStatus(e)}function abort(e){e&&(Module.print(e),Module.printErr(e)),ABORT=!0;throw"abort() at "+stackTrace()+"\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information."}if(dependenciesFulfilled=function e(){!Module.calledRun&&shouldRunNow&&run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function(e){assert(0==runDependencies,"cannot call main when async dependencies remain! (listen on __ATMAIN__)"),assert(0==__ATPRERUN__.length,"cannot call main when preRun functions remain to be called"),e=e||[],ensureInitRuntime();var i=e.length+1;function r(){for(var e=0;e<3;e++)t.push(0)}var t=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];r();for(var n=0;n0;)Module.preInit.pop()();var shouldRunNow=!1,OpusApplication,OpusError;Module.noInitialRun&&(shouldRunNow=!1),run(),function(e){e[e.VoIP=2048]="VoIP",e[e.Audio=2049]="Audio",e[e.RestrictedLowDelay=2051]="RestrictedLowDelay"}(OpusApplication||(OpusApplication={})),function(e){e[e.OK=0]="OK",e[e.BadArgument=-1]="BadArgument",e[e.BufferTooSmall=-2]="BufferTooSmall",e[e.InternalError=-3]="InternalError",e[e.InvalidPacket=-4]="InvalidPacket",e[e.Unimplemented=-5]="Unimplemented",e[e.InvalidState=-6]="InvalidState",e[e.AllocFail=-7]="AllocFail"}(OpusError||(OpusError={}));var Opus=function(){function e(){}return e.getVersion=function(){return Pointer_stringify(_opus_get_version_string())},e.getMaxFrameSize=function(e){return void 0===e&&(e=1),3832*e},e.getMinFrameDuration=function(){return 2.5},e.getMaxFrameDuration=function(){return 60},e.validFrameDuration=function(e){return[2.5,5,10,20,40,60].some((function(i){return i==e}))},e.getMaxSamplesPerChannel=function(i){return i/1e3*e.getMaxFrameDuration()},e}(),OpusEncoder=function(){function e(e,i,r,t){if(void 0===t&&(t=20),this.handle=0,this.frame_size=0,this.in_ptr=0,this.in_off=0,this.out_ptr=0,!Opus.validFrameDuration(t))throw"invalid frame duration";this.frame_size=e*t/1e3;var n=allocate(4,"i32",ALLOC_STACK);if(this.handle=_opus_encoder_create(e,i,r,n),0!=getValue(n,"i32"))throw"opus_encoder_create failed: "+getValue(n,"i32");this.in_ptr=_malloc(this.frame_size*i*4),this.in_len=this.frame_size*i,this.in_i16=HEAP16.subarray(this.in_ptr>>1,(this.in_ptr>>1)+this.in_len),this.in_f32=HEAPF32.subarray(this.in_ptr>>2,(this.in_ptr>>2)+this.in_len),this.out_bytes=Opus.getMaxFrameSize(),this.out_ptr=_malloc(this.out_bytes),this.out_buf=HEAPU8.subarray(this.out_ptr,this.out_ptr+this.out_bytes)}return e.prototype.encode=function(e){for(var i=[],r=0;e.length-r>=this.in_len-this.in_off;){this.in_off>0?(this.in_i16.set(e.subarray(r,r+this.in_len-this.in_off),this.in_off),r+=this.in_len-this.in_off,this.in_off=0):(this.in_i16.set(e.subarray(r,r+this.in_len)),r+=this.in_len);var t=_opus_encode(this.handle,this.in_ptr,this.frame_size,this.out_ptr,this.out_bytes);if(t<=0)throw"opus_encode failed: "+t;var n=new ArrayBuffer(t);new Uint8Array(n).set(this.out_buf.subarray(0,t)),i.push(n)}return r=this.in_len-this.in_off;){this.in_off>0?(this.in_f32.set(e.subarray(r,r+this.in_len-this.in_off),this.in_off),r+=this.in_len-this.in_off,this.in_off=0):(this.in_f32.set(e.subarray(r,r+this.in_len)),r+=this.in_len);var t=_opus_encode_float(this.handle,this.in_ptr,this.frame_size,this.out_ptr,this.out_bytes);if(t<=0)throw"opus_encode failed: "+t;var n=new ArrayBuffer(t);new Uint8Array(n).set(this.out_buf.subarray(0,t)),i.push(n)}return r>1,this.out_ptr+t>>1),this.out_f32=HEAPF32.subarray(this.out_ptr>>2,this.out_ptr+t>>2)}return e.prototype.decode=function(e){this.in_buf.set(new Uint8Array(e));var i=_opus_decode(this.handle,this.in_ptr,e.byteLength,this.out_ptr,this.out_len,0);if(i<0)throw"opus_decode failed: "+i;var r=new Int16Array(i*this.channels);return r.set(this.out_i16.subarray(0,r.length)),r},e.prototype.decode_float=function(e){this.in_buf.set(new Uint8Array(e));var i=_opus_decode_float(this.handle,this.in_ptr,e.byteLength,this.out_ptr,this.out_len,0);if(i<0)throw"opus_decode failed: "+i;var r=new Float32Array(i*this.channels);return r.set(this.out_f32.subarray(0,r.length)),r},e.prototype.destroy=function(){this.handle&&(_opus_decoder_destroy(this.handle),_free(this.in_ptr),_free(this.out_ptr),this.handle=this.in_ptr=this.out_ptr=0)},e}();class Talk extends Emitter{constructor(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},e&&(this.player=e),this.TAG_NAME="talk";const r=getDefaultTalkOptions();this._opt=Object.assign({},r,i),this._opt.sampleRate=parseInt(this._opt.sampleRate,10),this._opt.sampleBitsWidth=parseInt(this._opt.sampleBitsWidth,10),this.audioContext=null,this.gainNode=null,this.recorder=null,this.workletRecorder=null,this.biquadFilter=null,this.userMediaStream=null,this.clearWorkletUrlTimeout=null,this.bufferSize=512,this._opt.audioBufferLength=this.calcAudioBufferLength(),this.audioBufferList=[],this.opusEncoder=null,this.opusDecoder=null,this.resampler=null,this._opt.encType===TALK_ENC_TYPE.opus&&(this.opusEncoder=new OpusEncoder(this._opt.sampleRate,this._opt.numberChannels,OPUS_ENCODER_APP.audio,this._opt.frameDuration)),this.socket=null,this.socketStatus=WEBSOCKET_STATUS.notConnect,this.mediaStreamSource=null,this.heartInterval=null,this.checkGetUserMediaTimeout=null,this.wsUrl=null,this.startTimestamp=0,this.sequenceId=0,this.tempTimestamp=null,this.tempG711BufferList=new Uint8Array(0),this.tempRtpBufferList=new Uint8Array(0),this.tempPcmBufferList=new Uint8Array(0),this.tempOpusBufferList=new Uint8Array(0),this.events=new Events(this),this._initTalk(),this.player||(this.debug=new Debug(this)),this._opt.encType!==TALK_ENC_TYPE.g711a&&this._opt.encType!==TALK_ENC_TYPE.g711u||8e3===this._opt.sampleRate&&16===this._opt.sampleBitsWidth||(this.warn(this.TAG_NAME,`\n encType is ${this._opt.encType} and sampleRate is ${this._opt.sampleRate}, and sampleBitsWidth is ${this._opt.sampleBitsWidth}。\n ${this._opt.encType} only support sampleRate 8000 and sampleBitsWidth 16`),this._opt.sampleRate=8e3,this._opt.sampleBitsWidth=16),this._opt.packetType===TALK_PACKET_TYPE.rtp&&this._opt.encType===TALK_ENC_TYPE.pcm&&(this.warn(this.TAG_NAME,`packetType is ${this._opt.packetType} and encType is ${this._opt.encType}, rtp only support g711a or g711u or opus so set packetType to empty`),this._opt.packetType=TALK_PACKET_TYPE.empty),this._opt.encType,TALK_ENC_TYPE.opus,this.log(this.TAG_NAME,"init",JSON.stringify(this._opt))}destroy(){this.clearWorkletUrlTimeout&&(clearTimeout(this.clearWorkletUrlTimeout),this.clearWorkletUrlTimeout=null),this.userMediaStream&&(this.userMediaStream.getTracks&&this.userMediaStream.getTracks().forEach((e=>{e.stop()})),this.userMediaStream=null),this.mediaStreamSource&&(this.mediaStreamSource.disconnect(),this.mediaStreamSource=null),this.recorder&&(this.recorder.disconnect(),this.recorder.onaudioprocess=null,this.recorder=null),this.biquadFilter&&(this.biquadFilter.disconnect(),this.biquadFilter=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.workletRecorder&&(this.workletRecorder.disconnect(),this.workletRecorder=null),this.opusEncoder&&(this.opusEncoder.destroy(),this.opusEncoder=null),this.opusDecoder&&(this.opusDecoder.destroy(),this.opusDecoder=null),this.resampler&&(this.resampler.destroy(),this.resampler=null),this.socket&&(this.socketStatus===WEBSOCKET_STATUS.open&&this._sendClose(),this.socket.close(),this.socket=null),this._stopHeartInterval(),this._stopCheckGetUserMediaTimeout(),this.audioContext=null,this.gainNode=null,this.recorder=null,this.audioBufferList=[],this.sequenceId=0,this.wsUrl=null,this.tempTimestamp=null,this.tempRtpBufferList=null,this.tempG711BufferList=null,this.tempPcmBufferList=null,this.tempOpusBufferList=null,this.startTimestamp=0,this.log(this.TAG_NAME,"destroy")}addRtpToBuffer(e){const i=e.length+this.tempRtpBufferList.length,r=new Uint8Array(i);r.set(this.tempRtpBufferList,0),r.set(e,this.tempRtpBufferList.length),this.tempRtpBufferList=r}addG711ToBuffer(e){const i=e.length+this.tempG711BufferList.length,r=new Uint8Array(i);r.set(this.tempG711BufferList,0),r.set(e,this.tempG711BufferList.length),this.tempG711BufferList=r}addPcmToBuffer(e){const i=e.length+this.tempPcmBufferList.length,r=new Uint8Array(i);r.set(this.tempPcmBufferList,0),r.set(e,this.tempPcmBufferList.length),this.tempPcmBufferList=r}addOpusToBuffer_1(e){this.opusDecoder||(this.opusDecoder=new OpusDecoder(this._opt.sampleRate,this._opt.numberChannels));const i=this.opusDecoder.decode(e),r=new Uint8Array(i.buffer);this.addPcmToBuffer(r)}addOpusToBuffer(e){const i=this.tempOpusBufferList.length+1+e.length,r=new Uint8Array(i);r.set(this.tempOpusBufferList,0),r.set([e.length],this.tempOpusBufferList.length),r.set(e,this.tempOpusBufferList.length+1),this.tempOpusBufferList=r}downloadRtpFile(){this.debug.log(this.TAG_NAME,"downloadRtpFile");const e=new Blob([this.tempRtpBufferList]);try{const i=document.createElement("a");i.href=window.URL.createObjectURL(e),i.download=Date.now()+".rtp",i.click(),this.tempRtpBufferList=new Uint8Array(0),window.URL.revokeObjectURL(i.href)}catch(e){console.error("downloadRtpFile",e)}}downloadG711File(){this.debug.log(this.TAG_NAME,"downloadG711File");const e=new Blob([this.tempG711BufferList]);try{const i=document.createElement("a");i.href=window.URL.createObjectURL(e),i.download=Date.now()+"."+this._opt.encType,i.click(),this.tempG711BufferList=new Uint8Array(0),window.URL.revokeObjectURL(i.href)}catch(e){console.error("downloadG711File",e)}}downloadOpusFile_1(){this.debug.log(this.TAG_NAME,"downloadOpusFile"),this.downloadPcmFile()}downloadOpusFile(){this.debug.log(this.TAG_NAME,"downloadOpusFile");const e=encodeOgg(this.tempOpusBufferList,this._opt.sampleRate,this._opt.numberChannels),i=new Blob([e],{type:"audio/ogg"});try{const e=document.createElement("a");e.href=window.URL.createObjectURL(i),e.download=Date.now()+".ogg",e.click(),this.tempOpusBufferList=new Uint8Array(0),window.URL.revokeObjectURL(e.href)}catch(e){console.error("downloadOpusFile",e)}}downloadPcmFile(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.debug.log(this.TAG_NAME,"downloadPcmFile",this._opt.sampleRate,this._opt.numberChannels,this._opt.sampleBitsWidth);let i=new DataView(this.tempPcmBufferList.buffer),r=null,t="";e?(i=encodeWAV(i,this._opt.sampleRate,this._opt.numberChannels,this._opt.sampleBitsWidth),t=".wav",r=new Blob([i],{type:"audio/wav"})):(t=".pcm",r=new Blob([this.tempPcmBufferList]));try{const e=document.createElement("a");e.href=window.URL.createObjectURL(r),e.download=Date.now()+t,e.click(),this.tempPcmBufferList=new Uint8Array(0),window.URL.revokeObjectURL(e.href)}catch(e){console.error("downloadRtpFile",e)}}downloadFile(){this._opt.packetType===TALK_PACKET_TYPE.rtp?this.downloadRtpFile():this._opt.encType===TALK_ENC_TYPE.g711a||this._opt.encType===TALK_ENC_TYPE.g711u?this.downloadG711File():this._opt.encType===TALK_ENC_TYPE.opus?this.downloadOpusFile():this._opt.encType===TALK_ENC_TYPE.pcm&&this.downloadPcmFile()}calcAudioBufferLength(){const{sampleRate:e,sampleBitsWidth:i,frameDuration:r}=this._opt;return e*i*(r/1e3)/8}get socketStatusOpen(){return this.socketStatus===WEBSOCKET_STATUS.open}log(){for(var e=arguments.length,i=new Array(e),r=0;r1?i-1:0),t=1;t{const r=this.events.proxy;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",this.emit(EVENTS.talkStreamStart),r(this.socket,WEBSOCKET_EVENTS.open,(()=>{this.socketStatus=WEBSOCKET_STATUS.open,this.log(this.TAG_NAME,"websocket open -> do talk"),this.emit(EVENTS.talkStreamOpen),e(),this._doTalk()})),r(this.socket,WEBSOCKET_EVENTS.message,(e=>{this.log(this.TAG_NAME,"websocket message",e.data)})),r(this.socket,WEBSOCKET_EVENTS.close,(e=>{this.socketStatus=WEBSOCKET_STATUS.close,this.warn(this.TAG_NAME,"websocket close -> reject",e),this.emit(EVENTS.talkStreamClose),i(e)})),r(this.socket,WEBSOCKET_EVENTS.error,(e=>{this.socketStatus=WEBSOCKET_STATUS.error,this.error(this.TAG_NAME,"websocket error -> reject",e),this.emit(EVENTS.talkStreamError,e),i(e)}))}))}_sendClose(){}_initTalk(){this._initMethods(),this._opt.engine===TALK_ENGINE.worklet?this._initWorklet():this._opt.engine===TALK_ENGINE.script&&this._initScriptProcessor(),this.log(this.TAG_NAME,"audioContext samplerate",this.audioContext.sampleRate)}_initMethods(){this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=1,this.biquadFilter=this.audioContext.createBiquadFilter(),this.biquadFilter.type="lowpass",this.biquadFilter.frequency.value=3e3,this.resampler=new Resampler({fromSampleRate:this.audioContext.sampleRate,toSampleRate:this._opt.sampleRate,channels:this._opt.numberChannels,inputBufferSize:this.bufferSize})}_initScriptProcessor(){const e=this.audioContext.createScriptProcessor||this.audioContext.createJavaScriptNode;this.recorder=e.apply(this.audioContext,[this.bufferSize,this._opt.numberChannels,this._opt.numberChannels]),this.recorder.onaudioprocess=e=>this._onaudioprocess(e)}_initWorklet(){const e=createWorkletModuleUrl((function(){class e extends AudioWorkletProcessor{constructor(e){super(),this._cursor=0,this._bufferSize=e.processorOptions.bufferSize,this._buffer=new Float32Array(this._bufferSize)}process(e,i,r){if(!e.length||!e[0].length)return!0;for(let i=0;i{const e=new AudioWorkletNode(this.audioContext,"talk-processor",{processorOptions:{bufferSize:this.bufferSize}});e.connect(this.gainNode),e.port.onmessage=e=>{"data"===e.data.eventType&&this._encodeAudioData(e.data.buffer)},this.workletRecorder=e})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(e),this.clearWorkletUrlTimeout=null}),URL_OBJECT_CLEAR_TIME)}_onaudioprocess(e){const i=e.inputBuffer.getChannelData(0);this._encodeAudioData(new Float32Array(i))}_encodeAudioData(e){if(0===e[0]&&0===e[1])return void this.log(this.TAG_NAME,"empty audio data");const i=this.resampler.resample(e);if(this._opt.encType===TALK_ENC_TYPE.opus){let e=this.opusEncoder.encode_float(i);e.length>0&&e.forEach((e=>{this._sendTalkMsg(new Uint8Array(e))}))}else{let e=i;16===this._opt.sampleBitsWidth?e=floatTo16BitPCM(i):8===this._opt.sampleBitsWidth?e=floatTo8BitPCM(i):32===this._opt.sampleBitsWidth&&(e=floatTo32BitPCM(i));let r=null;this._opt.encType===TALK_ENC_TYPE.g711a?r=g711aEncoder(e):this._opt.encType===TALK_ENC_TYPE.g711u?r=g711uEncoder(e):this._opt.encType===TALK_ENC_TYPE.pcm&&(r=e.buffer);const t=new Uint8Array(r);for(let e=0;e>8,i[o++]=255&e>>0}i[o++]=128,i[o++]=128+r,i[o++]=t/256,i[o++]=t%256,i[o++]=n/65536/256,i[o++]=n/65536%256,i[o++]=n%65536/256,i[o++]=n%65536%256,i[o++]=a/65536/256,i[o++]=a/65536%256,i[o++]=a%65536/256,i[o++]=a%65536%256;let s=i.concat([...e]),l=new Uint8Array(s.length);for(let e=0;e{this.log(this.TAG_NAME,"getUserMedia success"),this.userMediaStream=e,this.mediaStreamSource=this.audioContext.createMediaStreamSource(e),this.mediaStreamSource.connect(this.biquadFilter),this.recorder?(this.biquadFilter.connect(this.recorder),this.recorder.connect(this.gainNode)):this.workletRecorder&&(this.biquadFilter.connect(this.workletRecorder),this.workletRecorder.connect(this.gainNode)),this.gainNode.connect(this.audioContext.destination),this.emit(EVENTS.talkGetUserMediaSuccess),null===e.oninactive&&(e.oninactive=e=>{this._handleStreamInactive(e)})})).catch((e=>{this.error(this.TAG_NAME,"getUserMedia error",e.toString()),this.emit(EVENTS.talkGetUserMediaFail,e.toString())})).finally((()=>{this.log(this.TAG_NAME,"getUserMedia finally"),this._stopCheckGetUserMediaTimeout()}))}_getUserMedia2(){this.log(this.TAG_NAME,"getUserMedia"),navigator.mediaDevices?navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{this.log(this.TAG_NAME,"getUserMedia2 success")})):navigator.getUserMedia({audio:!0},this.log(this.TAG_NAME,"getUserMedia2 success"),this.log(this.TAG_NAME,"getUserMedia2 fail"))}async _getUserMedia3(){this.log(this.TAG_NAME,"getUserMedia3");try{const e=await navigator.mediaDevices.getUserMedia({audio:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1},video:!1});console.log("getUserMedia() got stream:",e),this.log(this.TAG_NAME,"getUserMedia3 success")}catch(e){this.log(this.TAG_NAME,"getUserMedia3 fail")}}_handleStreamInactive(e){this.userMediaStream&&(this.warn(this.TAG_NAME,"stream oninactive",e),this.emit(EVENTS.talkStreamInactive))}_startCheckGetUserMediaTimeout(){this._stopCheckGetUserMediaTimeout(),this.checkGetUserMediaTimeout=setTimeout((()=>{this.log(this.TAG_NAME,"check getUserMedia timeout"),this.emit(EVENTS.talkGetUserMediaTimeout)}),this._opt.getUserMediaTimeout)}_stopCheckGetUserMediaTimeout(){this.checkGetUserMediaTimeout&&(this.log(this.TAG_NAME,"stop checkGetUserMediaTimeout"),clearTimeout(this.checkGetUserMediaTimeout),this.checkGetUserMediaTimeout=null)}_startHeartInterval(){this.heartInterval=setInterval((()=>{this.log(this.TAG_NAME,"heart interval");let e=[35,36,0,0,0,0,0,0];e=new Uint8Array(e),this.socket.send(e.buffer)}),15e3)}_stopHeartInterval(){this.heartInterval&&(this.log(this.TAG_NAME,"stop heart interval"),clearInterval(this.heartInterval),this.heartInterval=null)}startTalk(e){return new Promise(((i,r)=>{if(!isSupportGetUserMedia())return r("not support getUserMedia");if(this.wsUrl=e,this._opt.testMicrophone)this._doTalk();else{if(!this.wsUrl)return r("wsUrl is null");this._createWebSocket().catch((e=>{r(e)}))}this.once(EVENTS.talkGetUserMediaFail,(()=>{r("getUserMedia fail")})),this.once(EVENTS.talkGetUserMediaSuccess,(()=>{i()}))}))}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(e=clamp(e,0,1),this.gainNode.gain.value=e)}getOption(){return this._opt}get volume(){return this.gainNode?parseFloat(100*this.gainNode.gain.value).toFixed(0):null}}class JessibucaProTalk extends Emitter{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this.talk=null,this._opt=e,this.LOG_TAG="JbProTalk",this.debug=new Debug(this),this.debug.log(this.LOG_TAG,"init",JSON.stringify(e))}destroy(){this.debug.log(this.LOG_TAG,"destroy()"),this.off(),this.talk&&(this.talk.destroy(),this.talk=null),this.debug.log(this.LOG_TAG,"destroy")}_initTalk(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.talk&&(this.debug.log(this.LOG_TAG,"_initTalk this.talk is not null and destroy"),this.talk.destroy(),this.talk=null);const i=Object.assign({},clone(this._opt),e);this.talk=new Talk(null,i),this.debug.log(this.LOG_TAG,"_initTalk",this.talk.getOption()),this._bindTalkEvents()}_bindTalkEvents(){Object.keys(TALK_EVENTS).forEach((e=>{this.talk.on(TALK_EVENTS[e],(i=>{this.emit(e,i)}))}))}startTalk(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((r,t)=>{this.debug.log(this.LOG_TAG,"startTalk",e,JSON.stringify(i)),this._initTalk(i),this.talk.startTalk(e).then((()=>{r(),this.talk.once(EVENTS.talkStreamClose,(()=>{this.debug.warn(this.LOG_TAG,"talkStreamClose -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkStreamClose stopTalk",e)})).finally((()=>{this.emit(EVENTS.talkFailedAndStop,EVENTS.talkStreamClose)}))})),this.talk.once(EVENTS.talkStreamError,(e=>{this.debug.error(this.LOG_TAG,"talkStreamError -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkStreamError stopTalk",e)})).finally((()=>{this.emit(EVENTS.talkFailedAndStop,EVENTS.talkStreamError)}))})),this.talk.once(EVENTS.talkStreamInactive,(()=>{this.debug.warn(this.LOG_TAG,"talkStreamInactive -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkStreamInactive stopTalk",e)})).finally((()=>{this.emit(EVENTS.talkFailedAndStop,EVENTS.talkStreamInactive)}))})),this.talk.once(EVENTS.talkGetUserMediaTimeout,(()=>{this.debug.warn(this.LOG_TAG,"talkGetUserMediaTimeout -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkGetUserMediaTimeout stopTalk",e)})).finally((()=>{this.emit(EVENTS.talkFailedAndStop,EVENTS.talkGetUserMediaTimeout)}))}))})).catch((e=>{t(e)}))}))}stopTalk(){return new Promise(((e,i)=>{this.debug.log(this.LOG_TAG,"stopTalk()"),this.talk||i("talk is not init"),this.talk.destroy(),this.talk=null,e()}))}getTalkVolume(){return new Promise(((e,i)=>{this.talk||i("talk is not init"),e(this.talk.volume)}))}setTalkVolume(e){return new Promise(((i,r)=>{this.debug.log(this.LOG_TAG,"setTalkVolume",e),this.talk||r("talk is not init"),this.talk.setVolume(e/100),i()}))}downloadTempRtpFile(){return new Promise(((e,i)=>{this.talk?(this.talk.downloadRtpFile(),e()):i("talk is not init")}))}downloadTempG711File(){return new Promise(((e,i)=>{this.talk?(this.talk.downloadG711File(),e()):i("talk is not init")}))}downloadTempPcmFile(e){return new Promise(((i,r)=>{this.talk?(this.talk.downloadPcmFile(e),i()):r("talk is not init")}))}downloadTempOpusFile(){return new Promise(((e,i)=>{this.talk?(this.talk.downloadOpusFile(),e()):i("talk is not init")}))}downloadTempFile(){return new Promise(((e,i)=>{this.talk?(this.talk.downloadFile(),e()):i("talk is not init")}))}}return JessibucaProTalk.EVENTS=TALK_EVENTS,window.JessibucaProTalk=JessibucaProTalk,window.JbProTalk=JessibucaProTalk,window.WebPlayerProTalk=JessibucaProTalk,JessibucaProTalk})); diff --git a/cn-universal-web-ui/public/js/jessibucaPro/jessibuca.js b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca.js new file mode 100644 index 0000000000000000000000000000000000000000..ba730b91d6aa4abd35ea5fba335055d8d0b9b068 --- /dev/null +++ b/cn-universal-web-ui/public/js/jessibucaPro/jessibuca.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var i,o=t((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),r=(i=o)&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;const s=0,a=1,n="flv",A="m7s",d="mp4",c="webm",l={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:a,demuxType:n,useWCS:!1,wcsUseVideoRender:!0,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:c,useWebFullScreen:!1},u="init",h="initVideo",p="render",m="playAudio",g="initAudio",f="audioCode",b="videoCode",y="wasmError",v="Invalid NAL unit size",w=1,S=2,E=8,B=9,C="init",R="decode",k="audioDecode",T="close",I="updateConfig",x={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},D={load:x.load,timeUpdate:x.timeUpdate,videoInfo:x.videoInfo,audioInfo:x.audioInfo,error:x.error,kBps:x.kBps,log:x.log,start:x.start,timeout:x.timeout,loadingTimeout:x.loadingTimeout,delayTimeout:x.delayTimeout,fullscreen:"fullscreen",webFullscreen:x.webFullscreen,play:x.play,pause:x.pause,mute:x.mute,stats:x.stats,volumechange:x.volumechange,performance:x.performance,recordingTimestamp:x.recordingTimestamp,recordStart:x.recordStart,recordEnd:x.recordEnd,playToRenderTimes:x.playToRenderTimes},j={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:x.mseSourceBufferFull,mseSourceBufferError:x.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError"},L="notConnect",F="open",O="close",V="error",M={download:"download",base64:"base64",blob:"blob"},U={7:"H264(AVC)",12:"H265(HEVC)"},Q=12,W={10:"AAC",7:"ALAW",8:"MULAW"},J=38,P=0,G=1,N=2,H="webcodecs",z="webgl",Y="offscreen",X="key",q="delta",Z='video/mp4; codecs="avc1.64002A"',K="ended",_="open",$="closed",ee=1e3,te=27,ie=38,oe=40,re="A key frame is required after configure() or flush()",se="Cannot call 'decode' on a closed codec",ae="The user aborted a request",ne="AbortError",Ae="AbortError",de=0,ce=1,le=3,ue=16;class he{constructor(e){this.log=function(t){if(e._opt.debug){for(var i=arguments.length,o=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r1?t-1:0),o=1;o3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,o)));e.addEventListener(t,i,o);const r=()=>e.removeEventListener(t,i,o);return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var me=t((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,o=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],o=0,r=i.length,s={};o0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),o=t[0].replace("data:","").replace(";base64","");let r=i.length,s=new Uint8Array(r);for(;r--;)s[r]=i.charCodeAt(r);return new File([s],"file",{type:o})}function be(){return(new Date).getTime()}function ye(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ve(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{ve(e,i,t[i])})),e.style[t]=i,e}function we(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const o=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(o):o}function Se(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ee(e){let t=0,i=Se();return o=>{t+=o;const r=Se(),s=r-i;s>=1e3&&(e(t/s*1e3),i=r,t=0)}}function Be(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function Ce(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function Re(e){return null==e}function ke(e){return!Re(e)}function Te(e){const t=e||window.event;return t.target||t.srcElement}function Ie(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}function xe(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const o=new Uint8Array(i.length+e.byteLength);return o.set(i,0),o.set(e,i.length),o}me.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class De{on(e,t,i){const o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const o=this;function r(){o.off(e,r);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const o=i[e],r=[];if(o&&t)for(let e=0,i=o.length;e=200&&t.status<=299}function Ve(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Me=Le.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ue="object"!=typeof window||window!==Le?function(){}:"download"in HTMLAnchorElement.prototype&&!Me?function(e,t,i){var o=Le.URL||Le.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Oe(r.href)?Fe(e,t,i):Ve(r,r.target="_blank"):Ve(r)):(r.href=o.createObjectURL(e),setTimeout((function(){o.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Ve(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Oe(e))Fe(e,t,i);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout((function(){Ve(o)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof e)return Fe(e,t,i);var r="application/octet-stream"===e.type,s=/constructor/i.test(Le.HTMLElement)||Le.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&s||Me)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=e:location=e,o=null},n.readAsDataURL(e)}else{var A=Le.URL||Le.webkitURL,d=A.createObjectURL(e);o?o.location=d:location.href=d,o=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class Qe extends je{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){if(this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let o=0;for(;!t&&o{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),o=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(r));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,o),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,r),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var o=e.createTexture();return e.bindTexture(e.TEXTURE_2D,o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),o}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=l("ySampler",0),h=l("uSampler",1),p=l("vSampler",2);return{render:function(t,i,o,r,s){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}else this.player.debug.error("CanvasVideoLoader","init webgl fail")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=H,this._initContext2D()):this._supportOffscreen()?(this.renderType=Y,this._bindOffscreen()):(this.renderType=z,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case Y:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case z:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case H:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,o){e=e||be(),o=o||M.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement.toDataURL(r[t]||r.png,s);if(o===M.base64)return a;{const t=fe(a);if(o===M.blob)return t;o===M.download&&Ue(t,e)}}clearView(){switch(this.renderType){case Y:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case z:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case H:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;e.hasControl&&!e.controlAutoHide&&(Be()&&this.player.fullscreen&&e.useWebFullScreen?t-=J:i-=J);let o=this.$videoElement.width,r=this.$videoElement.height;const s=e.rotate;let a=(t-o)/2,n=(i-r)/2;270!==s&&90!==s||(o=this.$videoElement.height,r=this.$videoElement.width);const A=t/o,d=i/r;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class We extends je{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const o=this.player._opt;o.useWCS&&o.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:r}=this.player.events;r(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video",`canplay and _delayPlay is ${this._delayPlay}`),this._delayPlay&&this._play()})),r(this.$videoElement,"waiting",(()=>{this.player.emit(x.videoWaiting)})),r(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(x.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let o in i)if(i[o]){let i="";if("IE"===o)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===o){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(o="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===o?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===o?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===o?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===o?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===o&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=o,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,o){e=e||be(),o=o||M.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const A=n.toDataURL(r[t]||r.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,o===M.base64)return A;{const t=fe(A);if(o===M.blob)return t;o===M.download&&Ue(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&this.vwriter.write(e.videoFrame)}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,o=i.rotate;i.hasControl&&!i.controlAutoHide&&(Be()&&this.player.fullscreen&&i.useWebFullScreen?e-=J:t-=J),this.$videoElement.width=e,this.$videoElement.height=t,270!==o&&90!==o||(this.$videoElement.width=t,this.$videoElement.height=e);let r=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+o+"deg)",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class Je{constructor(e){return new(Je.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?We:Qe}}class Pe extends De{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(x.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}destroy(){this.closeAudio(),this.resetInit(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=ge,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=W[e.encTypeCode],this.audioInfo.encTypeCode=e.encTypeCode),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(x.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ee)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let o=0;o20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}}class Ge{constructor(e){return new(Ge.getLoaderFactory())(e)}static getLoaderFactory(){return Pe}}class Ne extends De{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ee((t=>{e.emit(x.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player.debug.log("FetchStream","fetchStream",e,JSON.stringify(t)),this.player._times.streamStart=be();const o=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,o).then((e=>{const t=e.body.getReader();this.emit(x.streamSuccess);const o=()=>{t.read().then((e=>{let{done:t,value:r}=e;t?i.close():(this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),o())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(ae)&&-1===t.indexOf(ne)&&e.name!==Ae&&(this.abort(),this.emit(j.fetchError,e),this.player.emit(x.error,j.fetchError))}))};o()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(j.fetchError,e),this.player.emit(x.error,j.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class He extends De{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=L,this.wsUrl=null,this.streamRate=Ee((t=>{e.emit(x.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=L,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:o}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(x.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=F})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(x.streamEnd),this.socketStatus=O})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(j.websocketError,e),this.player.emit(x.error,j.websocketError),this.socketStatus=V,o.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=be(),this.wsUrl=e,this._createWebSocket()}}class ze{constructor(e){return new(ze.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?Ne:e===s?He:void 0}}var Ye=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new o(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var o=new r(e,t);(h=new o(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var o=h.blob;if(!o){if(!i)throw"Recording failed.";h.blob=o=i}if(o&&!t.disableLogs&&console.log(o.type,"->",b(o.size)),e){var r;try{r=l.createObjectURL(o)}catch(e){}"function"==typeof e.call?e.call(s,r):e(r)}t.autoWriteToDisk&&d((function(e){var i={};i[t.type+"Blob"]=e,x.Store(i)}))}else"function"==typeof e.call?e.call(s,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,i){if(!e)throw"Pass a callback function over getDataURL.";var o=i?i.blob:(h||{}).blob;if(!o)return t.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,i)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var r=new FileReader;r.readAsDataURL(o),r.onload=function(t){e(t.target.result)}}else{var s=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);s.onmessage=function(t){e(t.data)},s.postMessage(o)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new o(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,o=0;o-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),m=!h&&!u&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),g=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);g&&!m&&-1!==navigator.userAgent.indexOf("CriOS")&&(g=!1,m=!0);var f=window.MediaStream;function b(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function y(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var o=t.split(".");t=o[0],i=o[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=r,s.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(s),"function"==typeof s.click?s.click():(s.target="_blank",s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(s.href)}function v(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function w(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function S(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),i.invokeSaveAsDialog=y,i.getTracks=w,i.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,o=new EBML.Decoder,r=EBML.tools,s=new FileReader;s.onload=function(e){o.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(m||h)&&(e=i.indexOf("Chrome"),o=i.substring(e+7)),-1!==(t=o.indexOf(";"))&&(o=o.substring(0,t)),-1!==(t=o.indexOf(" "))&&(o=o.substring(0,t)),r=parseInt(""+o,10),isNaN(r)&&(o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function C(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var o;if(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(o=new f).addTrack(w(e,"audio")[0]):o=new f(w(e,"audio")),e=o;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=m?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var r,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function A(){s=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var o=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",o),r&&(r=null),m&&!B()&&(o="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&o.mimeType&&(MediaRecorder.isTypeSupported(o.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType),o.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,o),t.mimeType=o.mimeType}catch(t){r=new MediaRecorder(e)}o.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(o.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(o)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",o.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(A),A()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function o(){if(r&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(o,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function R(e,t){if(!w(e,"audio").length)throw"Your stream has no audio tracks.";var o,r=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,o=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var o=Math.round(e.length*(t/i)),r=[],s=Number((e.length-1)/(o-1));r[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,r.leftchannel=s,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=b,r.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){o&&(o.onaudioprocess=null,o.disconnect(),o=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;o.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),o.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,r.recordingLength=A,void 0!==t.timeSlice&&(B.recordingLength+=f,B.left.push(c),2===d&&B.right.push(h))}else m&&(m.disconnect(),m=null)},p.createMediaStreamDestination?o.connect(p.createMediaStreamDestination()):o.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,r.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var o=new Blob([i],{type:"audio/wav"});t.ondataavailable(o),setTimeout(C,t.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(C,t.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var o,r,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)o=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";o=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(s=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in o?e=o.captureStream(25):"mozCaptureStream"in o?e=o.mozCaptureStream(25):"webkitCaptureStream"in o&&(e=o.webkitCaptureStream(25));try{var a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new C(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var o=h.frames.length;h.frames.forEach((function(e,i){var r=o-i;t.disableLogs||console.log(r+"/"+o+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,o);var s=e.image.toDataURL("image/webp",1);h.frames[i].image=s})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){s=!1;var o=this;i&&r?r.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),o.blob=i,o.blob.forEach&&(o.blob=new Blob([],{type:"video/webm"})),e&&e(o.blob),h.frames=[]}))}))};var d=!1;function c(){h.frames=[],s=!1,d=!1}function l(){if(d)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(o=document.createElement("canvas"),r=o.getContext("2d"),o.width=e.width,o.height=e.height,r.drawImage(e,0,0),o),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var o,r;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),s&&setTimeout(l,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof C&&r.pause()},this.resume=function(){d=!1,r instanceof C?r.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function o(e,t,i,o,r){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=o&&o>=0&&o<=1?o:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var o,r,s,a=function(){!v&&s-o<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);o=0,r=e.data.length,s=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function o(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*s[0].width:s[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),r.height=s[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!o){var i=0,r=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,r,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var o=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=h(t);r.stream=t,i.push(r),o.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),o.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(o)}))},this.releaseStreams=function(){i=[],o=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),p(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){o=!1;var t=function(){var e;p(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function L(e,t){e=e||[];var i,o,r=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var r;i=new j(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){w(e,"video").forEach((function(e){r.push(e)}))})),r).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(o=new C(i.getMixedStream(),t)).record()},this.stop=function(e){o&&o.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){o&&o.pause()},this.resume=function(){o&&o.resume()},this.clearRecordedData=function(){o&&(o.clearRecordedData(),o=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),o&&i&&(i.appendStreams(r),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function F(e,t){var i,o,r;function s(){return new ReadableStream({start:function(o){var r=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),o.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==o._controlledReadableStream.state)try{o.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(o=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),o.addEventListener("message",(function(e){"READY"===e.data?(o.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),s().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):o.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){o?(o.addEventListener("message",(function(t){null===t.data&&(o.terminate(),o=null,e&&e())})),o.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}i.DiskStorage=x,i.GifRecorder=D,i.MultiStreamRecorder=L,i.RecordRTCPromisesHandler=function(e,t){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var o=this;o.recordRTC=new i(e,t),this.startRecording=function(){return new Promise((function(e,t){try{o.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{o.recordRTC.stopRecording((function(i){o.blob=o.recordRTC.getBlob(),o.blob&&o.blob.size?e(i):t("Empty blob.",o.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{o.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{o.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{o.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(o.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(o.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(o.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(o.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(o.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},i.WebAssemblyRecorder=F}));class Xe extends De{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=Ye(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(x.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(x.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(x.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(x.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(x.recordEnd);const e=(this.fileName||be())+"."+(this.fileType||c);Ue(this.recorder.getBlob(),e),this._reset(),this.player.emit(x.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class qe{constructor(e){return new(qe.getLoaderFactory())(e)}static getLoaderFactory(){return Xe}}class Ze{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}destroy(){this.decoderWorker.postMessage({cmd:T}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case u:e.log("decoderWorker","onmessage:",u),this.player.loaded||this.player.emit(x.load),this.player.emit(x.decoderWorkerInit),this._initWork();break;case b:e.log("decoderWorker","onmessage:",b,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=be()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case f:e.log("decoderWorker","onmessage:",f,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case h:if(e.log("decoderWorker","onmessage:",h,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(j.webglAlignmentError);this.player.video.initCanvasViewSize();break;case g:e.log("decoderWorker","onmessage:",g,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case p:this.player.handleRender(),this.player.video.render(i),this.player.emit(x.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=be(),this.player.handlePlayToRenderTimes());break;case m:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case y:i.message&&-1!==i.message.indexOf(v)&&this.player.emitError(j.wasmDecodeError);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:C,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const o={type:S,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:R,buffer:e,options:o},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:w,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:R,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:k,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:I,key:e.key,value:e.value})}}class Ke extends De{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.player._opt.useMSE&&this.player.mseDecoder&&this.player.mseDecoder.getSourceBufferUpdating())this.player.debug.warn("CommonDemux",`_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);else if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===w&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===w&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,o,r){const s=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===S&&(a.isIFrame=o),this.pushBuffer(e,a)):t===S?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,o):t===w&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:o}=t;e.type===w?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===S&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&o.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===w?this.bufferList.push({ts:t.ts,payload:e,type:w}):t.type===S&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:S,isIFrame:t.isIFrame})}close(){}_decodeEnhancedH265Video(e,t){const i=e[0],o=48&i,r=15&i,s=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),A="a"==String.fromCharCode(s[0]);if(r===de){if(o===ue){const t=e.slice(5);if(!A){const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this._doDecode(e,S,0,!0,0)}}}else if(r===ce){let i=e,r=0;const s=o===ue;if(!A){n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=xe(e.slice(8),s),this._doDecode(i,S,t,s,r)}}else if(r===le){const i=o===ue;let r=xe(e.slice(5),i);this._doDecode(r,S,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}class _e extends Ke{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),o=this.player;for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(r){case E:o._opt.hasAudio&&(o.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,w,a));break;case B:if(o._times.demuxStart||(o._times.demuxStart=be()),o._opt.hasVideo){o.updateStats({vbps:n.byteLength});const e=n[0];if(this._isEnhancedH265Header(e))this._decodeEnhancedH265Video(n,a);else{const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,S,a,e,t)}}}}}}dispatchFlvData(e){let t=e.next(),i=null;return o=>{let r=new Uint8Array(o);if(i){let e=new Uint8Array(i.length+r.length);e.set(i),e.set(r,i.length),r=e,i=null}for(;r.length>=t.value;){let i=r.slice(t.value);t=e.next(r.slice(0,t.value)),r=i}r.length>0&&(i=r)}}close(){this.input&&this.input.return(null)}}class $e extends Ke{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),o=i.getUint8(0),r=i.getUint32(1,!1),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(o){case w:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,o,r)}break;case S:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=be()),i.byteLength>5){const s=new Uint8Array(e,5),n=s[0];if(this._isEnhancedH265Header(n))this._decodeEnhancedH265Video(s,r);else{const e=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),a[0]=s[4],a[1]=s[3],a[2]=s[2],a[3]=0;let n=a[0];this._doDecode(s,o,r,e,n)}}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class et{constructor(e){return new(et.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?$e:e===n?_e:void 0}}class tt{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let o=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-o;return this._current_word<<=o,this._current_word_bits_left-=o,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class it{static _ebsp2rbsp(e){let t=e,i=t.byteLength,o=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(o[r]=t[e],r++);return new Uint8Array(o.buffer,0,r)}static parseSPS(e){let t=it._ebsp2rbsp(e),i=new tt(t);i.readByte();let o=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let s=it.getProfileString(o),a=it.getLevelString(r),n=1,A=420,d=[0,420,422,444],c=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=o[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:it.getChromaFormatString(A),frame_rate:{fixed:E,fps:S,fps_den:C,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:x},present_size:{width:D,height:x}}}static _skipScalingList(e,t){let i=8,o=8,r=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(j.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const o=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?X:q});this.player.emit(x.timeUpdate,t);try{if(this.isDecodeStateClosed())return void this.player.debug.warn("Webcodecs","VideoDecoder isDecodeStateClosed true");this.decoder.decode(o)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),(-1!==e.toString().indexOf(re)||-1!==e.toString().indexOf(se))&&this.player.emitError(j.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===Q)return void this.emit(j.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=be());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let o=t[e].toString(16);o.length<2&&(o="0"+o),i+=o}return{codec:i,description:e}}(e.slice(5));this.decoder.configure(i),this.hasInit=!0}}isDecodeStateClosed(){return"closed"===this.decoder.state}}const st={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var at=Object.keys(st).reduce(((e,t)=>(e[t]=`\n \n ${st[t]?`${st[t]}`:""}\n`,e)),{}),nt=(e,t)=>{const{events:{proxy:i}}=e,o=document.createElement("object");o.setAttribute("aria-hidden","true"),o.setAttribute("tabindex",-1),o.type="text/html",o.data="about:blank",ve(o,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let r=e.width,s=e.height;i(o,"load",(()=>{i(o.contentDocument.defaultView,"resize",(()=>{e.width===r&&e.height===s||(r=e.width,s=e.height,e.emit(x.resize),n())}))})),e.$container.appendChild(o),e.on(x.destroy,(()=>{e.$container.removeChild(o)})),e.on(x.volumechange,(()=>{!function(e){if(0===e)ve(t.$volumeOn,"display","none"),ve(t.$volumeOff,"display","flex"),ve(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=we(t.$volumePanel,"height")||60,o=we(t.$volumeHandle,"height"),r=i-(i-o)*e-o;ve(t.$volumeHandle,"top",`${r}px`),ve(t.$volumeOn,"display","flex"),ve(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(x.loading,(e=>{ve(t.$loading,"display",e?"flex":"none"),ve(t.$poster,"display","none"),e&&ve(t.$playBig,"display","none")}));const a=i=>{let o=!0===(r=i)||!1===r?i:e.fullscreen;var r;ve(t.$fullscreenExit,"display",o?"flex":"none"),ve(t.$fullscreen,"display",o?"none":"flex")},n=()=>{Be()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,o=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${o}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{me.on("change",a),e.events.destroys.push((()=>{me.off("change",a)}))}catch(e){}e.on(x.webFullscreen,(e=>{a(e),n()})),e.on(x.recording,(()=>{ve(t.$record,"display",e.recording?"none":"flex"),ve(t.$recordStop,"display",e.recording?"flex":"none"),ve(t.$recording,"display",e.recording?"flex":"none")})),e.on(x.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=function(e){var t;if(e>-1){var i=Math.floor(e/3600),o=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",o<10&&(t+="0"),t+=o+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}(e))})),e.on(x.playing,(e=>{ve(t.$play,"display",e?"none":"flex"),ve(t.$playBig,"display",e?"none":"block"),ve(t.$pause,"display",e?"flex":"none"),ve(t.$screenshot,"display",e?"flex":"none"),ve(t.$record,"display",e?"flex":"none"),ve(t.$qualityMenu,"display",e?"flex":"none"),ve(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=Ce(""))})),e.on(x.kBps,(e=>{const i=Ce(e);t.$speed&&(t.$speed.innerHTML=i)}))};function At(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}At('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-recording{display:none;position:absolute;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:95px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jessibuca-container .jessibuca-recording .jessibuca-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jessibuca-container .jessibuca-recording .jessibuca-recording-time{font-size:14px;font-weight:500;color:#ddd}.jessibuca-container .jessibuca-recording .jessibuca-icon-recordStop{width:16px;height:16px;cursor:pointer}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none;transition:width .5s ease-in}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAHHklEQVRoQ91bfYwdVRX/nTvbPuuqlEQM0q4IRYMSP0KkaNTEEAokNUEDFr9iEIOiuCC2++4dl+Tti9nOmbfWFgryESPhH7V+IIpG8SN+Fr8qqKgQEKoUkQREwXTLs8495mze1tf35s2bfTu7ndf758y55/x+c879OvcMYYnbxMTEy4IgOImIxkRkrYisNsasUrPe+wNE9C8ielRE9iVJsndmZubBpYRES6E8DMNXeu83ENHrAJwO4OUARvrY+i+ABwDcLSJ7jDF3RlF0f9H4CiNcrVZPCIJgk4hcCOCNBQH9EYBveO93NRqNx4rQuWjCExMT64IguEJE3kdEq4sA1alDRDTsb02SZOfMzMxDi7ExMGFr7THGGCciVwKYG5PL0HTMb69UKtNTU1Ozg9gbiLC1diMRXQ/gxEGMFtDnQRHZHMfxHQvVtWDCzrkdANSredvfRWQ3Ee0F8DCAJwDs994nQRCM6qxNROu892uI6A0ATs2rWER2xHF8VV55lctN2Dl3LICvA3hzDgMPENFXROT2SqVyb71efzZHnzkRnRNGRkY2isj5AM7K0e/HAN7OzP/MIZuP8OTk5FiSJDpjnpylVER+YIzZEUXRN/MY7ydTrVbXE9FlRPT+LFkiesh7f1Ycx4/009nXw9balxDRLwC8OEPZ/SLi4jjWCCi8WWtfA2CKiN6WofzxIAhePz09/dfMj5P1slqtPj8IgntEZF0vORH51Ozs7NU7d+5sFs60Q2EYhpeKyDUZq8LDInJ6HMdP98KS6WHn3E8BvKlHZx2X72Xmry410Xb91trTiOjLAF7Rw+5uZu6FufcYds7pl7wiTSkRPSUi5zHzr5eT7LytWq32gmaz+a0MZ1zDzB9LxZ72sFqtbjDGfLcHmWeI6IwoinTfe8RarVYzzWbzJxnb2A3M/P1OgF0hPT4+XhkdHd0H4LgUNv8xxpy5devW3x4xpm2Gt2zZMjoyMnJ363DSCemJ/fv3j3XOLV2EnXMNXQ57hPIFURTdVgay8xhaq4geKVem4Jph5mr788MIV6vVtcYY9W5XI6Iboij6SJnIzmNxzl0E4Itp2IIgWDs9Pf23+XeHEQ7D8EYR+VBKx8eYeU0ZybaR1s3OxhSMNzLzh7sIb968+YUrVqxQ7z6na6ATlS6UOzG2Qlv366bj3bMHDx4c27Zt25P6/JCHnXO6Cf90yhe6l5lfXWbvto3nm4no0hSHXRVFkR56/k/YWvsbItJ0zGFNRC6K4/hLQ0JYt8FdW0si2hNF0RmHCLcSbWnr6pPM/CIAMgyEFaNz7tsAzuvEmyTJKZotmQtpa+04EV2bQuo6Zh4fFrItwu8C8PmUSP1oHMfXzxEOw3CXiGzqFPLen9NoNL43TIQ19UREmmRY0YF7FzO/k5xzLwWgYdCZaZj13h/faDT+PUyEW15OO/T8MQiCjUr4HAC6Ee/MG/+MmfNkN0r3Pay124jo4x3ADuiBRwl/EMBNKTF/SxzHl5SOTQ5AzrnLANyQsjxdooRrmk1I0TPFzPUc+ksnYq09l4i+k8aJrLXbiajr7EhEV0ZRlDZzl45gJyDNhRljfpkCdLt6WF2vIdDZPsDMnys9uxSA1tpXEdHvU1599qgknHHqu/moDOlWNkTTyu2rTGKMOfeonLQ0lFunv08AOBPAXu/9jkajsafnsgTgVma+eBjHcBbmrI3HXcxc1D1vab5b1tbyQKVSOb5erz9TGrQFAMk8POhWLI7jOwuwUxoV/Y6Hn2Hmy0uDtgAgc4RbZQt/Ttl7PrVy5crj6vW6L8BWKVS057TuAqAX0p3t3cz8hVKgLQDEIcLW2suJ6LoUnX9i5tMKsFUKFYcIZ6VpAWxiZr2xG/p2WCI+4yDxeKVSWXM0jOXDCE9OTq5JkuTRNDcS0U1RFKWdqobK612XaWEYflJEru7BYuhDu4tw66ShxSFpd0laD7meme8ZKre2gU0teXDOnQ2gV3q2FBfig37wnjUevVI/auhIlzwMSnYOe1bnPkUtWrXznuUualkM2b6EtWzJGKMlBaf0MrScZUuLJduXsAq07l1/DuCEDIP3iUi4VIVpRRCd19G3Ek8FtfTQe//DrAI1lSu69LBIogsirMK1Wm11s9n8GoC35AByH4DbvPe3r1q16g8LKS7NoXtRIrk83G4ha/bugURL93cD+Mt8+TAR6YT3j0ql8rtBC70HZb1gwmooDMO3eu+vJaKTBjXc6rfPe39ho9H41SL15O4+EOFWiGv5n2sViz83t8VuwWW9pRyY8Dxu59zJIqJVAhcP+JPHI8y8bL8SLJrwPHH9jYeI3kFEF+Ssmp/rqjN7HMe6lV2WVhjhdrRhGJ7a+lFrPYDXAtB667Q/X5723p+tNwLLwrbf1rIIEBryxpgTkyQZA6DlFccS0fMA6G84d6RVvBZht5eO/wEB1Kvsoc6vtAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAGDElEQVRoQ82ZaahVVRTHf//moKKggQawcmg0olGl0awvRoMVBRGFlQ1YQZIZqRVKmJmFgVk59EFQykYjgmajbJ7n2WiAbKKCBq0Vfznndd723Lvvve/5bMH9cvfaa63/2WuvaYteoIjYHDgEOAAYDOwIbA/4f9PvwHfAt8DbwGvAS5L8f49Ine6OCO89CTgFOBrYqU1Z3wBPAUskPdDm3i72jgBExCXAWGBQp4qTfR8CMyXd0a68tgBExEjgBmCfdhW1yP8eMFHS/S3y0xKAiNgQmA2MaUHwB8DnwNfAbwX/FsDOwG7Ani3I8ElcLOnvHG8WQET0Ax4C9msi7BHgbuAFSXaHhhQRewBDgZOBE5qwvuV1SSuayWsKICIcVZ4Atq4R8mdxKnMkfZT7UnXrEeE7dD7gO7VpDc/PwAhJrzaS3xBAROzrUFcJhVUZjhrjJX3cieHpnogYUNytUTXy/gAOlvROna5aABHhGG5f3qZmk33ztt4wvAbIBcCcBicxSNLKdK0RgNeB/RPmVcBxkp5eF8aXMiPiKODRGpd6XZJduhutBSAipgNX1Bg/tJkv9iao4u4tBzZJ5N4oaXz1v24AImIvwLE4peGSnDX7jCLC2f3JGoV7S3q//D8F8DJwULJpgiQnrz6niLgSmJYofkXSwWsBiIgRwGPNmPscARARDqGp7zu0Orz/l4kjYhlweGLk4Ebhq8oXEc6wGwH/tAhyA2C1JGfsphQRTqBvJkzLJB3ZBaBIKGkGXSqpWab013FWvacooXO21K07256WS4QRsRQ4PhHgsPrxmjsQEZOB6xKGIZJebGZVRDwOHNOJ5ZU9j0s6NqPnUJcpCc9kSVNKAA5ZQyoMn0gamDMsIj4rCrQca7P1zyT1zwmIiE+AKt9yScNUFGuuZaoxd7okR4Ccfzq997S0fleSy5acrjQ//QUMNADXH/cmu0dKcoWZE+r2MKs8I+YdSW5Dc7rcizycMI0ygKuA6ysLjiT9JX3RgtC+BLArYJet5q4JBuBG5aKKsV/ZryWt/p8BcJj2R3VjVNJsA1gEnFH5821JzZqXLtaI6LMTsNIafYsM4L6iOyoNe1FSNSI1PIj1AMCh1CG1pPsNYEkxGin/fFVSWg/VglgPAF4BDqwYs8QAFgDnVP78SJIzbJbWAwBXC9VRzgIDcLVXjfm/AP0kuR/NhbY+uwMR4e7QDf6WFaOmGYBHJbcnlh7USvPSlycQEXYdu1CVxhiARxzPJwsXSarrTbux9TEAh3qH/CqtKSU2Az5NZpsPSTqxBRdy49/SfWki60NJ2WFXTUXqwdmAsphbCJxZUeIGfltJvg8NKSIMfPcc0Mx6tpiLiK2AH4qeoxS3UNJZJYC6emicpJkZAOOAGT0EcLmkmzvQM8oz1BLAxsX8vjqBWynJ86FcJDoLGO4OC8jOMgthnrX696Qkn35Oh+dB21aYfgJ2kLSqqzCKiGuAaxNJkyRNzSlYl+sNmq2pkiZZbxWAJ8g/Aj6NksI+3kplui5AFL2271m1AvVJb1fmqXSsMhGYkhjznqSeNi0d4YsIz3/SCNXNK+omcy5ZPVKv0r2STu3Iig431dRolrRCkvuCLqoD4BlM3Th7nqTzOrSnrW0RcSdQp+tASX4gbAzAK8Ub2KwarQ8Cp0vy20CvU5FUFwN1SfRSSbemSpu9D9wCXFZjpacDoyU925sIIuIw4K5k8lCqmCWpzpbmb2QRMRc4t4GhfiOYJunLngCJiF2Aq4ELG8iZL6mRDflHvohwpnXGrSM/VM8DFkt6rh0gxRd3K3s24BBeRzMkpaP+bnzZR77iTvgLuOR29mxEDnmer7rk9dPT98CvBbNreGdSD8s8WT4i81rpjD5G0vzcR2kJQAHCs5ubgKZjwERhednrHvAa2eaPMFaSm6UstQyglBQRDm92qWwJnNXencGnZpdp67W+bQAVIKOLCz6sTUNTdjdTcyW5N2+bOgZQAeLHQLuV5/UeM6ZZPDXKfa1nqs/4QUXSG21bXdnQYwBV5RHhy2rXcmh0E+5GxOTGyCWwp34fSCovd09sX7P3X2uzPXCoLsVMAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHn0lEQVRoQ81ZbYxcVRl+nnvu7ErSEmtqDdKwO3e2LWJLSEuFNiofFv9AUIpfiSFqCzt31lITGgEjHxKIKVirqXbnzpZSf5BAoHwIhpiAgDVSwBaU1rZLd+7skiIJKCWVpOzOPfc1d3dn986dO3Nn9kvuz3ve87zPc857znnPe4gZ+BZvlzPMed4XDG2sBGWFAGcRXET6ZwTwIsZpgbxL4B0ID/nKf8370Hz1xE08PV33nDKACDOO/roQ15K4TASfbQWLxL9E8AKJvcWs+WQrfcO2UxKQcfSNAn8TwKVTdVzdT/oJbi/aZl+reC0JsArelRDeC8jnW3XUnL0cofC2Ys58ojl7oDkBj4hKv697CXQnA8sxCEsE3hbKh4E9hfMEOBuUNMBzkzAE6Ct9SvXgW9RJtokC0r+VDqb8pyByfgOwZ0g84mv1cqmH/Y2cpntlmUG9BgauEcHVdW3JN6RsXF3axKFGeA0FdBVGVvpi/AnAJ2NAhkHpBU3H7eabSSMV1271yVL63g0C3gigPcbmA/r+umJP28F6+HUFZPLDy4XqVQCjW2HkexJQN7s2j0+FeLRPZqd0idL3Algfg/cRRa8u5toPx/mKFZDJyyKhPgZgQU0nssfNqvxMEK8RktdZoThxM2G0qaUDG/hetC1WgOXo1wG5IGJcNkS+OpBLvTgb5CuYXfnypT75x2hICfh6yVYrEwWknfJ9BH8cJU/fX9MoFmdS1Pja2w+gLYwrkF+U7NTN4X9VM9CxUz6nlD5So5JyeTGbemEmSSZhZQrly0T4fNROa3Xe0A95tPK/SoDleH8DcGF1J97q2ipYYHP+WY6+BZCtEccHXNtcXSPA6iuvg89nGxnPuQIAlqMPAhKJfVnn2qlge588iS3H2wfgS1XxJXpFve0rbNexS9JKwzQIvxmRvsDQCt7QDSwl2ad7h8+nof4Rsdvn2uYlEwKCAwW+jp6gT7u2Wf+kBBCcqjT8RwFZkUQktp18AzS+mXQQWo73NICrqjHU0uAcGl0DlqPvAOSusIFP/+LBbNsrjYhZjvccgK9MiXylk+A5N2de0QijszBykSHGy1XRQd5RzKq7RwVkHG+/ABdPGBADbtZckkTMcjw3mIgku0btArgl28wkYViONxBQndSN/SXbXMvRZM3UQS4zuedS7nOzqVuSQfXh6afW/Kdrq+VJvmLOpxFQLaHleEH+8VgE4ErXNp9JArUcfQiQROeNcXjYtVXiGhq7i+AP1ZsM1tNy9E8A+XmowfdFZQZzHPw4CejMS6dBHYRs6OzirbTyXi+IXIjsiXPeUekX76L3cRJw6Z1ivnWWDgb17BCvXloF7yEIvjP5k4dcWzW6vEyYzmUIje+W0ZB9KFgDjwO4JqTqFdc2J3ekBtMw9wK8YCu9KETpiWAG9kJwbejnQdc2I/lQvIr/g4ADAFaF2OwNZmAPgO9P/pQ3XTu1LCn+60xpM90iNs3tQmP+yv2RUs4eWk55K8Dwnn/Kb1cdgz/gB0ls5nIGzumVBaahgwv+/AleIluZcbxuAQpV+6vvX9jM5WUuBWR6R1aJYQQhFOKPbnY55TU++FL1aDPn2irublplNpcCrILOQaQ3TMCArGXnHvmEGtHFcG2TxFPFrPm15BAqHwPY1HqpjyX9rp1KLHbFZKRv++2qazwb9R4E8N2Qk7IxohYObOapRiLSjlckYCUJbdTeTDLXtUPO9Nv0fwCYIawHXdu8riIgJh/iFtdW2xsKKOgtFNk2HQEQ3uTm1K9a9UPB+qCGOipgVUFSJ0W/W1WBE7zn5sxFSeTSee86EpdT4ImBxFpmgEcfSgglwPMl2wxmv+FnOV5QD1oYMjq5gOozB7MsTyRGVkHfCZGfVe1G4O1FW92T5GA22+MuWwK5p2Snbh8djIrz83bKvI+Ufh9AKrxT+aKsZjLT2RAxdtfWxeoMFJ7frj5dOaeqyioZR98mkLurycgR107N0ntAUuiUj0bL8YxERU1p0Sp4gxB0VEETj7lZ8xuzMcr1MGNytCBehtys2Vkd5hGE8bJeXDl7t2ub18+FiEze2yVEjS+D/qqBbNtrDQUEjWNvYLIjSlaA36sR9e2BzRyeDSHBocph/TCBmkOU4OairX4T9Vv3fcByyr8G+KMaosSAaNlQ6kn9ZSZFWIXyFyH8XbjyUMEXkR2lXKqWS2R11/CxHO9+ABtjiQryMNRWN8u3piOka5cs9rX+KQA7Fod4wM2a8RySBIyGU768TcgtdUieJrEbvjxczKX+2oqQ8REPrrLfAzAvri8h24p2Klrqj+wvTXhNO95GjqXcqp45KUcF3CfAAaEcN+H/25e2/wb2BkfmezAWUrgEgtWEfDnhtVJD0O3mzAeS6CW+UlYArMLwCoj6JYCGZcCIw8pij3vAq8dtH6g3udn2Q0nkg/amBVTA0gXveopsaea9txkCkzZynOC2Vl/rWxYwMSN5b8PoAifWtkY0Yi14CcT9rm0Gd/OWvykLqHjq7Bu5QIm6QkQuAbG85hSPUiKGIDhM8s+a+tnB7ra/t8w61GHaAsLOl+2W+WVdPpfaWCzBE63BM0fbfTlF4KQo/0RKpY71b+To4p6J73/tXyc1fevA3AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHTElEQVRoQ+1Zb4xcVRX/nZl5u2/LrrO0EFKoBYpVaRu3u/e+3WlDZJdIRLQhNLIiEggxqURIjGmqTTAmWiRpjH4wghq+KIQYupYQEvEDmEVdyu7OfbPbzQaEYqtSwTb4Z3aV7s6b9445mzvm7XRm3oy7oanZ82ny5txzz++ec8+/S7jIiS5y/bEG4EJbcJkFpqenryqXy6cbKBUB+AeANIBuAG8AuAzAn06ePOkNDw+H9dZOTU11h2H4EwB7ALwL4FIA7wFw7O9aSxkAE9H9SqnHazGc50LGGFFQlGuW/pbNZq/aunXrYtICY8xmAD8C8HEAnUn8sf9/oLX+SiKAQqFweRRFvwewvgbzmwA+BOAkgEsAZAG85rpubseOHaVmlTHGfBTAYwA6gKU7WCaiOWaWPT9mv1eLO6S1/mYiAGPMddYtUtXMRPRVx3F+FkXRup07d/7FGDMEYExrHTSrfIVvfHx8Uy6XO22MWae1fu/IkSPpbdu2pRcWFmpakYgeVEo92gyAdQCKADI1HZL581rrp4lIfHPV6Pjx45cEQfCvBgL3a62/nwhgZmbm0lKp9OeYf56rMqmc9v4oikb6+/v/uhoIGigvAUGChdBBrfXhRAD5fL6XiCZsZDhHRAeY+VBVlIiYeTQMw725XG5uJSDqKc/M9xDR1wFsF/lEdKdS6ulEABMTExvS6fQMgCsBhPPz825nZ+dnieinANrjApj5mSAI7t61a9fC/+JSDZS/t62t7WgQBH+0IVoA7GsqjDIz+b4vCyXcnSuXy9fmcrkz+Xz+TgB3ENHeqlN43HXdB7dv3x60AqKR8p7nPXHixIn2YrEo7itRipn5057n/SrRAhbA320eEAGbtdbvyvfJycn16XR6BIBEnzg9PD8//63BwcGwGRBJylcEG2MkbEtUFAS3NgVAmI0xkl23Wt/bppR6rSK0UChcGUXRcwBUFYjDWuuDSffBHpBk82XEzPfKyVc+Wlf+HQDJGQLgDs/zjiZawJrudQBXAzirlNpIRMs2nJiY+HA6nRYQH4kJ7NZaS/htSBLlgiB4jJnFJZeoWnn7jYwxDxCRJK/LmXnI87yXEgHEzHs2m81urlce5PP5fiL6BYAPAmhrJZmNjo5murq6ngdwcy3lK0rKYc7Nze1n5gNE9Cml1HgiAGviguu6A0nlge/7N83Nzf12aGionHTy1f+Pjo5KdBuOu00tGZKpmfmHAJ5oygJjY2Nd3d3di0nKt6rwSvjFK6Iocnp7e/+ZaIGVbHSh1q51ZBfq5Cv7rllgzQIrPIGLwoUkqdVLqssASCKbnp6+ure3VyrSRGLmVHWpkbioRYbx8fErHMcZbKofsGMVKRHu01pLc1+XJMGUSqXPEdGTrZQSIlAycVdX1+FSqXRw9+7dUvXWJFE+k8lI53e71vrZphKZMeYPMvvJZDK3SfNea1GsZpoH8EWl1NFmLTE7O9u2sLDwNoANAA65rvtwrcw/NTV1TRiGp2w/8AXP836eCMAWWicAXENEvymXy/sGBgakvP4v1ajnzzDzl7TWzyX1A1KquK4r7hkf2xxQSn2vem2sHwijKLqlv7//xUQAtpyW6YBMJUJm3hNvJBo0I3XL3fim1kVfAHB9/Dsz3+95nkztlsgClYr1BgBRKpW6oa+v75VEAMJgjDkrNbj8jndCzXZSSXfU930l/bRtWyvsC+KKAEYq98kYIzy3W4abtNajiQCsBQTAByzzsNZ6ZLWUrygwOTl5YyqVEgXjriQjzVcdx9nb09Nz1vf9F5j5EzK5Y+ZBz/NeTgRw7Nixjra2NpkLycBW5jK3OY7zUq2hU6NmJMkK8r/v+3uYWXrsZdMOAM86jnN3EAS/BjAgjgDgy1rrHycCsBNkCZ9X2DtwIxGNVS9cqfLWPalQKNzFzN8GcK2dQCxtRUTSxPQx827L+13P876WCMA27W8BOG82Wlm8GsrHZNHIyEhqy5YtvwTwyXqWI6KHlFKPJAKwYVSiULVZl9aupvJxZexIU+J8TRBE9B2l1DcSAdjLKneg1nh9fzabfbRYLG4qlUpvd3R0bCqXy7tOnTr1VKOHjVqb2jC5j4gmwzAM0+l0OgzDVCqVkvGhuO8yYuZHPM97KBGA7/vXM/O0TBpqMMvo+x17waWGkhLgMrGK1vrJpCRWkRcrD+STvCvIXiJLhgNdddzoAa21vCmcR8uKOWPMRgBSPrRSpcpY8T6l1FNJ0UfeBTKZjNyxlqg60cUXL1PUupBsIO9XMkqX96v4mFvcS0Z+Mg86TUTtzCxvCh1E9BmllPxXk+zrzxQRzTBzJxG5zCzuIjJ32DG+WCOuk1hFqoKlfNSMBWSU5zDzFnEPInqLmSWpbZANARzRWr8jQHt6ev4tAuX34uLi+iiKiknjdskzlepzdna2s729PSgWi24YhuszmYxn99sYRdHSGx0RnUmlUqf7+vqO1zuYVlylJbO/X8xrAN6vk15zoQt90v+3FvgPXUePXrKTg9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFvklEQVRoQ+2ZaaiVVRSGn9fS0iabCNO0eSaosAmplKJRxMiygSQCixQipBKMoDRBon5EI/0pQ8JuRQTVj4omo+FH04/muVum2GCDWVYr3ss+8t3vfud8+3guXi6cBYc7nD2sd6+11/BuMcxFw1x/ugCG2oL9LBAR44HeFkr9B/wMbAOMBT4B9gC+BiZL+rfZ3Ijw+PuB6cA6YFdgAzAy/V41NQB/rpL0QNWAAS4UEVbQm+XKj8B4SX/VTYiIicC9wMnAjnXjC9/fKemaWgARsSfwEbBbxeDPgAOBL4AdgF2AD4ETJP2dq0xEHArcA4yGvjv4D/Br2vOo9P/ycosl3ZQD4IDkFiMqBl8LPASMkfRdREwFVknalKt8Y1xETJDUGxFea0NE2CX9aWbF+ZLuzgEwBlgPbNtEqYuAlZLsl4MmEWGL/t5iwQWS7sgB4Iv1TcE//yyZ1Ke9AOiR9MNgIGihvAOCrWJZKGlZDoCjgTdTZLDy1wGLS1HCkehF4DxJ9t0tlhbKXwbcAByRFp8taWUOgN2B94G9AZ/A9sD5wIPAdqUFngAuBTZuiUu1UH4O8DjwVQrR3nZuVhiNCEcFT3S4swX2k7QmImYDs3zqJRCOzfOBTe2AaKW8pOUR4cPy/tbH9+0cSc/mWMATfkp5wAtMlLQuAXNo7QEcfYqyBLjZFssBUad8IVI5bDsqWs7OAuCREeHselCaeLgkx/o+iQi71lPAsSUQyyQtrLsM6SB8h8oyxydf2Meu/CrgnGGZJcluNUDKpYRN9zEwCVgLjJPUb8OIODiBOKSw2lhJDr8tJSIc5ZzE7JIN6ad8OijrNQ9w8nJynSrppRwAjXhs5e0+lYklIo4DHgP2AUa1k8wiwjnmGeB0YIDyBSv4MB2yHQnPkvRGDgAjfxs4vq48iIhpwCuSXAq0JRHh6HZB0W2qFnCmBu4CludaYCen8zrl29K2w8Hp0o+U9EutBTrca0imdzuyITn2wqZdC3Qt0OEJDAsXcnHXLKmWSwn/PUmSK9JaiYgR5VKjdlKbAyJiL+DU3H7AtIpLhMslublvKinBXAg83E4pkWodZ2J3WO60XPVWSlLend9MSU9mJbKI+DxxPzPcvDdJ8Y2a6TfgCjcguZaIiFHA94ArTnd7S6oyf0TsC3yZ+oFLJD1SCyAVWp8Cnvxy6oRcXm+Winp+DXClK9S6fiAiXKrYPYu0jYu128tzI6LRD7gzPFPS8zkAXAGaHXDF6InTi41Ei2akablbAm8XfQ44rKSMmTezdn2SgLpinQK4nJ8i6fVaAGmyS2nX4JbNnVBuJ1V3RyPCzZD7abetDdmYXNFsRx/PFBEeMzMNmCbJRMIAqWpoDGDnNNIlb89gKV844VMSiKIrmdL8ILEdayPCljotMXeOQq/lADDdZ17IhK1daAbgTqiKdGrajNRZIZ2wSV732GW2w9HGbMcL7kvSJb5a0n05AEzqOnw69hqAT2pVxcSOlE8AbP2LgVvMfiQGorGVm5hjgJPSP26TdH0OADft3wJV3GhjfsfKF1zJILzX08AZLSy3SNLSHACOPnaXslkHXfmiMqnZd5xvBuJWSTfmAHCC8h2ootfdYJshnpASkX+eCKxo9bBRtWkKk3OBt5KrmgO1JUwf2n3LslTSohwAjs/vmmmoGGyGYnW64Da9SwBfdlOBLieyGOtCeeAt/K7gvbyWyQEnuiqZJ8l0zAAph9FxgMuHdqpUx23XTivqoo/fBdIdqxta/r5foit+WQZgF/IlNgFlxfx+VaS57V5O8eaD/Jbmu2Lqw+H3XEn+rlLS6887iTz285ILOruL1zwyrWFrFHWyVXwv+/JRjgVM5Vnp/ZN7GIyTmgsvb/iopNVObJL+8IIpyfnOrK+j2yNidKP6jAiD8CF5Xc+fnA7PXtB4o3Od1SvpvWYH046rtGv2rTK+C2CrHHOLTboW6FqgwxP4Hz4mJ0+J869tAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAKYklEQVRoQ+1Z+3NV1Rld397nXJIbIGBARTQgohGNQZJLEtFSMmpfan10aJ1OZzqd/jOd/g3t9AetD2KLCiigNFUgj/tIQoh1SqBRwVqNYgp53XvP2V9nped0Lpebl/LQmZ4ZZpjkZJ+99voe61tb8C1/5Fu+f/wfwPVm8DIG+vv7H1bVWufcp9baUefcWCqVKi5lo11dXV5NTc06EblPRNoAtABYqapD1tq9zrmelpaWaRHRpaxb6d3LAGSz2d+IyAbn3FljTG+xWEy3t7efW+yHuru7q621t3med7+qPgigGcCdAPIAuowxzyUSiaONjY2Fxa4533uVABwEsA3ARQDHAez1fb9769atn823kKrKyZMnVxUKhdtFJKWq3wWQAnAzgBoAH6vqQWvtH8nAUlmd69uXAcjlci+q6sMA1gL4BMB+Vd2fSCR6K4HYs2eP3bRp0zJjDN/f7Jzjphk2PPkN0YcDACOqekhVO5PJZPZqMvBLAI8BeATAagBnARwRkT97ntdXDmJ4eHj59PT0emPMVufcA9y8iNwBoA6AjQCEAE5dEwDpdPo2EXlQRJ4G8B0A6yImDqjqvnImstnsOlVtFZHvA9gJ4C4AfhnlLAJnABxW1T3V1dWZq8aAqppMJrM+AvE4gB8CuKGUCd/3jzU1NX3JuB8cHNwchuGjBKyq7QCWV4jXawcg/ng6nb7ZWrtTVX8C4CEAtxCEiLzBZAzD8ERNTc1YoVBY6ZxjtXkyYoDvxaETL3ftAfDLvb29t1prufnHohBZQxCqmmVJVNVjQRB8VF1dXeece0hVfxAlcD1wSZe/dgCy2Wy97/sz1topAIWpqambRKTDGPOsqu4AUAvgPICMiBxU1SMzMzMfJJPJG1SVYB+P6n8pE6xCpxebA8PDw4mJiYkqHqLnedPzldxKZfRXqvqliJwtFosjXEBVG0Xkp9wcgMYoLr4EMAjgDRE5PD09PVpTU1MXhiHrP6sY8+G2kjIaJ/HLCyXxiRMnbiwWi7cqk0zkbCqV+nzRfSCbzXay6ojISQDHVq5c+Y+JiYl1zrmnnHNPiwjre5yoFwAwnN6MQfi+v8bzvF0EoaqsYgw7wyokIm86515aCEAul9vinNtujHFBEKTb2tpOLQXApwA+EJHjzrnX8/l8jicbBAE3z4S+P+qs8ZrjERMHABxiOFVVVd2oqruMMT9WVTY2gjgXFYCXAfTNFxa5XI7sMRT57Nu+fXt6KQAosNj2uwB0iki3tXZ1GIbPAOA/hlCybMF/A8gxnBjnQRB86Ps+QbAZMrG3RlqIDfGlCxcu9OzatcsNDg5S4NWqqm+tpbgbb2pqmh4YGHjIOfczfoPvt7S0HF0qgDEROaKqPK1jUeKyzj8jIk1lDJQzsb8ExHrn3E4RmZUmqsqceWV0dLS3oaGhKp/P3yMid3N9Y8xnVKuFQoHgm0WEADwRefGrAPhYRP5CBoIg6BaRWmstw4EMUOhValYEEjNxwDl3yPf9j4MguMkYs9M5x80yPA9fvHhxqKamZo21ltKd+ULBNyoiB/L5fMbzvDuMMVQCy5xzf2ptbe1eKgPUP7MACoVCj+d5q4wxTwCIc2DFPMqUOdEP4HWWWM/zzhWLRXb2LSISOOeGkskkf7YhyitulKLvfRF5XkQOOeduFpEnVLVaRF5taWnpXSqAD6NG1VksFnuXCIDfIog0O7Yx5kgYhp8ZYyipYa39Ynx8fKa2trbBOccDeRbA7QCGVfX3IkLgdSLCUsxcey2VSvVdawD8XtwnWJ2YR2dqa2svnjt3jsrUiwAwJH8OYBMBAPgdN/xNAVCaE2855w4mk8m/UYVGM8RG6iwRoXznxDYLwDm3T0TWiAibZlJEXrseIVTKeJwTrzKcEonEaYIYGhpanc/nycCvRaRRVf8uIn+IBiiG0DcGAMF8QW3IzYVheKitrW2UP0yn048YY34BoDV655UwDF83xqyKc4A5cb0ZiNn4XFXfBfCC53lHtm3bNp7NZjm5dQCgHE+q6lFjzEHn3IqIgerrmcSVCgfdjTe5Kd/3M9PT0zO+76+PbBdK8DOq2kPpEZXRqq+aAx+xjLIPhGHYW9LIWPYoC+brA/O0CLhosnuHGkdV+4wxDC+OpRxlLyQSidGZmZnN1tonnXMJ+kjNzc0EVfGpZKtQC/2LjYzzK0VdJCWeiqrGffN04rm+w3mAQ00imtZo0bxFJpxzRycnJ8fr6uqqwzBU3/enpqamUiKyW0SoYjtTqRTL8JIA0E75K4A9xpjjFFwAqIXIAAGUi7n5Tp2/m4yaG4f9G6OXeUizboeI9J4+ffrT3bt3kyFkMpkHjDEssRKG4StLlRKcxCglqAD3MoRokVhr2fJ3A6CYK3cdFgLAuYGHwpLqAWDcU/9QwB02xuwLw/Dd1tZWgmJ1utcY8wgNBpbelpaWoaUwMCAiH3Hudc4dcc4Ne55H04oDCk+ldKBZaOPx78kAxdowLUsRIQBWn1nLRkTeJtu+7x+n28GJrFAo3Gmttc65kVQqRfCLC6FMJvPbSDWeofCanJz854oVK2hwcd79UVTyKL4Yz4t9ZiJfiALxqIgkVPVRAN8r8Z32s+aLSF8ikaCqTUxOTi6bmpqa7Ojo4N8vDkB/fz/dNYbRuLX2cw4YuVyuyhhzZxiG7SLCmZdT2UYArNOLeWjkciamOfaqqn5ijGmKGOXAE7sdbxtj9pY6gP8di+d2sS+rQl1dXVVr1651Y2NjrqOjg9UDXKSnp2d1IpHgpptVdbuI0DKnilwVzbzzAZm1VTgTR0NSfxAEN/i+z1mA1S2eCRgqByImepubm8cWOp1F39Awod57771ksVjkgH+3qpIpzrtbANy0QGLPAqC85ogYy2P6Tr7vP6iqnDViB5DNjjlBWdHb1tbGPjHns2gA8QpUkhs3blxrjOHGyQJ1zD2RhcIGV2nNS4ytVCrVIyKzJTM2zyIvlt4qq9MsE5W82HIkSwYQh1Qul1sJoF5EtkbOA9mgLGbFKl/3EgATExN9peHZ19e3ng5gpH8uYWIuVzwG8pUAxH+czWbpJqwPw/DeyMjaDoD/Z7MqrVIEMOvMOef2VLofKGMidsU5Qx+iig2CoGf58uXjjY2NE6UsfC0AXIgh1dDQQEeOecEEZ25QL3HKihveggCYY319fbdUYIJ9gobYc6p6prW1lU32f8/XBhCvxAGF10uqui262GNusGpRhvDhnM24fkFE0nMZW2TC8zzmAjs/c4ylukdVOa29H88SVySEyhMqm81yBKSpu4VMiMgOVaX0YCOcva4yxjw/3x0ZmcjlcrxnI5Ps+mtUdYTgwzD8sLwqXTEGSqtUfX09PR/aKIxldvAGOt0A3nHOvRwEwfEdO3ZMz1UbR0ZGlp0/f/4WEam31vL+4by19hQ7dPnNzhUHEG9qYGBgVRAEd0UNj2YYWThjjHmrUChk2tvbKfDmfHjX7Pt+te/7nAnYUKcqhd1VA8Dkrq+vXxcxQdnAewbOAb1BEAwtBCAq16azs3N2j5TalSTFVQMw3+leyd996wH8BxA4v3x6wGifAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHsUlEQVRoQ+2Z969VVRCFv7H33nvvvfcSe2+xxJgY4z9j/Bs0/mABFQXBhl1sgNjQSCyoiL2BDaxs873MJsfDuZd7gfeQxJ3cvAfv3HP22rNmzZo5wRq+Yg3fP/8DWN0RXCYCpZSzgM2Br4GPgW8j4s9hNlpKWQfYETgUOB44GtgMmA1MBF4BFkdEGea+Xdd2AbgF2B2YD0wHZkbEZ4M+qJSyIbArcARwMnAUsC/wO/AscCfwQkT8Meg9+13XBeBx4EjgZ+ClPLGXI+KbfjcqpXivLYA9gWOA0/PnDsDGwOeA977bCAwb1V7P7gIwDpBG2wJfAg/nZ3oXiFLK2sD6ef0+uWlp48kbSddfwAfAVOB+YNZoRuBG4CLgbGDLpNLTwIPAjDaIUsomwM7A4cCJyfm9ga0Bwbn+Bt4fKwDyV+5eAZyayWgkHgGmmBdNEKUUk/U44DzgNGA/YN1WyBWBucATwH3Aq6MZgbXyRAVxMXABsFUrEi9GxILkvbQ5JwGfABiR9ho7APXJpRSTzxO9CjgF2ClBPJrJ+JYSm/Io2Mvyeq+r1Km3G3sAPrmUsktu3pyQItskiFkpiS8CnybfBXl+5sBu8K8qP3YASik+/DdgEaBWbw+cCVwHnJRF7gd5nJEwwT9JmglC2hmRZiRUoQ8HzYFSynrABhk+C17PQtolozcBC/Kklb7FwCHANbk5f3d5zZuAlDI5rdoqj/pvxMwHBaHKaE3ie5eXxKWU7QCjb6WeHxHfDVMH1GlV521AinyUSnR5Jqr6XhP1JzUdeKwBQpqdkSBUMf+tMAjA68YPAOBA4FhgSToBJbhzdUVADyQlrMKTgdfyZJVVE1qLYGWta2FGQpm1UPldT1AQl2ZhE4R2xGgZAetJT1qUUoyeVDQCUyJi5jAA/JJlX99iNF7OgnYl4EcKbdS64Y8JtNJpXoKwGJrYFjm9kPliBDRznq4GT+No3ZCqHoY/zaVr8xnjI+KFYQEojz7M05JGPsQICOCwVgTakdB6mBOCsEIrxdWamDMT0iSapAcBB+T99Vq6Vb8nTQWgqx23IgCMwDONCAhAOghAo9dVrARSI1Hp5H1UMUG4WekpODcqrQQm1aw5ioDfU920Ih6YHuuBiJAFA+fASOY3ABhuXeYljRzYtNcNkwavZ/4YRblvJExM5dTN+38aPTfpx9/nAHdlHgnI52nNJ0WEtn4oAIax5oBfHgaAD5LLJp72WRDSoyb+91ln9s8Dsb5owd8Bbk/gyrFSbK49FBEzxhpAs05IC/NIGbXH0JnKbQFIyeuBvRLAbW44VW+1A2jmxJMZjXd1odlD7JER0L7bsRkBAeh4zQ9ltEZgzCnUjLh0MicmJZ0+TBD2Gkbg5pTm94A7snmSQv8ZAIKR956iEjs1IlQczaJ14obsJ7xGibV4mnOVQpNXRxJ35Zx+Zhpwj5GIiIWlFOVSo6j5ky4WLBNflTMCqtBqS+IuEMqnfshEVe91vUqsYxddsImubJsDyqjFTgBD54AevymjtZDphbQF/epAnxIxYh+sMc9nsiqPUse2VOeqOZRednk2SNrqiREhqKHqwFdZyOxfNXUC0I0KwGFVr0rc6zkWMM2bG7Jbsy6oTEZC2pjo0sUiah/iWObqdLH3R4QyPBQA7fRz2YBXANWNCqBt5vqdun/7NTepadOpujykOu2QItoMI+RyuuFh6ZYnDGslPAHD7Mk4BvTmypoAPBXNXHvqsDwAUsND8aQtYvJeu2Ak9EZq/7SIEJTqdHCOdewjTHjtx8AReCP7XBsVT8gC45BLWfNUmg3N8jZe/24E5Lb38nAEoPrIfYE9VaOd0w6jZHGTbh9EhNcMDODWDKeKIPIvsh/Qo1+Ykqf5ks+DLtXG++lwjazfdRRzbgOENcIaYGLrar1GN/prRPj9gQHIP2lkuNVuGwzlzBOxU7LntSvTCph4gyyHAwLQF1mRPVGpaERteOq0w0hI26UTQGdP/abYXS2lmzWZlkSE6iEnvc7S76alkP2q2q2LtGrK1X6rjlWsATZJWguHZfYCqlvtCeoE0Eg4AbSx6rsGfkNTSnGTqo+8tYsyUsqdPt+mpV9iVwBWWVvEEXuccyersEWrTgAtdkZipHOLCOtEzzUwgHqHdJImtRs3Cs5F7bYsRBa4rnu2B1uO10ckszE8U+Xs3FSnnrPYNpKhATQoZUNu+bcyGwk/5ong2vdtA5DjTXqqSnUo1o5E51S8AlkhAI1oSBsfrm6b4OaGvyuDTZUSQHMyt8z7gVYk6lTc4uaoRoXSTiyMiF+aUVgpABkNtdpCZ16Y4OaGUbHLqnkxCABzzHFkOxLSyeT31dTciLCOLF0rDaARDVVKVXJq4Rsac0PV0ke57LOVUe207906B1sZCXPBnDDHlGpP325tTu0lVgmF2glVSlGlPEUT3Eg4DFbvBVdfVzl56PmOLNXOg/D7RtQa4YxW8PPaqrTKItBSKR8qCLksJWzgLWbaaOvASxFhgexcpRQrsAehSCgWTsOdj/7YfrOzygE0gFjgfN0kDaSVUbAaa6N9xaTB67nyXbP0UQxUrEVdtBtNACa3Rc9ISCOLne5Tdzt7eQBSIEzsukedwTIvxkcNQL/TXZV/W+MB/AMANfVPjBGemwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}');class dt{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,o=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`

          `:""}\n
          \n ${at.loading}\n ${i.loadingText?`
          ${i.loadingText}
          `:""}\n
          \n ${i.hasControl&&o.play?'
          ':""}\n ${i.hasControl?`\n
          \n
          \n
          00:00:01
          \n
          ${at.recordStop}
          \n
          \n `:""}\n ${i.hasControl?`\n
          \n
          \n
          \n ${i.showBandwidth?'
          ':""}\n
          \n
          \n ${o.audio?`\n
          \n ${at.audio}\n ${at.mute}\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n `:""}\n ${o.play?`
          ${at.play}
          ${at.pause}
          `:""}\n ${o.screenshot?`
          ${at.screenshot}
          `:""}\n ${o.record?`
          ${at.record}
          ${at.recordStop}
          `:""}\n ${o.fullscreen?`
          ${at.fullscreen}
          ${at.fullscreenExit}
          `:""}\n
          \n
          \n
          \n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),nt(e,this),((e,t)=>{const{events:{proxy:i},debug:o}=e;function r(e){const{bottom:i,height:o}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return ye(i-e.y-r/2,0,o-r/2)/(o-r)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),ve(t.$volumeOn,"display","none"),ve(t.$volumeOff,"display","block");const o=e.volume;e.volume=0,e._lastVolume=o})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),ve(t.$volumeOn,"display","block"),ve(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=r(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=r(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(ve(t.$controls,"display","block"),r())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(ve(t.$controls,"display","block"),r()))})),i(e.$container,"mouseout",(()=>{s(),ve(t.$controls,"display","none")}));let o=null;const r=()=>{s(),o=setTimeout((()=>{ve(t.$controls,"display","none")}),5e3)},s=()=>{o&&(clearTimeout(o),o=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,o={};function r(e,t){o[e]?o[e].push(t):o[e]=[t]}r(te,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(ie,(()=>{e.volume+=.05})),r(oe,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=o[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){if(this.$poster){if(!Ie(this.$poster)){const e=this.player.$container.querySelector(".jessibuca-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Ie(this.$loading)){const e=this.player.$container.querySelector(".jessibuca-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Ie(this.$controls)){const e=this.player.$container.querySelector(".jessibuca-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Ie(this.$recording)){const e=this.player.$container.querySelector(".jessibuca-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Ie(this.$playBig)){const e=this.player.$container.querySelector(".jessibuca-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,o=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(o>r){const o=(t-i*r)/2;e.$container.style.padding=`0 ${o}px`}else{const o=(i-t/r)/2;e.$container.style.padding=`${o}px 0`}}}At(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class ct{static init(){ct.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};for(let e in ct.types)ct.types.hasOwnProperty(e)&&(ct.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=ct.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,o=Array.prototype.slice.call(arguments,1),r=o.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return ct.box(ct.types.trak,ct.tkhd(e),ct.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,o=e.presentWidth,r=e.presentHeight;return ct.box(ct.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,o>>>8&255,255&o,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return ct.box(ct.types.mdia,ct.mdhd(e),ct.hdlr(e),ct.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return ct.box(ct.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?ct.constants.HDLR_AUDIO:ct.constants.HDLR_VIDEO,ct.box(ct.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?ct.box(ct.types.smhd,ct.constants.SMHD):ct.box(ct.types.vmhd,ct.constants.VMHD),ct.box(ct.types.minf,t,ct.dinf(),ct.stbl(e))}static dinf(){return ct.box(ct.types.dinf,ct.box(ct.types.dref,ct.constants.DREF))}static stbl(e){return ct.box(ct.types.stbl,ct.stsd(e),ct.box(ct.types.stts,ct.constants.STTS),ct.box(ct.types.stsc,ct.constants.STSC),ct.box(ct.types.stsz,ct.constants.STSZ),ct.box(ct.types.stco,ct.constants.STCO))}static stsd(e){return"audio"===e.type?ct.box(ct.types.stsd,ct.constants.STSD_PREFIX,ct.mp4a(e)):"avc"===e.videoType?ct.box(ct.types.stsd,ct.constants.STSD_PREFIX,ct.avc1(e)):ct.box(ct.types.stsd,ct.constants.STSD_PREFIX,ct.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return ct.box(ct.types.mp4a,o,ct.esds(e))}static esds(e){let t=e.config||[],i=t.length,o=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return ct.box(ct.types.esds,o)}static avc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ct.box(ct.types.avc1,r,ct.box(ct.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ct.box(ct.types.hvc1,r,ct.box(ct.types.hvcC,t))}static mvex(e){return ct.box(ct.types.mvex,ct.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return ct.box(ct.types.trex,i)}static moof(e,t){return ct.box(ct.types.moof,ct.mfhd(e.sequenceNumber),ct.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return ct.box(ct.types.mfhd,t)}static traf(e,t){let i=e.id,o=ct.box(ct.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=ct.box(ct.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=ct.sdtp(e),a=ct.trun(e,s.byteLength+16+16+8+16+8+8);return ct.box(ct.types.traf,o,r,a,s)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,ct.box(ct.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let o=e.duration,r=e.size,s=e.flags,a=e.cts;return i.set([o>>>24&255,o>>>16&255,o>>>8&255,255&o,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),ct.box(ct.types.trun,i)}static mdat(e){return ct.box(ct.types.mdat,e)}}ct.init();class lt extends De{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(x.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(x.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===_}get isStateClosed(){return this.state===$}get isStateEnded(){return this.state===K}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,o){const r=this.player;if(r)if(this.hasInit){if(i&&0===e[1]){let t=ot(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const r=t-this.firstRenderTime;this._decodeVideo(e,r,i,o)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const o=15&e[0];if(r.video.updateVideoInfo({encTypeCode:o}),o===Q)return void this.emit(j.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=be()),this._decodeConfigurationRecord(e,t,i,o),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,o){let r=e.slice(5),s={};s=ot(r);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=ct.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,o){const r=this.player;let s=e.slice(5),a=s.byteLength;const n=r.video.$videoElement,A=r._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(ct.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let o=ct.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(o.byteLength+i.byteLength);s.set(o,0),s.set(i,o.byteLength),this.appendBuffer(s.buffer),r.handleRender(),r.updateStats({fps:!0,ts:t,buf:r.demux&&r.demux.delay||0}),r._times.videoStart||(r._times.videoStart=be(),r.handlePlayToRenderTimes())}else r.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=o,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(r.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(r.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),r.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),r.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(Z),i(this.sourceBuffer,"error",(e=>{this.player.emit(x.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(j.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(j.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(x.mseSourceBufferError,e))}else this.isStateClosed?this.player.emitError(j.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emitError(j.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(x.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}}const ut=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,ht=()=>"wakeLock"in navigator;class pt{constructor(e){if(this.player=e,this.enabled=!1,ht()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else ut()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var o=document.createElement("source");o.src=i,o.type=`video/${t}`,e.appendChild(o)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(ht())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(ut())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;ht()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):ut()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class mt extends De{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},l,t),this.debug=new he(this),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(Z)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new pe(this),this.video=new Je(this),this._opt.hasAudio&&(this.audio=new Ge(this)),this.recorder=new qe(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new Ze(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new rt(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new lt(this),this.loaded=!0),this.control=new dt(this),Be()&&(this.keepScreenOn=new pt(this)),(e=>{try{const t=t=>{Te(t)===e.$container&&(e.emit(D.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};me.on("change",t),e.events.destroys.push((()=>{me.off("change",t)}))}catch(e){}if(e.on(x.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(x.play,(()=>{e.loading=!1})),e.on(x.fullscreen,(t=>{if(t)try{me.request(e.$container).then((()=>{})).catch((t=>{Be()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){Be()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{me.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),Be()&&e.on(x.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(D.fullscreen,e.fullscreen)})),e.on(x.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[x.timeUpdate];Object.keys(x).forEach((i=>{e.on(x[i],(o=>{t.includes(i)||e.debug.log("player events",x[i],o)}))})),Object.keys(j).forEach((t=>{e.on(j[t],(i=>{e.debug.log("player event error",j[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:o}}=e;t.supportDblclickFullscreen&&o(e.$container,"dblclick",(t=>{const i=Te(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),o(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),o(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen"),this.debug.log("Player options",this._opt)}destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Be()&&this._opt.useWebFullScreen?(this.emit(x.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(x.fullscreen,e)}get fullscreen(){return me.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(x.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(x.playing,e),this.emit(x.volumechange,this.volume),e?this.emit(x.play):this.emit(x.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(x.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(x.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new ze(this)),this.audio||this._opt.hasAudio&&(this.audio=new Ge(this)),this.demux||(this.demux=new et(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new rt(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new lt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new Ze(this),this.once(x.decoderWorkerInit,(()=>{e()})))}))}play(e,t){return new Promise(((i,o)=>{if(!e&&!this._opt.url)return o();this.loading=!0,this.playing=!1,this._times.playInitStart=be(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=be(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(j.webcodecsH265NotSupport,(()=>{this.emit(j.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(x.error,j.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(j.mediaSourceH265NotSupport,(()=>{this.emit(j.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(x.error,j.mediaSourceH265NotSupport)})),this.mseDecoder.once(j.mediaSourceFull,(()=>{this.emitError(j.mediaSourceFull)})),this.mseDecoder.once(j.mediaSourceAppendBufferError,(()=>{this.emitError(j.mediaSourceAppendBufferError)})),this.mseDecoder.once(j.mediaSourceBufferListLarge,(()=>{this.emitError(j.mediaSourceBufferListLarge)})),this.mseDecoder.once(j.mediaSourceAppendBufferEndTimeout,(()=>{this.emitError(j.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(j.fetchError,(e=>{o(e)})),this.stream.once(j.websocketError,(e=>{o(e)})),this.stream.once(x.streamEnd,(()=>{o()})),this.stream.once(x.streamSuccess,(()=>{i(),this._times.streamResponse=be(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{o(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(x.timeout,x.delayTimeout),this.emit(x.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(x.timeout,x.loadingTimeout),this.emit(x.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(x.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=be()),ke(e.ts)&&(this._stats.ts=e.ts),ke(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=be();t-this._startBpsTime<1e3||(this.emit(x.stats,this._stats),this.emit(x.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(x.playToRenderTimes,e)}getOption(){return this._opt}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(x.error,e,t),this.emit(e,t)}}class gt extends De{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);i.classList.add("jessibuca-container"),delete t.container,t.forceNoOffscreen=!0,Be()&&(t.controlAutoHide=!1),ke(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),ke(t.timeout)&&(Re(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Re(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.events=new pe(this),this.debug=new he(this),this._initPlayer(i,t)}destroy(){this.events&&(this.events.destroy(),this.events=null),this.player&&(this.player.destroy(),this.player=null),this.$container=null,this._opt=null,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.off()}_initPlayer(e,t){this.player=new mt(e,t),this.debug.log("jessibuca","_initPlayer",this.player.getOption()),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(D).forEach((e=>{this.player.on(D[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case P:t.isFullResize=!1,t.isResize=!1;break;case G:t.isFullResize=!1,t.isResize=!0;break;case N:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return new Promise(((e,t)=>{this.player?this.player.pause().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}close(){return this._opt.url="",this._opt.playOptions={},this.player.close()}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,o)=>{if(!e&&!this._opt.url)return this.emit(x.error,j.playError),void o("play url is empty");e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{o(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),o(e)}))})).catch((e=>{this.debug.warn("jessibuca","this._opt.url is null and pause error",e),o(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),o(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{o(e)}))}))}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,o)=>{this._opt.url=e,this._opt.playOptions=t;const r=0===e.indexOf("http"),d=r?a:s,c=r||-1!==e.indexOf(".flv")||this._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(j.webglAlignmentError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(j.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")})))}))})),this.player.once(j.mediaSourceFull,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(j.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(j.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(j.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(j.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [mse-> wasm] reset player and play error")})))}))})),this.player.once(j.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(j.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(j.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs decode error reset player and play error")})))}))})),this.player.once(j.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay&&this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))}))})),this.player.on(x.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(x.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","hasLoaded and play error",e),this.player&&this.player.pause().then((()=>{o(e)}))})):this.player.once(x.decoderWorkerInit,(()=>{this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player&&this.player.pause().then((()=>{o(e)}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,o){return this.player.video?this.player.video.screenshot(e,t,i,o):""}startRecord(e,t){return new Promise(((i,o)=>{this.player.playing?(this.player.startRecord(e,t),i()):o()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}}return r(gt,"ERROR",j),r(gt,"TIMEOUT",{loadingTimeout:x.loadingTimeout,delayTimeout:x.delayTimeout}),window.Jessibuca=gt,gt})); diff --git a/cn-universal-web-ui/public/js/lib/axios.min.js b/cn-universal-web-ui/public/js/lib/axios.min.js new file mode 100644 index 0000000000000000000000000000000000000000..0f36816306f07eba8019399ae80b910c396dd838 --- /dev/null +++ b/cn-universal-web-ui/public/js/lib/axios.min.js @@ -0,0 +1,9 @@ +/* axios v0.19.0 | (c) 2019 by Matt Zabriskie */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new i(e),n=s(i.prototype.request,t);return o.extend(n,i.prototype,t),o.extend(n,t),n}var o=n(2),s=n(3),i=n(5),a=n(22),u=n(11),c=r(u);c.Axios=i,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(10),c.all=function(e){return Promise.all(e)},c.spread=n(25),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===j.call(e)}function o(e){return"[object ArrayBuffer]"===j.call(e)}function s(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function c(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function p(e){return"[object Date]"===j.call(e)}function d(e){return"[object File]"===j.call(e)}function l(e){return"[object Blob]"===j.call(e)}function h(e){return"[object Function]"===j.call(e)}function m(e){return f(e)&&h(e.pipe)}function y(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function g(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function x(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function v(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n + * @license MIT + */ +e.exports=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(6),i=n(7),a=n(8),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method=e.method?e.method.toLowerCase():"get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(9),i=n(10),a=n(11),u=n(20),c=n(21);e.exports=function(e){r(e),e.baseURL&&!u(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)?e=n(13):"undefined"!=typeof XMLHttpRequest&&(e=n(13)),e}var s=n(2),i=n(12),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(14),s=n(6),i=n(17),a=n(18),u=n(15);e.exports=function(e){return new Promise(function(t,c){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var l=e.auth.username||"",h=e.auth.password||"";p.Authorization="Basic "+btoa(l+":"+h)}if(d.open(e.method.toUpperCase(),s(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?i(d.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?d.response:d.responseText,s={data:r,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,c,s),d=null}},d.onabort=function(){d&&(c(u("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){c(u("Network Error",e,null,d)),d=null},d.ontimeout=function(){c(u("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var m=n(19),y=(e.withCredentials||a(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(p[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),c(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";var r=n(16);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){t=t||{};var n={};return r.forEach(["url","method","params","data"],function(e){"undefined"!=typeof t[e]&&(n[e]=t[e])}),r.forEach(["headers","auth","proxy"],function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!=typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!=typeof e[o]&&(n[o]=e[o])}),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(r){"undefined"!=typeof t[r]?n[r]=t[r]:"undefined"!=typeof e[r]&&(n[r]=e[r])}),n}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])}); +//# sourceMappingURL=axios.min.map \ No newline at end of file diff --git a/cn-universal-web-ui/public/js/lib/vue-router.min.js b/cn-universal-web-ui/public/js/lib/vue-router.min.js new file mode 100644 index 0000000000000000000000000000000000000000..b94a0856cc4b2d0a3d5a525c1fd07325b38886c9 --- /dev/null +++ b/cn-universal-web-ui/public/js/lib/vue-router.min.js @@ -0,0 +1,6 @@ +/*! + * vue-router v3.1.3 + * (c) 2019 Evan You + * @license MIT + */ +var t,e;t=this,e=function(){"use strict";function t(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function e(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function r(t,e){for(var r in e)t[r]=e[r];return t}var n={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,o=e.children,i=e.parent,a=e.data;a.routerView=!0;for(var c=i.$createElement,u=n.name,s=i.$route,p=i._routerViewCache||(i._routerViewCache={}),f=0,h=!1;i&&i._routerRoot!==i;){var l=i.$vnode&&i.$vnode.data;l&&(l.routerView&&f++,l.keepAlive&&i._inactive&&(h=!0)),i=i.$parent}if(a.routerViewDepth=f,h)return c(p[u],a,o);var d=s.matched[f];if(!d)return p[u]=null,c();var v=p[u]=d.components[u];a.registerRouteInstance=function(t,e){var r=d.instances[u];(e&&r!==t||!e&&r===t)&&(d.instances[u]=e)},(a.hook||(a.hook={})).prepatch=function(t,e){d.instances[u]=e.componentInstance},a.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==d.instances[u]&&(d.instances[u]=t.componentInstance)};var y=a.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0}}(s,d.props&&d.props[u]);if(y){y=a.props=r({},y);var m=a.attrs=a.attrs||{};for(var g in y)v.props&&g in v.props||(m[g]=y[g],delete y[g])}return c(v,a,o)}},o=/[!'()*]/g,i=function(t){return"%"+t.charCodeAt(0).toString(16)},a=/%2C/g,c=function(t){return encodeURIComponent(t).replace(o,i).replace(a,",")},u=decodeURIComponent;function s(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var r=t.replace(/\+/g," ").split("="),n=u(r.shift()),o=r.length>0?u(r.join("=")):null;void 0===e[n]?e[n]=o:Array.isArray(e[n])?e[n].push(o):e[n]=[e[n],o]}),e):e}function p(t){var e=t?Object.keys(t).map(function(e){var r=t[e];if(void 0===r)return"";if(null===r)return c(e);if(Array.isArray(r)){var n=[];return r.forEach(function(t){void 0!==t&&(null===t?n.push(c(e)):n.push(c(e)+"="+c(t)))}),n.join("&")}return c(e)+"="+c(r)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}var f=/\/?$/;function h(t,e,r,n){var o=n&&n.options.stringifyQuery,i=e.query||{};try{i=l(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:y(e,o),matched:t?v(t):[]};return r&&(a.redirectedFrom=y(r,o)),Object.freeze(a)}function l(t){if(Array.isArray(t))return t.map(l);if(t&&"object"==typeof t){var e={};for(var r in t)e[r]=l(t[r]);return e}return t}var d=h(null,{path:"/"});function v(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function y(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var o=t.hash;return void 0===o&&(o=""),(r||"/")+(e||p)(n)+o}function m(t,e){return e===d?t===e:!!e&&(t.path&&e.path?t.path.replace(f,"")===e.path.replace(f,"")&&t.hash===e.hash&&g(t.query,e.query):!(!t.name||!e.name)&&t.name===e.name&&t.hash===e.hash&&g(t.query,e.query)&&g(t.params,e.params))}function g(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t),n=Object.keys(e);return r.length===n.length&&r.every(function(r){var n=t[r],o=e[r];return"object"==typeof n&&"object"==typeof o?g(n,o):String(n)===String(o)})}function b(t,e,r){var n=t.charAt(0);if("/"===n)return t;if("?"===n||"#"===n)return e+t;var o=e.split("/");r&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}(i.path||""),p=e&&e.path||"/",f=u.path?b(u.path,p,n||i.append):p,h=function(t,e,r){void 0===e&&(e={});var n,o=r||s;try{n=o(t||"")}catch(t){n={}}for(var i in e)n[i]=e[i];return n}(u.query,i.query,o&&o.options.parseQuery),l=i.hash||u.hash;return l&&"#"!==l.charAt(0)&&(l="#"+l),{_normalized:!0,path:f,query:h,hash:l}}var B,H=[String,Object],z=[String,Array],D=function(){},F={name:"RouterLink",props:{to:{type:H,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:z,default:"click"}},render:function(t){var e=this,n=this.$router,o=this.$route,i=n.resolve(this.to,o,this.append),a=i.location,c=i.route,u=i.href,s={},p=n.options.linkActiveClass,l=n.options.linkExactActiveClass,d=null==p?"router-link-active":p,v=null==l?"router-link-exact-active":l,y=null==this.activeClass?d:this.activeClass,g=null==this.exactActiveClass?v:this.exactActiveClass,b=c.redirectedFrom?h(null,V(c.redirectedFrom),null,n):c;s[g]=m(o,b),s[y]=this.exact?s[g]:function(t,e){return 0===t.path.replace(f,"/").indexOf(e.path.replace(f,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var r in e)if(!(r in t))return!1;return!0}(t.query,e.query)}(o,b);var w=function(t){N(t)&&(e.replace?n.replace(a,D):n.push(a,D))},x={click:N};Array.isArray(this.event)?this.event.forEach(function(t){x[t]=w}):x[this.event]=w;var k={class:s},R=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:c,navigate:w,isActive:s[y],isExactActive:s[g]});if(R){if(1===R.length)return R[0];if(R.length>1||!R.length)return 0===R.length?t():t("span",{},R)}if("a"===this.tag)k.on=x,k.attrs={href:u};else{var E=function t(e){if(e)for(var r,n=0;n-1&&(c.params[h]=r.params[h]);return c.path=M(p.path,c.params),u(p,c,a)}if(c.path){c.params={};for(var l=0;l=t.length?r():t[o]?e(t[o],function(){n(o+1)}):n(o+1)};n(0)}function yt(e){return function(r,n,o){var i=!1,a=0,c=null;mt(e,function(e,r,n,u){if("function"==typeof e&&void 0===e.cid){i=!0,a++;var s,p=wt(function(t){var r;((r=t).__esModule||bt&&"Module"===r[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:B.extend(t),n.components[u]=t,--a<=0&&o()}),f=wt(function(e){var r="Failed to resolve async component "+u+": "+e;c||(c=t(e)?e:new Error(r),o(c))});try{s=e(p,f)}catch(t){f(t)}if(s)if("function"==typeof s.then)s.then(p,f);else{var h=s.component;h&&"function"==typeof h.then&&h.then(p,f)}}}),i||o()}}function mt(t,e){return gt(t.map(function(t){return Object.keys(t.components).map(function(r){return e(t.components[r],t.instances[r],t,r)})}))}function gt(t){return Array.prototype.concat.apply([],t)}var bt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function wt(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var xt=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);xt._name="NavigationDuplicated";var kt=function(t,e){this.router=t,this.base=function(t){if(!t)if(K){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}(e),this.current=d,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function Rt(t,e,r,n){var o=mt(t,function(t,n,o,i){var a=function(t,e){return"function"!=typeof t&&(t=B.extend(t)),t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map(function(t){return r(t,n,o,i)}):r(a,n,o,i)});return gt(n?o.reverse():o)}function Et(t,e){if(e)return function(){return t.apply(e,arguments)}}kt.prototype.listen=function(t){this.cb=t},kt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},kt.prototype.onError=function(t){this.errorCbs.push(t)},kt.prototype.transitionTo=function(t,e,r){var n=this,o=this.router.match(t,this.current);this.confirmTransition(o,function(){n.updateRoute(o),e&&e(o),n.ensureURL(),n.ready||(n.ready=!0,n.readyCbs.forEach(function(t){t(o)}))},function(t){r&&r(t),t&&!n.ready&&(n.ready=!0,n.readyErrorCbs.forEach(function(e){e(t)}))})},kt.prototype.confirmTransition=function(r,n,o){var i=this,a=this.current,c=function(r){!e(xt,r)&&t(r)&&(i.errorCbs.length?i.errorCbs.forEach(function(t){t(r)}):console.error(r)),o&&o(r)};if(m(r,a)&&r.matched.length===a.matched.length)return this.ensureURL(),c(new xt(r));var u=function(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r-1?decodeURI(t.slice(0,n))+t.slice(n):decodeURI(t)}else r>-1&&(t=decodeURI(t.slice(0,r))+t.slice(r));return t}function St(t){var e=window.location.href,r=e.indexOf("#");return(r>=0?e.slice(0,r):e)+"#"+t}function $t(t){ht?lt(St(t)):window.location.hash=t}function Tt(t){ht?dt(St(t)):window.location.replace(St(t))}var Pt=function(t){function r(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)},r)},r.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)},r)},r.prototype.go=function(t){var r=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var o=this.stack[n];this.confirmTransition(o,function(){r.index=n,r.updateRoute(o)},function(t){e(xt,t)&&(r.index=n)})}},r.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},r.prototype.ensureURL=function(){},r}(kt),Lt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=X(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!ht&&!1!==t.fallback,this.fallback&&(e="hash"),K||(e="abstract"),this.mode=e,e){case"history":this.history=new Ot(this,t.base);break;case"hash":this.history=new At(this,t.base,this.fallback);break;case"abstract":this.history=new Pt(this,t.base)}},qt={currentRoute:{configurable:!0}};function Ut(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}return Lt.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},qt.currentRoute.get=function(){return this.history&&this.history.current},Lt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null)}),!this.app){this.app=t;var r=this.history;if(r instanceof Ot)r.transitionTo(r.getCurrentLocation());else if(r instanceof At){var n=function(){r.setupListeners()};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},Lt.prototype.beforeEach=function(t){return Ut(this.beforeHooks,t)},Lt.prototype.beforeResolve=function(t){return Ut(this.resolveHooks,t)},Lt.prototype.afterEach=function(t){return Ut(this.afterHooks,t)},Lt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Lt.prototype.onError=function(t){this.history.onError(t)},Lt.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise(function(e,r){n.history.push(t,e,r)});this.history.push(t,e,r)},Lt.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise(function(e,r){n.history.replace(t,e,r)});this.history.replace(t,e,r)},Lt.prototype.go=function(t){this.history.go(t)},Lt.prototype.back=function(){this.go(-1)},Lt.prototype.forward=function(){this.go(1)},Lt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},Lt.prototype.resolve=function(t,e,r){var n=V(t,e=e||this.history.current,r,this),o=this.match(n,e),i=o.redirectedFrom||o.fullPath;return{location:n,route:o,href:function(t,e,r){var n="hash"===r?"#"+e:e;return t?w(t+"/"+n):n}(this.history.base,i,this.mode),normalizedTo:n,resolved:o}},Lt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==d&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Lt.prototype,qt),Lt.install=function t(e){if(!t.installed||B!==e){t.installed=!0,B=e;var r=function(t){return void 0!==t},o=function(t,e){var n=t.$options._parentVnode;r(n)&&r(n=n.data)&&r(n=n.registerRouteInstance)&&n(t,e)};e.mixin({beforeCreate:function(){r(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,o(this,this)},destroyed:function(){o(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",n),e.component("RouterLink",F);var i=e.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}},Lt.version="3.1.3",K&&window.Vue&&window.Vue.use(Lt),Lt},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).VueRouter=e(); \ No newline at end of file diff --git a/cn-universal-web-ui/public/js/lib/vue.min.js b/cn-universal-web-ui/public/js/lib/vue.min.js new file mode 100644 index 0000000000000000000000000000000000000000..087ee42cd1021d9f0315fd0f8779eceb3ba1f96b --- /dev/null +++ b/cn-universal-web-ui/public/js/lib/vue.min.js @@ -0,0 +1,6 @@ +/*! + * Vue.js v2.6.10 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Vue=t()}(this,function(){"use strict";var e=Object.freeze({});function t(e){return null==e}function n(e){return null!=e}function r(e){return!0===e}function i(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function o(e){return null!==e&&"object"==typeof e}var a=Object.prototype.toString;function s(e){return"[object Object]"===a.call(e)}function c(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function u(e){return n(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function l(e){return null==e?"":Array.isArray(e)||s(e)&&e.toString===a?JSON.stringify(e,null,2):String(e)}function f(e){var t=parseFloat(e);return isNaN(t)?e:t}function p(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i-1)return e.splice(n,1)}}var m=Object.prototype.hasOwnProperty;function y(e,t){return m.call(e,t)}function g(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var _=/-(\w)/g,b=g(function(e){return e.replace(_,function(e,t){return t?t.toUpperCase():""})}),$=g(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),w=/\B([A-Z])/g,C=g(function(e){return e.replace(w,"-$1").toLowerCase()});var x=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function k(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function A(e,t){for(var n in t)e[n]=t[n];return e}function O(e){for(var t={},n=0;n0,Z=J&&J.indexOf("edge/")>0,G=(J&&J.indexOf("android"),J&&/iphone|ipad|ipod|ios/.test(J)||"ios"===K),X=(J&&/chrome\/\d+/.test(J),J&&/phantomjs/.test(J),J&&J.match(/firefox\/(\d+)/)),Y={}.watch,Q=!1;if(z)try{var ee={};Object.defineProperty(ee,"passive",{get:function(){Q=!0}}),window.addEventListener("test-passive",null,ee)}catch(e){}var te=function(){return void 0===B&&(B=!z&&!V&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),B},ne=z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function re(e){return"function"==typeof e&&/native code/.test(e.toString())}var ie,oe="undefined"!=typeof Symbol&&re(Symbol)&&"undefined"!=typeof Reflect&&re(Reflect.ownKeys);ie="undefined"!=typeof Set&&re(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ae=S,se=0,ce=function(){this.id=se++,this.subs=[]};ce.prototype.addSub=function(e){this.subs.push(e)},ce.prototype.removeSub=function(e){h(this.subs,e)},ce.prototype.depend=function(){ce.target&&ce.target.addDep(this)},ce.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t-1)if(o&&!y(i,"default"))a=!1;else if(""===a||a===C(e)){var c=Pe(String,i.type);(c<0||s0&&(st((u=e(u,(a||"")+"_"+c))[0])&&st(f)&&(s[l]=he(f.text+u[0].text),u.shift()),s.push.apply(s,u)):i(u)?st(f)?s[l]=he(f.text+u):""!==u&&s.push(he(u)):st(u)&&st(f)?s[l]=he(f.text+u.text):(r(o._isVList)&&n(u.tag)&&t(u.key)&&n(a)&&(u.key="__vlist"+a+"_"+c+"__"),s.push(u)));return s}(e):void 0}function st(e){return n(e)&&n(e.text)&&!1===e.isComment}function ct(e,t){if(e){for(var n=Object.create(null),r=oe?Reflect.ownKeys(e):Object.keys(e),i=0;i0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==e&&s===r.$key&&!o&&!r.$hasNormal)return r;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=pt(n,c,t[c]))}else i={};for(var u in n)u in i||(i[u]=dt(n,u));return t&&Object.isExtensible(t)&&(t._normalized=i),R(i,"$stable",a),R(i,"$key",s),R(i,"$hasNormal",o),i}function pt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:at(e))&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function dt(e,t){return function(){return e[t]}}function vt(e,t){var r,i,a,s,c;if(Array.isArray(e)||"string"==typeof e)for(r=new Array(e.length),i=0,a=e.length;idocument.createEvent("Event").timeStamp&&(sn=function(){return cn.now()})}function un(){var e,t;for(an=sn(),rn=!0,Qt.sort(function(e,t){return e.id-t.id}),on=0;onon&&Qt[n].id>e.id;)n--;Qt.splice(n+1,0,e)}else Qt.push(e);nn||(nn=!0,Ye(un))}}(this)},fn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||o(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Re(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},fn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},fn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},fn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||h(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var pn={enumerable:!0,configurable:!0,get:S,set:S};function dn(e,t,n){pn.get=function(){return this[t][n]},pn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,pn)}function vn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&$e(!1);var o=function(o){i.push(o);var a=Me(o,t,n,e);xe(r,o,a),o in e||dn(e,"_props",o)};for(var a in t)o(a);$e(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]="function"!=typeof t[n]?S:x(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;s(t=e._data="function"==typeof t?function(e,t){le();try{return e.call(t,t)}catch(e){return Re(e,t,"data()"),{}}finally{fe()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];r&&y(r,o)||(a=void 0,36!==(a=(o+"").charCodeAt(0))&&95!==a&&dn(e,"_data",o))}var a;Ce(t,!0)}(e):Ce(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=te();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;r||(n[i]=new fn(e,a||S,S,hn)),i in e||mn(e,i,o)}}(e,t.computed),t.watch&&t.watch!==Y&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===a.call(n)&&e.test(t));var n}function An(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=xn(a.componentOptions);s&&!t(s)&&On(n,o,r,i)}}}function On(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,h(n,t)}!function(t){t.prototype._init=function(t){var n=this;n._uid=bn++,n._isVue=!0,t&&t._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(n,t):n.$options=De($n(n.constructor),t||{},n),n._renderProxy=n,n._self=n,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(n),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&qt(e,t)}(n),function(t){t._vnode=null,t._staticTrees=null;var n=t.$options,r=t.$vnode=n._parentVnode,i=r&&r.context;t.$slots=ut(n._renderChildren,i),t.$scopedSlots=e,t._c=function(e,n,r,i){return Pt(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return Pt(t,e,n,r,i,!0)};var o=r&&r.data;xe(t,"$attrs",o&&o.attrs||e,null,!0),xe(t,"$listeners",n._parentListeners||e,null,!0)}(n),Yt(n,"beforeCreate"),function(e){var t=ct(e.$options.inject,e);t&&($e(!1),Object.keys(t).forEach(function(n){xe(e,n,t[n])}),$e(!0))}(n),vn(n),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(n),Yt(n,"created"),n.$options.el&&n.$mount(n.$options.el)}}(wn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",n),e.prototype.$set=ke,e.prototype.$delete=Ae,e.prototype.$watch=function(e,t,n){if(s(t))return _n(this,e,t,n);(n=n||{}).user=!0;var r=new fn(this,e,t,n);if(n.immediate)try{t.call(this,r.value)}catch(e){Re(e,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(wn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var i=0,o=e.length;i1?k(t):t;for(var n=k(arguments,1),r='event handler for "'+e+'"',i=0,o=t.length;iparseInt(this.max)&&On(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,"config",t),e.util={warn:ae,extend:A,mergeOptions:De,defineReactive:xe},e.set=ke,e.delete=Ae,e.nextTick=Ye,e.observable=function(e){return Ce(e),e},e.options=Object.create(null),M.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,A(e.options.components,Tn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=k(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=De(this.options,e),this}}(e),Cn(e),function(e){M.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&s(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}(e)}(wn),Object.defineProperty(wn.prototype,"$isServer",{get:te}),Object.defineProperty(wn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(wn,"FunctionalRenderContext",{value:Tt}),wn.version="2.6.10";var En=p("style,class"),Nn=p("input,textarea,option,select,progress"),jn=function(e,t,n){return"value"===n&&Nn(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Dn=p("contenteditable,draggable,spellcheck"),Ln=p("events,caret,typing,plaintext-only"),Mn=function(e,t){return Hn(t)||"false"===t?"false":"contenteditable"===e&&Ln(t)?t:"true"},In=p("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Fn="http://www.w3.org/1999/xlink",Pn=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Rn=function(e){return Pn(e)?e.slice(6,e.length):""},Hn=function(e){return null==e||!1===e};function Bn(e){for(var t=e.data,r=e,i=e;n(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(t=Un(i.data,t));for(;n(r=r.parent);)r&&r.data&&(t=Un(t,r.data));return function(e,t){if(n(e)||n(t))return zn(e,Vn(t));return""}(t.staticClass,t.class)}function Un(e,t){return{staticClass:zn(e.staticClass,t.staticClass),class:n(e.class)?[e.class,t.class]:t.class}}function zn(e,t){return e?t?e+" "+t:e:t||""}function Vn(e){return Array.isArray(e)?function(e){for(var t,r="",i=0,o=e.length;i-1?hr(e,t,n):In(t)?Hn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Dn(t)?e.setAttribute(t,Mn(t,n)):Pn(t)?Hn(n)?e.removeAttributeNS(Fn,Rn(t)):e.setAttributeNS(Fn,t,n):hr(e,t,n)}function hr(e,t,n){if(Hn(n))e.removeAttribute(t);else{if(q&&!W&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var mr={create:dr,update:dr};function yr(e,r){var i=r.elm,o=r.data,a=e.data;if(!(t(o.staticClass)&&t(o.class)&&(t(a)||t(a.staticClass)&&t(a.class)))){var s=Bn(r),c=i._transitionClasses;n(c)&&(s=zn(s,Vn(c))),s!==i._prevClass&&(i.setAttribute("class",s),i._prevClass=s)}}var gr,_r,br,$r,wr,Cr,xr={create:yr,update:yr},kr=/[\w).+\-_$\]]/;function Ar(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r=0&&" "===(h=e.charAt(v));v--);h&&kr.test(h)||(u=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r-1?{exp:e.slice(0,$r),key:'"'+e.slice($r+1)+'"'}:{exp:e,key:null};_r=e,$r=wr=Cr=0;for(;!zr();)Vr(br=Ur())?Jr(br):91===br&&Kr(br);return{exp:e.slice(0,wr),key:e.slice(wr+1,Cr)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Ur(){return _r.charCodeAt(++$r)}function zr(){return $r>=gr}function Vr(e){return 34===e||39===e}function Kr(e){var t=1;for(wr=$r;!zr();)if(Vr(e=Ur()))Jr(e);else if(91===e&&t++,93===e&&t--,0===t){Cr=$r;break}}function Jr(e){for(var t=e;!zr()&&(e=Ur())!==t;);}var qr,Wr="__r",Zr="__c";function Gr(e,t,n){var r=qr;return function i(){null!==t.apply(null,arguments)&&Qr(e,i,n,r)}}var Xr=Ve&&!(X&&Number(X[1])<=53);function Yr(e,t,n,r){if(Xr){var i=an,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}qr.addEventListener(e,t,Q?{capture:n,passive:r}:n)}function Qr(e,t,n,r){(r||qr).removeEventListener(e,t._wrapper||t,n)}function ei(e,r){if(!t(e.data.on)||!t(r.data.on)){var i=r.data.on||{},o=e.data.on||{};qr=r.elm,function(e){if(n(e[Wr])){var t=q?"change":"input";e[t]=[].concat(e[Wr],e[t]||[]),delete e[Wr]}n(e[Zr])&&(e.change=[].concat(e[Zr],e.change||[]),delete e[Zr])}(i),rt(i,o,Yr,Qr,Gr,r.context),qr=void 0}}var ti,ni={create:ei,update:ei};function ri(e,r){if(!t(e.data.domProps)||!t(r.data.domProps)){var i,o,a=r.elm,s=e.data.domProps||{},c=r.data.domProps||{};for(i in n(c.__ob__)&&(c=r.data.domProps=A({},c)),s)i in c||(a[i]="");for(i in c){if(o=c[i],"textContent"===i||"innerHTML"===i){if(r.children&&(r.children.length=0),o===s[i])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===i&&"PROGRESS"!==a.tagName){a._value=o;var u=t(o)?"":String(o);ii(a,u)&&(a.value=u)}else if("innerHTML"===i&&qn(a.tagName)&&t(a.innerHTML)){(ti=ti||document.createElement("div")).innerHTML=""+o+"";for(var l=ti.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(o!==s[i])try{a[i]=o}catch(e){}}}}function ii(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var r=e.value,i=e._vModifiers;if(n(i)){if(i.number)return f(r)!==f(t);if(i.trim)return r.trim()!==t.trim()}return r!==t}(e,t))}var oi={create:ri,update:ri},ai=g(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function si(e){var t=ci(e.style);return e.staticStyle?A(e.staticStyle,t):t}function ci(e){return Array.isArray(e)?O(e):"string"==typeof e?ai(e):e}var ui,li=/^--/,fi=/\s*!important$/,pi=function(e,t,n){if(li.test(t))e.style.setProperty(t,n);else if(fi.test(n))e.style.setProperty(C(t),n.replace(fi,""),"important");else{var r=vi(t);if(Array.isArray(n))for(var i=0,o=n.length;i-1?t.split(yi).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function _i(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(yi).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function bi(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&A(t,$i(e.name||"v")),A(t,e),t}return"string"==typeof e?$i(e):void 0}}var $i=g(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),wi=z&&!W,Ci="transition",xi="animation",ki="transition",Ai="transitionend",Oi="animation",Si="animationend";wi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ki="WebkitTransition",Ai="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Oi="WebkitAnimation",Si="webkitAnimationEnd"));var Ti=z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Ei(e){Ti(function(){Ti(e)})}function Ni(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),gi(e,t))}function ji(e,t){e._transitionClasses&&h(e._transitionClasses,t),_i(e,t)}function Di(e,t,n){var r=Mi(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Ci?Ai:Si,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c0&&(n=Ci,l=a,f=o.length):t===xi?u>0&&(n=xi,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?Ci:xi:null)?n===Ci?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===Ci&&Li.test(r[ki+"Property"])}}function Ii(e,t){for(;e.length1}function Ui(e,t){!0!==t.data.show&&Pi(t)}var zi=function(e){var o,a,s={},c=e.modules,u=e.nodeOps;for(o=0;ov?_(e,t(i[y+1])?null:i[y+1].elm,i,d,y,o):d>y&&$(0,r,p,v)}(p,h,y,o,l):n(y)?(n(e.text)&&u.setTextContent(p,""),_(p,null,y,0,y.length-1,o)):n(h)?$(0,h,0,h.length-1):n(e.text)&&u.setTextContent(p,""):e.text!==i.text&&u.setTextContent(p,i.text),n(v)&&n(d=v.hook)&&n(d=d.postpatch)&&d(e,i)}}}function k(e,t,i){if(r(i)&&n(e.parent))e.parent.data.pendingInsert=t;else for(var o=0;o-1,a.selected!==o&&(a.selected=o);else if(N(Wi(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function qi(e,t){return t.every(function(t){return!N(t,e)})}function Wi(e){return"_value"in e?e._value:e.value}function Zi(e){e.target.composing=!0}function Gi(e){e.target.composing&&(e.target.composing=!1,Xi(e.target,"input"))}function Xi(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Yi(e){return!e.componentInstance||e.data&&e.data.transition?e:Yi(e.componentInstance._vnode)}var Qi={model:Vi,show:{bind:function(e,t,n){var r=t.value,i=(n=Yi(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,Pi(n,function(){e.style.display=o})):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Yi(n)).data&&n.data.transition?(n.data.show=!0,r?Pi(n,function(){e.style.display=e.__vOriginalDisplay}):Ri(n,function(){e.style.display="none"})):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},eo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function to(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?to(zt(t.children)):e}function no(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[b(o)]=i[o];return t}function ro(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var io=function(e){return e.tag||Ut(e)},oo=function(e){return"show"===e.name},ao={name:"transition",props:eo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(io)).length){var r=this.mode,o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var a=to(o);if(!a)return o;if(this._leaving)return ro(e,o);var s="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?s+"comment":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=no(this),u=this._vnode,l=to(u);if(a.data.directives&&a.data.directives.some(oo)&&(a.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(a,l)&&!Ut(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=A({},c);if("out-in"===r)return this._leaving=!0,it(f,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),ro(e,o);if("in-out"===r){if(Ut(a))return u;var p,d=function(){p()};it(c,"afterEnter",d),it(c,"enterCancelled",d),it(f,"delayLeave",function(e){p=e})}}return o}}},so=A({tag:String,moveClass:String},eo);function co(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function uo(e){e.data.newPos=e.elm.getBoundingClientRect()}function lo(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete so.mode;var fo={Transition:ao,TransitionGroup:{props:so,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=Zt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=no(this),s=0;s-1?Gn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Gn[e]=/HTMLUnknownElement/.test(t.toString())},A(wn.options.directives,Qi),A(wn.options.components,fo),wn.prototype.__patch__=z?zi:S,wn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ve),Yt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new fn(e,r,S,{before:function(){e._isMounted&&!e._isDestroyed&&Yt(e,"beforeUpdate")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Yt(e,"mounted")),e}(this,e=e&&z?Yn(e):void 0,t)},z&&setTimeout(function(){F.devtools&&ne&&ne.emit("init",wn)},0);var po=/\{\{((?:.|\r?\n)+?)\}\}/g,vo=/[-.*+?^${}()|[\]\/\\]/g,ho=g(function(e){var t=e[0].replace(vo,"\\$&"),n=e[1].replace(vo,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")});var mo={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=Fr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Ir(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}};var yo,go={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=Fr(e,"style");n&&(e.staticStyle=JSON.stringify(ai(n)));var r=Ir(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},_o=function(e){return(yo=yo||document.createElement("div")).innerHTML=e,yo.textContent},bo=p("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),$o=p("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),wo=p("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Co=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,xo=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ko="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+P.source+"]*",Ao="((?:"+ko+"\\:)?"+ko+")",Oo=new RegExp("^<"+Ao),So=/^\s*(\/?)>/,To=new RegExp("^<\\/"+Ao+"[^>]*>"),Eo=/^]+>/i,No=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Io=/&(?:lt|gt|quot|amp|#39);/g,Fo=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Po=p("pre,textarea",!0),Ro=function(e,t){return e&&Po(e)&&"\n"===t[0]};function Ho(e,t){var n=t?Fo:Io;return e.replace(n,function(e){return Mo[e]})}var Bo,Uo,zo,Vo,Ko,Jo,qo,Wo,Zo=/^@|^v-on:/,Go=/^v-|^@|^:/,Xo=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Yo=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Qo=/^\(|\)$/g,ea=/^\[.*\]$/,ta=/:(.*)$/,na=/^:|^\.|^v-bind:/,ra=/\.[^.\]]+(?=[^\]]*$)/g,ia=/^v-slot(:|$)|^#/,oa=/[\r\n]/,aa=/\s+/g,sa=g(_o),ca="_empty_";function ua(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:ma(t),rawAttrsMap:{},parent:n,children:[]}}function la(e,t){Bo=t.warn||Sr,Jo=t.isPreTag||T,qo=t.mustUseProp||T,Wo=t.getTagNamespace||T;t.isReservedTag;zo=Tr(t.modules,"transformNode"),Vo=Tr(t.modules,"preTransformNode"),Ko=Tr(t.modules,"postTransformNode"),Uo=t.delimiters;var n,r,i=[],o=!1!==t.preserveWhitespace,a=t.whitespace,s=!1,c=!1;function u(e){if(l(e),s||e.processed||(e=fa(e,t)),i.length||e===n||n.if&&(e.elseif||e.else)&&da(n,{exp:e.elseif,block:e}),r&&!e.forbidden)if(e.elseif||e.else)a=e,(u=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(r.children))&&u.if&&da(u,{exp:a.elseif,block:a});else{if(e.slotScope){var o=e.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[o]=e}r.children.push(e),e.parent=r}var a,u;e.children=e.children.filter(function(e){return!e.slotScope}),l(e),e.pre&&(s=!1),Jo(e.tag)&&(c=!1);for(var f=0;f]*>)","i")),p=e.replace(f,function(e,n,r){return u=r.length,Do(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Ro(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""});c+=e.length-p.length,e=p,A(l,c-u,c)}else{var d=e.indexOf("<");if(0===d){if(No.test(e)){var v=e.indexOf("--\x3e");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v),c,c+v+3),C(v+3);continue}}if(jo.test(e)){var h=e.indexOf("]>");if(h>=0){C(h+2);continue}}var m=e.match(Eo);if(m){C(m[0].length);continue}var y=e.match(To);if(y){var g=c;C(y[0].length),A(y[1],g,c);continue}var _=x();if(_){k(_),Ro(_.tagName,e)&&C(1);continue}}var b=void 0,$=void 0,w=void 0;if(d>=0){for($=e.slice(d);!(To.test($)||Oo.test($)||No.test($)||jo.test($)||(w=$.indexOf("<",1))<0);)d+=w,$=e.slice(d);b=e.substring(0,d)}d<0&&(b=e),b&&C(b.length),t.chars&&b&&t.chars(b,c-b.length,c)}if(e===n){t.chars&&t.chars(e);break}}function C(t){c+=t,e=e.substring(t)}function x(){var t=e.match(Oo);if(t){var n,r,i={tagName:t[1],attrs:[],start:c};for(C(t[0].length);!(n=e.match(So))&&(r=e.match(xo)||e.match(Co));)r.start=c,C(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],C(n[0].length),i.end=c,i}}function k(e){var n=e.tagName,c=e.unarySlash;o&&("p"===r&&wo(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=e.attrs.length,f=new Array(l),p=0;p=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)t.end&&t.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,o):"p"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:Bo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,o,a,l,f){var p=r&&r.ns||Wo(e);q&&"svg"===p&&(o=function(e){for(var t=[],n=0;nc&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var u=Ar(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),Mr(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Br(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Br(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Br(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===o&&"radio"===a)!function(e,t,n){var r=n&&n.number,i=Ir(e,"value")||"null";Er(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),Mr(e,"change",Br(t,i),null,!0)}(e,r,i);else if("input"===o||"textarea"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Wr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Br(t,l);c&&(f="if($event.target.composing)return;"+f),Er(e,"value","("+t+")"),Mr(e,u,f,null,!0),(s||a)&&Mr(e,"blur","$forceUpdate()")}(e,r,i);else if(!F.isReservedTag(o))return Hr(e,r,i),!1;return!0},text:function(e,t){t.value&&Er(e,"textContent","_s("+t.value+")",t)},html:function(e,t){t.value&&Er(e,"innerHTML","_s("+t.value+")",t)}},isPreTag:function(e){return"pre"===e},isUnaryTag:bo,mustUseProp:jn,canBeLeftOpenTag:$o,isReservedTag:Wn,getTagNamespace:Zn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(",")}(ba)},xa=g(function(e){return p("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))});function ka(e,t){e&&($a=xa(t.staticKeys||""),wa=t.isReservedTag||T,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||d(e.tag)||!wa(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every($a)))}(t);if(1===t.type){if(!wa(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n|^function\s*(?:[\w$]+)?\s*\(/,Oa=/\([^)]*?\);*$/,Sa=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Ta={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ea={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Na=function(e){return"if("+e+")return null;"},ja={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Na("$event.target !== $event.currentTarget"),ctrl:Na("!$event.ctrlKey"),shift:Na("!$event.shiftKey"),alt:Na("!$event.altKey"),meta:Na("!$event.metaKey"),left:Na("'button' in $event && $event.button !== 0"),middle:Na("'button' in $event && $event.button !== 1"),right:Na("'button' in $event && $event.button !== 2")};function Da(e,t){var n=t?"nativeOn:":"on:",r="",i="";for(var o in e){var a=La(e[o]);e[o]&&e[o].dynamic?i+=o+","+a+",":r+='"'+o+'":'+a+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function La(e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return La(e)}).join(",")+"]";var t=Sa.test(e.value),n=Aa.test(e.value),r=Sa.test(e.value.replace(Oa,""));if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)if(ja[s])o+=ja[s],Ta[s]&&a.push(s);else if("exact"===s){var c=e.modifiers;o+=Na(["ctrl","shift","alt","meta"].filter(function(e){return!c[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else a.push(s);return a.length&&(i+=function(e){return"if(!$event.type.indexOf('key')&&"+e.map(Ma).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(t?"return "+e.value+"($event)":n?"return ("+e.value+")($event)":r?"return "+e.value:e.value)+"}"}return t||n?e.value:"function($event){"+(r?"return "+e.value:e.value)+"}"}function Ma(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=Ta[e],r=Ea[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ia={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:S},Fa=function(e){this.options=e,this.warn=e.warn||Sr,this.transforms=Tr(e.modules,"transformCode"),this.dataGenFns=Tr(e.modules,"genData"),this.directives=A(A({},Ia),e.directives);var t=e.isReservedTag||T;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Pa(e,t){var n=new Fa(t);return{render:"with(this){return "+(e?Ra(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ra(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return Ha(e,t);if(e.once&&!e.onceProcessed)return Ba(e,t);if(e.for&&!e.forProcessed)return za(e,t);if(e.if&&!e.ifProcessed)return Ua(e,t);if("template"!==e.tag||e.slotTarget||t.pre){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=qa(e,t),i="_t("+n+(r?","+r:""),o=e.attrs||e.dynamicAttrs?Ga((e.attrs||[]).concat(e.dynamicAttrs||[]).map(function(e){return{name:b(e.name),value:e.value,dynamic:e.dynamic}})):null,a=e.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:qa(t,n,!0);return"_c("+e+","+Va(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=Va(e,t));var i=e.inlineTemplate?null:qa(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o>>0}(a):"")+")"}(e,e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];if(n&&1===n.type){var r=Pa(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}(e,t);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",e.dynamicAttrs&&(n="_b("+n+',"'+e.tag+'",'+Ga(e.dynamicAttrs)+")"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Ka(e){return 1===e.type&&("slot"===e.tag||e.children.some(Ka))}function Ja(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!n)return Ua(e,t,Ja,"null");if(e.for&&!e.forProcessed)return za(e,t,Ja);var r=e.slotScope===ca?"":String(e.slotScope),i="function("+r+"){return "+("template"===e.tag?e.if&&n?"("+e.if+")?"+(qa(e,t)||"undefined")+":undefined":qa(e,t)||"undefined":Ra(e,t))+"}",o=r?"":",proxy:true";return"{key:"+(e.slotTarget||'"default"')+",fn:"+i+o+"}"}function qa(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?t.maybeComponent(a)?",1":",0":"";return""+(r||Ra)(a,t)+s}var c=n?function(e,t){for(var n=0,r=0;r':'
          ',ts.innerHTML.indexOf(" ")>0}var os=!!z&&is(!1),as=!!z&&is(!0),ss=g(function(e){var t=Yn(e);return t&&t.innerHTML}),cs=wn.prototype.$mount;return wn.prototype.$mount=function(e,t){if((e=e&&Yn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=ss(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){var i=rs(r,{outputSourceRange:!1,shouldDecodeNewlines:os,shouldDecodeNewlinesForHref:as,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return cs.call(this,e,t)},wn.compile=rs,wn}); \ No newline at end of file diff --git a/cn-universal-web-ui/public/js/lib/vuex.min.js b/cn-universal-web-ui/public/js/lib/vuex.min.js new file mode 100644 index 0000000000000000000000000000000000000000..787aee83084bedb884c1cb8b75e41846abd239ce --- /dev/null +++ b/cn-universal-web-ui/public/js/lib/vuex.min.js @@ -0,0 +1,6 @@ +/** + * vuex v3.1.1 + * (c) 2019 Evan You + * @license MIT + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Vuex=e()}(this,function(){"use strict";var t=("undefined"!=typeof window?window:"undefined"!=typeof global?global:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function e(t,e){Object.keys(t).forEach(function(n){return e(t[n],n)})}var n=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},o={namespaced:{configurable:!0}};o.namespaced.get=function(){return!!this._rawModule.namespaced},n.prototype.addChild=function(t,e){this._children[t]=e},n.prototype.removeChild=function(t){delete this._children[t]},n.prototype.getChild=function(t){return this._children[t]},n.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},n.prototype.forEachChild=function(t){e(this._children,t)},n.prototype.forEachGetter=function(t){this._rawModule.getters&&e(this._rawModule.getters,t)},n.prototype.forEachAction=function(t){this._rawModule.actions&&e(this._rawModule.actions,t)},n.prototype.forEachMutation=function(t){this._rawModule.mutations&&e(this._rawModule.mutations,t)},Object.defineProperties(n.prototype,o);var i,r=function(t){this.register([],t,!1)};r.prototype.get=function(t){return t.reduce(function(t,e){return t.getChild(e)},this.root)},r.prototype.getNamespace=function(t){var e=this.root;return t.reduce(function(t,n){return t+((e=e.getChild(n)).namespaced?n+"/":"")},"")},r.prototype.update=function(t){!function t(e,n,o){n.update(o);if(o.modules)for(var i in o.modules){if(!n.getChild(i))return;t(e.concat(i),n.getChild(i),o.modules[i])}}([],this.root,t)},r.prototype.register=function(t,o,i){var r=this;void 0===i&&(i=!0);var s=new n(o,i);0===t.length?this.root=s:this.get(t.slice(0,-1)).addChild(t[t.length-1],s);o.modules&&e(o.modules,function(e,n){r.register(t.concat(n),e,i)})},r.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var s=function(e){var n=this;void 0===e&&(e={}),!i&&"undefined"!=typeof window&&window.Vue&&d(window.Vue);var o=e.plugins;void 0===o&&(o=[]);var s=e.strict;void 0===s&&(s=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new r(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new i;var a=this,c=this.dispatch,u=this.commit;this.dispatch=function(t,e){return c.call(a,t,e)},this.commit=function(t,e,n){return u.call(a,t,e,n)},this.strict=s;var h=this._modules.root.state;p(this,h,[],this._modules.root),f(this,h),o.forEach(function(t){return t(n)}),(void 0!==e.devtools?e.devtools:i.config.devtools)&&function(e){t&&(e._devtoolHook=t,t.emit("vuex:init",e),t.on("vuex:travel-to-state",function(t){e.replaceState(t)}),e.subscribe(function(e,n){t.emit("vuex:mutation",e,n)}))}(this)},a={state:{configurable:!0}};function c(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function u(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;p(t,n,[],t._modules.root,!0),f(t,n,e)}function f(t,n,o){var r=t._vm;t.getters={};var s=t._wrappedGetters,a={};e(s,function(e,n){a[n]=function(t,e){return function(){return t(e)}}(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})});var c=i.config.silent;i.config.silent=!0,t._vm=new i({data:{$$state:n},computed:a}),i.config.silent=c,t.strict&&function(t){t._vm.$watch(function(){return this._data.$$state},function(){},{deep:!0,sync:!0})}(t),r&&(o&&t._withCommit(function(){r._data.$$state=null}),i.nextTick(function(){return r.$destroy()}))}function p(t,e,n,o,r){var s=!n.length,a=t._modules.getNamespace(n);if(o.namespaced&&(t._modulesNamespaceMap[a]=o),!s&&!r){var c=h(e,n.slice(0,-1)),u=n[n.length-1];t._withCommit(function(){i.set(c,u,o.state)})}var f=o.context=function(t,e,n){var o=""===e,i={dispatch:o?t.dispatch:function(n,o,i){var r=l(n,o,i),s=r.payload,a=r.options,c=r.type;return a&&a.root||(c=e+c),t.dispatch(c,s)},commit:o?t.commit:function(n,o,i){var r=l(n,o,i),s=r.payload,a=r.options,c=r.type;a&&a.root||(c=e+c),t.commit(c,s,a)}};return Object.defineProperties(i,{getters:{get:o?function(){return t.getters}:function(){return function(t,e){var n={},o=e.length;return Object.keys(t.getters).forEach(function(i){if(i.slice(0,o)===e){var r=i.slice(o);Object.defineProperty(n,r,{get:function(){return t.getters[i]},enumerable:!0})}}),n}(t,e)}},state:{get:function(){return h(t.state,n)}}}),i}(t,a,n);o.forEachMutation(function(e,n){!function(t,e,n,o){(t._mutations[e]||(t._mutations[e]=[])).push(function(e){n.call(t,o.state,e)})}(t,a+n,e,f)}),o.forEachAction(function(e,n){var o=e.root?n:a+n,i=e.handler||e;!function(t,e,n,o){(t._actions[e]||(t._actions[e]=[])).push(function(e,i){var r,s=n.call(t,{dispatch:o.dispatch,commit:o.commit,getters:o.getters,state:o.state,rootGetters:t.getters,rootState:t.state},e,i);return(r=s)&&"function"==typeof r.then||(s=Promise.resolve(s)),t._devtoolHook?s.catch(function(e){throw t._devtoolHook.emit("vuex:error",e),e}):s})}(t,o,i,f)}),o.forEachGetter(function(e,n){!function(t,e,n,o){if(t._wrappedGetters[e])return;t._wrappedGetters[e]=function(t){return n(o.state,o.getters,t.state,t.getters)}}(t,a+n,e,f)}),o.forEachChild(function(o,i){p(t,e,n.concat(i),o,r)})}function h(t,e){return e.length?e.reduce(function(t,e){return t[e]},t):t}function l(t,e,n){var o;return null!==(o=t)&&"object"==typeof o&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function d(t){i&&t===i||function(t){if(Number(t.version.split(".")[0])>=2)t.mixin({beforeCreate:n});else{var e=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[n].concat(t.init):n,e.call(this,t)}}function n(){var t=this.$options;t.store?this.$store="function"==typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}(i=t)}a.state.get=function(){return this._vm._data.$$state},a.state.set=function(t){},s.prototype.commit=function(t,e,n){var o=this,i=l(t,e,n),r=i.type,s=i.payload,a={type:r,payload:s},c=this._mutations[r];c&&(this._withCommit(function(){c.forEach(function(t){t(s)})}),this._subscribers.forEach(function(t){return t(a,o.state)}))},s.prototype.dispatch=function(t,e){var n=this,o=l(t,e),i=o.type,r=o.payload,s={type:i,payload:r},a=this._actions[i];if(a){try{this._actionSubscribers.filter(function(t){return t.before}).forEach(function(t){return t.before(s,n.state)})}catch(t){}return(a.length>1?Promise.all(a.map(function(t){return t(r)})):a[0](r)).then(function(t){try{n._actionSubscribers.filter(function(t){return t.after}).forEach(function(t){return t.after(s,n.state)})}catch(t){}return t})}},s.prototype.subscribe=function(t){return c(t,this._subscribers)},s.prototype.subscribeAction=function(t){return c("function"==typeof t?{before:t}:t,this._actionSubscribers)},s.prototype.watch=function(t,e,n){var o=this;return this._watcherVM.$watch(function(){return t(o.state,o.getters)},e,n)},s.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._vm._data.$$state=t})},s.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),this._modules.register(t,e),p(this,this.state,t,this._modules.get(t),n.preserveState),f(this,this.state)},s.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var n=h(e.state,t.slice(0,-1));i.delete(n,t[t.length-1])}),u(this)},s.prototype.hotUpdate=function(t){this._modules.update(t),u(this,!0)},s.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(s.prototype,a);var m=b(function(t,e){var n={};return g(e).forEach(function(e){var o=e.key,i=e.val;n[o]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var o=w(this.$store,"mapState",t);if(!o)return;e=o.context.state,n=o.context.getters}return"function"==typeof i?i.call(this,e,n):e[i]},n[o].vuex=!0}),n}),v=b(function(t,e){var n={};return g(e).forEach(function(e){var o=e.key,i=e.val;n[o]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var o=this.$store.commit;if(t){var r=w(this.$store,"mapMutations",t);if(!r)return;o=r.context.commit}return"function"==typeof i?i.apply(this,[o].concat(e)):o.apply(this.$store,[i].concat(e))}}),n}),_=b(function(t,e){var n={};return g(e).forEach(function(e){var o=e.key,i=e.val;i=t+i,n[o]=function(){if(!t||w(this.$store,"mapGetters",t))return this.$store.getters[i]},n[o].vuex=!0}),n}),y=b(function(t,e){var n={};return g(e).forEach(function(e){var o=e.key,i=e.val;n[o]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var o=this.$store.dispatch;if(t){var r=w(this.$store,"mapActions",t);if(!r)return;o=r.context.dispatch}return"function"==typeof i?i.apply(this,[o].concat(e)):o.apply(this.$store,[i].concat(e))}}),n});function g(t){return Array.isArray(t)?t.map(function(t){return{key:t,val:t}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}})}function b(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function w(t,e,n){return t._modulesNamespaceMap[n]}return{Store:s,install:d,version:"3.1.1",mapState:m,mapMutations:v,mapGetters:_,mapActions:y,createNamespacedHelpers:function(t){return{mapState:m.bind(null,t),mapGetters:_.bind(null,t),mapMutations:v.bind(null,t),mapActions:y.bind(null,t)}}}}); \ No newline at end of file diff --git a/cn-universal-web-ui/public/logo.svg b/cn-universal-web-ui/public/logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..7a653a87a27e33fad40d0c17eae861503dae97c4 --- /dev/null +++ b/cn-universal-web-ui/public/logo.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IoT Platform + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/App.vue b/cn-universal-web-ui/src/App.vue new file mode 100644 index 0000000000000000000000000000000000000000..e846b42274c819f37d7d78efc5142359940dd0a2 --- /dev/null +++ b/cn-universal-web-ui/src/App.vue @@ -0,0 +1,32 @@ + + + diff --git a/cn-universal-web-ui/src/api/application/application.js b/cn-universal-web-ui/src/api/application/application.js new file mode 100644 index 0000000000000000000000000000000000000000..73780fff2e7fa8b1c349bcab51560c63dba49804 --- /dev/null +++ b/cn-universal-web-ui/src/api/application/application.js @@ -0,0 +1,79 @@ +import request from '@/utils/request' + +// 查询用户应用信息列表 +export function listApplication(query) { + return request({ + url: '/admin/v1/apply/list', + method: 'get', + params: query + }) +} + +// 查询用户应用信息详细 +export function getApplication(uuid) { + return request({ + url: '/admin/v1/apply/' + uuid, + method: 'get' + }) +} + +// 新增用户应用信息 +export function addApplication(data) { + return request({ + url: '/admin/v1/apply', + method: 'post', + data: data + }) +} + +// 修改用户应用信息 +export function updateApplication(data) { + return request({ + url: '/admin/v1/apply', + method: 'put', + data: data + }) +} + +// 修改用户应用信息 +export function enable(data) { + return request({ + url: '/admin/v1/apply/enable', + method: 'post', + data: data + }) +} + +// 删除用户应用信息 +export function delApplication(uuid) { + return request({ + url: '/admin/v1/apply/' + uuid, + method: 'delete' + }) +} + +// 重置密钥 +export function resetSecret(data) { + return request({ + url: '/admin/v1/apply/reset', + method: 'put', + data: data + }) +} + +// 地址测试 +export function checkUrl(query) { + return request({ + url: '/admin/v1/apply/check', + method: 'get', + params: query + }) +} + +// 启用/停用推送配置 +export function enableOrDisablePush(appUniqueId, pushType, enable) { + return request({ + url: `/admin/v1/apply/${appUniqueId}/${pushType}/${enable}`, + method: 'post' + }) +} diff --git a/cn-universal-web-ui/src/api/dashboard/index.js b/cn-universal-web-ui/src/api/dashboard/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8a386df9c97dc914a1797b4c160e6ee9bae31013 --- /dev/null +++ b/cn-universal-web-ui/src/api/dashboard/index.js @@ -0,0 +1,125 @@ +import request from '@/utils/request' + +// 获取仪表盘概览数据 +export function getDashboardOverview() { + return request({ + url: '/dashboard/overview', + method: 'get' + }) +} + +// 获取设备消息分类图表数据 +export function getDashboardMessageClassification(timeRange = 'today') { + return request({ + url: '/api/dashboard/message-classification', + method: 'get', + params: {timeRange} + }) +} + +// 获取系统性能监控数据 +export function getDashboardSystemMonitor(refreshInterval = 5) { + return request({ + url: '/api/dashboard/system-monitor', + method: 'get', + params: {refreshInterval} + }) +} + +// 获取实时数据(兼容旧接口) +export function getDashboardRealtime() { + return request({ + url: '/dashboard/realtime', + method: 'get' + }) +} + +// 获取告警数据(兼容旧接口) +export function getDashboardAlerts(params) { + return request({ + url: '/dashboard/alerts', + method: 'get', + params + }) +} + +// 获取用户活动数据(兼容旧接口) +export function getDashboardUserActivity(params) { + return request({ + url: '/dashboard/user-activity', + method: 'get', + params + }) +} + +// 获取图表数据(兼容旧接口) +export function getDashboardChartData(params) { + return request({ + url: '/dashboard/chart-data', + method: 'get', + params + }) +} + +// 获取设备统计(兼容旧接口) +export function getDashboardDeviceStats(params) { + return request({ + url: '/dashboard/device-stats', + method: 'get', + params + }) +} + +// 获取消息统计(兼容旧接口) +export function getDashboardMessageStats(params) { + return request({ + url: '/dashboard/message-stats', + method: 'get', + params + }) +} + +// 获取渠道统计(兼容旧接口) +export function getDashboardChannelStats(params) { + return request({ + url: '/dashboard/channel-stats', + method: 'get', + params + }) +} + +// 获取小时统计(兼容旧接口) +export function getDashboardHourlyStats(params) { + return request({ + url: '/dashboard/hourly-stats', + method: 'get', + params + }) +} + +// 获取应用统计(兼容旧接口) +export function getDashboardAppStats(params) { + return request({ + url: '/dashboard/app-stats', + method: 'get', + params + }) +} + +// 获取产品统计(兼容旧接口) +export function getDashboardProductStats(params) { + return request({ + url: '/dashboard/product-stats', + method: 'get', + params + }) +} + +// 获取规则统计(兼容旧接口) +export function getDashboardRuleStats(params) { + return request({ + url: '/dashboard/rule-stats', + method: 'get', + params + }) +} diff --git a/cn-universal-web-ui/src/api/gb/application.js b/cn-universal-web-ui/src/api/gb/application.js new file mode 100644 index 0000000000000000000000000000000000000000..acc624b587deccc3032c7f1ed48396039abf5a12 --- /dev/null +++ b/cn-universal-web-ui/src/api/gb/application.js @@ -0,0 +1,14 @@ +import request from '@/utils/request' + +/** + * 国标应用列表 + * @param {*} params + * @returns + */ +export function getGBAppList(params) { + return request({ + url: '/admin/wvpThirdApplication/page', + method: 'get', + params + }) +} diff --git a/cn-universal-web-ui/src/api/gb/camera.js b/cn-universal-web-ui/src/api/gb/camera.js new file mode 100644 index 0000000000000000000000000000000000000000..7f936f19c926ba9acd2861baa6412598a28a3f11 --- /dev/null +++ b/cn-universal-web-ui/src/api/gb/camera.js @@ -0,0 +1,310 @@ +import request from '@/utils/request' + +/** + * 查询摄像头列表 + * @param {*} query + * @returns + */ +export function getCameraList(query) { + return request({ + url: '/admin/wvpDevice/page', + method: 'get', + params: query + }) +} + +/** + * 添加摄像头 + * @param {*} data + * @returns + */ +export function addDevice(data) { + return request({ + url: '/admin/wvpDevice', + method: 'post', + data + }) +} + +/** + * 删除摄像头 + * @param {*} ids + * @returns + */ +export function removeDevice(ids) { + return request({ + url: `/admin/wvpDevice/${ids}`, + method: 'delete' + }) +} + +/** + * 修改摄像头 + * @param {*} data + * @returns + */ +export function modifyDevice(data) { + return request({ + url: `/admin/wvpDevice`, + method: 'put', + data + }) +} + +/** + * 查询设备详情 + * @param {*} id + * @returns + */ +export function deviceDetail(id) { + return request({ + url: `/admin/wvpDevice/${id}`, + method: 'get' + }) +} + +/** + * 查询流媒体节点 + */ +export function getMediaIds() { + return request({ + url: `/admin/wvpDevice/media`, + method: 'get' + }) +} + +/** + * 获取设备通道列表 + * @param {*} deviceId + * @returns + */ +export function getChannelList(deviceId) { + return request({ + url: `/admin/wvpDevice/channel/${deviceId}`, + method: 'get', + params: { + deviceId + } + }) +} + +/** + * 通道修改 + * @param {*} data + * @returns + */ +export function modifyChannel(data) { + return request({ + url: `/admin/wvpDevice/channel`, + method: 'put', + data + }) +} + +/** + * 摄像头取流 + * @param {*} deviceId + * @param {*} channelId + * @returns + */ +export function getPlayUrl(deviceId, channelId) { + return request({ + url: `/admin/wvpDevice/play/${deviceId}/${channelId}`, + method: 'get' + }) +} + +/** + * 停止取流 + * @param {*} deviceId + * @param {*} channelId + * @returns + */ +export function stopPlayLive(deviceId, channelId) { + return request({ + url: `/admin/wvpDevice/stop/${deviceId}/${channelId}`, + method: 'get' + }) +} + +/** + * 批量导入 + * @param {*} productKey + * @returns + */ +export function handleBatchImport(productKey, data) { + return request({ + url: `/admin/wvpDevice/import`, + method: 'post', + params: { + productKey + }, + data + }) +} + +/** + * 摄像头获取本地录像列表 + * @param {*} deviceId + * @param {*} channelId + * @param {*} startTime + * @param {*} endTime + * @returns + */ +export function getDeviceVideoTapeList(deviceId, channelId, startTime, + endTime) { + return request({ + url: `/admin/wvpDevice/local/record/list/${deviceId}/${channelId}`, + method: 'get', + params: { + startTime, + endTime + } + }) +} + +/** + * 获取本地录像段 + * @param {*} deviceId + * @param {*} channelId + * @param {*} startTime + * @param {*} endTime + * @returns + */ +export function getDeviceVideoTapeCtx(deviceId, channelId, startTime, endTime) { + return request({ + url: `/admin/wvpDevice/local/record/play/${deviceId}/${channelId}`, + method: 'get', + params: { + startTime, + endTime + } + }) +} + +/** + * 倍速播放本地录像 + * @param {*} deviceId + * @param {*} channelId + * @param {*} stream + * @param {*} speed + * @returns + */ +export function getScaleDeviceVideoTapeCtx(deviceId, channelId, stream, speed) { + return request({ + url: `/admin/wvpDevice/local/record/speed/${deviceId}/${channelId}/${stream}/${speed}`, + method: 'get' + }) +} + +/** + * 停止播放本地录像 + * @param {*} deviceId + * @param {*} channelId + * @param {*} stream + * @returns + */ +export function stopDeviceVideoTape(deviceId, channelId, stream) { + return request({ + url: `/admin/wvpDevice/local/record/stop/${deviceId}/${channelId}/${stream}`, + method: 'get' + }) +} + +/** + * 暂停播放本地录像 + * @param {*} deviceId + * @param {*} channelId + * @param {*} stream + * @returns + */ +export function pauseDeviceVideoTape(deviceId, channelId, stream) { + return request({ + url: `/admin/wvpDevice/local/record/pause/${deviceId}/${channelId}/${stream}`, + method: 'get' + }) +} + +/** + * 恢复播放本地录像 + * @param {*} deviceId + * @param {*} channelId + * @param {*} stream + * @returns + */ +export function resumeDeviceVideoTape(deviceId, channelId, stream) { + return request({ + url: `/admin/wvpDevice/local/record/resume/${deviceId}/${channelId}/${stream}`, + method: 'get' + }) +} + +/** + * 开始下载本地录像 + * @param {*} deviceId + * @param {*} channelId + * @param {*} startTime + * @param {*} endTime + * @param {*} downloadSpeed 倍速 + * @returns + */ +export function downloadDeviceVideoTape(deviceId, channelId, startTime, endTime, + downloadSpeed = 128) { + return request({ + url: `/admin/wvpDevice/local/record/download/start/${deviceId}/${channelId}`, + method: 'get', + params: { + startTime, + endTime, + downloadSpeed + } + }) +} + +/** + * 获取设备录像下载进度 + * @param {*} deviceId + * @param {*} channelId + * @param {*} stream + * @returns + */ +export function getDownloadDeviceProgress(deviceId, channelId, stream) { + return request({ + url: `/admin/wvpDevice/local/record/download/progress/${deviceId}/${channelId}/${stream}`, + method: 'get' + }) +} + +/** + * 摄像头获取云端录像列表 + * @param {*} deviceId + * @param {*} channelId + * @returns + */ +export function getCloudVideoTapeList(deviceId, channelId, startTime, endTime) { + return request({ + url: `/admin/wvpDevice/cloud/record/list/${deviceId}/${channelId}`, + method: 'get', + params: { + startTime, + endTime + } + }) +} + +/** + * 获取云端录像片段 + * @param {*} deviceId + * @param {*} channelId + * @param {*} recordId + * @returns + */ +export function getCloudVideoTapeCtx(deviceId, channelId, recordId) { + return request({ + url: `/admin/wvpDevice/cloud/record/play/${deviceId}/${channelId}`, + method: 'get', + params: { + recordId + } + }) +} diff --git a/cn-universal-web-ui/src/api/linkage/linkage.js b/cn-universal-web-ui/src/api/linkage/linkage.js new file mode 100644 index 0000000000000000000000000000000000000000..c333a902814c8a6007ab5214b4fd8fcb37152c35 --- /dev/null +++ b/cn-universal-web-ui/src/api/linkage/linkage.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 查询场景联动列表 +export function listLinkage(query) { + return request({ + url: '/admin/v1/scene/linkage/list', + method: 'get', + params: query + }) +} + +// 查询场景联动详细 +export function getLinkage(id) { + return request({ + url: '/admin/v1/scene/linkage/' + id, + method: 'get' + }) +} + +// 手动触发 +export function manualExec(id) { + return request({ + url: '/admin/v1/scene/linkage/exec/' + id, + method: 'get' + }) +} + +// 新增场景联动 +export function addLinkage(data) { + return request({ + url: '/admin/v1/scene/linkage', + method: 'post', + data: data + }) +} + +// 修改场景联动 +export function updateLinkage(data) { + return request({ + url: '/admin/v1/scene/linkage', + method: 'put', + data: data + }) +} + +// 删除场景联动 +export function delLinkage(id) { + return request({ + url: '/admin/v1/scene/linkage/' + id, + method: 'delete' + }) +} + +// 查询场景联动执行日志 +export function getLinkageLogs(sceneId, params = {}) { + return request({ + url: `/admin/v1/scene/linkage/log/${sceneId}`, + method: 'get', + params + }) +} diff --git a/cn-universal-web-ui/src/api/login.js b/cn-universal-web-ui/src/api/login.js new file mode 100644 index 0000000000000000000000000000000000000000..2ae25501887b73aa0ccd406a430fa58ac1afcfdd --- /dev/null +++ b/cn-universal-web-ui/src/api/login.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +const userApi = { + Login: '/oauth/token', + Logout: '/admin/logout', + Register: '/register', + // get my info + UserInfo: '/admin/getInfo' +} + +/** + * login func + * @param parameter + * @returns {*} + */ +export function login(parameter) { + return request({ + url: userApi.Login, + method: 'post', + data: parameter, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +// 注册方法 +export function register(data) { + return request({ + url: userApi.Register, + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +export function getInfo() { + return request({ + url: userApi.UserInfo, + method: 'get', + headers: { + 'Content-Type': 'application/json;charset=UTF-8' + } + }) +} + +export function logout() { + return request({ + url: userApi.Logout, + method: 'get' + }) +} + +// 获取验证码 +export function getCaptchaCode() { + return request({ + url: '/getCaptchaCode', + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/manage.js b/cn-universal-web-ui/src/api/manage.js new file mode 100644 index 0000000000000000000000000000000000000000..9f69d4118f8bb7f633067d40be6acb381f80a04a --- /dev/null +++ b/cn-universal-web-ui/src/api/manage.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +const api = { + user: '/user', + role: '/role', + service: '/service', + permission: '/permission', + permissionNoPager: '/permission/no-pager', + orgTree: '/org/tree' +} + +export default api + +export function getUserList(parameter) { + return request({ + url: api.user, + method: 'get', + params: parameter + }) +} + +export function getRoleList(parameter) { + return request({ + url: api.role, + method: 'get', + params: parameter + }) +} + +export function getServiceList(parameter) { + return request({ + url: api.service, + method: 'get', + params: parameter + }) +} + +export function getPermissions(parameter) { + return request({ + url: api.permissionNoPager, + method: 'get', + params: parameter + }) +} + +export function getOrgTree(parameter) { + return request({ + url: api.orgTree, + method: 'get', + params: parameter + }) +} + +// id == 0 add post +// id != 0 update put +export function saveService(parameter) { + return request({ + url: api.service, + method: parameter.id === 0 ? 'post' : 'put', + data: parameter + }) +} + +export function saveSub(sub) { + return request({ + url: '/sub', + method: sub.id === 0 ? 'post' : 'put', + data: sub + }) +} diff --git a/cn-universal-web-ui/src/api/menu.js b/cn-universal-web-ui/src/api/menu.js new file mode 100644 index 0000000000000000000000000000000000000000..9fc5b52350cabea6e714309964fb976daf3e5361 --- /dev/null +++ b/cn-universal-web-ui/src/api/menu.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 获取路由 +export const getRouters = () => { + return request({ + url: '/admin/getRouters', + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/message.js b/cn-universal-web-ui/src/api/message.js new file mode 100644 index 0000000000000000000000000000000000000000..727919c6b31e468fe860266a6e726b73e2a283a4 --- /dev/null +++ b/cn-universal-web-ui/src/api/message.js @@ -0,0 +1,123 @@ +import request from '@/utils/request' + +// 获取实时消息列表 +export function getRealtimeMessages(params) { + return request({ + url: '/api/messages/realtime', + method: 'get', + params + }) +} + +// 获取系统告警消息 +export function getAlertMessages(params) { + return request({ + url: '/api/messages/alerts', + method: 'get', + params + }) +} + +// 获取设备状态变更消息 +export function getDeviceStatusMessages(params) { + return request({ + url: '/api/messages/device-status', + method: 'get', + params + }) +} + +// 标记消息为已读 +export function markMessageRead(messageId) { + return request({ + url: `/api/messages/${messageId}/read`, + method: 'put' + }) +} + +// 批量标记消息为已读 +export function markMessagesRead(messageIds) { + return request({ + url: '/api/messages/batch-read', + method: 'put', + data: {messageIds} + }) +} + +// 删除消息 +export function deleteMessage(messageId) { + return request({ + url: `/api/messages/${messageId}`, + method: 'delete' + }) +} + +// 获取消息统计信息 +export function getMessageStats() { + return request({ + url: '/api/messages/stats', + method: 'get' + }) +} + +// 获取今日新增设备数量 +export function getTodayNewDevices() { + return request({ + url: '/api/devices/today-new-count', + method: 'get' + }) +} + +// 模拟API响应数据(用于开发测试) +export function getMockMessages() { + return new Promise((resolve) => { + setTimeout(() => { + resolve({ + code: 200, + data: [ + { + id: Date.now() + 1, + type: 'device', + title: '设备告警', + content: '温度传感器TH-002温度过高', + priority: 'high', + timestamp: new Date(), + deviceId: 'TH-002', + location: '机房B-02' + }, + { + id: Date.now() + 2, + type: 'system', + title: '系统更新', + content: '系统将在2小时后进行维护更新', + priority: 'normal', + timestamp: new Date() + }, + { + id: Date.now() + 3, + type: 'warning', + title: '网络延迟', + content: '检测到网络延迟异常', + priority: 'normal', + timestamp: new Date() + } + ] + }) + }, 1000) + }) +} + +// 模拟获取今日新增设备数量 +export function getMockTodayNewDevices() { + return new Promise((resolve) => { + setTimeout(() => { + resolve({ + code: 200, + data: { + count: Math.floor(Math.random() * 50) + 10, + increase: Math.floor(Math.random() * 10) + 1 + } + }) + }, 500) + }) +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/api/monitor/cache.js b/cn-universal-web-ui/src/api/monitor/cache.js new file mode 100644 index 0000000000000000000000000000000000000000..59d3505a4a4a2f66ffbad7f6566ed758eda15fa0 --- /dev/null +++ b/cn-universal-web-ui/src/api/monitor/cache.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 查询缓存详细 +export function getCache() { + return request({ + url: '/monitor/cache', + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/monitor/job.js b/cn-universal-web-ui/src/api/monitor/job.js new file mode 100644 index 0000000000000000000000000000000000000000..49671274e2bcbde8438cb9e85b6af321ad195595 --- /dev/null +++ b/cn-universal-web-ui/src/api/monitor/job.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +// 查询定时任务调度列表 +export function listJob(query) { + return request({ + url: '/monitor/job/list', + method: 'get', + params: query + }) +} + +// 查询定时任务调度详细 +export function getJob(jobId) { + return request({ + url: '/monitor/job/' + jobId, + method: 'get' + }) +} + +// 新增定时任务调度 +export function addJob(data) { + return request({ + url: '/monitor/job', + method: 'post', + data: data + }) +} + +// 修改定时任务调度 +export function updateJob(data) { + return request({ + url: '/monitor/job', + method: 'put', + data: data + }) +} + +// 删除定时任务调度 +export function delJob(jobId) { + return request({ + url: '/monitor/job/' + jobId, + method: 'delete' + }) +} + +// 任务状态修改 +export function changeJobStatus(jobId, status) { + const data = { + jobId, + status + } + return request({ + url: '/monitor/job/changeStatus', + method: 'put', + data: data + }) +} + +// 定时任务立即执行一次 +export function runJob(jobId, jobGroup) { + const data = { + jobId, + jobGroup + } + return request({ + url: '/monitor/job/run', + method: 'put', + data: data + }) +} diff --git a/cn-universal-web-ui/src/api/monitor/jobLog.js b/cn-universal-web-ui/src/api/monitor/jobLog.js new file mode 100644 index 0000000000000000000000000000000000000000..6e0be616660ca604184a539ba3eb9683e80b84b7 --- /dev/null +++ b/cn-universal-web-ui/src/api/monitor/jobLog.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 查询调度日志列表 +export function listJobLog(query) { + return request({ + url: '/monitor/jobLog/list', + method: 'get', + params: query + }) +} + +// 删除调度日志 +export function delJobLog(jobLogId) { + return request({ + url: '/monitor/jobLog/' + jobLogId, + method: 'delete' + }) +} + +// 清空调度日志 +export function cleanJobLog() { + return request({ + url: '/monitor/jobLog/clean', + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/monitor/logininfor.js b/cn-universal-web-ui/src/api/monitor/logininfor.js new file mode 100644 index 0000000000000000000000000000000000000000..516d998097357115a25ba62d584c3bf9db1e4337 --- /dev/null +++ b/cn-universal-web-ui/src/api/monitor/logininfor.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +// 查询登录日志列表 +export function list(query) { + return request({ + url: 'admin/monitor/logininfor/list', + method: 'get', + params: query + }) +} + +// 删除登录日志 +export function delLogininfor(infoId) { + return request({ + url: 'admin/monitor/logininfor/' + infoId, + method: 'delete' + }) +} + +// 清空登录日志 +export function cleanLogininfor() { + return request({ + url: 'admin/monitor/logininfor/clean', + method: 'delete' + }) +} + +// 导出登录日志 +export function exportLogininfor(query) { + return request({ + url: 'admin/monitor/logininfor/export', + method: 'get', + params: query + }) +} diff --git a/cn-universal-web-ui/src/api/monitor/online.js b/cn-universal-web-ui/src/api/monitor/online.js new file mode 100644 index 0000000000000000000000000000000000000000..bd22137809c26f7202b4794822c7829ff3577139 --- /dev/null +++ b/cn-universal-web-ui/src/api/monitor/online.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 查询在线用户列表 +export function list(query) { + return request({ + url: '/monitor/online/list', + method: 'get', + params: query + }) +} + +// 强退用户 +export function forceLogout(tokenId) { + return request({ + url: '/monitor/online/' + tokenId, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/monitor/operlog.js b/cn-universal-web-ui/src/api/monitor/operlog.js new file mode 100644 index 0000000000000000000000000000000000000000..7f9a11eb830c51f4b591f5a755c3aa63cbf49cbf --- /dev/null +++ b/cn-universal-web-ui/src/api/monitor/operlog.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +// 查询操作日志列表 +export function list(query) { + return request({ + url: 'admin/monitor/operlog/list', + method: 'get', + params: query + }) +} + +// 删除操作日志 +export function delOperlog(operId) { + return request({ + url: 'admin/monitor/operlog/' + operId, + method: 'delete' + }) +} + +// 清空操作日志 +export function cleanOperlog() { + return request({ + url: 'admin/monitor/operlog/clean', + method: 'delete' + }) +} + +// 导出操作日志 +export function exportOperlog(query) { + return request({ + url: 'admin/monitor/operlog/export', + method: 'get', + params: query + }) +} diff --git a/cn-universal-web-ui/src/api/monitor/server.js b/cn-universal-web-ui/src/api/monitor/server.js new file mode 100644 index 0000000000000000000000000000000000000000..bdcc62b00e29e567a2fdd45818e37e832825fa2d --- /dev/null +++ b/cn-universal-web-ui/src/api/monitor/server.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 查询服务器详细 +export function getServer() { + return request({ + url: '/monitor/server', + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/rule/rule.js b/cn-universal-web-ui/src/api/rule/rule.js new file mode 100644 index 0000000000000000000000000000000000000000..caffa0988df3588a8d667735a2339e33e00d0fed --- /dev/null +++ b/cn-universal-web-ui/src/api/rule/rule.js @@ -0,0 +1,80 @@ +import request from '@/utils/request' + +// 查询规则列表 +export function listRule(query) { + return request({ + url: '/admin/v1/rule/list', + method: 'get', + params: query + }) +} + +// 查询规则列表 +export function changeRuleStatus(data) { + return request({ + url: '/admin/v1/rule/status', + method: 'post', + data + }) +} + +// sql测试 +export function testRuleSql(data) { + return request({ + url: '/admin/v1/rule/sql/test', + method: 'post', + data + }) +} + +// 新增规则 +export function addRule(data) { + return request({ + url: '/admin/v1/rule', + method: 'post', + data + }) +} + +// 更新规则 +export function updateRule(data) { + return request({ + url: '/admin/v1/rule', + method: 'put', + data + }) +} + +// 更新规则调用目标 +export function updateRuleTargets(data) { + return request({ + url: '/admin/v1/rule/targets', + method: 'put', + data + }) +} + +// 根据id查询规则 +export function getRule(id) { + return request({ + url: '/admin/v1/rule?id=' + id, + method: 'get' + }) +} + +// 测试调用目标 +export function testTarget(data) { + return request({ + url: '/admin/v1/rule/target/test', + method: 'post', + data + }) +} + +// 删除规则 +export function deleteRule(id) { + return request({ + url: '/admin/v1/rule/' + id, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/rule/visualRuleFlow.js b/cn-universal-web-ui/src/api/rule/visualRuleFlow.js new file mode 100644 index 0000000000000000000000000000000000000000..b3a1fc99777f8b010e3fac27b718f7fc4ca6a990 --- /dev/null +++ b/cn-universal-web-ui/src/api/rule/visualRuleFlow.js @@ -0,0 +1,91 @@ +import request from '@/utils/request' + +// 创建规则流程 +export function createRuleFlow(data, creatorId) { + return request({ + url: '/admin/v1/rule/ruleflow/create', + method: 'post', + data: data, + params: {creatorId} + }) +} + +// 更新规则流程 +export function updateRuleFlow(data, creatorId) { + return request({ + url: '/admin/v1/rule/ruleflow/update', + method: 'put', + data: data, + params: {creatorId} + }) +} + +// 获取规则流程详情 +export function getRuleFlow(id, creatorId) { + return request({ + url: `/admin/v1/rule/ruleflow/${id}`, + method: 'get', + params: {creatorId} + }) +} + +// 删除规则流程 +export function deleteRuleFlow(id, creatorId) { + return request({ + url: `/admin/v1/rule/ruleflow/${id}`, + method: 'delete', + params: {creatorId} + }) +} + +// 获取规则流程列表 +export function listRuleFlows(creatorId, flowName, status) { + return request({ + url: '/admin/v1/rule/ruleflow/list', + method: 'get', + params: {creatorId, flowName, status} + }) +} + +// 启用/禁用规则流程 +export function changeRuleFlowStatus(id, status, creatorId) { + return request({ + url: `/admin/v1/rule/ruleflow/${id}/status`, + method: 'put', + params: {status, creatorId} + }) +} + +// 执行规则流程 +export function executeRuleFlow(data) { + return request({ + url: '/admin/v1/rule/ruleflow/execute', + method: 'post', + data: data + }) +} + +// 验证规则流程 +export function validateRuleFlow(flowData) { + return request({ + url: '/admin/v1/rule/ruleflow/validate', + method: 'post', + params: {flowData} + }) +} + +// 根据模板ID获取规则流程 +export function getRuleFlowsByTemplate(templateId) { + return request({ + url: `/admin/v1/rule/ruleflow/template/${templateId}`, + method: 'get' + }) +} + +// 根据产品KEY获取规则流程 +export function getRuleFlowsByProduct(productKey) { + return request({ + url: `/admin/v1/rule/ruleflow/product/${productKey}`, + method: 'get' + }) +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/api/rulego/chain.js b/cn-universal-web-ui/src/api/rulego/chain.js new file mode 100644 index 0000000000000000000000000000000000000000..2fe6ceffc13dcd3ee68add3cfe2907d573fe7179 --- /dev/null +++ b/cn-universal-web-ui/src/api/rulego/chain.js @@ -0,0 +1,85 @@ +import request from '@/utils/request' + +// 查询规则链列表 +export function listChain(query) { + return request({ + url: '/admin/v1/rulego/chain/list', + method: 'get', + params: query + }) +} + +// 查询规则链详细 +export function getChain(id) { + return request({ + url: '/admin/v1/rulego/chain/' + id, + method: 'get' + }) +} + +// 根据rulegoId查询规则链详细 +export function getChainByRulegoId(rulegoId) { + return request({ + url: '/admin/v1/rulego/chain/detail', + method: 'get', + params: { rulegoId } + }) +} + +// 新增规则链 +export function addChain(data) { + return request({ + url: '/admin/v1/rulego/chain', + method: 'post', + data: data + }) +} + +// 修改规则链 +export function updateChain(data) { + return request({ + url: '/admin/v1/rulego/chain', + method: 'put', + data: data + }) +} + +// 删除规则链 +export function delChain(id) { + return request({ + url: '/admin/v1/rulego/chain/' + id, + method: 'delete' + }) +} + +// 部署规则链 +export function deployChain(id) { + return request({ + url: '/admin/v1/rulego/chain/' + id + '/deploy', + method: 'post' + }) +} + +// 停止规则链 +export function stopChain(id) { + return request({ + url: '/admin/v1/rulego/chain/' + id + '/stop', + method: 'post' + }) +} + +// 同步规则链DSL +export function syncChain(id) { + return request({ + url: '/admin/v1/rulego/chain/' + id + '/sync', + method: 'post' + }) +} + +// 获取设计器URL +export function getDesignerUrl(id) { + return request({ + url: '/admin/v1/rulego/chain/' + id + '/designer', + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/sale/sale.js b/cn-universal-web-ui/src/api/sale/sale.js new file mode 100644 index 0000000000000000000000000000000000000000..3aa044130d8c5b2fa6bff92b39f0d8cd7ead202e --- /dev/null +++ b/cn-universal-web-ui/src/api/sale/sale.js @@ -0,0 +1,80 @@ +import request from '@/utils/request' + +// 查询sale列表 +export function listSale(query) { + return request({ + url: '/admin/sale/list', + method: 'get', + params: query + }) +} + +// 查询sale详细 +export function getSale(id) { + return request({ + url: '/admin/sale/' + id, + method: 'get' + }) +} + +// 新增sale +export function addSale(data) { + return request({ + url: '/admin/sale', + method: 'post', + data: data + }) +} + +// 修改sale +export function updateSale(data) { + return request({ + url: '/admin/sale', + method: 'put', + data: data + }) +} + +// 删除sale +export function delSale(id) { + return request({ + url: '/admin/sale/' + id, + method: 'delete' + }) +} + +// 设备导入 +export function importDevice(data) { + return request({ + url: '/admin/sale/import', + method: 'post', + data + // headers: { + // 'Content-Type': 'application/x-www-form-urlencoded' + // } + }) +} + +// 修改出售设备记录 +export function editSaleDevice(id, data) { + return request({ + url: '/admin/sale/edit/sale/' + id, + method: 'put', + data + // headers: { + // 'Content-Type': 'application/x-www-form-urlencoded' + // } + }) +} + +// 出售设备 +export function saleDevice(ids, data) { + return request({ + url: '/admin/sale/bulk/sale/' + ids, + method: 'put', + data + // headers: { + // 'Content-Type': 'application/x-www-form-urlencoded' + // } + }) +} diff --git a/cn-universal-web-ui/src/api/system/certificate.js b/cn-universal-web-ui/src/api/system/certificate.js new file mode 100644 index 0000000000000000000000000000000000000000..6f859d6577dea004deee78bb1ad9a516005bed44 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/certificate.js @@ -0,0 +1,83 @@ +import request from '@/utils/request' + +// 获取证书列表(分页/多条件) +export function getCertificateList(params) { + return request({ + url: '/admin/v1/certificate/list', + method: 'get', + params // 支持name、sslKey、expireStart、expireEnd、pageNum、pageSize + }) +} + +// 新增证书(内容直传) +export function addCertificate(data) { + return request({ + url: '/admin/v1/certificate/add', + method: 'post', + data // JSON: sslKey, name, certContent, keyContent, expireTime, ... + }) +} + +// 上传证书文件(推荐) +export function uploadCertificateFile(formData) { + return request({ + url: '/admin/v1/certificate/uploadFile', + method: 'post', + data: formData, + headers: {'Content-Type': 'multipart/form-data'} + }) +} + +// 上传证书内容(文本) +export function uploadCertificateContent(data) { + return request({ + url: '/admin/v1/certificate/uploadContent', + method: 'post', + data // form-data或JSON: sslKey, certContent, keyContent, name + }) +} + +// 获取证书详情 +export function getCertificateDetail(sslKey) { + return request({ + url: '/admin/v1/certificate/get', + method: 'get', + params: {sslKey} + }) +} + +// 更新证书 +export function updateCertificate(data) { + return request({ + url: '/admin/v1/certificate/update', + method: 'post', + data // 同新增,需sslKey + }) +} + +// 删除证书(单个) +export function deleteCertificate(id) { + return request({ + url: '/admin/v1/certificate/delete', + method: 'post', + params: {id} // 直接作为URL参数传递 + }) +} + +// 绑定证书到产品 +export function bindCertificate(productKey, sslKey) { + return request({ + url: '/admin/v1/product/bindCertificate', + method: 'post', + params: {productKey, sslKey} + }) +} + +// 解绑证书 +export function unbindCertificate(productKey) { + return request({ + url: '/admin/v1/product/unbindCertificate', + method: 'post', + params: {productKey} + }) +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/api/system/config.js b/cn-universal-web-ui/src/api/system/config.js new file mode 100644 index 0000000000000000000000000000000000000000..6f5867a33381c7d690086b80053ec860d93135ee --- /dev/null +++ b/cn-universal-web-ui/src/api/system/config.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询参数列表 +export function listConfig(query) { + return request({ + url: '/admin/system/config/list', + method: 'get', + params: query + }) +} + +// 查询参数详细 +export function getConfig(configId) { + return request({ + url: '/admin/system/config/' + configId, + method: 'get' + }) +} + +// 根据参数键名查询参数值 +export function getConfigKey(configKey) { + return request({ + url: '/admin/system/config/configKey/' + configKey, + method: 'get' + }) +} + +// 新增参数配置 +export function addConfig(data) { + return request({ + url: '/admin/system/config', + method: 'post', + data: data + }) +} + +// 修改参数配置 +export function updateConfig(data) { + return request({ + url: '/admin/system/config', + method: 'put', + data: data + }) +} + +// 删除参数配置 +export function delConfig(configId) { + return request({ + url: '/admin/system/config/' + configId, + method: 'delete' + }) +} + +// 刷新参数缓存 +export function refreshCache() { + return request({ + url: '/admin/system/config/refreshCache', + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dept.js b/cn-universal-web-ui/src/api/system/dept.js new file mode 100644 index 0000000000000000000000000000000000000000..c4dbafced59d235c9186220a66c0138764d4f90d --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dept.js @@ -0,0 +1,68 @@ +import request from '@/utils/request' + +// 查询部门列表 +export function listDept(query) { + return request({ + url: '/system/dept/list', + method: 'get', + params: query + }) +} + +// 查询部门列表(排除节点) +export function listDeptExcludeChild(deptId) { + return request({ + url: '/system/dept/list/exclude/' + deptId, + method: 'get' + }) +} + +// 查询部门详细 +export function getDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'get' + }) +} + +// 查询部门下拉树结构 +export function treeselect() { + return request({ + url: '/system/dept/treeselect', + method: 'get' + }) +} + +// 根据角色ID查询部门树结构 +export function roleDeptTreeselect(roleId) { + return request({ + url: '/system/dept/roleDeptTreeselect/' + roleId, + method: 'get' + }) +} + +// 新增部门 +export function addDept(data) { + return request({ + url: '/system/dept', + method: 'post', + data: data + }) +} + +// 修改部门 +export function updateDept(data) { + return request({ + url: '/system/dept', + method: 'put', + data: data + }) +} + +// 删除部门 +export function delDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/batch.js b/cn-universal-web-ui/src/api/system/dev/batch.js new file mode 100644 index 0000000000000000000000000000000000000000..65b90d8be8d4f3f5d661e6e07469f10b2daf05f7 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/batch.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +// 批量配置列表 +export function listBatchConfig(params) { + return request({ + url: '/admin/v1/function/batch/dev/list', + method: 'get', + params + }) +} + +// 获取应用列表 +export function listApp(appName) { + return request({ + url: '/admin/v1/function/batch/application/list', + method: 'get', + params: { + appName + } + }) +} + +// 获取产品列表 +export function listProduct(id) { + return request({ + url: `/admin/v1/function/batch/product/list/${id}`, + method: 'get' + }) +} + +// 新建批量下发任务 +export function batchConfigTask(data) { + return request({ + url: `/admin/v1/function/batch/task`, + method: 'post', + data + }) +} + +// 查询任务列表 +export function batchTaskList(params) { + return request({ + url: `/admin/v1/function/batch/task/list`, + method: 'get', + params + }) +} + +// 根据任务id查询下发历史列表 +export function queryTaskById(params) { + return request({ + url: `/admin/v1/function/batch/task/history`, + method: 'get', + params + }) +} + +// 重新下发任务 +export function reConfigTask(data) { + return request({ + url: `/admin/v1/function/batch/task/retry`, + method: 'post', + data + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/devGroup.js b/cn-universal-web-ui/src/api/system/dev/devGroup.js new file mode 100644 index 0000000000000000000000000000000000000000..8a23896b88b775d50de62c16a443ef47eb6f138b --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/devGroup.js @@ -0,0 +1,87 @@ +import request from '@/utils/request' + +// 查询分组树 +export function listGroup() { + return request({ + url: '/admin/v1/instance/group/list', + method: 'get' + }).then(response => { + const nodes = response.data.map(node => { + return buildTreeNode(node) + }) + return nodes + }) +} + +function buildTreeNode(node) { + node.key = node.id + node.value = node.id + node.title = node.groupName + node.label = node.groupName + if (node.children) { + node.children.forEach(n => { + return buildTreeNode(n) + }) + } + return node +} + +// 查询分组详情 +export function getGroup(id) { + return request({ + url: '/admin/v1/instance/group/' + id, + method: 'get' + }) +} + +// 新增分组 +export function addGroup(data) { + return request({ + url: '/admin/v1/instance/group', + method: 'post', + data: data + }) +} + +// 修改分组 +export function updateGroup(data) { + return request({ + url: '/admin/v1/instance/group', + method: 'put', + data: data + }) +} + +// 删除分组 +export function delGroup(id) { + return request({ + url: '/admin/v1/instance/group/' + id, + method: 'delete' + }) +} + +// 批量绑定设备 +export function bindsDev(data) { + return request({ + url: '/admin/v1/instance/group/binds', + method: 'post', + data: data + }) +} + +// 查询分组id下的设备列表 +export function deviceListByGroupId(data) { + return request({ + url: '/admin/v1/instance/group/device/list', + method: 'get', + params: data + }) +} + +// 删除分组中的设备 +export function delDevByGroupId(groupId, devId) { + return request({ + url: '/admin/v1/instance/group/' + groupId + '/' + devId, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/deviceLog.js b/cn-universal-web-ui/src/api/system/dev/deviceLog.js new file mode 100644 index 0000000000000000000000000000000000000000..62d62a8d74e5be4a99a8e6c1de9141e3936e902f --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/deviceLog.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +// 获取设备日志 +export function listDeviceMetaV2(query) { + return request({ + url: '/admin/v2/device/log/meta/list', + method: 'get', + params: query + }) +} + +// 获取设备事件统计信息 +export function getEventTotalV2(productKey, iotId) { + return request({ + url: '/admin/v2/device/log/event/total/' + productKey + '/' + iotId, + method: 'get' + }) +} + +// 获取设备日志 +export function listDeviceLog(query) { + return request({ + url: '/admin/v2/device/log/list', + method: 'get', + params: query + }) +} + +// 获取设备事件统计信息 +export function getEventTotal(productKey, iotId) { + return request({ + url: '/admin/v2/device/log/event/total/' + productKey + '/' + iotId, + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/instance.js b/cn-universal-web-ui/src/api/system/dev/instance.js new file mode 100644 index 0000000000000000000000000000000000000000..1e2ae9e6542cc2282b6c29661b9e176db29880f8 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/instance.js @@ -0,0 +1,102 @@ +import request from '@/utils/request' + +export function getModels(params) { + return request({ + url: '/admin/v1/device/models', method: 'get', params + }).then(response => { + return response.data + }) +} + +// 查询设备列表 +export function listInstance(query) { + return request({ + url: '/admin/v1/device/list', method: 'get', params: query + }) +} + +// 新:按第三方平台过滤的设备列表(用于萤石/乐橙) +export function listInstanceByPlatform(query) { + return request({ + url: '/admin/v1/device/listByPlatform', method: 'get', params: query + }) +} + +// 查询分组未绑定设备列表 +export function listNotBindInstance(query, groupId) { + return request({ + url: '/admin/v1/device/list/' + groupId, method: 'get', params: query + }) +} + +// 查询未绑定设备列表 +export function listUnInstance(query) { + return request({ + url: '/admin/v1/device/unlist', method: 'get', params: query + }) +} + +// 查询设备详细 +export function getInstance(id) { + return request({ + url: '/admin/v1/device/' + id, method: 'get' + }) +} + +// 新增设备 +export function addInstance(data) { + return request({ + url: '/admin/v1/device', method: 'post', data: data + }) +} + +// 修改设备 +export function updateInstance(data) { + return request({ + url: '/admin/v1/device', method: 'put', data: data + }) +} + +// 绑定平台 +export function bindInstance(data) { + return request({ + url: '/admin/v1/device/app', method: 'put', data: data + }) +} + +// 删除设备 +export function delInstance(id) { + return request({ + url: '/admin/v1/device/' + id, method: 'delete' + }) +} + +// 设备功能下发(未加密) +export function functionDown(productKey, data) { + return request({ + url: '/admin/v1/device/down/' + productKey, method: 'post', data: data + }) +} + +// 设备上行调试(模拟) +export function upValue(productKey, data) { + return request({ + url: '/admin/v1/device/up/' + productKey, method: 'post', data: data + }) +} + +// 根据productKey查询设备型号 +export function getmodel(productKey, data) { + return request({ + url: '/admin/v1/device/model/' + productKey, method: 'get', data: data + }) +} + +// 设备导入 +export function importDevice(data, productKey, iotId) { + return request({ + url: '/admin/v1/device/import', method: 'post', data: data, params: { + productKey, iotId + } + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/product.js b/cn-universal-web-ui/src/api/system/dev/product.js new file mode 100644 index 0000000000000000000000000000000000000000..8c93a3fafc959014268bf3914b7368bf129ccf6b --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/product.js @@ -0,0 +1,333 @@ +import request from '@/utils/request' + +// 更新网络状态,必须传产品主键id和networnUnionId +export function updateProductNetworkUnionId(data) { + return request({ + url: '/admin/v1/product/updateNetworkUnionId', + method: 'post', + data: data + }) +} + +// 查询设备产品列表 +export function searchProduct(query) { + return request({ + url: '/admin/v1/product/search', + method: 'get', + params: query + }) +} + +// 查询设备产品列表 +export function listProduct(query) { + return request({ + url: '/admin/v1/product/v4/list', + method: 'get', + params: query + }) +} + +// 查询设备所有产品列表 +export function listAllProduct() { + return request({ + url: '/admin/v1/product/all/list', + method: 'get' + }) +} + +// 通过ProductKey查询产品详情 +export function getProByKey(key) { + return request({ + url: '/admin/v1/product/get/pro/' + key, + method: 'get' + }) +} + +// 获取产品连接信息 +export function getProductConnectInfo(productKey) { + return request({ + url: '/admin/v1/product/connect/info', + method: 'post', + params: { productKey } + }) +} + +// 获取产品MQTT密码 +export function getProductMqttPassword(productKey) { + return request({ + url: '/admin/v1/product/connect/mqtt/password', + method: 'post', + params: { productKey } + }) +} + +// 查询设备产品列表 +export function queryProductList(query) { + return request({ + url: '/admin/v1/product/v4/list', + method: 'get', + params: query + }) +} + +// 查询设备产品详细 +export function getProduct(id) { + return request({ + url: '/admin/v1/product/' + id, + method: 'get' + }) +} + +// 新增设备产品 +export function getPublicProduct(data) { + return request({ + url: '/admin/v1/product/ctwing/pubpro', + method: 'post', + data: data + }) +} + +// 新增设备产品 +export function addProduct(data) { + return request({ + url: '/admin/v1/product', + method: 'post', + data: data + }) +} + +// 电信新增设备产品 +export function addProductCtwing(data) { + return request({ + url: '/admin/v1/product/nb', + method: 'post', + data: data + }) +} + +// 电信新增公共产品 +export function addCtwingPubPro(data) { + return request({ + url: '/admin/v1/product/ctwing/pubproadd', + method: 'post', + data: data + }) +} + +// 修改设备产品 +export function updateProduct(data) { + return request({ + url: '/admin/v1/product', + method: 'put', + data: data + }) +} + +// 修改设备产品状态 +export function updateProductState(id, state) { + const data = { + id, + state + } + return request({ + url: '/admin/v1/product', + method: 'put', + data: data + }) +} + +// 查询菜单下拉树结构 +export function treeselect() { + return request({ + url: '/admin/sort/treeselect', + method: 'get' + }) +} + +// 删除设备产品 +export function delProduct(id) { + return request({ + url: '/admin/v1/product/' + id, + method: 'delete' + }) +} + +// 修改设备产品 +export function updateConfig(data) { + return request({ + url: '/admin/v1/product/config', + method: 'put', + data: data + }) +} + +// 修改产品其他配置信息 +export function updateOtherConfig(data) { + return request({ + url: '/admin/v1/product/otherConfig', + method: 'put', + data: data + }) +} + +// 修改设备产品 +export function updateStoreConfig(data) { + return request({ + url: '/admin/v1/product/storeConfig', + method: 'put', + data: data + }) +} + +// 查询model +export function getModel(id) { + return request({ + url: '/admin/v1/product/model/' + id, + method: 'get' + }) +} + +// 查询设备产品物模型属性列表 +export function getPropertiesList(id) { + return request({ + url: '/admin/v1/product/properties/' + id, + method: 'get' + }) +} + +// 查询设备产品物模型属性列表(功能下发属性) +export function getFunctionPropertiesList(id) { + return request({ + url: '/admin/v1/product/functionProperties/' + id, + method: 'get' + }) +} + +// 查询设备产品物模型事件列表 +export function getEventsList(id) { + return request({ + url: '/admin/v1/product/events/' + id, + method: 'get' + }) +} + +// 根据设备id查询物模型 +export function getMeta(devId) { + return request({ + url: '/admin/v1/product/metadata/' + devId, + method: 'get' + }) +} + +// 查询设备产品物模型方法列表 +export function getFunctionsList(id) { + return request({ + url: '/admin/v1/product/functions/' + id, + method: 'get' + }) +} + +// 查询设备产品对应设备数量 +export function getDevNumByProduct() { + return request({ + url: '/admin/v1/product/device/count', + method: 'get' + }) +} + +// 物模型字段新增 +export function metadataAdd(data) { + return request({ + url: '/admin/v1/product/metadata/add', + method: 'post', + data: data + }) +} + +// 物模型字段修改 +export function metadataUpdate(data) { + return request({ + url: '/admin/v1/product/metadata/update', + method: 'post', + data: data + }) +} + +// 物模型字段查询 +export function metadataGet(data) { + return request({ + url: '/admin/v1/product/metadata/get', + method: 'post', + data: data + }) +} + +// 物模型字段删除 +export function metadataDelete(data) { + return request({ + url: '/admin/v1/product/metadata/delete', + method: 'post', + data: data + }) +} + +// 产品导入 +export function importProduct(data) { + return request({ + url: '/admin/v1/product/import', + method: 'post', + data + }) +} + +// 上传产品图片 +export function uploadProductImage(formData) { + return request({ + url: '/admin/v1/product/uploadImage', + method: 'post', + data: formData, + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +// 查询可绑定网关产品列表 +export function gatewayList() { + return request({ + url: '/admin/v1/product/gateway/list', + method: 'get' + }) +} + +// 修改产品对应网关信息 +export function modifyProductGateway(id, gwProductKey) { + return request({ + url: '/admin/v1/product/gateway', + method: 'put', + data: { + id, + gwProductKey + } + }) +} + +// 修改产品对应网关信息 +export function getInstanceGateway(productKey) { + return request({ + url: `/admin/v1/device/gateway/${productKey}`, + method: 'get' + }) +} +// 通过ProductKey查询产品详情 +export function getGatewaySubProducts(key) { + return request({ + url: '/admin/v1/product/gateway/subProducts/' + key, + method: 'get' + }) +} +// 查询可绑定网关子设备产品列表 +export function getSubdeviceGateways(productKey) { + return request({ + url: `/admin/v1/product/sub/device/${productKey}`, + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/shadow.js b/cn-universal-web-ui/src/api/system/dev/shadow.js new file mode 100644 index 0000000000000000000000000000000000000000..f31d478197d762c7811ad4d35ac58e214088a983 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/shadow.js @@ -0,0 +1,16 @@ +// 查询设备影子信息 +import request from '@/utils/request' + +export function devListShadow(id) { + return request({ + url: '/iot/device/shadow/' + id, + method: 'get' + }) +} + +export function getDeviceShadow(id) { + return request({ + url: '/admin/v1/device/shadow/' + id, + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/sort.js b/cn-universal-web-ui/src/api/system/dev/sort.js new file mode 100644 index 0000000000000000000000000000000000000000..530e7d6864d32c74e74d21409c03db3650d8c52c --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/sort.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询产品分类列表 +export function listSort(query) { + return request({ + url: '/admin/sort/list', + method: 'get', + params: query + }) +} + +// 查询产品分类详细 +export function getSort(id) { + return request({ + url: '/admin/sort/' + id, + method: 'get' + }) +} + +// 查询产品分类详细 +export function getInfo(data) { + return request({ + url: '/admin/sort/info', + method: 'post', + data: data + }) +} + +// 新增产品分类 +export function addSort(data) { + return request({ + url: '/admin/sort', + method: 'post', + data: data + }) +} + +// 修改产品分类 +export function updateSort(data) { + return request({ + url: '/admin/sort', + method: 'put', + data: data + }) +} + +// 删除产品分类 +export function delSort(id) { + return request({ + url: '/admin/sort/' + id, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dev/subscribe.js b/cn-universal-web-ui/src/api/system/dev/subscribe.js new file mode 100644 index 0000000000000000000000000000000000000000..1856392eb3bb751f827f67cd3f4fd9025460c244 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dev/subscribe.js @@ -0,0 +1,45 @@ +import request from '@/utils/request' + +// 查询订阅列表 +export function listSubscribe(query) { + return request({ + url: '/admin/v1/subscribe/list', + method: 'get', + params: query + }) +} + +// 查看订阅详情 +export function getSubscribe(id) { + return request({ + url: '/admin/v1/subscribe/' + id, + method: 'get' + }) +} + +// 新增订阅 +export function addSubscribe(data) { + return request({ + url: '/admin/v1/subscribe/add', + method: 'post', + data: data + }) +} + +// 修改订阅 +export function updateSubscribe(data) { + return request({ + url: '/admin/v1/subscribe/update', + method: 'post', + data: data + }) +} + +// 删除订阅 +export function deleteSubscribe(iotId, pro, data) { + return request({ + url: '/admin/v1/subscribe/delete/' + pro + '/' + iotId, + method: 'post', + data: data + }) +} diff --git a/cn-universal-web-ui/src/api/system/dict/data.js b/cn-universal-web-ui/src/api/system/dict/data.js new file mode 100644 index 0000000000000000000000000000000000000000..53a1c8cdf8246f541ba8e7f79775924e5c439b4f --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dict/data.js @@ -0,0 +1,69 @@ +import request from '@/utils/request' + +// 查询字典数据列表 +export function listData(query) { + return request({ + url: '/admin/system/dict/data/list', + method: 'get', + params: query + }) +} + +// 查询字典数据详细 +export function getData(dictCode) { + return request({ + url: '/admin/system/dict/data/' + dictCode, + method: 'get' + }) +} + +// 根据字典类型查询字典数据信息 +export function getDicts(dictType) { + return request({ + url: '/admin/system/dict/data/type/' + dictType, + method: 'get' + }) +} + +// 根据字典类型数组查询字典数据信息 +export function getDictMap(dictTypes) { + return request({ + url: '/admin/system/dict/data/types/' + dictTypes, + method: 'get' + }) +} + +// 新增字典数据 +export function addData(data) { + return request({ + url: '/admin/system/dict/data', + method: 'post', + data: data + }) +} + +// 新增字典数据(销售购买人员数据) +export function addSaleBuyPersonData(data) { + return request({ + url: '/admin/system/dict/data/sale', + method: 'post', + data: data + }) +} + +// 修改字典数据 +export function updateData(data) { + return request({ + url: '/admin/system/dict/data', + method: 'put', + data: data + }) +} + +// 删除字典数据 +export function delData(dictCode) { + return request({ + url: '/admin/system/dict/data/' + dictCode, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/dict/type.js b/cn-universal-web-ui/src/api/system/dict/type.js new file mode 100644 index 0000000000000000000000000000000000000000..254db3c09e8352fd49d3f8f90c6fe5ef2a6bf9c1 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/dict/type.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询字典类型列表 +export function listType(query) { + return request({ + url: '/admin/system/dict/type/list', + method: 'get', + params: query + }) +} + +// 查询字典类型详细 +export function getType(dictId) { + return request({ + url: '/admin/system/dict/type/' + dictId, + method: 'get' + }) +} + +// 新增字典类型 +export function addType(data) { + return request({ + url: '/admin/system/dict/type', + method: 'post', + data: data + }) +} + +// 修改字典类型 +export function updateType(data) { + return request({ + url: '/admin/system/dict/type', + method: 'put', + data: data + }) +} + +// 删除字典类型 +export function delType(dictId) { + return request({ + url: '/admin/system/dict/type/' + dictId, + method: 'delete' + }) +} + +// 刷新参数缓存 +export function refreshCache() { + return request({ + url: '/admin/system/dict/type/refreshCache', + method: 'delete' + }) +} + +// 获取字典选择框列表 +export function optionselect() { + return request({ + url: '/admin/system/dict/type/optionselect', + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/api/system/logininfor.js b/cn-universal-web-ui/src/api/system/logininfor.js new file mode 100644 index 0000000000000000000000000000000000000000..32116991c37abe4fa05698ac8adecd0f1a006835 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/logininfor.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 查询登录日志列表 +export function list(query) { + return request({ + url: '/system/monitor/logininfor/list', + method: 'get', + params: query + }) +} + +// 删除登录日志 +export function delLogininfor(infoId) { + return request({ + url: '/system/monitor/logininfor/' + infoId, + method: 'delete' + }) +} + +// 清空登录日志 +export function cleanLogininfor() { + return request({ + url: '/system/monitor/logininfor/clean', + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/menu.js b/cn-universal-web-ui/src/api/system/menu.js new file mode 100644 index 0000000000000000000000000000000000000000..1c84762c914b6e0d30c4361cbea879ca25994a71 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/menu.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询菜单列表 +export function listMenu(query) { + return request({ + url: '/admin/system/menu/list', + method: 'get', + params: query + }) +} + +// 查询菜单详细 +export function getMenu(menuId) { + return request({ + url: '/admin/system/menu/' + menuId, + method: 'get' + }) +} + +// 查询菜单下拉树结构 +export function treeselect() { + return request({ + url: '/admin/system/menu/treeselect', + method: 'get' + }) +} + +// 根据角色ID查询菜单下拉树结构 +export function roleMenuTreeselect(roleId) { + return request({ + url: '/admin/system/menu/roleMenuTreeselect/' + roleId, + method: 'get' + }) +} + +// 新增菜单 +export function addMenu(data) { + return request({ + url: '/admin/system/menu', + method: 'post', + data: data + }) +} + +// 修改菜单 +export function updateMenu(data) { + return request({ + url: '/admin/system/menu', + method: 'put', + data: data + }) +} + +// 删除菜单 +export function delMenu(menuId) { + return request({ + url: '/admin/system/menu/' + menuId, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/network.js b/cn-universal-web-ui/src/api/system/network.js new file mode 100644 index 0000000000000000000000000000000000000000..8c9051c40aefff02ec545b593f7252a8d479fd8d --- /dev/null +++ b/cn-universal-web-ui/src/api/system/network.js @@ -0,0 +1,93 @@ +import request from '@/utils/request' + +// 查询网络组件列表 +export function listNetwork(query) { + return request({ + url: '/admin/network/list', + method: 'get', + params: query + }) +} + +// 查询网络组件详细 +export function getNetwork(id) { + return request({ + url: '/admin/network/' + id, + method: 'get' + }) +} + +// 新增网络组件 +export function addNetwork(data) { + return request({ + url: '/admin/network', + method: 'post', + data: data + }) +} + +// 修改网络组件 +export function updateNetwork(data) { + return request({ + url: '/admin/network', + method: 'put', + data: data + }) +} + +// 删除网络组件 +export function delNetwork(id) { + return request({ + url: '/admin/network/' + id, + method: 'delete' + }) +} + +// 批量删除网络组件 +export function delNetworkBatch(ids) { + return request({ + url: '/admin/network/batch/' + ids, + method: 'delete' + }) +} + +// 启动网络组件 +export function startNetwork(id) { + return request({ + url: '/admin/network/start/' + id, + method: 'post' + }) +} + +// 停止网络组件 +export function stopNetwork(id) { + return request({ + url: '/admin/network/stop/' + id, + method: 'post' + }) +} + +// 重启网络组件 +export function restartNetwork(id) { + return request({ + url: '/admin/network/restart/' + id, + method: 'post' + }) +} + +// 获取网络类型列表 +export function getNetworkTypes() { + return request({ + url: '/admin/network/types', + method: 'get' + }) +} + +// 验证网络组件配置 +export function validateNetwork(data) { + return request({ + url: '/admin/network/validate', + method: 'post', + data: data + }) +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/api/system/notice.js b/cn-universal-web-ui/src/api/system/notice.js new file mode 100644 index 0000000000000000000000000000000000000000..d61a8102dc683a2794018b698d9b184a771a75ff --- /dev/null +++ b/cn-universal-web-ui/src/api/system/notice.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询公告列表 +export function listNotice(query) { + return request({ + url: '/system/notice/list', + method: 'get', + params: query + }) +} + +// 查询公告详细 +export function getNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'get' + }) +} + +// 新增公告 +export function addNotice(data) { + return request({ + url: '/system/notice', + method: 'post', + data: data + }) +} + +// 修改公告 +export function updateNotice(data) { + return request({ + url: '/system/notice', + method: 'put', + data: data + }) +} + +// 删除公告 +export function delNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/noticeManager.js b/cn-universal-web-ui/src/api/system/noticeManager.js new file mode 100644 index 0000000000000000000000000000000000000000..e1042f77b2e7e9f156624230e8b1bb7e73ab147c --- /dev/null +++ b/cn-universal-web-ui/src/api/system/noticeManager.js @@ -0,0 +1,119 @@ +import request from '@/utils/request' + +// 通知渠道管理 +export function listNoticeChannel(query) { + return request({ + url: '/admin/v1/notice/channel/list', + method: 'get', + params: query + }) +} + +export function getNoticeChannel(id) { + return request({ + url: '/admin/v1/notice/channel/get', + method: 'get', + params: {id} + }) +} + +export function saveNoticeChannel(data) { + return request({ + url: '/admin/v1/notice/channel/save', + method: 'post', + data: data + }) +} + +export function deleteNoticeChannel(ids) { + const idsArray = Array.isArray(ids) ? ids : [ids]; + + return request({ + url: '/admin/v1/notice/channel/delete', + method: 'post', + headers: { + 'Content-Type': 'application/json' // 显式设置Content-Type为JSON + }, + data: idsArray // 直接传递数组 + }) +} + +// 通知模板管理 +export function listNoticeTemplate(query) { + return request({ + url: '/admin/v1/notice/template/list', + method: 'get', + params: query + }) +} + +export function getNoticeTemplate(id) { + return request({ + url: '/admin/v1/notice/template/get', + method: 'get', + params: {id} + }) +} + +export function saveNoticeTemplate(data) { + return request({ + url: '/admin/v1/notice/template/save', + method: 'post', + data: data + }) +} + +export function deleteNoticeTemplate(ids) { + const idsArray = Array.isArray(ids) ? ids : [ids]; + + return request({ + url: '/admin/v1/notice/template/delete', + method: 'post', + headers: { + 'Content-Type': 'application/json' // 显式设置Content-Type为JSON + }, + data: idsArray // 直接传递数组 + }) +} + +// 批量启用通知模板 +export function enableNoticeTemplate(ids) { + const idsArray = Array.isArray(ids) ? ids : [ids]; + return request({ + url: '/admin/v1/notice/template/enable', + method: 'post', + headers: { + 'Content-Type': 'application/json' + }, + data: idsArray + }) +} + +// 批量停用通知模板 +export function disableNoticeTemplate(ids) { + const idsArray = Array.isArray(ids) ? ids : [ids]; + return request({ + url: '/admin/v1/notice/template/disable', + method: 'post', + headers: { + 'Content-Type': 'application/json' + }, + data: idsArray + }) +} + +export function testNoticeTemplate(data) { + return request({ + url: '/admin/v1/notice/template/test', + method: 'post', + data: data + }) +} + +export function sendNotice(data) { + return request({ + url: '/admin/v1/notice/send', + method: 'post', + data: data + }) +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/api/system/operlog.js b/cn-universal-web-ui/src/api/system/operlog.js new file mode 100644 index 0000000000000000000000000000000000000000..7fe76292d25e8a8c139fe036826dfc62a35db7e8 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/operlog.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +// 查询操作日志列表 +export function list(query) { + return request({ + url: '/system/monitor/operlog/list', + method: 'get', + params: query + }) +} + +// 删除操作日志 +export function delOperlog(operId) { + return request({ + url: '/system/monitor/operlog/' + operId, + method: 'delete' + }) +} + +// 清空操作日志 +export function cleanOperlog() { + return request({ + url: '/system/monitor/operlog/clean', + method: 'delete' + }) +} + +// 导出操作日志 +export function exportOperlog(query) { + return request({ + url: '/system/monitor/operlog/export', + method: 'get', + params: query + }) +} diff --git a/cn-universal-web-ui/src/api/system/oss.js b/cn-universal-web-ui/src/api/system/oss.js new file mode 100644 index 0000000000000000000000000000000000000000..3dffe0fd38df974cef906a958f4e47ab24683b19 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/oss.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 查询OSS云存储列表 +export function listOss(query) { + return request({ + url: '/admin/system/oss/list', + method: 'get', + params: query + }) +} + +// 删除OSS云存储 +export function delOss(ossId) { + return request({ + url: '/admin/system/oss/' + ossId, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/post.js b/cn-universal-web-ui/src/api/system/post.js new file mode 100644 index 0000000000000000000000000000000000000000..1a8e9ca048f5c666506eb37479d180501316d6c8 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/post.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询岗位列表 +export function listPost(query) { + return request({ + url: '/system/post/list', + method: 'get', + params: query + }) +} + +// 查询岗位详细 +export function getPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'get' + }) +} + +// 新增岗位 +export function addPost(data) { + return request({ + url: '/system/post', + method: 'post', + data: data + }) +} + +// 修改岗位 +export function updatePost(data) { + return request({ + url: '/system/post', + method: 'put', + data: data + }) +} + +// 删除岗位 +export function delPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'delete' + }) +} diff --git a/cn-universal-web-ui/src/api/system/protocol.js b/cn-universal-web-ui/src/api/system/protocol.js new file mode 100644 index 0000000000000000000000000000000000000000..eec57d8179cf836b5fb50cca2f1196ecf57922ed --- /dev/null +++ b/cn-universal-web-ui/src/api/system/protocol.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询设备协议列表 +export function listProtocol(query) { + return request({ + url: '/admin/v1/protocol/list', + method: 'get', + params: query + }) +} + +// 查询所有设备协议列表 不分页 +export function allProtocol() { + return request({ + url: '/admin/v1/protocol/list/ids', + method: 'get' + }) +} + +// 查询设备协议详细 +export function getProtocol(id) { + return request({ + url: '/admin/v1/protocol/' + id, + method: 'get' + }) +} + +// 新增设备协议 +export function addProtocol(data) { + return request({ + url: '/admin/v1/protocol', + method: 'post', + data: data + }) +} + +// 修改设备协议 +export function updateProtocol(data) { + return request({ + url: '/admin/v1/protocol', + method: 'put', + data: data + }) +} + +// 删除设备协议 +export function delProtocol(id) { + return request({ + url: '/admin/v1/protocol/' + id, + method: 'delete' + }) +} + +export function messageCodec(data) { + return request({ + url: '/admin/v1/protocol/codec', + method: 'post', + data: data + }) +} diff --git a/cn-universal-web-ui/src/api/system/role.js b/cn-universal-web-ui/src/api/system/role.js new file mode 100644 index 0000000000000000000000000000000000000000..0d30d878a696f59dc94f3c637a553b824fd7678f --- /dev/null +++ b/cn-universal-web-ui/src/api/system/role.js @@ -0,0 +1,111 @@ +import request from '@/utils/request' + +// 查询角色列表 +export function listRole(query) { + return request({ + url: '/admin/system/role/list', + method: 'get', + params: query + }) +} + +// 查询角色详细 +export function getRole(roleId) { + return request({ + url: '/admin/system/role/' + roleId, + method: 'get' + }) +} + +// 新增角色 +export function addRole(data) { + return request({ + url: '/admin/system/role', + method: 'post', + data: data + }) +} + +// 修改角色 +export function updateRole(data) { + return request({ + url: '/admin/system/role', + method: 'put', + data: data + }) +} + +// 角色数据权限 +export function dataScope(data) { + return request({ + url: '/admin/system/role/dataScope', + method: 'put', + data: data + }) +} + +// 角色状态修改 +export function changeRoleStatus(roleId, status) { + const data = { + roleId, + status + } + return request({ + url: '/admin/system/role/changeStatus', + method: 'put', + data: data + }) +} + +// 删除角色 +export function delRole(roleId) { + return request({ + url: '/admin/system/role/' + roleId, + method: 'delete' + }) +} + +// 查询角色已授权用户列表 +export function allocatedUserList(query) { + return request({ + url: '/admin/system/role/authUser/allocatedList', + method: 'get', + params: query + }) +} + +// 查询角色未授权用户列表 +export function unallocatedUserList(query) { + return request({ + url: '/admin/system/role/authUser/unallocatedList', + method: 'get', + params: query + }) +} + +// 取消用户授权角色 +export function authUserCancel(data) { + return request({ + url: '/admin/system/role/authUser/cancel', + method: 'put', + data: data + }) +} + +// 批量取消用户授权角色 +export function authUserCancelAll(data) { + return request({ + url: '/admin/system/role/authUser/cancelAll', + method: 'put', + params: data + }) +} + +// 授权用户选择 +export function authUserSelectAll(data) { + return request({ + url: '/admin/system/role/authUser/selectAll', + method: 'put', + params: data + }) +} diff --git a/cn-universal-web-ui/src/api/system/user.js b/cn-universal-web-ui/src/api/system/user.js new file mode 100644 index 0000000000000000000000000000000000000000..bc8cc186b89729ee4b9ff44cb4f9de7d3456a1e8 --- /dev/null +++ b/cn-universal-web-ui/src/api/system/user.js @@ -0,0 +1,136 @@ +import request from '@/utils/request' +import {praseStrEmpty} from '@/utils/ruoyi' + +// 查询用户列表 +export function listUser(query) { + return request({ + url: '/admin/system/user/list', + method: 'get', + params: query + }) +} + +// 查询用户详细 +export function getUser(userId) { + return request({ + url: '/admin/system/user/' + praseStrEmpty(userId), + method: 'get' + }) +} + +// 新增用户 +export function addUser(data) { + return request({ + url: '/admin/system/user', + method: 'post', + data: data + }) +} + +// 修改用户 +export function updateUser(data) { + return request({ + url: '/admin/system/user', + method: 'put', + data: data + }) +} + +// 删除用户 +export function delUser(userId) { + return request({ + url: '/admin/system/user/' + userId, + method: 'delete' + }) +} + +// 用户密码重置 +export function resetUserPwd(data) { + return request({ + url: '/admin/system/user', + method: 'put', + data: data + }) +} + +// 用户状态修改 +export function changeUserStatus(data) { + return request({ + url: '/admin/system/user', + method: 'put', + data: data + }) +} + +// 查询用户个人信息 +export function getUserProfile() { + return request({ + url: '/admin/system/user/profile', + method: 'get' + }) +} + +// 修改用户个人信息 +export function updateUserProfile(data) { + return request({ + url: '/admin/system/user/profile', + method: 'put', + data: data + }) +} + +// 子账号授权 +export function addSubAccount(userId, isSub) { + return request({ + url: '/admin/system/user/sub/' + userId + '/' + isSub, + method: 'get' + }) +} + +// 用户密码重置 +export function updateUserPwd(newPassword, oldPassword) { + return request({ + url: '/admin/system/user/profile/updatePwd', + method: 'put', + data: { + newPassword, + oldPassword + } + }) +} + +// 用户头像上传 +export function uploadAvatar(data) { + return request({ + url: '/admin/system/user/profile/avatar', + method: 'post', + data: data + }) +} + +// 导入用户 +export function importData(data) { + return request({ + url: '/admin/system/user/importData', + method: 'post', + data: data + }) +} + +// 查询授权角色 +export function getAuthRole(userId) { + return request({ + url: '/admin/system/user/authRole/' + userId, + method: 'get' + }) +} + +// 保存授权角色 +export function updateAuthRole(data) { + // console.log(data) + return request({ + url: '/admin/system/user/authRole', + method: 'put', + params: data + }) +} diff --git a/cn-universal-web-ui/src/api/tool/gen.js b/cn-universal-web-ui/src/api/tool/gen.js new file mode 100644 index 0000000000000000000000000000000000000000..0430ea2a9b263ca55c0775380b01ca7eeeb047b7 --- /dev/null +++ b/cn-universal-web-ui/src/api/tool/gen.js @@ -0,0 +1,77 @@ +import request from '@/utils/request' + +// 查询生成表数据 +export function listTable(query) { + return request({ + url: '/admin/tool/gen/list', + method: 'get', + params: query + }) +} + +// 查询db数据库列表 +export function listDbTable(query) { + return request({ + url: '/admin/tool/gen/db/list', + method: 'get', + params: query + }) +} + +// 查询表详细信息 +export function getGenTable(tableId) { + return request({ + url: '/admin/tool/gen/' + tableId, + method: 'get' + }) +} + +// 修改代码生成信息 +export function updateGenTable(data) { + return request({ + url: '/admin/tool/gen', + method: 'put', + data: data + }) +} + +// 导入表 +export function importTable(data) { + return request({ + url: '/admin/tool/gen/importTable', + method: 'post', + params: data + }) +} + +// 预览生成代码 +export function previewTable(tableId) { + return request({ + url: '/admin/tool/gen/preview/' + tableId, + method: 'get' + }) +} + +// 删除表数据 +export function delTable(tableId) { + return request({ + url: '/admin/tool/gen/' + tableId, + method: 'delete' + }) +} + +// 生成代码(自定义路径) +export function genCode(tableName) { + return request({ + url: '/admin/tool/gen/genCode/' + tableName, + method: 'get' + }) +} + +// 同步数据库 +export function synchDb(tableName) { + return request({ + url: '/admin/tool/gen/synchDb/' + tableName, + method: 'get' + }) +} diff --git a/cn-universal-web-ui/src/assets/icons/bug.svg b/cn-universal-web-ui/src/assets/icons/bug.svg new file mode 100644 index 0000000000000000000000000000000000000000..7ccc1669e667282abfbf5b030cbccea4f934dc43 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/bug.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/build.svg b/cn-universal-web-ui/src/assets/icons/build.svg new file mode 100644 index 0000000000000000000000000000000000000000..39db28842879f9cf6b07fe95b83e52c46251ddb4 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/build.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/button.svg b/cn-universal-web-ui/src/assets/icons/button.svg new file mode 100644 index 0000000000000000000000000000000000000000..0cfa50e83201d2b0689afd9af0ddefd038126e02 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/button.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/bxAnalyse.svg b/cn-universal-web-ui/src/assets/icons/bxAnalyse.svg new file mode 100644 index 0000000000000000000000000000000000000000..ae7a22c84df15b874f26a0c8f14ab3c2a94a2daa --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/bxAnalyse.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/camera.svg b/cn-universal-web-ui/src/assets/icons/camera.svg new file mode 100644 index 0000000000000000000000000000000000000000..2c45058ed55595095e1aa58e341bded497aad3e3 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/camera.svg @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/cascader.svg b/cn-universal-web-ui/src/assets/icons/cascader.svg new file mode 100644 index 0000000000000000000000000000000000000000..84445143cc9b6fd0303ee1367e138db835ba183b --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/cascader.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/channel-logos.js b/cn-universal-web-ui/src/assets/icons/channel-logos.js new file mode 100644 index 0000000000000000000000000000000000000000..2f8a3786481045a1c4a98ba6c07e8b4fa0de62f2 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/channel-logos.js @@ -0,0 +1,47 @@ +// 通知渠道SVG图标 +export const channelLogos = { + // 钉钉 + dingTalk: ``, + + // 邮件 + email: ``, + + // 飞书 + feishu: ``, + + // 阿里云 + aliyun: ``, + + // 腾讯云 + tencent: ``, + + // 阿里云语音 + aliyunAudio: ``, + + // 腾讯云语音 + tencentAudio: ``, + + // 默认 + default: ` + + ` +} + +// 获取通知渠道图标 +export function getChannelLogo(type) { + const logoMap = { + 'dingTalk': channelLogos.dingTalk, + 'email': channelLogos.email, + 'feishu': channelLogos.feishu, + 'sms_ali': channelLogos.aliyun, + 'sms_tencent': channelLogos.tencent, + 'audio_ali': channelLogos.aliyunAudio, + 'audio_tencent': channelLogos.tencentAudio, + '1': channelLogos.email, // 邮件 + '2': channelLogos.aliyun, // 短信 + '3': channelLogos.dingTalk, // 钉钉 + '4': channelLogos.feishu, // 飞书 + '5': channelLogos.aliyunAudio // 语音 + } + return logoMap[type] || channelLogos.default +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/chart.svg b/cn-universal-web-ui/src/assets/icons/chart.svg new file mode 100644 index 0000000000000000000000000000000000000000..7bef7c90361e8bc82ea52afa48ae0ceeae0d3acc --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/chart.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/checkbox.svg b/cn-universal-web-ui/src/assets/icons/checkbox.svg new file mode 100644 index 0000000000000000000000000000000000000000..5db5bd3076bd05757e34c15dd5a60f3a21968474 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/checkbox.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/clipboard.svg b/cn-universal-web-ui/src/assets/icons/clipboard.svg new file mode 100644 index 0000000000000000000000000000000000000000..ad6a4bcee73777e4e286a16efc056760ceb56769 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/clipboard.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/cloudSync.svg b/cn-universal-web-ui/src/assets/icons/cloudSync.svg new file mode 100644 index 0000000000000000000000000000000000000000..6a4da60acb489f41235d3217b983ee5e17f9da10 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/cloudSync.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/code.svg b/cn-universal-web-ui/src/assets/icons/code.svg new file mode 100644 index 0000000000000000000000000000000000000000..7c3aab5571a693e4adc0183545bc11e2d0aa82db --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/code.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/color.svg b/cn-universal-web-ui/src/assets/icons/color.svg new file mode 100644 index 0000000000000000000000000000000000000000..694ee1bc19148e2354ed141f24e4ef0d0a89c842 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/color.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/component.svg b/cn-universal-web-ui/src/assets/icons/component.svg new file mode 100644 index 0000000000000000000000000000000000000000..a310e6bdc9ee36fc89ac8c4c4e1be9559e413c52 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/component.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/controller.svg b/cn-universal-web-ui/src/assets/icons/controller.svg new file mode 100644 index 0000000000000000000000000000000000000000..f6af539ecd81437055472c6572acab3469641ceb --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/controller.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/dashboard.svg b/cn-universal-web-ui/src/assets/icons/dashboard.svg new file mode 100644 index 0000000000000000000000000000000000000000..3519b3f2e936d0ec59a9baaf297a7c3f49868080 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/dashboard.svg @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/dataFlow.svg b/cn-universal-web-ui/src/assets/icons/dataFlow.svg new file mode 100644 index 0000000000000000000000000000000000000000..35c9f3c52c8439f76f414d88faf2bb96062171b7 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/dataFlow.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/date.svg b/cn-universal-web-ui/src/assets/icons/date.svg new file mode 100644 index 0000000000000000000000000000000000000000..e70de00b175c4ff8466f026fb2b9e66c2c7787ae --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/date.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/dateRange.svg b/cn-universal-web-ui/src/assets/icons/dateRange.svg new file mode 100644 index 0000000000000000000000000000000000000000..05758e1a942a5d8b320dafa58ec403a08de2854c --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/dateRange.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/delete.svg b/cn-universal-web-ui/src/assets/icons/delete.svg new file mode 100644 index 0000000000000000000000000000000000000000..201a107f899da41a4d8bf11c783c0781f5ff3b71 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/delete.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/dict.svg b/cn-universal-web-ui/src/assets/icons/dict.svg new file mode 100644 index 0000000000000000000000000000000000000000..3586717d190dd5b825b5f98a7482f44088ec09e7 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/dict.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/documentation.svg b/cn-universal-web-ui/src/assets/icons/documentation.svg new file mode 100644 index 0000000000000000000000000000000000000000..4a4799e9a51f9ab43e79e61cac9063705354b87e --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/documentation.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/download.svg b/cn-universal-web-ui/src/assets/icons/download.svg new file mode 100644 index 0000000000000000000000000000000000000000..a6eb7a1c564d18b96a1096a5e96e3f6ea399e5fd --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/download.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/download_list.svg b/cn-universal-web-ui/src/assets/icons/download_list.svg new file mode 100644 index 0000000000000000000000000000000000000000..1ded6fd4564a3707c0a0a8266749ab028a6f17a4 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/download_list.svg @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/drag.svg b/cn-universal-web-ui/src/assets/icons/drag.svg new file mode 100644 index 0000000000000000000000000000000000000000..70dbf67ac3f536fed0ebfcc433c7807fe81324eb --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/drag.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/druid.svg b/cn-universal-web-ui/src/assets/icons/druid.svg new file mode 100644 index 0000000000000000000000000000000000000000..b01f15814b8c191ba5700ca907fdbbe4b01942db --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/druid.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/edit.svg b/cn-universal-web-ui/src/assets/icons/edit.svg new file mode 100644 index 0000000000000000000000000000000000000000..c58bf8510bc676860f39e5dba8ca9e7317a27de4 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/edit.svg @@ -0,0 +1,20 @@ + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/eyeOpen.svg b/cn-universal-web-ui/src/assets/icons/eyeOpen.svg new file mode 100644 index 0000000000000000000000000000000000000000..cf7a46349fd536e31ec36ec1a1320b7561a74d64 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/eyeOpen.svg @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/ezviz.svg b/cn-universal-web-ui/src/assets/icons/ezviz.svg new file mode 100644 index 0000000000000000000000000000000000000000..98cad131ea24ce944c34adcad470c6fc0806728e --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/ezviz.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/gateway.svg b/cn-universal-web-ui/src/assets/icons/gateway.svg new file mode 100644 index 0000000000000000000000000000000000000000..ea532be86615073236fe87cf6d5332c26b34ee81 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/gateway.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/github.svg b/cn-universal-web-ui/src/assets/icons/github.svg new file mode 100644 index 0000000000000000000000000000000000000000..e15cb6b8b4f677f74f3c422557b72833d7346ee3 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/github.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/guide.svg b/cn-universal-web-ui/src/assets/icons/guide.svg new file mode 100644 index 0000000000000000000000000000000000000000..ebcfbf053b51788674dd4a66a23e3d8f06112c51 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/guide.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/imou.svg b/cn-universal-web-ui/src/assets/icons/imou.svg new file mode 100644 index 0000000000000000000000000000000000000000..011b3c6942010ac6bd4d4c19a6103b45532a94b4 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/imou.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/input.svg b/cn-universal-web-ui/src/assets/icons/input.svg new file mode 100644 index 0000000000000000000000000000000000000000..73e4e20b3729e4f6a606b41c67ecf65449afbe63 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/input.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/iotDevice.svg b/cn-universal-web-ui/src/assets/icons/iotDevice.svg new file mode 100644 index 0000000000000000000000000000000000000000..65cad0b8778a168d608714cd2ec263acf1fdaeb7 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/iotDevice.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/job.svg b/cn-universal-web-ui/src/assets/icons/job.svg new file mode 100644 index 0000000000000000000000000000000000000000..0a2ecded04efb7a67bb5cbd001c0b7f3411bf97d --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/job.svg @@ -0,0 +1,21 @@ + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/log.svg b/cn-universal-web-ui/src/assets/icons/log.svg new file mode 100644 index 0000000000000000000000000000000000000000..2d28b7d8104bb151274198f4cc262a4027c988d6 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/log.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/logininfor.svg b/cn-universal-web-ui/src/assets/icons/logininfor.svg new file mode 100644 index 0000000000000000000000000000000000000000..b0c99d716ac78d62349df5ad6c7d47e9f216bdbf --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/logininfor.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/message.svg b/cn-universal-web-ui/src/assets/icons/message.svg new file mode 100644 index 0000000000000000000000000000000000000000..00f352f71dbb3401babfb557875372cde597f9ce --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/message.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/model.svg b/cn-universal-web-ui/src/assets/icons/model.svg new file mode 100644 index 0000000000000000000000000000000000000000..178a9c9bcf119c6b2160fe62289e67e2b97a0f6b --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/model.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/monitor.svg b/cn-universal-web-ui/src/assets/icons/monitor.svg new file mode 100644 index 0000000000000000000000000000000000000000..2121057308a3c6edbfc2df36b6443ba490601917 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/monitor.svg @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/mqtt.svg b/cn-universal-web-ui/src/assets/icons/mqtt.svg new file mode 100644 index 0000000000000000000000000000000000000000..6e6e9f1b09eba31a2f3319254a3b2176851c0f25 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/mqtt.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/number.svg b/cn-universal-web-ui/src/assets/icons/number.svg new file mode 100644 index 0000000000000000000000000000000000000000..5aa90d21c22f18efc33cf9bb7b34f8ead9e92250 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/number.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/online.svg b/cn-universal-web-ui/src/assets/icons/online.svg new file mode 100644 index 0000000000000000000000000000000000000000..8dd80a134d4d34654d3ea7e23582307a943e44e1 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/online.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/password.svg b/cn-universal-web-ui/src/assets/icons/password.svg new file mode 100644 index 0000000000000000000000000000000000000000..bb03cfaf0b00964cda9cf90d5b6c3f5e0fac52df --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/password.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/pdf.svg b/cn-universal-web-ui/src/assets/icons/pdf.svg new file mode 100644 index 0000000000000000000000000000000000000000..fa8bee3899becdc7204dd789f7afc3313a864e7f --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/pdf.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/peoples.svg b/cn-universal-web-ui/src/assets/icons/peoples.svg new file mode 100644 index 0000000000000000000000000000000000000000..f104e006329bb1f668d905eb5e622e4244fc558c --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/peoples.svg @@ -0,0 +1,21 @@ + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/phone.svg b/cn-universal-web-ui/src/assets/icons/phone.svg new file mode 100644 index 0000000000000000000000000000000000000000..c7bd7dc9183c2531b21b413429d7b60cae560564 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/phone.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/post.svg b/cn-universal-web-ui/src/assets/icons/post.svg new file mode 100644 index 0000000000000000000000000000000000000000..b6a74034c55d5b5f84e4c159e7dc0cce4f983785 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/post.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/product.svg b/cn-universal-web-ui/src/assets/icons/product.svg new file mode 100644 index 0000000000000000000000000000000000000000..21758590c7125227dc65d4245a1dbcb63fa2274e --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/product.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/question.svg b/cn-universal-web-ui/src/assets/icons/question.svg new file mode 100644 index 0000000000000000000000000000000000000000..e2761cbe3fd4a12ba1ba17ae7a933dc279553bd8 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/question.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/radio.svg b/cn-universal-web-ui/src/assets/icons/radio.svg new file mode 100644 index 0000000000000000000000000000000000000000..2f2221028e03ad104792e1afe22c883fb0d74f75 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/radio.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/rate.svg b/cn-universal-web-ui/src/assets/icons/rate.svg new file mode 100644 index 0000000000000000000000000000000000000000..944677a8db9d229563395b5b6256bc75b375b446 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/rate.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/recorder.svg b/cn-universal-web-ui/src/assets/icons/recorder.svg new file mode 100644 index 0000000000000000000000000000000000000000..a7ffd3f8585ac0338bc3f8836665090f520e94ed --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/recorder.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/redis.svg b/cn-universal-web-ui/src/assets/icons/redis.svg new file mode 100644 index 0000000000000000000000000000000000000000..4957f092b6784b5eb4358a134df6cef8ba6886e6 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/redis.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/retry.svg b/cn-universal-web-ui/src/assets/icons/retry.svg new file mode 100644 index 0000000000000000000000000000000000000000..761d820203bfe98eed47ebda792a872ffed8d313 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/retry.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/root_group.svg b/cn-universal-web-ui/src/assets/icons/root_group.svg new file mode 100644 index 0000000000000000000000000000000000000000..8e252bb5baf5a072bb11ed629bf270290ae3b44d --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/root_group.svg @@ -0,0 +1,19 @@ + + + + 根分组 + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/row.svg b/cn-universal-web-ui/src/assets/icons/row.svg new file mode 100644 index 0000000000000000000000000000000000000000..0c98678ab0ef587b90faf1a0eb28abdc7fde7ea9 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/row.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/select.svg b/cn-universal-web-ui/src/assets/icons/select.svg new file mode 100644 index 0000000000000000000000000000000000000000..5da24b5b6f93f4347cbb68f73a3b91b0d69e8201 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/select.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/sensor.svg b/cn-universal-web-ui/src/assets/icons/sensor.svg new file mode 100644 index 0000000000000000000000000000000000000000..03dda4a31969c45244518eee81399b508e450c71 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/sensor.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/server.svg b/cn-universal-web-ui/src/assets/icons/server.svg new file mode 100644 index 0000000000000000000000000000000000000000..da69c0b3f242bcc2473c6b122834244f21b005ec --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/server.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/specification.svg b/cn-universal-web-ui/src/assets/icons/specification.svg new file mode 100644 index 0000000000000000000000000000000000000000..f8f5b3f65ffe4d1c758a0af496525d2280900068 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/specification.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/sub_group.svg b/cn-universal-web-ui/src/assets/icons/sub_group.svg new file mode 100644 index 0000000000000000000000000000000000000000..64c23d8e9e250567431b71d1a8c7c726d613a898 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/sub_group.svg @@ -0,0 +1,19 @@ + + + + 子分组 + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/swagger.svg b/cn-universal-web-ui/src/assets/icons/swagger.svg new file mode 100644 index 0000000000000000000000000000000000000000..a9c33cc151a127bdc3a73b27c3c06d7aa3f31775 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/swagger.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/switch.svg b/cn-universal-web-ui/src/assets/icons/switch.svg new file mode 100644 index 0000000000000000000000000000000000000000..97f6bf0eeb320733a4c11987c360eabc0495c889 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/switch.svg @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/system.svg b/cn-universal-web-ui/src/assets/icons/system.svg new file mode 100644 index 0000000000000000000000000000000000000000..00f98a3ec4db36a1ecb930bdeaa2f03cc3654ee7 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/system.svg @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/tcp.svg b/cn-universal-web-ui/src/assets/icons/tcp.svg new file mode 100644 index 0000000000000000000000000000000000000000..b277c6f0a1b0d7a0f71ff4a85b9a0bc18f8577a9 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/tcp.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/textarea.svg b/cn-universal-web-ui/src/assets/icons/textarea.svg new file mode 100644 index 0000000000000000000000000000000000000000..82ab31cdc6e50aaff15869bc1ad1ad30b86f7fed --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/textarea.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/time.svg b/cn-universal-web-ui/src/assets/icons/time.svg new file mode 100644 index 0000000000000000000000000000000000000000..bad75f0fb784897df847c4254a0c7bbe7a53a0ca --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/time.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/timeRange.svg b/cn-universal-web-ui/src/assets/icons/timeRange.svg new file mode 100644 index 0000000000000000000000000000000000000000..129bb1ef1ed206514bd931d0ed37fd8501f43b07 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/timeRange.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/tool.svg b/cn-universal-web-ui/src/assets/icons/tool.svg new file mode 100644 index 0000000000000000000000000000000000000000..27925d49db39cb4a69a9d79b645b5e3e76e4c748 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/tool.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/tree.svg b/cn-universal-web-ui/src/assets/icons/tree.svg new file mode 100644 index 0000000000000000000000000000000000000000..42827d8db7c9bfeaab88ff0a24595829e61ae49f --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/tree.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/treeTable.svg b/cn-universal-web-ui/src/assets/icons/treeTable.svg new file mode 100644 index 0000000000000000000000000000000000000000..d56e6d5cd3475da8b2a7cff9e3452e4c2f286090 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/treeTable.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/udp.svg b/cn-universal-web-ui/src/assets/icons/udp.svg new file mode 100644 index 0000000000000000000000000000000000000000..936b86755a6fb7cf2f34c7b97a06fe2b1c5609d4 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/udp.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/upload.svg b/cn-universal-web-ui/src/assets/icons/upload.svg new file mode 100644 index 0000000000000000000000000000000000000000..27a4510b2e57e10ccb92a17a86767cdce3a8f0d7 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/upload.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/user.svg b/cn-universal-web-ui/src/assets/icons/user.svg new file mode 100644 index 0000000000000000000000000000000000000000..424547dacaa660d16e0748d08d16d93cc3aeabec --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/user.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/validCode.svg b/cn-universal-web-ui/src/assets/icons/validCode.svg new file mode 100644 index 0000000000000000000000000000000000000000..3db452e945ef60635b5e5c189646031623f16657 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/validCode.svg @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/icons/videoMonitor.svg b/cn-universal-web-ui/src/assets/icons/videoMonitor.svg new file mode 100644 index 0000000000000000000000000000000000000000..30dbf8121964cf5b0bb9bffa461c1dd6578c1cb5 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/videoMonitor.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/assets/icons/video_recorder.svg b/cn-universal-web-ui/src/assets/icons/video_recorder.svg new file mode 100644 index 0000000000000000000000000000000000000000..10371e62f13430608d416284d33172f3efbbb104 --- /dev/null +++ b/cn-universal-web-ui/src/assets/icons/video_recorder.svg @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/images/IOT.png b/cn-universal-web-ui/src/assets/images/IOT.png new file mode 100644 index 0000000000000000000000000000000000000000..6f2c08ae48f9a0d017acdea1bc41bde62015eb58 Binary files /dev/null and b/cn-universal-web-ui/src/assets/images/IOT.png differ diff --git a/cn-universal-web-ui/src/assets/images/dark.svg b/cn-universal-web-ui/src/assets/images/dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..fd615053e1cc2124d910054d0db4534db54fd5ab --- /dev/null +++ b/cn-universal-web-ui/src/assets/images/dark.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/images/light.svg b/cn-universal-web-ui/src/assets/images/light.svg new file mode 100644 index 0000000000000000000000000000000000000000..68fa8aa037862f14703302fda1873aaeb7d3a93d --- /dev/null +++ b/cn-universal-web-ui/src/assets/images/light.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/images/logo.png b/cn-universal-web-ui/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b7240e9e90925da47a6bebba4f9fb3f06f968a6f Binary files /dev/null and b/cn-universal-web-ui/src/assets/images/logo.png differ diff --git a/cn-universal-web-ui/src/assets/images/logo.svg b/cn-universal-web-ui/src/assets/images/logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..7a653a87a27e33fad40d0c17eae861503dae97c4 --- /dev/null +++ b/cn-universal-web-ui/src/assets/images/logo.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IoT Platform + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/images/user-avatar.svg b/cn-universal-web-ui/src/assets/images/user-avatar.svg new file mode 100644 index 0000000000000000000000000000000000000000..f7e4b5da9eada5b9ccb60f622b539f46c773eb98 --- /dev/null +++ b/cn-universal-web-ui/src/assets/images/user-avatar.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/images/userIntroduce.jpg b/cn-universal-web-ui/src/assets/images/userIntroduce.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39032b93568fe16139c52d3b4df4b8e52f988634 Binary files /dev/null and b/cn-universal-web-ui/src/assets/images/userIntroduce.jpg differ diff --git a/cn-universal-web-ui/src/assets/notice/webhook.svg b/cn-universal-web-ui/src/assets/notice/webhook.svg new file mode 100644 index 0000000000000000000000000000000000000000..a0cd21cb3a1ff1a6b3d0d27cf32511a30654b9e9 --- /dev/null +++ b/cn-universal-web-ui/src/assets/notice/webhook.svg @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git "a/cn-universal-web-ui/src/assets/notice/\345\276\256\344\277\241.svg" "b/cn-universal-web-ui/src/assets/notice/\345\276\256\344\277\241.svg" new file mode 100644 index 0000000000000000000000000000000000000000..78703116397f5773ac8ba4c95c693f8280a368c5 --- /dev/null +++ "b/cn-universal-web-ui/src/assets/notice/\345\276\256\344\277\241.svg" @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git "a/cn-universal-web-ui/src/assets/notice/\350\205\276\350\256\257\344\272\221.svg" "b/cn-universal-web-ui/src/assets/notice/\350\205\276\350\256\257\344\272\221.svg" new file mode 100644 index 0000000000000000000000000000000000000000..df62790f861563ada12506f892028a4f5638765f --- /dev/null +++ "b/cn-universal-web-ui/src/assets/notice/\350\205\276\350\256\257\344\272\221.svg" @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git "a/cn-universal-web-ui/src/assets/notice/\351\202\256\347\256\261.svg" "b/cn-universal-web-ui/src/assets/notice/\351\202\256\347\256\261.svg" new file mode 100644 index 0000000000000000000000000000000000000000..e4c6d260c6a8b48d1d1a270148837bb69e32f752 --- /dev/null +++ "b/cn-universal-web-ui/src/assets/notice/\351\202\256\347\256\261.svg" @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git "a/cn-universal-web-ui/src/assets/notice/\351\222\211\351\222\211.svg" "b/cn-universal-web-ui/src/assets/notice/\351\222\211\351\222\211.svg" new file mode 100644 index 0000000000000000000000000000000000000000..f223a2dc849e9d7fe1980c28ae0c05c671f04e00 --- /dev/null +++ "b/cn-universal-web-ui/src/assets/notice/\351\222\211\351\222\211.svg" @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git "a/cn-universal-web-ui/src/assets/notice/\351\230\277\351\207\214\344\272\221.svg" "b/cn-universal-web-ui/src/assets/notice/\351\230\277\351\207\214\344\272\221.svg" new file mode 100644 index 0000000000000000000000000000000000000000..e5d7c29b69e32bd6d1f20d44b7b00721cc334bcf --- /dev/null +++ "b/cn-universal-web-ui/src/assets/notice/\351\230\277\351\207\214\344\272\221.svg" @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git "a/cn-universal-web-ui/src/assets/notice/\351\243\236\344\271\246.svg" "b/cn-universal-web-ui/src/assets/notice/\351\243\236\344\271\246.svg" new file mode 100644 index 0000000000000000000000000000000000000000..c4746740ae546f542194f15e53bf5e4955b6b2f4 --- /dev/null +++ "b/cn-universal-web-ui/src/assets/notice/\351\243\236\344\271\246.svg" @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/projects/logo.png b/cn-universal-web-ui/src/assets/projects/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..888a42d19bb2551872242bbbed745ffd35dd4341 Binary files /dev/null and b/cn-universal-web-ui/src/assets/projects/logo.png differ diff --git a/cn-universal-web-ui/src/assets/styles/button.less b/cn-universal-web-ui/src/assets/styles/button.less new file mode 100644 index 0000000000000000000000000000000000000000..81ada1225dfc2d8457d008d6f18a88668632cc6c --- /dev/null +++ b/cn-universal-web-ui/src/assets/styles/button.less @@ -0,0 +1,211 @@ +// 统一的小尺寸按钮样式 +.btn-small { + border-radius: 4px !important; + height: 28px !important; + padding: 0 12px !important; + font-weight: 400 !important; + font-size: 12px !important; + line-height: 26px !important; + transition: all 0.3s ease !important; + border: none !important; + + &:hover { + transform: translateY(-1px) !important; + } +} + +// 主要按钮样式(科技蓝主题) +.btn-primary-small { + .btn-small(); + background: #0066FF !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(0, 102, 255, 0.12) !important; + + &:hover { + background: #0052CC !important; + box-shadow: 0 2px 6px rgba(0, 102, 255, 0.2) !important; + } +} + +// 成功按钮样式(物联网绿主题) +.btn-success-small { + .btn-small(); + background: #00D4AA !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(0, 212, 170, 0.12) !important; + + &:hover { + background: #00B894 !important; + box-shadow: 0 2px 6px rgba(0, 212, 170, 0.2) !important; + } +} + +// 危险按钮样式(科技红主题) +.btn-danger-small { + .btn-small(); + background: #FF4757 !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(255, 71, 87, 0.12) !important; + + &:hover { + background: #FF3742 !important; + box-shadow: 0 2px 6px rgba(255, 71, 87, 0.2) !important; + } +} + +// 警告按钮样式(科技橙主题) +.btn-warning-small { + .btn-small(); + background: #FFA502 !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(255, 165, 2, 0.12) !important; + + &:hover { + background: #FF9500 !important; + box-shadow: 0 2px 6px rgba(255, 165, 2, 0.2) !important; + } +} + +// 默认按钮样式(无边框) +.btn-default-small { + .btn-small(); + background: #fff !important; + color: #666 !important; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; + + &:hover { + background: #f5f5f5 !important; + color: #0066FF !important; + } +} + +// 圆形按钮样式 +.btn-circle-small { + .btn-small(); + width: 28px !important; + height: 28px !important; + padding: 0 !important; + background: #fff !important; + color: #666 !important; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; + + &:hover { + background: #f5f5f5 !important; + color: #0066FF !important; + } +} + +// 按钮组样式 +.btn-group-small { + .ant-btn { + margin-right: 8px; + + &:last-child { + margin-right: 0; + } + } +} + +// 全局覆盖,确保小尺寸按钮样式生效 +.ant-btn.btn-primary-small, +.ant-btn.btn-danger-small, +.ant-btn.btn-default-small, +.ant-btn.btn-circle-small { + height: 28px !important; + padding: 0 12px !important; + font-size: 12px !important; + line-height: 26px !important; + border-radius: 4px !important; + border: none !important; +} + +// 全局按钮样式覆盖 - 让所有按钮都变小且无边框 +// 使用更高优先级的选择器 +html body .ant-btn, +#app .ant-btn, +.ant-btn { + height: 28px !important; + padding: 0 12px !important; + font-size: 12px !important; + line-height: 26px !important; + border-radius: 4px !important; + border: none !important; + + // 圆形按钮特殊处理 + &.ant-btn-circle { + width: 28px !important; + height: 28px !important; + padding: 0 !important; + } + + // 大尺寸按钮保持原样 + &.ant-btn-lg { + height: 40px !important; + padding: 0 16px !important; + font-size: 14px !important; + line-height: 38px !important; + } + + // 链接和文本按钮保持原样 + &.ant-btn-link, + &.ant-btn-text { + height: auto !important; + padding: 0 !important; + line-height: normal !important; + border: none !important; + box-shadow: none !important; + } + + // 虚线按钮特殊处理 + &.ant-btn-dashed { + border: 1px dashed #d9d9d9 !important; + background: #fff !important; + + &:hover { + border-color: #0066FF !important; + color: #0066FF !important; + } + } +} + +// 最强制性的覆盖 - 确保在所有情况下都生效 +* .ant-btn { + height: 28px !important; + padding: 0 12px !important; + font-size: 12px !important; + line-height: 26px !important; + border-radius: 4px !important; + border: none !important; + + &.ant-btn-circle { + width: 28px !important; + height: 28px !important; + padding: 0 !important; + } + + &.ant-btn-lg { + height: 40px !important; + padding: 0 16px !important; + font-size: 14px !important; + line-height: 38px !important; + } + + &.ant-btn-link, + &.ant-btn-text { + height: auto !important; + padding: 0 !important; + line-height: normal !important; + border: none !important; + box-shadow: none !important; + } + + &.ant-btn-dashed { + border: 1px dashed #d9d9d9 !important; + background: #fff !important; + + &:hover { + border-color: #0066FF !important; + color: #0066FF !important; + } + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/assets/styles/input.less b/cn-universal-web-ui/src/assets/styles/input.less new file mode 100644 index 0000000000000000000000000000000000000000..554e0950ce7682d52bd786a1c18550eb2dd9bda4 --- /dev/null +++ b/cn-universal-web-ui/src/assets/styles/input.less @@ -0,0 +1,168 @@ +// 还原到原始的输入框样式 +.ant-input, +.ant-input-affix-wrapper, +.ant-select-selector, +.ant-picker { + border-radius: 2px !important; + // border: 1px solid #d9d9d9 !important; + transition: all 0.3s ease !important; + font-size: 14px !important; + line-height: 1.5 !important; + background: #fff !important; + + &:hover { + border-color: #40a9ff !important; + } + + &:focus, + &-focused { + border-color: #1890ff !important; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2) !important; + } +} + +// 输入框容器样式 +.ant-form-item-control-input { + .ant-input, + .ant-input-affix-wrapper { + height: 32px !important; + padding: 4px 11px !important; + } +} + +// 选择器样式 +.ant-select { + .ant-select-selector { + height: 32px !important; + padding: 4px 11px !important; + border-radius: 2px !important; + + .ant-select-selection-item { + line-height: 24px !important; + font-size: 14px !important; + } + } + + .ant-select-arrow { + color: #bfbfbf !important; + } +} + +// 日期选择器样式 +.ant-picker { + height: 32px !important; + padding: 4px 11px !important; + border-radius: 2px !important; + + .ant-picker-input > input { + font-size: 14px !important; + } +} + +// 搜索区域样式 - 还原到原始状态 +.table-page-search-wrapper { + background: transparent !important; + border: none !important; + padding: 0 !important; + margin-bottom: 16px !important; + + .ant-form-inline { + .ant-form-item { + margin-bottom: 16px !important; + margin-right: 16px !important; + + .ant-form-item-label { + label { + font-size: 14px !important; + font-weight: 400 !important; + color: #333 !important; + line-height: 32px !important; + } + } + + .ant-form-item-control { + .ant-input, + .ant-input-affix-wrapper, + .ant-select-selector { + background: #fff !important; + // border: 1px solid #d9d9d9 !important; + + &:hover { + border-color: #40a9ff !important; + } + + &:focus { + border-color: #1890ff !important; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2) !important; + } + } + } + } + } + + .table-page-search-submitButtons { + margin-bottom: 0 !important; + + .ant-btn { + margin-right: 8px !important; + + &:last-child { + margin-right: 0 !important; + } + } + } +} + +// 表格操作区域样式 - 还原到原始状态 +.table-operations { + background: transparent !important; + padding: 0 !important; + margin-bottom: 16px !important; + border: none !important; + + .ant-btn { + margin-right: 8px !important; + + &:last-child { + margin-right: 0 !important; + } + } +} + +// 输入框前缀图标样式 +.ant-input-affix-wrapper { + .ant-input-prefix { + color: #bfbfbf !important; + margin-right: 8px !important; + } + + .ant-input-suffix { + color: #bfbfbf !important; + margin-left: 8px !important; + } +} + +// 禁用状态样式 +.ant-input[disabled], +.ant-input-affix-wrapper[disabled], +.ant-select-disabled .ant-select-selector { + background-color: #f5f5f5 !important; + border-color: #d9d9d9 !important; + color: #bfbfbf !important; +} + +// 错误状态样式 +.ant-input-status-error, +.ant-input-affix-wrapper-status-error, +.ant-select-status-error .ant-select-selector { + border-color: #ff4d4f !important; + + &:hover { + border-color: #ff7875 !important; + } + + &:focus { + border-color: #ff4d4f !important; + box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2) !important; + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/ArticleListContent/ArticleListContent.vue b/cn-universal-web-ui/src/components/ArticleListContent/ArticleListContent.vue new file mode 100644 index 0000000000000000000000000000000000000000..2916e2294808cc100f4245ee1fc6ec57a98c1278 --- /dev/null +++ b/cn-universal-web-ui/src/components/ArticleListContent/ArticleListContent.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/ArticleListContent/index.js b/cn-universal-web-ui/src/components/ArticleListContent/index.js new file mode 100644 index 0000000000000000000000000000000000000000..37d35c7d04ed59ca3f31db7ef4ee34581838339e --- /dev/null +++ b/cn-universal-web-ui/src/components/ArticleListContent/index.js @@ -0,0 +1,3 @@ +import ArticleListContent from './ArticleListContent' + +export default ArticleListContent diff --git a/cn-universal-web-ui/src/components/AvatarList/Item.jsx b/cn-universal-web-ui/src/components/AvatarList/Item.jsx new file mode 100644 index 0000000000000000000000000000000000000000..1e17a2ca092512f211131281ed422c5205d5ca67 --- /dev/null +++ b/cn-universal-web-ui/src/components/AvatarList/Item.jsx @@ -0,0 +1,26 @@ +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import {Avatar, Tooltip} from 'ant-design-vue' +import {getSlotOptions} from 'ant-design-vue/lib/_util/props-util' +import {warning} from 'ant-design-vue/lib/vc-util/warning' + +export const AvatarListItemProps = { + tips: PropTypes.string.def(null), + src: PropTypes.string.def('') +} + +const Item = { + __ANT_AVATAR_CHILDREN: true, + name: 'AvatarListItem', + props: AvatarListItemProps, + created() { + warning(getSlotOptions(this.$parent).__ANT_AVATAR_LIST, + 'AvatarListItem must be a subcomponent of AvatarList') + }, + render() { + const AvatarDom = + return this.tips && {AvatarDom} || + + } +} + +export default Item diff --git a/cn-universal-web-ui/src/components/AvatarList/List.jsx b/cn-universal-web-ui/src/components/AvatarList/List.jsx new file mode 100644 index 0000000000000000000000000000000000000000..909280191c5f1197c4aade19d008d273750fc5c2 --- /dev/null +++ b/cn-universal-web-ui/src/components/AvatarList/List.jsx @@ -0,0 +1,76 @@ +import './index.less' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import Avatar from 'ant-design-vue/es/avatar' +import Item from './Item.jsx' +import {filterEmpty} from '@/components/_util/util' + +/** + * size: `number`、 `large`、`small`、`default` 默认值: default + * maxLength: number + * excessItemsStyle: CSSProperties + */ +const AvatarListProps = { + prefixCls: PropTypes.string.def('ant-pro-avatar-list'), + size: { + validator: val => { + return typeof val === 'number' || ['small', 'large', 'default'].includes( + val) + }, + default: 'default' + }, + maxLength: PropTypes.number.def(0), + excessItemsStyle: PropTypes.object.def({ + color: '#f56a00', + backgroundColor: '#fde3cf' + }) +} + +const AvatarList = { + __ANT_AVATAR_LIST: true, + Item, + name: 'AvatarList', + props: AvatarListProps, + render(h) { + const {prefixCls, size} = this.$props + const className = { + [`${prefixCls}`]: true, + [`${size}`]: true + } + const items = filterEmpty(this.$slots.default) + const itemsDom = items && items.length ?
            {this.getItems(items)}
          : null + + return ( +
          + {itemsDom} +
          + ) + }, + methods: { + getItems(items) { + const className = { + [`${this.prefixCls}-item`]: true, + [`${this.size}`]: true + } + const totalSize = items.length + + if (this.maxLength > 0) { + items = items.slice(0, this.maxLength) + items.push(( + {`+${totalSize + - this.maxLength}`})) + } + return items.map((item) => ( +
        • {item}
        • + )) + } + } +} + +AvatarList.install = function (Vue) { + Vue.component(AvatarList.name, AvatarList) + Vue.component(AvatarList.Item.name, AvatarList.Item) +} + +export default AvatarList diff --git a/cn-universal-web-ui/src/components/AvatarList/index.js b/cn-universal-web-ui/src/components/AvatarList/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b047432505d858fede080c8cf3e18d28f122ca8b --- /dev/null +++ b/cn-universal-web-ui/src/components/AvatarList/index.js @@ -0,0 +1,9 @@ +import AvatarList from './List' +import Item from './Item' + +export { + AvatarList, + Item as AvatarListItem +} + +export default AvatarList diff --git a/cn-universal-web-ui/src/components/AvatarList/index.less b/cn-universal-web-ui/src/components/AvatarList/index.less new file mode 100644 index 0000000000000000000000000000000000000000..9ce073fd149e8bf62636b247fc4b057e90b54ac2 --- /dev/null +++ b/cn-universal-web-ui/src/components/AvatarList/index.less @@ -0,0 +1,60 @@ +@import "../index"; + +@avatar-list-prefix-cls: ~"@{ant-pro-prefix}-avatar-list"; +@avatar-list-item-prefix-cls: ~"@{ant-pro-prefix}-avatar-list-item"; + +.@{avatar-list-prefix-cls} { + display: inline-block; + + ul { + list-style: none; + display: inline-block; + padding: 0; + margin: 0 0 0 8px; + font-size: 0; + } +} + +.@{avatar-list-item-prefix-cls} { + display: inline-block; + font-size: @font-size-base; + margin-left: -8px; + width: @avatar-size-base; + height: @avatar-size-base; + + :global { + .ant-avatar { + border: 1px solid #fff; + cursor: pointer; + } + } + + &.large { + width: @avatar-size-lg; + height: @avatar-size-lg; + } + + &.small { + width: @avatar-size-sm; + height: @avatar-size-sm; + } + + &.mini { + width: 20px; + height: 20px; + + :global { + .ant-avatar { + width: 20px; + height: 20px; + line-height: 20px; + + .ant-avatar-string { + font-size: 12px; + line-height: 18px; + } + } + } + } +} + diff --git a/cn-universal-web-ui/src/components/AvatarList/index.md b/cn-universal-web-ui/src/components/AvatarList/index.md new file mode 100644 index 0000000000000000000000000000000000000000..047e743b71168122153222ba6433adb0f86af3a4 --- /dev/null +++ b/cn-universal-web-ui/src/components/AvatarList/index.md @@ -0,0 +1,59 @@ +# AvatarList 用户头像列表 + +一组用户头像,常用在项目/团队成员列表。可通过设置 `size` 属性来指定头像大小。 + +引用方式: + +```javascript +import AvatarList from '@/components/AvatarList' +const AvatarListItem = AvatarList.Item + +export default { + components: { + AvatarList, + AvatarListItem + } +} +``` + +## 代码演示 [demo](https://pro.loacg.com/test/home) + +```html + + + + + +``` + +或 + +```html + + + + + + + + + +``` + +## API + +### AvatarList + +| 参数 | 说明 | 类型 | 默认值 | +|------------------|----------|------------------------------------|-----------| +| size | 头像大小 | `large`、`small` 、`mini`, `default` | `default` | +| maxLength | 要显示的最大项目 | number | - | +| excessItemsStyle | 多余的项目风格 | CSSProperties | - | + +### AvatarList.Item + +| 参数 | 说明 | 类型 | 默认值 | +|------|--------|--------|-----| +| tips | 头像展示文案 | string | - | +| src | 头像图片连接 | string | - | + diff --git a/cn-universal-web-ui/src/components/CodeEditor.vue b/cn-universal-web-ui/src/components/CodeEditor.vue new file mode 100644 index 0000000000000000000000000000000000000000..deb6c08c51f941696dfe92ad8bde574585abf76d --- /dev/null +++ b/cn-universal-web-ui/src/components/CodeEditor.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Day.vue b/cn-universal-web-ui/src/components/Crontab/Day.vue new file mode 100644 index 0000000000000000000000000000000000000000..d6eade4ef6c3d582e6a6418f027e17a759be8ee0 --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Day.vue @@ -0,0 +1,172 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Hour.vue b/cn-universal-web-ui/src/components/Crontab/Hour.vue new file mode 100644 index 0000000000000000000000000000000000000000..637ef211ff1ab9ff954fbadd2d68b4dd896a6364 --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Hour.vue @@ -0,0 +1,127 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Min.vue b/cn-universal-web-ui/src/components/Crontab/Min.vue new file mode 100644 index 0000000000000000000000000000000000000000..47dbece4e02204e830737055e0f56a910207e2c6 --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Min.vue @@ -0,0 +1,127 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Month.vue b/cn-universal-web-ui/src/components/Crontab/Month.vue new file mode 100644 index 0000000000000000000000000000000000000000..d3f64e7d7bfb4d0f5b0db7da0b598c814691e2db --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Month.vue @@ -0,0 +1,128 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Result.vue b/cn-universal-web-ui/src/components/Crontab/Result.vue new file mode 100644 index 0000000000000000000000000000000000000000..62082360c60472f4da9ab8e5154c3e88d205d8bb --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Result.vue @@ -0,0 +1,567 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Second.vue b/cn-universal-web-ui/src/components/Crontab/Second.vue new file mode 100644 index 0000000000000000000000000000000000000000..241f86809f87939a90e8e91dac60d194735a057a --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Second.vue @@ -0,0 +1,130 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Week.vue b/cn-universal-web-ui/src/components/Crontab/Week.vue new file mode 100644 index 0000000000000000000000000000000000000000..8953c84146f52e01ec08157d5beb8e519901a817 --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Week.vue @@ -0,0 +1,215 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/Year.vue b/cn-universal-web-ui/src/components/Crontab/Year.vue new file mode 100644 index 0000000000000000000000000000000000000000..9db4d0dd5a8dd4fa36246f2ab59499f2480cae7e --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/Year.vue @@ -0,0 +1,138 @@ + + + diff --git a/cn-universal-web-ui/src/components/Crontab/index.vue b/cn-universal-web-ui/src/components/Crontab/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..45a136cedc3f4f6581242d6c66c89edf39e4566d --- /dev/null +++ b/cn-universal-web-ui/src/components/Crontab/index.vue @@ -0,0 +1,386 @@ + + + diff --git a/cn-universal-web-ui/src/components/Dialog.js b/cn-universal-web-ui/src/components/Dialog.js new file mode 100644 index 0000000000000000000000000000000000000000..c35196717c61a36910c317be604b0694c9e33f75 --- /dev/null +++ b/cn-universal-web-ui/src/components/Dialog.js @@ -0,0 +1,117 @@ +import Modal from 'ant-design-vue/es/modal' + +export default (Vue) => { + function dialog(component, componentProps, modalProps) { + const _vm = this + modalProps = modalProps || {} + if (!_vm || !_vm._isVue) { + return + } + let dialogDiv = document.querySelector('body>div[type=dialog]') + if (!dialogDiv) { + dialogDiv = document.createElement('div') + dialogDiv.setAttribute('type', 'dialog') + document.body.appendChild(dialogDiv) + } + + const handle = function (checkFunction, afterHandel) { + if (checkFunction instanceof Function) { + const res = checkFunction() + if (res instanceof Promise) { + res.then(c => { + c && afterHandel() + }) + } else { + res && afterHandel() + } + } else { + // checkFunction && afterHandel() + checkFunction || afterHandel() + } + } + + const dialogInstance = new Vue({ + data() { + return { + visible: true + } + }, + router: _vm.$router, + store: _vm.$store, + mounted() { + this.$on('close', (v) => { + this.handleClose() + }) + }, + methods: { + handleClose() { + handle(this.$refs._component.onCancel, () => { + this.visible = false + this.$refs._component.$emit('close') + this.$refs._component.$emit('cancel') + dialogInstance.$destroy() + }) + }, + handleOk() { + handle(this.$refs._component.onOK || this.$refs._component.onOk, + () => { + this.visible = false + this.$refs._component.$emit('close') + this.$refs._component.$emit('ok') + dialogInstance.$destroy() + }) + } + }, + render: function (h) { + const that = this + const modalModel = modalProps && modalProps.model + if (modalModel) { + delete modalProps.model + } + const ModalProps = Object.assign({}, + modalModel && {model: modalModel} || {}, { + attrs: Object.assign({}, { + ...(modalProps.attrs || modalProps) + }, { + visible: this.visible + }), + on: Object.assign({}, { + ...(modalProps.on || modalProps) + }, { + ok: () => { + that.handleOk() + }, + cancel: () => { + that.handleClose() + } + }) + }) + + const componentModel = componentProps && componentProps.model + if (componentModel) { + delete componentProps.model + } + const ComponentProps = Object.assign({}, + componentModel && {model: componentModel} || {}, { + ref: '_component', + attrs: Object.assign({}, { + ...((componentProps && componentProps.attrs) || componentProps) + }), + on: Object.assign({}, { + ...((componentProps && componentProps.on) || componentProps) + }) + }) + + return h(Modal, ModalProps, [h(component, ComponentProps)]) + } + }).$mount(dialogDiv) + } + + Object.defineProperty(Vue.prototype, '$dialog', { + get: () => { + return function () { + dialog.apply(this, arguments) + } + } + }) +} diff --git a/cn-universal-web-ui/src/components/Editor/Editor.vue b/cn-universal-web-ui/src/components/Editor/Editor.vue new file mode 100644 index 0000000000000000000000000000000000000000..ecb344952762d0c9f4b1de998c443af8529efee2 --- /dev/null +++ b/cn-universal-web-ui/src/components/Editor/Editor.vue @@ -0,0 +1,147 @@ + + + + diff --git a/cn-universal-web-ui/src/components/Editor/index.js b/cn-universal-web-ui/src/components/Editor/index.js new file mode 100644 index 0000000000000000000000000000000000000000..bf1df9abd298f1add408dcd212e89d8a5c844277 --- /dev/null +++ b/cn-universal-web-ui/src/components/Editor/index.js @@ -0,0 +1,3 @@ +import Editor from './Editor' + +export default Editor diff --git a/cn-universal-web-ui/src/components/Editor/index.md b/cn-universal-web-ui/src/components/Editor/index.md new file mode 100644 index 0000000000000000000000000000000000000000..532f4200f84103438abab4ed694c2687f54bcb07 --- /dev/null +++ b/cn-universal-web-ui/src/components/Editor/index.md @@ -0,0 +1 @@ +# Editor 富文本编辑器 diff --git a/cn-universal-web-ui/src/components/Ellipsis/Ellipsis.vue b/cn-universal-web-ui/src/components/Ellipsis/Ellipsis.vue new file mode 100644 index 0000000000000000000000000000000000000000..d412de32efb698d13cc19fc901dfb7694be20d2b --- /dev/null +++ b/cn-universal-web-ui/src/components/Ellipsis/Ellipsis.vue @@ -0,0 +1,66 @@ + diff --git a/cn-universal-web-ui/src/components/Ellipsis/index.js b/cn-universal-web-ui/src/components/Ellipsis/index.js new file mode 100644 index 0000000000000000000000000000000000000000..91e3ff4f70282e3cd8678aa6881b64c52ac6815c --- /dev/null +++ b/cn-universal-web-ui/src/components/Ellipsis/index.js @@ -0,0 +1,3 @@ +import Ellipsis from './Ellipsis' + +export default Ellipsis diff --git a/cn-universal-web-ui/src/components/Ellipsis/index.md b/cn-universal-web-ui/src/components/Ellipsis/index.md new file mode 100644 index 0000000000000000000000000000000000000000..8b81a3e8263e5f1b7cd6635947cd0db04caa2084 --- /dev/null +++ b/cn-universal-web-ui/src/components/Ellipsis/index.md @@ -0,0 +1,31 @@ +# Ellipsis 文本自动省略号 + +文本过长自动处理省略号,支持按照文本长度和最大行数两种方式截取。 + +引用方式: + +```javascript +import Ellipsis from '@/components/Ellipsis' + +export default { + components: { + Ellipsis + } +} +``` + +## 代码演示 [demo](https://pro.loacg.com/test/home) + +```html + + There were injuries alleged in three cases in 2015, and a + fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall. + +``` + +## API + + 参数 | 说明 | 类型 | 默认值 +---------|--------------------------|---------|----- + tooltip | 移动到文本展示完整内容的提示 | boolean | - + length | 在按照长度截取下的文本最大字符数,超过则截取省略 | number | - \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/FileUpload/index.vue b/cn-universal-web-ui/src/components/FileUpload/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..43c70e7da5c04a1542ada7cdf862e09bf8d4ffc2 --- /dev/null +++ b/cn-universal-web-ui/src/components/FileUpload/index.vue @@ -0,0 +1,112 @@ + + + + diff --git a/cn-universal-web-ui/src/components/FileUpload/ooo.vue b/cn-universal-web-ui/src/components/FileUpload/ooo.vue new file mode 100644 index 0000000000000000000000000000000000000000..168af7c4c08deec54e2ac0b48ea09aefb45dfe5c --- /dev/null +++ b/cn-universal-web-ui/src/components/FileUpload/ooo.vue @@ -0,0 +1,195 @@ + + + diff --git a/cn-universal-web-ui/src/components/FooterToolbar/FooterToolBar.vue b/cn-universal-web-ui/src/components/FooterToolbar/FooterToolBar.vue new file mode 100644 index 0000000000000000000000000000000000000000..5364b9de60c81b66a198df35661af2e29b8b0835 --- /dev/null +++ b/cn-universal-web-ui/src/components/FooterToolbar/FooterToolBar.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/FooterToolbar/index.js b/cn-universal-web-ui/src/components/FooterToolbar/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a0bf1459a0d9b6ebf279c7084e216234fd4dcc68 --- /dev/null +++ b/cn-universal-web-ui/src/components/FooterToolbar/index.js @@ -0,0 +1,4 @@ +import FooterToolBar from './FooterToolBar' +import './index.less' + +export default FooterToolBar diff --git a/cn-universal-web-ui/src/components/FooterToolbar/index.less b/cn-universal-web-ui/src/components/FooterToolbar/index.less new file mode 100644 index 0000000000000000000000000000000000000000..1b3480be123ee9c9dd096e2580553773635f4986 --- /dev/null +++ b/cn-universal-web-ui/src/components/FooterToolbar/index.less @@ -0,0 +1,24 @@ +// Define variables directly to avoid import issues +@ant-pro-prefix: ant-pro; + +@footer-toolbar-prefix-cls: ~"@{ant-pro-prefix}-footer-toolbar"; + +.@{footer-toolbar-prefix-cls} { + position: fixed; + width: 100%; + bottom: 0; + right: 0; + height: 56px; + line-height: 56px; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.03); + background: #fff; + border-top: 1px solid #e8e8e8; + padding: 0 24px; + z-index: 9; + + &:after { + content: ""; + display: block; + clear: both; + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/FooterToolbar/index.md b/cn-universal-web-ui/src/components/FooterToolbar/index.md new file mode 100644 index 0000000000000000000000000000000000000000..d7364116a1bb35525c401fb37fa25e7eb7edfa70 --- /dev/null +++ b/cn-universal-web-ui/src/components/FooterToolbar/index.md @@ -0,0 +1,43 @@ +# FooterToolbar 底部工具栏 + +固定在底部的工具栏。 + +## 何时使用 + +固定在内容区域的底部,不随滚动条移动,常用于长页面的数据搜集和提交工作。 + +引用方式: + +```javascript +import FooterToolBar from '@/components/FooterToolbar' + +export default { + components: { + FooterToolBar + } +} +``` + +## 代码演示 + +```html + + 提交 + +``` + +或 + +```html + + 提交 + +``` + +## API + + 参数 | 说明 | 类型 | 默认值 +-----------------|------------|----------------|----- + children (slot) | 工具栏内容,向右对齐 | - | - + extra | 额外信息,向左对齐 | String, Object | - + diff --git a/cn-universal-web-ui/src/components/GlobalFooter/index.vue b/cn-universal-web-ui/src/components/GlobalFooter/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..ceebfd76ba03cd8e726d89e3a9b01d7035c365ba --- /dev/null +++ b/cn-universal-web-ui/src/components/GlobalFooter/index.vue @@ -0,0 +1,16 @@ + + + diff --git a/cn-universal-web-ui/src/components/GlobalHeader/AvatarDropdown.vue b/cn-universal-web-ui/src/components/GlobalHeader/AvatarDropdown.vue new file mode 100644 index 0000000000000000000000000000000000000000..67266430a988f21c147975e64a7bf38f092338a3 --- /dev/null +++ b/cn-universal-web-ui/src/components/GlobalHeader/AvatarDropdown.vue @@ -0,0 +1,108 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/GlobalHeader/RightContent.vue b/cn-universal-web-ui/src/components/GlobalHeader/RightContent.vue new file mode 100644 index 0000000000000000000000000000000000000000..61053807fd99703c0b314b85271d8f3a0ac64126 --- /dev/null +++ b/cn-universal-web-ui/src/components/GlobalHeader/RightContent.vue @@ -0,0 +1,142 @@ + + + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/GridContent/index.js b/cn-universal-web-ui/src/components/GridContent/index.js new file mode 100644 index 0000000000000000000000000000000000000000..099d72f7aa901f52c9ee5baec17128e4b02f9ef0 --- /dev/null +++ b/cn-universal-web-ui/src/components/GridContent/index.js @@ -0,0 +1,51 @@ +'use strict' + +Object.defineProperty(exports, '__esModule', { + value: true +}) +exports['default'] = void 0 + +require('./index.less') + +var _vueTypes = _interopRequireDefault( + require('ant-design-vue/es/_util/vue-types')) + +var _util = require('../../utils/util') + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : {'default': obj} +} + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, + {value: value, enumerable: true, configurable: true, writable: true}) + } else { + obj[key] = value + } + return obj +} + +var GridContent = { + name: 'GridContent', + functional: true, + props: { + children: _vueTypes['default'].any, + contentWidth: _vueTypes['default'].oneOf(['Fluid', 'Fixed']).def('Fluid') + }, + render: function render(h, content) { + var _classNames + + var contentWidth = content.props.contentWidth + var children = content.children + var propsContentWidth = (0, _util.layoutContentWidth)(contentWidth) + var classNames = (_classNames = {}, _defineProperty(_classNames, + 'ant-pro-grid-content', true), _defineProperty(_classNames, 'wide', + propsContentWidth), _classNames) + return h('div', { + 'class': classNames + }, [children]) + } +} +var _default = GridContent +exports['default'] = _default diff --git a/cn-universal-web-ui/src/components/GridContent/index.less b/cn-universal-web-ui/src/components/GridContent/index.less new file mode 100644 index 0000000000000000000000000000000000000000..ddcc3fb623c90b7e8495f03e7cd173982ff8fc92 --- /dev/null +++ b/cn-universal-web-ui/src/components/GridContent/index.less @@ -0,0 +1,14 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@grid-content-prefix-cls: ~'@{ant-prefix}-pro-grid-content'; + +.@{grid-content-prefix-cls} { + width: 100%; + min-height: 100%; + transition: 0.3s; + + &.wide { + max-width: 1200px; + margin: 0 auto; + } +} diff --git a/cn-universal-web-ui/src/components/IconSelector/IconSelector.vue b/cn-universal-web-ui/src/components/IconSelector/IconSelector.vue new file mode 100644 index 0000000000000000000000000000000000000000..0af6866712280d41388213c242a02a9778237d7c --- /dev/null +++ b/cn-universal-web-ui/src/components/IconSelector/IconSelector.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/IconSelector/README.md b/cn-universal-web-ui/src/components/IconSelector/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2b3e7ce37ec8bc09365147b58f48d35201c1226e --- /dev/null +++ b/cn-universal-web-ui/src/components/IconSelector/README.md @@ -0,0 +1,43 @@ +IconSelector +==== + +> 图标选择组件,常用于为某一个数据设定一个图标时使用 +> eg: 设定菜单列表时,为每个菜单设定一个图标 + +该组件由 [@Saraka](https://github.com/saraka-tsukai) 封装 + +### 使用方式 + +```vue + + + +``` + +### 事件 + +| 名称 | 说明 | 类型 | 默认值 | +|--------|-------------------|--------|-----| +| change | 当改变了 `icon` 选中项触发 | String | - | diff --git a/cn-universal-web-ui/src/components/IconSelector/icons.js b/cn-universal-web-ui/src/components/IconSelector/icons.js new file mode 100644 index 0000000000000000000000000000000000000000..1c8f727bf9f88fe079b8286862a798e66d7a29ce --- /dev/null +++ b/cn-universal-web-ui/src/components/IconSelector/icons.js @@ -0,0 +1,93 @@ +/** + * 增加新的图标时,请遵循以下数据结构 + * Adding new icon please follow the data structure below + */ +export default [ + { + key: 'directional', + title: '方向性图标', + icons: ['step-backward', 'step-forward', 'fast-backward', 'fast-forward', + 'shrink', 'arrows-alt', 'down', 'up', 'left', 'right', 'caret-up', + 'caret-down', 'caret-left', 'caret-right', 'up-circle', 'down-circle', + 'left-circle', 'right-circle', 'double-right', 'double-left', + 'vertical-left', 'vertical-right', 'forward', 'backward', 'rollback', + 'enter', 'retweet', 'swap', 'swap-left', 'swap-right', 'arrow-up', + 'arrow-down', 'arrow-left', 'arrow-right', 'play-circle', 'up-square', + 'down-square', 'left-square', 'right-square', 'login', 'logout', + 'menu-fold', 'menu-unfold', 'border-bottom', 'border-horizontal', + 'border-inner', 'border-left', 'border-right', 'border-top', + 'border-verticle', 'pic-center', 'pic-left', 'pic-right', + 'radius-bottomleft', 'radius-bottomright', 'radius-upleft', 'fullscreen', + 'fullscreen-exit'] + }, + { + key: 'suggested', + title: '提示建议性图标', + icons: ['question', 'question-circle', 'plus', 'plus-circle', 'pause', + 'pause-circle', 'minus', 'minus-circle', 'plus-square', 'minus-square', + 'info', 'info-circle', 'exclamation', 'exclamation-circle', 'close', + 'close-circle', 'close-square', 'check', 'check-circle', 'check-square', + 'clock-circle', 'warning', 'issues-close', 'stop'] + }, + { + key: 'editor', + title: '编辑类图标', + icons: ['edit', 'form', 'copy', 'scissor', 'delete', 'snippets', 'diff', + 'highlight', 'align-center', 'align-left', 'align-right', 'bg-colors', + 'bold', 'italic', 'underline', 'strikethrough', 'redo', 'undo', 'zoom-in', + 'zoom-out', 'font-colors', 'font-size', 'line-height', 'colum-height', + 'dash', 'small-dash', 'sort-ascending', 'sort-descending', 'drag', + 'ordered-list', 'radius-setting'] + }, + { + key: 'data', + title: '数据类图标', + icons: ['area-chart', 'pie-chart', 'bar-chart', 'dot-chart', 'line-chart', + 'radar-chart', 'heat-map', 'fall', 'rise', 'stock', 'box-plot', 'fund', + 'sliders'] + }, + { + key: 'brand_logo', + title: '网站通用图标', + icons: ['lock', 'unlock', 'bars', 'book', 'calendar', 'cloud', + 'cloud-download', 'code', 'copy', 'credit-card', 'delete', 'desktop', + 'download', 'ellipsis', 'file', 'file-text', 'file-unknown', 'file-pdf', + 'file-word', 'file-excel', 'file-jpg', 'file-ppt', 'file-markdown', + 'file-add', 'folder', 'folder-open', 'folder-add', 'hdd', 'frown', 'meh', + 'smile', 'inbox', 'laptop', 'appstore', 'link', 'mail', 'mobile', + 'notification', 'paper-clip', 'picture', 'poweroff', 'reload', 'search', + 'setting', 'share-alt', 'shopping-cart', 'tablet', 'tag', 'tags', + 'to-top', 'upload', 'user', 'video-camera', 'home', 'loading', + 'loading-3-quarters', 'cloud-upload', 'star', 'heart', 'environment', + 'eye', 'camera', 'save', 'team', 'solution', 'phone', 'filter', + 'exception', 'export', 'customer-service', 'qrcode', 'scan', 'like', + 'dislike', 'message', 'pay-circle', 'calculator', 'pushpin', 'bulb', + 'select', 'switcher', 'rocket', 'bell', 'disconnect', 'database', + 'compass', 'barcode', 'hourglass', 'key', 'flag', 'layout', 'printer', + 'sound', 'usb', 'skin', 'tool', 'sync', 'wifi', 'car', 'schedule', + 'user-add', 'user-delete', 'usergroup-add', 'usergroup-delete', 'man', + 'woman', 'shop', 'gift', 'idcard', 'medicine-box', 'red-envelope', + 'coffee', 'copyright', 'trademark', 'safety', 'wallet', 'bank', 'trophy', + 'contacts', 'global', 'shake', 'api', 'fork', 'dashboard', 'table', + 'profile', 'alert', 'audit', 'branches', 'build', 'border', 'crown', + 'experiment', 'fire', 'money-collect', 'property-safety', 'read', + 'reconciliation', 'rest', 'security-scan', 'insurance', 'interation', + 'safety-certificate', 'project', 'thunderbolt', 'block', 'cluster', + 'deployment-unit', 'dollar', 'euro', 'pound', 'file-done', + 'file-exclamation', 'file-protect', 'file-search', 'file-sync', 'gateway', + 'gold', 'robot', 'shopping'] + }, + { + key: 'application', + title: '品牌和标识', + icons: ['android', 'apple', 'windows', 'ie', 'chrome', 'github', + 'aliwangwang', 'dingding', 'weibo-square', 'weibo-circle', + 'taobao-circle', 'html5', 'weibo', 'twitter', 'wechat', 'youtube', + 'alipay-circle', 'taobao', 'skype', 'qq', 'medium-workmark', 'gitlab', + 'medium', 'linkedin', 'google-plus', 'dropbox', 'facebook', 'codepen', + 'code-sandbox', 'amazon', 'google', 'codepen-circle', 'alipay', + 'ant-design', 'aliyun', 'zhihu', 'slack', 'slack-square', 'behance', + 'behance-square', 'dribbble', 'dribbble-square', 'instagram', 'yuque', + 'alibaba', 'yahoo'] + } +] diff --git a/cn-universal-web-ui/src/components/IconSelector/index.js b/cn-universal-web-ui/src/components/IconSelector/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8d71f5917234a4dce3b4184d56cdc7c6e28347f4 --- /dev/null +++ b/cn-universal-web-ui/src/components/IconSelector/index.js @@ -0,0 +1,3 @@ +import IconSelector from './IconSelector' + +export default IconSelector diff --git a/cn-universal-web-ui/src/components/JessibucaPro/index.vue b/cn-universal-web-ui/src/components/JessibucaPro/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..242775d781848bcd42421479893422049efaec0a --- /dev/null +++ b/cn-universal-web-ui/src/components/JessibucaPro/index.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/Map/MapModal.vue b/cn-universal-web-ui/src/components/Map/MapModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..295b5f298f298c066a46c5959e2a2647c1715388 --- /dev/null +++ b/cn-universal-web-ui/src/components/Map/MapModal.vue @@ -0,0 +1,60 @@ + + + + diff --git a/cn-universal-web-ui/src/components/Map/index.vue b/cn-universal-web-ui/src/components/Map/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4b917ba5aa8b5e54375d286d2d0989b730ccf096 --- /dev/null +++ b/cn-universal-web-ui/src/components/Map/index.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/MultiTab/MultiTab.vue b/cn-universal-web-ui/src/components/MultiTab/MultiTab.vue new file mode 100644 index 0000000000000000000000000000000000000000..a0d4274eaf6ae91d5eaa99fcd389fac80f4bbec1 --- /dev/null +++ b/cn-universal-web-ui/src/components/MultiTab/MultiTab.vue @@ -0,0 +1,177 @@ + diff --git a/cn-universal-web-ui/src/components/MultiTab/events.js b/cn-universal-web-ui/src/components/MultiTab/events.js new file mode 100644 index 0000000000000000000000000000000000000000..8853b4d2958a2b21f74fb2105cde73f8e98b9df1 --- /dev/null +++ b/cn-universal-web-ui/src/components/MultiTab/events.js @@ -0,0 +1,3 @@ +import Vue from 'vue' + +export default new Vue() diff --git a/cn-universal-web-ui/src/components/MultiTab/index.js b/cn-universal-web-ui/src/components/MultiTab/index.js new file mode 100644 index 0000000000000000000000000000000000000000..782abc5dd4bc1cb421273a94caacf380a2260f74 --- /dev/null +++ b/cn-universal-web-ui/src/components/MultiTab/index.js @@ -0,0 +1,40 @@ +import events from './events' +import MultiTab from './MultiTab' +import './index.less' + +const api = { + /** + * open new tab on route fullPath + * @param config + */ + open: function (config) { + events.$emit('open', config) + }, + rename: function (key, name) { + events.$emit('rename', {key: key, name: name}) + }, + /** + * close current page + */ + closeCurrentPage: function () { + this.close() + }, + /** + * close route fullPath tab + * @param config + */ + close: function (config) { + events.$emit('close', config) + } +} + +MultiTab.install = function (Vue) { + if (Vue.prototype.$multiTab) { + return + } + api.instance = events + Vue.prototype.$multiTab = api + Vue.component('multi-tab', MultiTab) +} + +export default MultiTab diff --git a/cn-universal-web-ui/src/components/MultiTab/index.less b/cn-universal-web-ui/src/components/MultiTab/index.less new file mode 100644 index 0000000000000000000000000000000000000000..99eadbe5b968f00445522bffe9d402c2ecdf054e --- /dev/null +++ b/cn-universal-web-ui/src/components/MultiTab/index.less @@ -0,0 +1,21 @@ +@import '../index'; + +@multi-tab-prefix-cls: ~"@{ant-pro-prefix}-multi-tab"; +@multi-tab-wrapper-prefix-cls: ~"@{ant-pro-prefix}-multi-tab-wrapper"; + +.@{multi-tab-prefix-cls} { + margin: -23px -24px 24px -24px; + background: #fff; +} + +.topmenu .@{multi-tab-wrapper-prefix-cls} { + max-width: 98%; + margin: 0 auto; +} + +.@{multi-tab-wrapper-prefix-cls} > .ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active { + border-color: #fff; + border-top-right-radius: 30px; + background: #fff; + box-shadow: 2px 0 4px rgb(0 21 41 / 5%); +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/NProgress/nprogress.less b/cn-universal-web-ui/src/components/NProgress/nprogress.less new file mode 100644 index 0000000000000000000000000000000000000000..c4b53f687e8db8550a61b4df96994bd53fcdc771 --- /dev/null +++ b/cn-universal-web-ui/src/components/NProgress/nprogress.less @@ -0,0 +1,85 @@ +@import '~ant-design-vue/es/style/themes/default.less'; + +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: @primary-color; + + position: fixed; + z-index: 1031; + top: 0; + left: 0; + + width: 100%; + height: 2px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0px; + width: 100px; + height: 100%; + box-shadow: 0 0 10px @primary-color, 0 0 5px @primary-color; + opacity: 1.0; + + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: block; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + + border: solid 2px transparent; + border-top-color: @primary-color; + border-left-color: @primary-color; + border-radius: 50%; + + -webkit-animation: nprogress-spinner 400ms linear infinite; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@-webkit-keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} + +@keyframes nprogress-spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + diff --git a/cn-universal-web-ui/src/components/NoticeIcon/NoticeDetail.vue b/cn-universal-web-ui/src/components/NoticeIcon/NoticeDetail.vue new file mode 100644 index 0000000000000000000000000000000000000000..b1d0f6cab3784aa2b031cefda5e89f184356e691 --- /dev/null +++ b/cn-universal-web-ui/src/components/NoticeIcon/NoticeDetail.vue @@ -0,0 +1,117 @@ + + + + diff --git a/cn-universal-web-ui/src/components/NoticeIcon/NoticeIcon.vue b/cn-universal-web-ui/src/components/NoticeIcon/NoticeIcon.vue new file mode 100644 index 0000000000000000000000000000000000000000..b244214480f7c2ad74b2866871d74ab3b33a3a96 --- /dev/null +++ b/cn-universal-web-ui/src/components/NoticeIcon/NoticeIcon.vue @@ -0,0 +1,140 @@ + + + + + + diff --git a/cn-universal-web-ui/src/components/NoticeIcon/index.js b/cn-universal-web-ui/src/components/NoticeIcon/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c83d6887b81124adee2cae61f68bd9bfb66c4681 --- /dev/null +++ b/cn-universal-web-ui/src/components/NoticeIcon/index.js @@ -0,0 +1,3 @@ +import NoticeIcon from './NoticeIcon' + +export default NoticeIcon diff --git a/cn-universal-web-ui/src/components/NumberInfo/NumberInfo.vue b/cn-universal-web-ui/src/components/NumberInfo/NumberInfo.vue new file mode 100644 index 0000000000000000000000000000000000000000..043f8fc68e7496fcc1f28cf20213333c73ed764d --- /dev/null +++ b/cn-universal-web-ui/src/components/NumberInfo/NumberInfo.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/NumberInfo/index.js b/cn-universal-web-ui/src/components/NumberInfo/index.js new file mode 100644 index 0000000000000000000000000000000000000000..659a2f3861442d23d5b704c8a07068222c720d85 --- /dev/null +++ b/cn-universal-web-ui/src/components/NumberInfo/index.js @@ -0,0 +1,3 @@ +import NumberInfo from './NumberInfo' + +export default NumberInfo diff --git a/cn-universal-web-ui/src/components/NumberInfo/index.less b/cn-universal-web-ui/src/components/NumberInfo/index.less new file mode 100644 index 0000000000000000000000000000000000000000..6ecde67a372d80c781d2a41615f15c9480623d9f --- /dev/null +++ b/cn-universal-web-ui/src/components/NumberInfo/index.less @@ -0,0 +1,58 @@ +@import "../index"; + +@numberInfo-prefix-cls: ~"@{ant-pro-prefix}-number-info"; + +.@{numberInfo-prefix-cls} { + + .ant-pro-number-info-subtitle { + color: @text-color-secondary; + font-size: @font-size-base; + height: 22px; + line-height: 22px; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; + } + + .number-info-value { + margin-top: 4px; + font-size: 0; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; + + & > span { + color: @heading-color; + display: inline-block; + line-height: 32px; + height: 32px; + font-size: 24px; + margin-right: 32px; + } + + .sub-total { + color: @text-color-secondary; + font-size: @font-size-lg; + vertical-align: top; + margin-right: 0; + + i { + font-size: 12px; + transform: scale(0.82); + margin-left: 4px; + } + + :global { + .anticon-caret-up { + color: @red-6; + } + + .anticon-caret-down { + color: @green-6; + } + } + } + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/NumberInfo/index.md b/cn-universal-web-ui/src/components/NumberInfo/index.md new file mode 100644 index 0000000000000000000000000000000000000000..c99dc35854623751cb05b5dfce9ecde575457b2a --- /dev/null +++ b/cn-universal-web-ui/src/components/NumberInfo/index.md @@ -0,0 +1,37 @@ +# NumberInfo 数据文本 + +常用在数据卡片中,用于突出展示某个业务数据。 + +引用方式: + +```javascript +import NumberInfo from '@/components/NumberInfo' + +export default { + components: { + NumberInfo + } +} +``` + +## 代码演示 [demo](https://pro.loacg.com/test/home) + +```html + +``` + +## API + + 参数 | 说明 | 类型 | 默认值 +----------|------------------|-------------------|--------- + title | 标题 | ReactNode\|string | - + subTitle | 子标题 | ReactNode\|string | - + total | 总量 | ReactNode\|string | - + subTotal | 子总量 | ReactNode\|string | - + status | 增加状态 | 'up \| down' | - + theme | 状态样式 | string | 'light' + gap | 设置数字和描述之间的间距(像素) | number | 8 diff --git a/cn-universal-web-ui/src/components/Other/CarbonAds.vue b/cn-universal-web-ui/src/components/Other/CarbonAds.vue new file mode 100644 index 0000000000000000000000000000000000000000..7c91ac5e6ca7841d01a01ba97a6d16e134dc1b40 --- /dev/null +++ b/cn-universal-web-ui/src/components/Other/CarbonAds.vue @@ -0,0 +1,123 @@ + + diff --git a/cn-universal-web-ui/src/components/PageLoading/index.jsx b/cn-universal-web-ui/src/components/PageLoading/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..b126e5e9e22410fea45d11aa0cc99b814d408d2f --- /dev/null +++ b/cn-universal-web-ui/src/components/PageLoading/index.jsx @@ -0,0 +1,107 @@ +import {Spin} from 'ant-design-vue' + +export const PageLoading = { + name: 'PageLoading', + props: { + tip: { + type: String, + default: 'Loading..' + }, + size: { + type: String, + default: 'large' + } + }, + render() { + const style = { + textAlign: 'center', + background: 'rgba(0,0,0,0.6)', + position: 'fixed', + top: 0, + bottom: 0, + left: 0, + right: 0, + zIndex: 1100 + } + const spinStyle = { + position: 'absolute', + left: '50%', + top: '40%', + transform: 'translate(-50%, -50%)' + } + return (
          + +
          ) + } +} + +const version = '0.0.1' +const loading = {} + +loading.newInstance = (Vue, options) => { + let loadingElement = document.querySelector('body>div[type=loading]') + if (!loadingElement) { + loadingElement = document.createElement('div') + loadingElement.setAttribute('type', 'loading') + loadingElement.setAttribute('class', 'ant-loading-wrapper') + document.body.appendChild(loadingElement) + } + + const cdProps = Object.assign( + {visible: false, size: 'large', tip: 'Loading...'}, options) + + const instance = new Vue({ + data() { + return { + ...cdProps + } + }, + render() { + const {tip} = this + const props = {} + this.tip && (props.tip = tip) + if (this.visible) { + return + } + return null + } + }).$mount(loadingElement) + + function update(config) { + const {visible, size, tip} = {...cdProps, ...config} + instance.$set(instance, 'visible', visible) + if (tip) { + instance.$set(instance, 'tip', tip) + } + if (size) { + instance.$set(instance, 'size', size) + } + } + + return { + instance, + update + } +} + +const api = { + show: function (options) { + this.instance.update({...options, visible: true}) + }, + hide: function () { + this.instance.update({visible: false}) + } +} + +const install = function (Vue, options) { + if (Vue.prototype.$loading) { + return + } + api.instance = loading.newInstance(Vue, options) + Vue.prototype.$loading = api +} + +export default { + version, + install +} diff --git a/cn-universal-web-ui/src/components/ProLayout/BasicLayout.jsx b/cn-universal-web-ui/src/components/ProLayout/BasicLayout.jsx new file mode 100644 index 0000000000000000000000000000000000000000..c2820fbbb5d9de9f87c9ed6b0772f05282a0a41b --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/BasicLayout.jsx @@ -0,0 +1,171 @@ +import './BasicLayout.less' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' + +import 'ant-design-vue/es/layout/style' +import Layout from 'ant-design-vue/es/layout' + +import {ContainerQuery} from 'vue-container-query' +import {SiderMenuWrapper} from './components' +import {getComponentFromProp, isFun} from './utils/util' +import {SiderMenuProps} from './components/SiderMenu' +import HeaderView, {HeaderViewProps} from './Header' +import WrapContent from './WrapContent' +import ConfigProvider from './components/ConfigProvider' +import PageHeaderWrapper from './components/PageHeaderWrapper' + +export const BasicLayoutProps = { + ...SiderMenuProps, + ...HeaderViewProps, + contentWidth: PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid'), + // contentWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).def('Fluid'), + locale: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).def('en-US'), + breadcrumbRender: PropTypes.func, + disableMobile: PropTypes.bool.def(false), + mediaQuery: PropTypes.object.def({}), + handleMediaQuery: PropTypes.func, + footerRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def( + undefined) +} + +const MediaQueryEnum = { + 'screen-xs': { + maxWidth: 575 + }, + 'screen-sm': { + minWidth: 576, + maxWidth: 767 + }, + 'screen-md': { + minWidth: 768, + maxWidth: 991 + }, + 'screen-lg': { + minWidth: 992, + maxWidth: 1199 + }, + 'screen-xl': { + minWidth: 1200, + maxWidth: 1599 + }, + 'screen-xxl': { + minWidth: 1600 + } +} + +const getPaddingLeft = ( + hasLeftPadding, + collapsed = undefined, + siderWidth +) => { + if (hasLeftPadding) { + return collapsed ? 80 : siderWidth + } + return 0 +} + +const headerRender = (h, props) => { + if (props.headerRender === false) { + return null + } + return +} + +const defaultI18nRender = (key) => key + +const BasicLayout = { + name: 'BasicLayout', + functional: true, + props: BasicLayoutProps, + render(h, content) { + const {props, children} = content + const { + layout, + // theme, + isMobile, + collapsed, + mediaQuery, + handleMediaQuery, + handleCollapse, + siderWidth, + fixSiderbar, + i18nRender = defaultI18nRender + } = props + + const footerRender = getComponentFromProp(content, 'footerRender') + const rightContentRender = getComponentFromProp(content, + 'rightContentRender') + const collapsedButtonRender = getComponentFromProp(content, + 'collapsedButtonRender') + const menuHeaderRender = getComponentFromProp(content, 'menuHeaderRender') + const breadcrumbRender = getComponentFromProp(content, 'breadcrumbRender') + const headerContentRender = getComponentFromProp(content, + 'headerContentRender') + const menuRender = getComponentFromProp(content, 'menuRender') + + const isTopMenu = layout === 'topmenu' + const hasSiderMenu = !isTopMenu + // If it is a fix menu, calculate padding + // don't need padding in phone mode + const hasLeftPadding = fixSiderbar && !isTopMenu && !isMobile + const cdProps = { + ...props, + hasSiderMenu, + footerRender, + menuHeaderRender, + rightContentRender, + collapsedButtonRender, + breadcrumbRender, + headerContentRender, + menuRender + } + + return ( + + + + + + {headerRender(h, { + ...cdProps, + mode: 'horizontal' + })} + + {children} + + {footerRender !== false && ( + + {isFun(footerRender) && footerRender(h) || footerRender} + + ) || null + } + + + + + ) + } +} + +BasicLayout.install = function (Vue) { + Vue.component(PageHeaderWrapper.name, PageHeaderWrapper) + Vue.component('PageContainer', PageHeaderWrapper) + Vue.component('ProLayout', BasicLayout) +} + +export default BasicLayout diff --git a/cn-universal-web-ui/src/components/ProLayout/BasicLayout.less b/cn-universal-web-ui/src/components/ProLayout/BasicLayout.less new file mode 100644 index 0000000000000000000000000000000000000000..dcb789b40be23909580c27bb214cc9e9ecd7c578 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/BasicLayout.less @@ -0,0 +1,122 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@basicLayout-prefix-cls: ~'@{ant-prefix}-pro-basicLayout'; +@sider-menu-prefix-cls: ~'@{ant-prefix}-pro-sider-menu'; +@nav-header-height: @layout-header-height; + +.@{basicLayout-prefix-cls} { + + &:not('.ant-pro-basicLayout-mobile') { + ::-webkit-scrollbar { + width: 6px; + height: 6px; + } + + ::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0.06); + border-radius: 3px; + -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.08); + } + + /* 滚动条滑块 */ + + ::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.12); + border-radius: 3px; + -webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2); + } + } + + // BFC + display: flex; + flex-direction: column; + width: 100%; + min-height: 100%; + + .ant-layout-header { + &:not(.ant-pro-top-menu) { + background: @component-background; + } + + &.ant-pro-fixed-header { + position: fixed; + top: 0; + } + } + + &-content { + position: relative; + margin: 24px; + transition: all 0.2s; + + .@{ant-prefix}-pro-page-header-wrap { + margin: -24px -24px 0; + } + + &-disable-margin { + margin: 0; + + > div > .@{ant-prefix}-pro-page-header-wrap { + margin: 0; + } + } + + > .ant-layout { + max-height: 100%; + } + } + + // append hook styles + + .ant-layout-sider-children { + height: 100%; + } + + .trigger { + font-size: 18px; + line-height: 64px; + padding: 0 24px; + cursor: pointer; + transition: color 0.3s; + + &:hover { + color: #1890ff; + } + } + + &-content { + position: relative; + margin: 24px; + transition: all 0.2s; + + .@{ant-prefix}-pro-page-header-wrap { + margin: -24px -24px 0; + } + + &-disable-margin { + margin: 0; + + > div > .@{ant-prefix}-pro-page-header-wrap { + margin: 0; + } + } + + > .ant-layout { + max-height: 100%; + } + } + + .color-picker { + margin: 10px 0; + } +} + +// 内容区去除多余 margin,紧贴顶部 +.ant-pro-basicLayout-content { + margin-top: 0 !important; + margin-bottom: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin: 0 !important; + padding-top: 0 !important; +} diff --git a/cn-universal-web-ui/src/components/ProLayout/BlockLayout.jsx b/cn-universal-web-ui/src/components/ProLayout/BlockLayout.jsx new file mode 100644 index 0000000000000000000000000000000000000000..c409a4e224581231b8797b8bf63ab2c6dfd092a8 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/BlockLayout.jsx @@ -0,0 +1,9 @@ +const BlockLayout = { + name: 'BlockLayout', + functional: true, + render(createElement, content) { + return content.children + } +} + +export default BlockLayout diff --git a/cn-universal-web-ui/src/components/ProLayout/Header.jsx b/cn-universal-web-ui/src/components/ProLayout/Header.jsx new file mode 100644 index 0000000000000000000000000000000000000000..36996e6f7f73d63424fb4f57ed04d41209b3825c --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/Header.jsx @@ -0,0 +1,122 @@ +import './Header.less' + +import 'ant-design-vue/es/layout/style' +import Layout from 'ant-design-vue/es/layout' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import BaseMenu from './components/RouteMenu/BaseMenu' +import { + defaultRenderLogoAntTitle, + SiderMenuProps +} from './components/SiderMenu/SiderMenu' +import GlobalHeader, {GlobalHeaderProps} from './components/GlobalHeader' +import {VueFragment} from './components' +import {isFun} from './utils/util' + +const {Header} = Layout + +export const HeaderViewProps = { + ...GlobalHeaderProps, + ...SiderMenuProps, + isMobile: PropTypes.bool.def(false), + collapsed: PropTypes.bool, + logo: PropTypes.any, + hasSiderMenu: PropTypes.bool, + autoHideHeader: PropTypes.bool, + menuRender: PropTypes.any, + headerRender: PropTypes.any, + rightContentRender: PropTypes.any, + visible: PropTypes.bool.def(true) +} + +const renderContent = (h, props) => { + const isTop = props.layout === 'topmenu' + const maxWidth = 1200 - 280 - 120 + const contentWidth = props.contentWidth === 'Fixed' + const baseCls = 'ant-pro-top-nav-header' + const { + logo, + title, + theme, + isMobile, + headerRender, + rightContentRender, + menuHeaderRender + } = props + const rightContentProps = {theme, isTop, isMobile} + let defaultDom = + if (isTop && !isMobile) { + defaultDom = ( +
          +
          + {menuHeaderRender && ( +
          + +
          + )} +
          + +
          + {isFun(rightContentRender) && rightContentRender(h, rightContentProps) + || rightContentRender} +
          +
          + ) + } + if (headerRender) { + return headerRender(h, props) + } + return defaultDom +} + +const HeaderView = { + name: 'HeaderView', + props: HeaderViewProps, + render(h) { + const { + visible, + isMobile, + layout, + collapsed, + siderWidth, + fixedHeader, + hasSiderMenu + } = this.$props + const props = this.$props + const isTop = layout === 'topmenu' + + const needSettingWidth = fixedHeader && hasSiderMenu && !isTop && !isMobile + + const className = { + 'ant-pro-fixed-header': fixedHeader, + 'ant-pro-top-menu': isTop + } + + // 没有 <> 暂时代替写法 + return ( + visible ? ( + + {fixedHeader &&
          } +
          + {renderContent(h, props)} +
          + + ) : null + ) + } +} + +export default HeaderView diff --git a/cn-universal-web-ui/src/components/ProLayout/Header.less b/cn-universal-web-ui/src/components/ProLayout/Header.less new file mode 100644 index 0000000000000000000000000000000000000000..1829316a22ea9cd3390a7abc2da112fe0ea78933 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/Header.less @@ -0,0 +1,101 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@top-nav-header-prefix-cls: ~'@{ant-prefix}-pro-top-nav-header'; +@pro-layout-fixed-header-prefix-cls: ~'@{ant-prefix}-pro-fixed-header'; + +.@{top-nav-header-prefix-cls} { + position: relative; + width: 100%; + height: @layout-header-height; + box-shadow: @box-shadow-base; + transition: background 0.3s, width 0.2s; + + .ant-menu-submenu.ant-menu-submenu-horizontal { + height: 100%; + line-height: @layout-header-height; + + .ant-menu-submenu-title { + height: 100%; + } + } + + &.light { + background-color: @component-background; + + h1 { + color: #002140; + } + } + + &-main { + display: flex; + height: @layout-header-height; + padding-left: 24px; + + &.wide { + max-width: 1200px; + margin: auto; + padding-left: 0; + } + + .left { + display: flex; + flex: 1; + } + + .right { + width: 324px; + } + } + + &-logo { + position: relative; + width: 165px; + height: @layout-header-height; + overflow: hidden; + line-height: @layout-header-height; + transition: all 0.3s; + + img, svg { + display: inline-block; + height: 32px; + width: 32px; + vertical-align: middle; + } + + h1 { + display: inline-block; + margin: 0 0 0 12px; + color: @btn-primary-color; + font-weight: 400; + font-size: 16px; + vertical-align: top; + } + } + + &-menu { + .ant-menu.ant-menu-horizontal { + height: @layout-header-height; + line-height: @layout-header-height; + border: none; + } + } +} + +.@{pro-layout-fixed-header-prefix-cls} { + z-index: 9; + width: 100%; + transition: width 0.2s; +} + +.drop-down { + &.menu { + .anticon { + margin-right: 8px; + } + + .ant-dropdown-menu-item { + min-width: 160px; + } + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/PageView.jsx b/cn-universal-web-ui/src/components/ProLayout/PageView.jsx new file mode 100644 index 0000000000000000000000000000000000000000..828c8f87839475cf1c8f7e59c5fbf20e6d54bf40 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/PageView.jsx @@ -0,0 +1,14 @@ +import {PageHeaderWrapper} from './components' + +const PageView = { + name: 'PageView', + render() { + return ( + + + + ) + } +} + +export default PageView diff --git a/cn-universal-web-ui/src/components/ProLayout/WrapContent.jsx b/cn-universal-web-ui/src/components/ProLayout/WrapContent.jsx new file mode 100644 index 0000000000000000000000000000000000000000..2d7f94f11bdaf8657ab6153bc2f348f1d1b566b5 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/WrapContent.jsx @@ -0,0 +1,45 @@ +import PropTypes from 'ant-design-vue/es/_util/vue-types' + +import 'ant-design-vue/es/layout/style' +import Layout from 'ant-design-vue/es/layout' +import ConfigProvider from 'ant-design-vue/es/config-provider' +import GridContent from './components/GridContent' + +const {Content} = Layout + +const WrapContentProps = { + isChildrenLayout: PropTypes.bool, + location: PropTypes.any, + contentHeight: PropTypes.number, + contentWidth: PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid') +} + +const WrapContent = { + name: 'WrapContent', + props: WrapContentProps, + render(h) { + const { + isChildrenLayout, + contentWidth + } = this.$props + return ( + + { + if (isChildrenLayout) { + return el.parentNode() + } + return document.body + }} + > +
          + {this.$slots.default} +
          +
          +
          + ) + } +} + +export default WrapContent diff --git a/cn-universal-web-ui/src/components/ProLayout/components/ConfigProvider/index.js b/cn-universal-web-ui/src/components/ProLayout/components/ConfigProvider/index.js new file mode 100644 index 0000000000000000000000000000000000000000..4622b93450e4b293cf7a7b8262b152300694dda4 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/ConfigProvider/index.js @@ -0,0 +1,27 @@ +import PropTypes from 'ant-design-vue/es/_util/vue-types' + +const ProConfigProviderProps = { + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false), + contentWidth: PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid'), + breadcrumbRender: PropTypes.func +} + +const ConfigProvider = { + name: 'ProConfigProvider', + props: ProConfigProviderProps, + provide() { + const _self = this + return { + locale: _self.$props.i18nRender, + contentWidth: _self.$props.contentWidth, + breadcrumbRender: _self.$props.breadcrumbRender + } + }, + render() { + const {$scopedSlots} = this + const children = this.children || $scopedSlots.default + return children() + } +} + +export default ConfigProvider diff --git a/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/SideEffect/index.js b/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/SideEffect/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b26b387820f96c0a887ce58b5bd8c6e9d9e79abc --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/SideEffect/index.js @@ -0,0 +1,17 @@ +/* eslint-disable */ +class SideEffect { + constructor({propsToState, handleStateChange}) { + if (typeof propsToState !== 'function') { + throw new Error('Expected propsToState to be a function.') + } + if (typeof handleStateChange !== 'function') { + throw new Error('Expected handleStateChange to be a function.') + } + this.options = { + propsToState, + handleStateChange + } + } +} + +export default SideEffect diff --git a/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/index.js b/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/index.js new file mode 100644 index 0000000000000000000000000000000000000000..098a16797a82b546dc2f7ac50bc855705bf2955a --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/index.js @@ -0,0 +1,89 @@ +// import SideEffect from './SideEffect' +import {setDocumentTitle} from './util' + +// const sideEffect = new SideEffect({ +// propsToState (propsList) { +// var innermostProps = propsList[propsList.length - 1] +// if (innermostProps) { +// return innermostProps.title +// } +// }, +// handleStateChange (title, prefix) { +// console.log('title', title, prefix) +// const nextTitle = `${(title || '')} - ${prefix}` +// if (nextTitle !== document.title) { +// setDocumentTitle(nextTitle) +// } +// } +// }) + +const handleStateChange = (title, prefix) => { + const nextTitle = `${(title || '')} - ${prefix}` + if (nextTitle !== document.title) { + setDocumentTitle(nextTitle) + } +} + +const DocumentTitle = { + name: 'DocumentTitle', + functional: true, + props: { + prefix: { + type: String, + required: false, + default: 'Ant Design Pro' + }, + title: { + type: String, + required: true + } + }, + // { props, data, children } + // eslint-disable-next-line + render(createElement, {props, data, children}) { + handleStateChange(props.title, props.prefix) + return children + } +} + +DocumentTitle.install = function (Vue) { + // const mountedInstances = [] + // let state + + // function __emit (sideEffect) { + // const options = sideEffect.options + // state = options.propsToState(mountedInstances.map(function (instance) { + // return instance + // })) + + // options.handleStateChange(state) + // } + + // Vue.mixin({ + // beforeMount () { + // const sideEffect = this.$options.sideEffect + // if (sideEffect) { + // mountedInstances.push(this) + // __emit(sideEffect) + // } + // }, + // updated () { + // const sideEffect = this.$options.sideEffect + // if (sideEffect) { + // __emit(sideEffect) + // } + // }, + // beforeDestroy () { + // const sideEffect = this.$options.sideEffect + // if (sideEffect) { + // const index = mountedInstances.indexOf(this) + // mountedInstances.splice(index, 1) + // __emit(sideEffect) + // } + // } + // }) + + Vue.component(DocumentTitle.name, DocumentTitle) +} + +export default DocumentTitle diff --git a/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/util.js b/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/util.js new file mode 100644 index 0000000000000000000000000000000000000000..f8207544efe0321868974553c223c84bc3286f2f --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/DocumentTitle/util.js @@ -0,0 +1,17 @@ +export const setDocumentTitle = function (title) { + document.title = title + const ua = navigator.userAgent + // eslint-disable-next-line + const regex = /\bMicroMessenger\/([\d\.]+)/ + if (regex.test(ua) && /ip(hone|od|ad)/i.test(ua)) { + const i = document.createElement('iframe') + i.src = '/favicon.ico' + i.style.display = 'none' + i.onload = function () { + setTimeout(function () { + i.remove() + }, 9) + } + document.body.appendChild(i) + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/Fragment.jsx b/cn-universal-web-ui/src/components/ProLayout/components/Fragment.jsx new file mode 100644 index 0000000000000000000000000000000000000000..2195c86ce7f4865bfa9286851861f14ddbba1cd3 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/Fragment.jsx @@ -0,0 +1,7 @@ +export default { + name: 'VueFragment', + functional: true, + render(h, ctx) { + return ctx.children.length > 1 ? h('div', {}, ctx.children) : ctx.children + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/GlobalFooter/index.jsx b/cn-universal-web-ui/src/components/ProLayout/components/GlobalFooter/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..b4f5ca5a625c471784a995ed03c3689e45355dea --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/GlobalFooter/index.jsx @@ -0,0 +1,46 @@ +import './index.less' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import { + getComponentFromProp, + hasProp +} from 'ant-design-vue/lib/_util/props-util' + +const GlobalFooterProps = { + links: PropTypes.array, + copyright: PropTypes.any +} + +const GlobalFooter = { + name: 'GlobalFooter', + props: GlobalFooterProps, + render() { + const copyright = getComponentFromProp(this, 'copyright') + const links = getComponentFromProp(this, 'links') + const linksType = hasProp(links) + + return ( +
          + ) + } +} + +export default GlobalFooter diff --git a/cn-universal-web-ui/src/components/ProLayout/components/GlobalFooter/index.less b/cn-universal-web-ui/src/components/ProLayout/components/GlobalFooter/index.less new file mode 100644 index 0000000000000000000000000000000000000000..67f4b178ab237d8dd58196579222fac722891da7 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/GlobalFooter/index.less @@ -0,0 +1,31 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@global-footer-prefix-cls: ~'@{ant-prefix}-pro-global-footer'; + +.@{global-footer-prefix-cls} { + margin: 48px 0 24px 0; + padding: 0 16px; + text-align: center; + + &-links { + margin-bottom: 8px; + + a { + color: @text-color-secondary; + transition: all 0.3s; + + &:not(:last-child) { + margin-right: 40px; + } + + &:hover { + color: @text-color; + } + } + } + + &-copyright { + color: @text-color-secondary; + font-size: @font-size-base; + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/GlobalHeader/index.jsx b/cn-universal-web-ui/src/components/ProLayout/components/GlobalHeader/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..4c940410ef98fda596ce17a03ed591518f209940 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/GlobalHeader/index.jsx @@ -0,0 +1,112 @@ +import './index.less' + +import debounce from 'lodash/debounce' +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import {inBrowser, isFun, triggerEvent} from '../../utils/util' +import 'ant-design-vue/es/icon/style' +import Icon from 'ant-design-vue/es/icon' +import {defaultRenderLogo} from '../SiderMenu/SiderMenu' + +export const GlobalHeaderProps = { + collapsed: PropTypes.bool, + handleCollapse: PropTypes.func, + isMobile: PropTypes.bool.def(false), + fixedHeader: PropTypes.bool.def(false), + logo: PropTypes.any, + menuRender: PropTypes.any, + collapsedButtonRender: PropTypes.any, + headerContentRender: PropTypes.any, + rightContentRender: PropTypes.any +} + +const defaultRenderCollapsedButton = (h, collapsed) => ( + +) + +const GlobalHeader = { + name: 'GlobalHeader', + props: GlobalHeaderProps, + render(h) { + const { + isMobile, + logo, + rightContentRender, + headerContentRender + } = this.$props + const toggle = () => { + const {collapsed, handleCollapse} = this.$props + if (handleCollapse) { + handleCollapse(!collapsed) + } + this.triggerResizeEvent() + } + const renderCollapsedButton = () => { + const { + collapsed, + collapsedButtonRender = defaultRenderCollapsedButton, + menuRender + } = this.$props + if (collapsedButtonRender !== false && menuRender !== false) { + return ( + + {isFun(collapsedButtonRender) && collapsedButtonRender(h, collapsed) + || collapsedButtonRender} + + ) + } + return null + } + + const headerCls = 'ant-pro-global-header' + + return ( +
          +
          + {isMobile && ( + + {defaultRenderLogo(h, logo)} + + )} + {renderCollapsedButton()} + {headerContentRender && ( +
          + {isFun(headerContentRender) && headerContentRender(h, this.$props) + || headerContentRender} +
          + )} +
          +
          + {isFun(rightContentRender) && rightContentRender(h, this.$props) + || rightContentRender} +
          +
          + ) + }, + methods: { + triggerResizeEvent: debounce(() => { + inBrowser && triggerEvent(window, 'resize') + }) + }, + beforeDestroy() { + this.triggerResizeEvent.cancel && this.triggerResizeEvent.cancel() + } +} + +export default GlobalHeader diff --git a/cn-universal-web-ui/src/components/ProLayout/components/GlobalHeader/index.less b/cn-universal-web-ui/src/components/ProLayout/components/GlobalHeader/index.less new file mode 100644 index 0000000000000000000000000000000000000000..e7490ee53075e28f863b248e6c816c46cb447f9b --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/GlobalHeader/index.less @@ -0,0 +1,117 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@global-header-prefix-cls: ~'@{ant-prefix}-pro-global-header'; + +@pro-header-bg: @component-background; +@pro-header-hover-bg: @component-background; +@pro-header-box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); +@pro-header-hover-trigger-action-bg: rgba(0, 0, 0, .025); + +.@{global-header-prefix-cls} { + position: relative; + height: @layout-header-height; + padding: 0; + background: @pro-header-bg; + box-shadow: @pro-header-box-shadow; + display: flex; + align-items: center; + + &-index-right { + display: flex; + align-items: center; + + .@{global-header-prefix-cls}-index-action { + display: inline-block; + height: 100%; + padding: 0 12px; + cursor: pointer; + transition: all .3s; + + &:hover { + background: @pro-header-hover-trigger-action-bg; + } + } + } + + &-logo { + display: inline-block; + height: 64px; + padding: 0 0 0 24px; + font-size: 20px; + line-height: 64px; + vertical-align: top; + cursor: pointer; + + img, svg { + display: inline-block; + width: 32px; + height: 32px; + vertical-align: middle; + } + } + + &-menu { + .anticon { + margin-right: 8px; + } + + .ant-dropdown-menu-item { + min-width: 160px; + } + } + + &-trigger { + height: 64px; + line-height: 64px; + vertical-align: top; + padding: 0 22px; + display: inline-block; + cursor: pointer; + transition: all 0.3s, padding 0s; + + .anticon { + font-size: 20px; + vertical-align: -0.225em; + } + + &:hover { + background: rgba(0, 0, 0, .025); + } + } + + &-content { + height: 64px; + line-height: 64px; + vertical-align: top; + display: inline-block; + } + + .dark { + height: @layout-header-height; + + .action { + color: rgba(255, 255, 255, 0.85); + + > i { + color: rgba(255, 255, 255, 0.85); + } + + &:hover, + &.opened { + background: @primary-color; + } + + .ant-badge { + color: rgba(255, 255, 255, 0.85); + } + } + } + + .ant-pro-global-header-index-action { + i { + color: rgba(0, 0, 0, .65); + vertical-align: middle; + } + } + +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/GridContent/index.jsx b/cn-universal-web-ui/src/components/ProLayout/components/GridContent/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..a159b437b7a71f8e601635f72d542ad3090bbb9c --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/GridContent/index.jsx @@ -0,0 +1,27 @@ +import './index.less' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import {layoutContentWidth} from '../../utils/util' + +const GridContent = { + name: 'GridContent', + functional: true, + props: { + children: PropTypes.any, + contentWidth: PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid') + }, + render(h, content) { + const {contentWidth} = content.props + const children = content.children + + const propsContentWidth = layoutContentWidth(contentWidth) + const classNames = { + 'ant-pro-grid-content': true, + 'wide': propsContentWidth + } + + return
          {children}
          + } +} + +export default GridContent diff --git a/cn-universal-web-ui/src/components/ProLayout/components/GridContent/index.less b/cn-universal-web-ui/src/components/ProLayout/components/GridContent/index.less new file mode 100644 index 0000000000000000000000000000000000000000..ddcc3fb623c90b7e8495f03e7cd173982ff8fc92 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/GridContent/index.less @@ -0,0 +1,14 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@grid-content-prefix-cls: ~'@{ant-prefix}-pro-grid-content'; + +.@{grid-content-prefix-cls} { + width: 100%; + min-height: 100%; + transition: 0.3s; + + &.wide { + max-width: 1200px; + margin: 0 auto; + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/PageHeaderWrapper/index.jsx b/cn-universal-web-ui/src/components/ProLayout/components/PageHeaderWrapper/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..287034d4b64ea53c870d9b4c606a4953763a9e61 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/PageHeaderWrapper/index.jsx @@ -0,0 +1,242 @@ +import './index.less' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import {isArray} from 'ant-design-vue/lib/_util/vue-types/utils' +import GridContent from '../GridContent' +import 'ant-design-vue/es/page-header/style' +import PageHeader, {PageHeaderProps} from 'ant-design-vue/es/page-header' +import 'ant-design-vue/es/tabs/style' +import Tabs from 'ant-design-vue/es/tabs' +import {getComponentFromProp} from 'ant-design-vue/lib/_util/props-util' + +const prefixedClassName = 'ant-pro-page-header-wrap' + +const PageHeaderTabConfig = { + tabList: PropTypes.array, + tabActiveKey: PropTypes.string, + tabProps: PropTypes.object, + tabChange: PropTypes.func +} + +const PageHeaderWrapperProps = { + ...PageHeaderTabConfig, + ...PageHeaderProps, + title: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]), + content: PropTypes.any, + extraContent: PropTypes.any, + pageHeaderRender: PropTypes.func, + breadcrumb: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]).def(true), + back: PropTypes.func, + + // only use `pro-layout` in children + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false) +} + +const defaultI18nRender = (t) => t + +const useContext = (route) => { + return route && { + ...route.meta + } || null +} + +const noop = () => { +} + +// TODO :: tabList tab 支持图标 优化 +const renderFooter = (h, tabConfigProps, i18nRender) => { + const { + tabList, + tabActiveKey, + tabChange: onTabChange, + tabBarExtraContent, + tabProps + } = tabConfigProps + return tabList && tabList.length > 0 && ( + { + if (onTabChange) { + onTabChange(key) + } + }} + tabBarExtraContent={tabBarExtraContent} + {...tabProps} + > + {tabList.map(item => ( + + ))} + + ) +} + +const renderPageHeader = (h, content, extraContent) => { + if (!content && !extraContent) { + return null + } + return ( +
          +
          +
          + {content && ( +
          {content}
          + )} + {extraContent && ( +
          + {extraContent} +
          + )} +
          +
          +
          + ) +} + +const defaultPageHeaderRender = (h, props, pageMeta, i18nRender) => { + const { + title: propTitle, + tags, + content, + pageHeaderRender, + extra, + extraContent, + breadcrumb, + back: handleBack, + ...restProps + } = props + if (pageHeaderRender) { + return pageHeaderRender({...props}) + } + let pageHeaderTitle = propTitle + if (!propTitle && propTitle !== false) { + // pageHeaderTitle = pageMeta.title + // 2021.02.03 去除title显示 + pageHeaderTitle = undefined + } + // title props 不是 false 且不是 array 则直接渲染 title + // 反之认为是 VNode, 作为 render 参数直接传入到 PageHeader + const title = isArray(pageHeaderTitle) + ? pageHeaderTitle + : pageHeaderTitle && i18nRender(pageHeaderTitle) + const tabProps = { + breadcrumb, + extra, + tags, + title, + footer: renderFooter(h, restProps, i18nRender) + } + if (!handleBack) { + tabProps.backIcon = false + } + + return ( + + {renderPageHeader(h, content, extraContent)} + + ) + // return +} + +const PageHeaderWrapper = { + name: 'PageHeaderWrapper', + props: PageHeaderWrapperProps, + inject: ['locale', 'contentWidth', 'breadcrumbRender'], + render(h) { + const {$route, $listeners} = this + const children = this.$slots.default + const title = getComponentFromProp(this, 'title') + const tags = getComponentFromProp(this, 'tags') + const content = getComponentFromProp(this, 'content') + const extra = getComponentFromProp(this, 'extra') + const extraContent = getComponentFromProp(this, 'extraContent') + + const pageMeta = useContext(this.$props.route || $route) + const i18n = this.$props.i18nRender || this.locale || defaultI18nRender + const contentWidth = this.$props.contentWidth || this.contentWidth || false + // 当未设置 back props 或未监听 @back,不显示 back + // props 的 back 事件优先级高于 @back,需要注意 + const onBack = this.$props.back || $listeners.back + const back = onBack && (() => { + // this.$emit('back') + // call props back func + onBack && onBack() + }) || undefined + + const onTabChange = this.$props.tabChange + const tabChange = (key) => { + this.$emit('tabChange', key) + onTabChange && onTabChange(key) + } + + let breadcrumb = {} + const propsBreadcrumb = this.$props.breadcrumb + if (propsBreadcrumb === true) { + let routes = $route.matched.concat().filter( + route => route && route.meta && route.meta.title) + routes = routes.map(route => { + if (route && route.meta && route.meta.title) { + return { + path: route.path, + breadcrumbName: i18n(route.meta.title), + redirect: route.redirect + } + } + }) + const defaultItemRender = ({route, params, routes, paths, h}) => { + return (route.redirect === 'noRedirect' || routes.indexOf(route) + === routes.length - 1) && ( + {route.breadcrumbName} + ) || ( + {route.breadcrumbName} + ) + } + + // If custom breadcrumb render undefined + // use default breadcrumb.. + const itemRender = this.breadcrumbRender || defaultItemRender + + breadcrumb = {props: {routes, itemRender}} + } else { + breadcrumb = propsBreadcrumb || null + } + + const props = { + ...this.$props, + title, + tags, + content, + extra, + extraContent, + breadcrumb, + tabChange, + back + } + + return ( +
          +
          + {defaultPageHeaderRender(h, props, pageMeta, + i18n)} +
          + {children ? ( + +
          + {children} +
          +
          + ) : null} +
          + ) + } +} + +PageHeaderWrapper.install = function (Vue) { + Vue.component(PageHeaderWrapper.name, PageHeaderWrapper) + Vue.component('page-container', PageHeaderWrapper) +} + +export default PageHeaderWrapper diff --git a/cn-universal-web-ui/src/components/ProLayout/components/PageHeaderWrapper/index.less b/cn-universal-web-ui/src/components/ProLayout/components/PageHeaderWrapper/index.less new file mode 100644 index 0000000000000000000000000000000000000000..c8b5ff2d803f2432d5422eafdf0ac3c563587496 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/PageHeaderWrapper/index.less @@ -0,0 +1,94 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@ant-pro-page-header-wrap: ~'@{ant-prefix}-pro-page-header-wrap'; + +.@{ant-pro-page-header-wrap}-children-content { + margin: 0 20px; +} + +// .@{ant-pro-page-header-wrap}-page-header-warp { +// background-color: rgb(160, 6, 6); +// } + +.@{ant-pro-page-header-wrap}-main { + .@{ant-pro-page-header-wrap}-detail { + display: flex; + } + + .@{ant-pro-page-header-wrap}-row { + display: flex; + width: 100%; + } + + .@{ant-pro-page-header-wrap}-title-content { + margin-bottom: 16px; + } + + .@{ant-pro-page-header-wrap}-title, + .@{ant-pro-page-header-wrap}-content { + flex: auto; + } + + .@{ant-pro-page-header-wrap}-extraContent, + .@{ant-pro-page-header-wrap}-main { + flex: 0 1 auto; + } + + .@{ant-pro-page-header-wrap}-main { + width: 100%; + } + + .@{ant-pro-page-header-wrap}-title { + margin-bottom: 16px; + } + + .@{ant-pro-page-header-wrap}-logo { + margin-bottom: 16px; + } + + .@{ant-pro-page-header-wrap}-extraContent { + min-width: 242px; + margin-left: 88px; + text-align: right; + } +} + +@media screen and (max-width: @screen-xl) { + .@{ant-pro-page-header-wrap}-main { + .@{ant-pro-page-header-wrap}-extraContent { + margin-left: 44px; + } + } +} + +@media screen and (max-width: @screen-lg) { + .@{ant-pro-page-header-wrap}-main { + .@{ant-pro-page-header-wrap}-extraContent { + margin-left: 20px; + } + } +} + +@media screen and (max-width: @screen-md) { + .@{ant-pro-page-header-wrap}-main { + .@{ant-pro-page-header-wrap}-row { + display: block; + } + + .@{ant-pro-page-header-wrap}-action, + .@{ant-pro-page-header-wrap}-extraContent { + margin-left: 0; + text-align: left; + } + } +} + +@media screen and (max-width: @screen-sm) { + .@{ant-pro-page-header-wrap}-detail { + display: block; + } + + .@{ant-pro-page-header-wrap}-extraContent { + margin-left: 0; + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/RouteMenu/BaseMenu.jsx b/cn-universal-web-ui/src/components/ProLayout/components/RouteMenu/BaseMenu.jsx new file mode 100644 index 0000000000000000000000000000000000000000..81a004f9c15ff48dfca512310f25e0ce4855dceb --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/RouteMenu/BaseMenu.jsx @@ -0,0 +1,198 @@ +import PropTypes from 'ant-design-vue/es/_util/vue-types' + +import 'ant-design-vue/es/menu/style' +import Menu from 'ant-design-vue/es/menu' +import 'ant-design-vue/es/icon/style' +import Icon from 'ant-design-vue/es/icon' + +const { + Item: MenuItem, + SubMenu +} = Menu + +export const RouteMenuProps = { + menus: PropTypes.array, + theme: PropTypes.string.def('dark'), + mode: PropTypes.string.def('inline'), + collapsed: PropTypes.bool.def(false), + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false) +} + +const httpReg = /(http|https|ftp):\/\/([\w.]+\/?)\S*/ + +const renderMenu = (h, item, i18nRender, collapsed = false) => { + if (item && !item.hidden) { + const bool = item.children && !item.hideChildrenInMenu + return bool ? renderSubMenu(h, item, i18nRender, collapsed) + : renderMenuItem(h, item, i18nRender) + } + return null +} + +const renderSubMenu = (h, item, i18nRender, collapsed) => { + if (collapsed) { + return ( + + {!item.hideChildrenInMenu && item.children.map( + cd => renderMenu(h, cd, i18nRender))} + + ) + } + return ( + + {renderIcon(h, item.meta.icon)} + {renderTitle(h, item.meta.title, i18nRender)} + + )}> + {!item.hideChildrenInMenu && item.children.map( + cd => renderMenu(h, cd, i18nRender))} + + ) +} + +const renderMenuItem = (h, item, i18nRender) => { + const meta = Object.assign({}, item.meta) + const target = meta.target || null + const hasRemoteUrl = httpReg.test(item.path) + const CustomTag = target && 'a' || 'router-link' + const props = {to: {name: item.name}} + const attrs = (hasRemoteUrl || target) ? {href: item.path, target: target} + : {} + if (item.children && item.hideChildrenInMenu) { + // 把有子菜单的 并且 父菜单是要隐藏子菜单的 + // 都给子菜单增加一个 hidden 属性 + // 用来给刷新页面时, selectedKeys 做控制用 + item.children.forEach(cd => { + cd.meta = Object.assign(cd.meta || {}, {hidden: true}) + }) + } + return ( + + + {renderIcon(h, meta.icon)} + {renderTitle(h, meta.title, i18nRender)} + + + ) +} + +const renderIcon = (h, icon) => { + if (icon === undefined || icon === 'none' || icon === null) { + return null + } + const props = {} + typeof (icon) === 'object' ? (props.component = icon) : (props.type = icon) + return +} + +const renderTitle = (h, title, i18nRender) => { + return {i18nRender && i18nRender(title) || title} +} + +const RouteMenu = { + name: 'RouteMenu', + props: RouteMenuProps, + data() { + return { + openKeys: [], + selectedKeys: [], + cachedOpenKeys: [], + cachedSelectedKeys: [] + } + }, + render(h) { + const {mode, theme, menus, i18nRender, collapsed} = this + const handleOpenChange = (openKeys) => { + // 在水平模式下时,不再执行后续 + if (mode === 'horizontal') { + this.openKeys = openKeys + return + } + const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key)) + if (!this.rootSubmenuKeys.includes(latestOpenKey)) { + this.openKeys = openKeys + } else { + this.openKeys = latestOpenKey ? [latestOpenKey] : [] + } + } + + const dynamicProps = { + props: { + mode, + theme, + openKeys: this.openKeys, + selectedKeys: this.selectedKeys + }, + on: { + select: menu => { + this.$emit('select', menu) + if (!httpReg.test(menu.key)) { + this.selectedKeys = menu.selectedKeys + } + }, + openChange: handleOpenChange + } + } + + const menuItems = menus.map(item => { + if (item.hidden) { + return null + } + return renderMenu(h, item, i18nRender, collapsed) + }) + return {menuItems} + }, + methods: { + updateMenu() { + const routes = this.$route.matched.concat() + const {hidden, selected, open} = this.$route.meta + if (routes.length >= 3 && hidden) { + routes.pop() + this.selectedKeys = [routes[routes.length - 1].name] + } else { + this.selectedKeys = [routes.pop().name] + } + let openKeys = [] + if (this.mode === 'inline') { + routes.forEach(item => { + item.name && openKeys.push(item.name) + }) + } + if (selected) { + this.selectedKeys = this.selectedKeys.concat(selected) + } + if (open) { + openKeys = openKeys.concat(open) + } + + this.collapsed ? (this.cachedOpenKeys = openKeys) + : (this.openKeys = openKeys) + } + }, + computed: { + rootSubmenuKeys: vm => { + const keys = [] + vm.menus.forEach(item => keys.push(item.name)) + return keys + } + }, + created() { + this.$watch('$route', () => { + this.updateMenu() + }) + this.$watch('collapsed', val => { + if (val) { + this.cachedOpenKeys = this.openKeys.concat() + this.openKeys = [] + } else { + this.openKeys = this.cachedOpenKeys + } + }) + }, + mounted() { + this.updateMenu() + } +} + +export default RouteMenu diff --git a/cn-universal-web-ui/src/components/ProLayout/components/RouteMenu/index.js b/cn-universal-web-ui/src/components/ProLayout/components/RouteMenu/index.js new file mode 100644 index 0000000000000000000000000000000000000000..15d3365cee1d2af21c601f998cb7953b02d89397 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/RouteMenu/index.js @@ -0,0 +1,3 @@ +import BaseMenu from './BaseMenu' + +export default BaseMenu diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/BlockCheckbox.jsx b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/BlockCheckbox.jsx new file mode 100644 index 0000000000000000000000000000000000000000..38ddc8a3a27b6dea65a4e05bba2bcbf0d4454776 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/BlockCheckbox.jsx @@ -0,0 +1,71 @@ +import PropTypes from 'ant-design-vue/es/_util/vue-types' + +import 'ant-design-vue/es/tooltip/style' +import Tooltip from 'ant-design-vue/es/tooltip' +import 'ant-design-vue/es/icon/style' +import Icon from 'ant-design-vue/es/icon' + +const BlockCheckboxProps = { + value: PropTypes.string, + // Item: { key, url, title } + list: PropTypes.array, + + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false) +} + +const baseClassName = 'ant-pro-setting-drawer-block-checbox' +const BlockCheckbox = { + props: BlockCheckboxProps, + inject: ['locale'], + render(h) { + const {value, list} = this + const i18n = this.$props.i18nRender || this.locale + + const items = list || [ + { + key: 'sidemenu', + url: + 'https://gw.alipayobjects.com/zos/antfincdn/XwFOFbLkSM/LCkqqYNmvBEbokSDscrm.svg', + title: i18n('app.setting.sidemenu') + }, + { + key: 'topmenu', + url: + 'https://gw.alipayobjects.com/zos/antfincdn/URETY8%24STp/KDNDBbriJhLwuqMoxcAr.svg', + title: i18n('app.setting.topmenu') + } + ] + + const handleChange = (key) => { + this.$emit('change', key) + } + + const disableStyle = { + cursor: 'not-allowed' + } + + return ( +
          + {items.map(item => ( + +
          !item.disable && handleChange(item.key)}> + {item.key}/ +
          + +
          +
          +
          + ))} +
          + ) + } +} + +export default BlockCheckbox diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/LayoutChange.jsx b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/LayoutChange.jsx new file mode 100644 index 0000000000000000000000000000000000000000..1e66da9850598de22e5853b6ddbf8062e73a2e1e --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/LayoutChange.jsx @@ -0,0 +1,107 @@ +import PropTypes from 'ant-design-vue/es/_util/vue-types' + +import 'ant-design-vue/es/tooltip/style' +import Tooltip from 'ant-design-vue/es/tooltip' +import 'ant-design-vue/es/list/style' +import List from 'ant-design-vue/es/list' +import 'ant-design-vue/es/select/style' +import Select from 'ant-design-vue/es/select' +import 'ant-design-vue/es/switch/style' +import Switch from 'ant-design-vue/es/switch' + +export const renderLayoutSettingItem = (h, item) => { + const action = {...item.action} + return ( + + + {item.title} + + + ) +} + +export const LayoutSettingProps = { + contentWidth: PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid'), + fixedHeader: PropTypes.bool, + fixSiderbar: PropTypes.bool, + multiTab: PropTypes.bool, + layout: PropTypes.oneOf(['sidemenu', 'topmenu']), + + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false) +} + +export default { + props: LayoutSettingProps, + inject: ['locale'], + render(h) { + const i18n = this.$props.i18nRender || this.locale + const {contentWidth, fixedHeader, layout, fixSiderbar, multiTab} = this + + const handleChange = (type, value) => { + this.$emit('change', {type, value}) + } + + return ( + handleChange('contentWidth', value)} + style={{width: '80px'}} + > + {layout === 'sidemenu' ? null : ( + + {i18n('app.setting.content-width.fixed')} + + )} + + {i18n('app.setting.content-width.fluid')} + + + ) + }, + { + title: i18n('app.setting.fixedheader'), + action: ( + handleChange('fixedHeader', checked)} + /> + ) + }, + { + title: i18n('app.setting.fixedsidebar'), + disabled: layout === 'topmenu', + disabledReason: i18n('app.setting.fixedsidebar.hint'), + action: ( + handleChange('fixSiderbar', checked)} + /> + ) + }, + { + title: i18n('app.setting.multitab'), + disabledReason: i18n('app.setting.fixedsidebar.hint'), + action: ( + handleChange('multiTab', checked)} + /> + ) + } + ]} + renderItem={(item, index) => renderLayoutSettingItem(h, item)} + /> + ) + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/ThemeColor.jsx b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/ThemeColor.jsx new file mode 100644 index 0000000000000000000000000000000000000000..1b7dda3e91d294ce9df9fc914d225e96e5438e4a --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/ThemeColor.jsx @@ -0,0 +1,77 @@ +import './ThemeColor.less' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import {genThemeToString} from '../../utils/util' +import 'ant-design-vue/es/tooltip/style' +import Tooltip from 'ant-design-vue/es/tooltip' +import 'ant-design-vue/es/icon/style' +import Icon from 'ant-design-vue/es/icon' + +const baseClassName = 'theme-color' + +export const TagProps = { + color: PropTypes.string, + check: PropTypes.bool +} + +const Tag = { + props: TagProps, + functional: true, + render(h, content) { + const {props: {color, check}, data} = content + return ( +
          + {check ? : null} +
          + ) + } +} + +export const ThemeColorProps = { + colors: PropTypes.array, + title: PropTypes.string, + value: PropTypes.string, + + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false) +} + +const ThemeColor = { + props: ThemeColorProps, + inject: ['locale'], + render(h) { + const {title, value, colors = []} = this + const i18n = this.$props.i18nRender || this.locale + const handleChange = (key) => { + this.$emit('change', key) + } + + return ( +
          +

          {title}

          +
          + {colors.map(item => { + const themeKey = genThemeToString(item.key) + const check = value === item.key || genThemeToString(value) + === item.key + return ( + + handleChange(item.key)} + /> + + ) + })} +
          +
          + ) + } +} + +export default ThemeColor diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/ThemeColor.less b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/ThemeColor.less new file mode 100644 index 0000000000000000000000000000000000000000..0d18b79ff7e825c6c04ce2bf7727e1ca7a0cfe99 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/ThemeColor.less @@ -0,0 +1,26 @@ +@import './index.less'; + +.@{ant-pro-setting-drawer}-content { + .theme-color { + margin-top: 24px; + overflow: hidden; + + .theme-color-title { + margin-bottom: 12px; + font-size: 14px; + line-height: 22px; + } + + .theme-color-block { + float: left; + width: 20px; + height: 20px; + margin-right: 8px; + color: #fff; + font-weight: bold; + text-align: center; + border-radius: 2px; + cursor: pointer; + } + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/index.jsx b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..a87417c429243c279672e5e021368a2d080b7fbc --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/index.jsx @@ -0,0 +1,349 @@ +import './index.less' + +import omit from 'omit.js' +import PropTypes from 'ant-design-vue/es/_util/vue-types' + +import 'ant-design-vue/es/divider/style' +import Divider from 'ant-design-vue/es/divider' + +import 'ant-design-vue/es/drawer/style' +import Drawer from 'ant-design-vue/es/drawer' + +import 'ant-design-vue/es/list/style' +import List from 'ant-design-vue/es/list' + +import 'ant-design-vue/es/switch/style' +import Switch from 'ant-design-vue/es/switch' + +import 'ant-design-vue/es/button/style' +import Button from 'ant-design-vue/es/button' + +import 'ant-design-vue/es/icon/style' +import Icon from 'ant-design-vue/es/icon' + +import 'ant-design-vue/es/alert/style' +import Alert from 'ant-design-vue/es/alert' + +import antPortal from 'ant-design-vue/es/_util/portalDirective' + +import 'ant-design-vue/es/message/style' +import message from 'ant-design-vue/es/message' + +import BlockCheckbox from './BlockCheckbox' +import ThemeColor from './ThemeColor' +import LayoutSetting, {renderLayoutSettingItem} from './LayoutChange' +import {updateColorWeak, updateTheme} from '../../utils/dynamicTheme' +import {genStringToTheme} from '../../utils/util' +import CopyToClipboard from 'vue-copy-to-clipboard' + +const baseClassName = 'ant-pro-setting-drawer' + +const BodyProps = { + title: PropTypes.string.def('') +} + +const Body = { + props: BodyProps, + render(h) { + const {title} = this + + return ( +
          +

          {title}

          + {this.$slots.default} +
          + ) + } +} + +const defaultI18nRender = (t) => t + +const getThemeList = (i18nRender) => { + const list = window.umi_plugin_ant_themeVar || [] + + const themeList = [ + { + key: 'light', + url: 'https://gw.alipayobjects.com/zos/antfincdn/NQ%24zoisaD2/jpRkZQMyYRryryPNtyIC.svg', + title: i18nRender('app.setting.pagestyle.light') + }, + { + key: 'dark', + url: 'https://gw.alipayobjects.com/zos/antfincdn/XwFOFbLkSM/LCkqqYNmvBEbokSDscrm.svg', + title: i18nRender('app.setting.pagestyle.dark') + } + ] + + const darkColorList = [ + { + key: '#1890ff', + color: '#1890ff', + theme: 'dark' + } + ] + + const lightColorList = [ + { + key: '#1890ff', + color: '#1890ff', + theme: 'dark' + } + ] + + if (list.find((item) => item.theme === 'dark')) { + // themeList.push({ + // // disable click + // // disable: true, + // key: 'realDark', + // url: 'https://gw.alipayobjects.com/zos/antfincdn/hmKaLQvmY2/LCkqqYNmvBEbokSDscrm.svg', + // title: i18nRender('app.setting.pagestyle.realdark') + // }) + } + // insert theme color List + list.forEach(item => { + const color = (item.modifyVars || {})['@primary-color'] + if (item.theme === 'dark' && color) { + darkColorList.push({ + color, + ...item + }) + } + if (!item.theme || item.theme === 'light') { + lightColorList.push({ + color, + ...item + }) + } + }) + + return { + colorList: { + dark: darkColorList, + light: lightColorList + }, + themeList + } +} + +const handleChangeSetting = (key, value, hideMessageLoading) => { + if (key === 'primaryColor') { + // 更新主色调 + updateTheme(value) + } + if (key === 'colorWeak') { + updateColorWeak(value) + } +} + +const genCopySettingJson = (settings) => + JSON.stringify( + omit( + { + ...settings, + primaryColor: genStringToTheme(settings.primaryColor) + }, + ['colorWeak'] + ), + null, + 2 + ) + +export const settings = { + theme: PropTypes.oneOf(['dark', 'light']), + primaryColor: PropTypes.string, + layout: PropTypes.oneOf(['sidemenu', 'topmenu']), + colorWeak: PropTypes.bool, + contentWidth: PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid'), + // 替换兼容 PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid') + // contentWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).def('Fluid'), + fixedHeader: PropTypes.bool, + fixSiderbar: PropTypes.bool, + multiTab: PropTypes.bool, + hideHintAlert: PropTypes.bool.def(false), + hideCopyButton: PropTypes.bool.def(false) +} + +export const SettingDrawerProps = { + getContainer: PropTypes.func, + settings: PropTypes.objectOf(settings), + + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false) +} + +const SettingDrawer = { + name: 'SettingDrawer', + props: SettingDrawerProps, + inject: ['locale'], + data() { + return { + show: false + } + }, + render(h) { + const { + setShow, + getContainer, + settings + } = this + + const { + theme = 'dark', + primaryColor = 'daybreak', + layout = 'sidemenu', + fixedHeader = false, + fixSiderbar = false, + multiTab = true, + contentWidth, + hideHintAlert, + hideCopyButton, + colorWeak + } = settings + + const i18n = this.$props.i18nRender || this.locale || defaultI18nRender + const themeList = getThemeList(i18n) + const isTopMenu = layout === 'topmenu' + + const iconStyle = { + color: '#fff', + fontSize: 20 + } + + const changeSetting = (type, value) => { + this.$emit('change', {type, value}) + handleChangeSetting(type, value, false) + } + + return ( + setShow(false)} + placement="right" + getContainer={getContainer} + /* handle={ +
          setShow(!this.show)}> + {this.show + ? () + : () + } +
          + } */ + style={{ + zIndex: 999 + }} + > + +
          + + { + changeSetting('theme', val) + }}/> + + + { + changeSetting('primaryColor', color, null) + }} + /> + + + + + { + changeSetting('layout', value, null) + }}/> + + + { + changeSetting(type, value) + }} + /> + + + + renderLayoutSettingItem(h, item)} + dataSource={[ + { + title: i18n('app.setting.weakmode'), + action: ( + changeSetting('colorWeak', + checked)} + /> + ) + } + ]} + /> + + + {hideHintAlert && hideCopyButton ? null : } + + {hideHintAlert ? null : ( + )} + showIcon + style={{marginBottom: '16px'}} + /> + )} + + {hideCopyButton ? null : ( + + message.success(i18n('app.setting.copyinfo')) + } + > + + + )} + + +
          +
          + ) + }, + methods: { + setShow(flag) { + this.show = flag + } + } +} + +SettingDrawer.install = function (Vue) { + Vue.use(antPortal) + Vue.component(SettingDrawer.name, SettingDrawer) +} + +export default SettingDrawer diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/index.less b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/index.less new file mode 100644 index 0000000000000000000000000000000000000000..cc1d38ec35846658d8a4b32ba0722be7d0617574 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SettingDrawer/index.less @@ -0,0 +1,90 @@ +@import '~ant-design-vue/es/style/themes/default.less'; + +@ant-pro-setting-drawer: ~'@{ant-prefix}-pro-setting-drawer'; + +.@{ant-pro-setting-drawer} { + &-content { + position: relative; + min-height: 100%; + + .ant-list-item { + span { + flex: 1; + } + } + } + + &-block-checbox { + display: flex; + + &-item { + position: relative; + margin-right: 16px; + // box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + border-radius: @border-radius-base; + cursor: pointer; + + img { + width: 48px; + } + } + + &-selectIcon { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + padding-top: 15px; + padding-left: 24px; + color: @primary-color; + font-weight: bold; + font-size: 14px; + + .action { + color: @primary-color; + } + } + } + + &-color_block { + display: inline-block; + width: 38px; + height: 22px; + margin: 4px; + margin-right: 12px; + vertical-align: middle; + border-radius: 4px; + cursor: pointer; + } + + &-title { + margin-bottom: 12px; + color: @heading-color; + font-size: 14px; + line-height: 22px; + } + + &-handle { + position: absolute; + top: 240px; + right: 300px; + z-index: 0; + display: flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + font-size: 16px; + text-align: center; + background: @primary-color; + border-radius: 4px 0 0 4px; + cursor: pointer; + pointer-events: auto; + } + + &-production-hint { + margin-top: 16px; + font-size: 12px; + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/SiderMenu.jsx b/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/SiderMenu.jsx new file mode 100644 index 0000000000000000000000000000000000000000..75f6fa3513d3241e24ba613b687dd153b82bc227 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/SiderMenu.jsx @@ -0,0 +1,230 @@ +import './index.less' + +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import 'ant-design-vue/es/layout/style' +import Layout from 'ant-design-vue/es/layout' +import {isFun} from '../../utils/util' +import BaseMenu from '../RouteMenu' + +const {Sider} = Layout + +export const SiderMenuProps = { + i18nRender: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).def(false), + mode: PropTypes.string.def('inline'), + theme: PropTypes.string.def('dark'), + contentWidth: PropTypes.oneOf(['Fluid', 'Fixed']).def('Fluid'), + collapsible: PropTypes.bool, + collapsed: PropTypes.bool, + handleCollapse: PropTypes.func, + menus: PropTypes.array, + siderWidth: PropTypes.number.def(256), + isMobile: PropTypes.bool, + layout: PropTypes.string.def('inline'), + fixSiderbar: PropTypes.bool, + logo: PropTypes.any, + title: PropTypes.string.def(''), + // render function or vnode + menuHeaderRender: PropTypes.oneOfType( + [PropTypes.func, PropTypes.array, PropTypes.object, PropTypes.bool]), + menuRender: PropTypes.oneOfType( + [PropTypes.func, PropTypes.array, PropTypes.object, PropTypes.bool]) +} + +export const defaultRenderLogo = (h, logo) => { + if (typeof logo === 'string') { + return logo + } + if (typeof logo === 'function') { + return logo() + } + return h(logo) +} + +export const defaultRenderLogoAntTitle = (h, props) => { + const {collapsed} = props + + if (collapsed) { + // 收缩状态:显示简写 "U-IoT" 或图标样式 + return ( +
          +
          + + U + + + IoT + +
          +
          + ) + } else { + // 展开状态:显示完整的 "Universal-IoT" + return ( +
          +
          + {/* 图标部分 */} +
          + + U + +
          + + {/* 文字部分 */} +
          + + Universal + + + IoT Platform + +
          +
          +
          + ) + } +} + +const SiderMenu = { + name: 'SiderMenu', + model: { + prop: 'collapsed', + event: 'collapse' + }, + props: SiderMenuProps, + render(h) { + const { + collapsible, + collapsed, + siderWidth, + fixSiderbar, + mode, + theme, + menus, + logo, + title, + onMenuHeaderClick = () => null, + i18nRender, + menuHeaderRender, + menuRender + } = this + const siderCls = ['ant-pro-sider-menu-sider'] + if (fixSiderbar) { + siderCls.push('fix-sider-bar') + } + if (theme === 'light') { + siderCls.push('light') + } + // + // const handleCollapse = (collapsed, type) => { + // this.$emit('collapse', collapsed) + // } + + const headerDom = defaultRenderLogoAntTitle(h, { + logo, title, menuHeaderRender, collapsed + }) + + return ( + {headerDom && ( + + )} + {menuRender && ( + isFun(menuRender) && + menuRender(h, this.$props) || + menuRender + ) || ( + + )} + ) + } +} + +export default SiderMenu diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/index.jsx b/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..67950cfc36768d1fd0e1994acaf3f3f836229032 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/index.jsx @@ -0,0 +1,59 @@ +import './index.less' + +import 'ant-design-vue/es/drawer/style' +import Drawer from 'ant-design-vue/es/drawer' +import SiderMenu, {SiderMenuProps} from './SiderMenu' + +const SiderMenuWrapper = { + name: 'SiderMenuWrapper', + model: { + prop: 'collapsed', + event: 'collapse' + }, + props: SiderMenuProps, + render(h) { + const { + layout, + isMobile, + collapsed + } = this + const isTopMenu = layout === 'topmenu' + const handleCollapse = (e) => { + this.$emit('collapse', true) + } + return isMobile ? ( + + + + ) : !isTopMenu && ( + + ) + } +} + +SiderMenuWrapper.install = function (Vue) { + Vue.component(SiderMenuWrapper.name, SiderMenuWrapper) +} + +export { + SiderMenu, + SiderMenuProps +} + +export default SiderMenuWrapper diff --git a/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/index.less b/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/index.less new file mode 100644 index 0000000000000000000000000000000000000000..425d018d50cf9cff7d69d284175105fba65c0804 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/SiderMenu/index.less @@ -0,0 +1,133 @@ +@import "~ant-design-vue/es/style/themes/default.less"; + +@sider-menu-prefix-cls: ~'@{ant-prefix}-pro-sider-menu'; + +@nav-header-height: @layout-header-height; +.@{sider-menu-prefix-cls} { + + &-logo { + position: relative; + height: 64px; + padding-left: 24px; + overflow: hidden; + transition: all .3s; + line-height: @nav-header-height; + background: @layout-sider-background; + display: flex; + align-items: center; + justify-content: flex-start; + + svg, img, h1 { + display: inline-block; + } + + svg, img { + height: 32px; + width: 32px; + vertical-align: middle; + } + + h1 { + color: @white; + font-size: 20px; + margin: 0 0 0 12px; + font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; + font-weight: 600; + vertical-align: middle; + } + } + + &-sider { + position: relative; + z-index: 10; + // min-height: 100vh; + box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35); + + &.fix-sider-bar { + position: fixed; + top: 0; + left: 0; + box-shadow: 2px 0 8px 0 rgba(29, 35, 41, 0.05); + + .ant-menu-root { + height: ~'calc(100vh - @{nav-header-height})'; + overflow-y: auto; + } + + .ant-menu-inline { + border-right: 0; + + .ant-menu-item, + .ant-menu-submenu-title { + width: 100%; + } + } + } + + &.light { + background-color: white; + box-shadow: 2px 0 8px 0 rgba(29, 35, 41, 0.05); + + .@{sider-menu-prefix-cls}-logo { + background: white; + box-shadow: 1px 1px 0 0 @border-color-split; + + h1 { + color: @primary-color; + } + } + + .ant-menu-light { + border-right-color: transparent; + } + } + } + + &-icon { + width: 14px; + vertical-align: baseline; + } + + .top-nav-menu li.ant-menu-item { + height: @nav-header-height; + line-height: @nav-header-height; + } + + .drawer .drawer-content { + background: @layout-sider-background; + } + + .ant-menu-inline-collapsed { + & > .ant-menu-item .sider-menu-item-img + span, + & + > .ant-menu-item-group + > .ant-menu-item-group-list + > .ant-menu-item + .sider-menu-item-img + + span, + & + > .ant-menu-submenu + > .ant-menu-submenu-title + .sider-menu-item-img + + span { + display: inline-block; + max-width: 0; + opacity: 0; + } + } + + .ant-menu-item .sider-menu-item-img + span, + .ant-menu-submenu-title .sider-menu-item-img + span { + opacity: 1; + transition: opacity 0.3s @ease-in-out, width 0.3s @ease-in-out; + } + + .ant-drawer-body { + padding: 0; + } + + &-sider.ant-layout-sider-collapsed &-logo { + padding-left: 0; + justify-content: center; + } +} diff --git a/cn-universal-web-ui/src/components/ProLayout/components/index.js b/cn-universal-web-ui/src/components/ProLayout/components/index.js new file mode 100644 index 0000000000000000000000000000000000000000..aad85249644d60bcd178e4844040509b8989df20 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/components/index.js @@ -0,0 +1,15 @@ +import RouteMenu from './RouteMenu' +import SiderMenuWrapper, {SiderMenu, SiderMenuProps} from './SiderMenu' +import PageHeaderWrapper from './PageHeaderWrapper' +import GlobalFooter from './GlobalFooter' +import VueFragment from './Fragment' + +export { + RouteMenu, + SiderMenu, + SiderMenuProps, + SiderMenuWrapper, + PageHeaderWrapper, + GlobalFooter, + VueFragment +} diff --git a/cn-universal-web-ui/src/components/ProLayout/index.js b/cn-universal-web-ui/src/components/ProLayout/index.js new file mode 100644 index 0000000000000000000000000000000000000000..6883461e4c4ef17b9a3119468f72527086ebff81 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/index.js @@ -0,0 +1,10 @@ +export {default, BasicLayoutProps} from './BasicLayout' +export {default as BlockLayout} from './BlockLayout' +export {default as PageHeaderWrapper} from './components/PageHeaderWrapper' +export {default as SiderMenuWrapper} from './components/SiderMenu' +export {default as GlobalFooter} from './components/GlobalFooter' +export {default as SettingDrawer} from './components/SettingDrawer' +export {default as DocumentTitle} from './components/DocumentTitle' +export {default as BaseMenu} from './components/RouteMenu' +// func +export {updateTheme, updateColorWeak} from './utils/dynamicTheme' diff --git a/cn-universal-web-ui/src/components/ProLayout/utils/dynamicTheme.js b/cn-universal-web-ui/src/components/ProLayout/utils/dynamicTheme.js new file mode 100644 index 0000000000000000000000000000000000000000..146e87cfc9d349458f4579f364aade0ffaf63126 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/utils/dynamicTheme.js @@ -0,0 +1,38 @@ +import client from 'webpack-theme-color-replacer/client' +import {generate} from '@ant-design/colors' +import {message} from 'ant-design-vue' + +export const themeColor = { + getAntdSerials(color) { + // 淡化(即less的tint) + const lightens = new Array(9).fill().map((t, i) => { + return client.varyColor.lighten(color, i / 10) + }) + // colorPalette 变换得到颜色值 + const colorPalettes = generate(color) + const rgb = client.varyColor.toNum3(color.replace('#', '')).join(',') + return lightens.concat(colorPalettes).concat(rgb) + }, + changeColor(newColor) { + const options = { + newColors: this.getAntdSerials(newColor), // new colors array, one-to-one corresponde with `matchColors` + changeUrl(cssUrl) { + return `/${cssUrl}` // while router is not `hash` mode, it needs absolute path + } + } + return client.changer.changeColor(options, Promise) + } +} + +export const updateTheme = newPrimaryColor => { + const hideMessage = message.loading('正在切换主题', 0) + themeColor.changeColor(newPrimaryColor).then(r => { + hideMessage() + }) +} + +export const updateColorWeak = colorWeak => { + // document.body.className = colorWeak ? 'colorWeak' : ''; + const app = document.body.querySelector('#app') + colorWeak ? app.classList.add('colorWeak') : app.classList.remove('colorWeak') +} diff --git a/cn-universal-web-ui/src/components/ProLayout/utils/request.js b/cn-universal-web-ui/src/components/ProLayout/utils/request.js new file mode 100644 index 0000000000000000000000000000000000000000..70e6821734a36fbd8fabc66b7a19966f63f77e76 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/utils/request.js @@ -0,0 +1,63 @@ +import request, {extend} from 'umi-request' +import {notification} from 'ant-design-vue' + +const codeMessage = { + 0: '服务器成功返回请求的数据。', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)。', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} + +const errorHandler = (error) => { + const {response = {}} = error + const errortext = codeMessage[response.status] || response.statusText + const {status, url} = response + + notification.error({ + message: `请求错误 ${status}: ${url}`, + description: errortext, + duration: 5 + }) +} + +export const BASE_URL = process.env.VUE_APP_API_URL || '/api/v1' + +const customRequest = extend({ + prefix: BASE_URL, + timeout: 1000, + errorHandler +}) + +// request 拦截器 +customRequest.interceptors.request.use((url, options) => { + return ( + { + url: `${url}&interceptors=yes`, + options: {...options, interceptors: true} + } + ) +}) + +// response 拦截器 +customRequest.interceptors.response.use((response, options) => { + response.headers.append('interceptors', 'yes yo') + return response +}) + +export { + request, + extend +} + +export default customRequest diff --git a/cn-universal-web-ui/src/components/ProLayout/utils/util.js b/cn-universal-web-ui/src/components/ProLayout/utils/util.js new file mode 100644 index 0000000000000000000000000000000000000000..91ddacc998c5c725beaa7596f713df0ef072c877 --- /dev/null +++ b/cn-universal-web-ui/src/components/ProLayout/utils/util.js @@ -0,0 +1,64 @@ +import triggerEvent from 'ant-design-vue/es/_util/triggerEvent' +import {inBrowser} from 'ant-design-vue/es/_util/env' + +const getComponentFromProp = (instance, prop) => { + const slots = instance.slots && instance.slots() + return slots[prop] || instance.props[prop] +} + +const isFun = (func) => { + return typeof func === 'function' +} + +// 兼容 0.3.4~0.3.8 +export const contentWidthCheck = (contentWidth) => { + return Object.prototype.toString.call(contentWidth) === '[object Boolean]' + ? contentWidth === true && 'Fixed' || 'Fluid' + : contentWidth +} + +export const layoutContentWidth = (contentType) => { + return contentType !== 'Fluid' +} + +const themeConfig = { + daybreak: 'daybreak', + '#1890ff': 'daybreak', + '#F5222D': 'dust', + '#FA541C': 'volcano', + '#FAAD14': 'sunset', + '#13C2C2': 'cyan', + '#52C41A': 'green', + '#2F54EB': 'geekblue', + '#722ED1': 'purple' +} + +const invertKeyValues = (obj) => + Object.keys(obj).reduce((acc, key) => { + acc[obj[key]] = key + return acc + }, {}) + +/** + * #1890ff -> daybreak + * @param val + */ +export function genThemeToString(val) { + return val && themeConfig[val] ? themeConfig[val] : val +} + +/** + * daybreak-> #1890ff + * @param val + */ +export function genStringToTheme(val) { + const stringConfig = invertKeyValues(themeConfig) + return val && stringConfig[val] ? stringConfig[val] : val +} + +export { + triggerEvent, + inBrowser, + getComponentFromProp, + isFun +} diff --git a/cn-universal-web-ui/src/components/Screenfull/index.vue b/cn-universal-web-ui/src/components/Screenfull/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5b1cfbac312d7f3b3faad19ca9c27a90f15b96bf --- /dev/null +++ b/cn-universal-web-ui/src/components/Screenfull/index.vue @@ -0,0 +1,52 @@ + + + diff --git a/cn-universal-web-ui/src/components/Search/GlobalSearch.jsx b/cn-universal-web-ui/src/components/Search/GlobalSearch.jsx new file mode 100644 index 0000000000000000000000000000000000000000..cd5888fd2339c5eb32607cbd0f9a4a3d08ab37da --- /dev/null +++ b/cn-universal-web-ui/src/components/Search/GlobalSearch.jsx @@ -0,0 +1,63 @@ +import {Select} from 'ant-design-vue' +import './index.less' + +const GlobalSearch = { + name: 'GlobalSearch', + data() { + return { + visible: false + } + }, + mounted() { + const keyboardHandle = (e) => { + e.preventDefault() + e.stopPropagation() + const {ctrlKey, shiftKey, altKey, keyCode} = e + console.log('keyCode:', e.keyCode, e) + // key is `K` and hold ctrl + if (keyCode === 75 && ctrlKey && !shiftKey && !altKey) { + this.visible = !this.visible + } + } + document.addEventListener('keydown', keyboardHandle) + }, + render() { + const {visible} = this + const handleSearch = (e) => { + this.$emit('search', e) + } + + const handleChange = (e) => { + this.$emit('change', e) + } + if (!visible) { + return null + } + return ( + + ) + } +} + +GlobalSearch.install = function (Vue) { + Vue.component(GlobalSearch.name, GlobalSearch) +} + +export default GlobalSearch diff --git a/cn-universal-web-ui/src/components/Search/index.less b/cn-universal-web-ui/src/components/Search/index.less new file mode 100644 index 0000000000000000000000000000000000000000..d39785229f9310ce155b568bd4a037447f30d7bf --- /dev/null +++ b/cn-universal-web-ui/src/components/Search/index.less @@ -0,0 +1,25 @@ +@import "~ant-design-vue/es/style/themes/default"; + +.global-search-wrapper { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: @zindex-modal-mask; + background: @modal-mask-bg; + + .global-search-box { + position: absolute; + top: 20%; + left: 50%; + width: 450px; + transform: translate(-50%, -50%); + + .global-search-tips { + color: @white; + font-size: @font-size-lg; + text-align: right; + } + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/SelectLang/index.jsx b/cn-universal-web-ui/src/components/SelectLang/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..b73f5b542a13759d46b7822937c40f25949415a5 --- /dev/null +++ b/cn-universal-web-ui/src/components/SelectLang/index.jsx @@ -0,0 +1,55 @@ +import './index.less' + +import {Dropdown, Icon, Menu} from 'ant-design-vue' +import {i18nRender} from '@/locales' +import i18nMixin from '@/store/i18n-mixin' + +const locales = ['zh-CN', 'en-US'] +const languageLabels = { + 'zh-CN': '简体中文', + 'en-US': 'English(暂不支持)' +} +// eslint-disable-next-line +const languageIcons = { + 'zh-CN': '🇨🇳', + 'en-US': '🇺🇸' +} + +const SelectLang = { + props: { + prefixCls: { + type: String, + default: 'ant-pro-drop-down' + } + }, + name: 'SelectLang', + mixins: [i18nMixin], + render() { + const {prefixCls} = this + const changeLang = ({key}) => { + this.setLang(key) + } + const langMenu = ( + + {locales.map(locale => ( + + + {languageIcons[locale]} + {' '} + {languageLabels[locale]} + + ))} + + ) + return ( + + + + + + ) + } +} + +export default SelectLang diff --git a/cn-universal-web-ui/src/components/SelectLang/index.less b/cn-universal-web-ui/src/components/SelectLang/index.less new file mode 100644 index 0000000000000000000000000000000000000000..77ec59cb49fbab57a8f4deade2370585e7de2b42 --- /dev/null +++ b/cn-universal-web-ui/src/components/SelectLang/index.less @@ -0,0 +1,32 @@ +@import "~ant-design-vue/es/style/themes/default"; + +@header-menu-prefix-cls: ~'@{ant-prefix}-pro-header-menu'; +@header-drop-down-prefix-cls: ~'@{ant-prefix}-pro-drop-down'; + +.@{header-menu-prefix-cls} { + + .anticon { + margin-right: 8px; + } + + .ant-dropdown-menu-item { + min-width: 160px; + } +} + +.@{header-drop-down-prefix-cls} { + + line-height: @layout-header-height; + vertical-align: top; + cursor: pointer; + + > i { + font-size: 16px !important; + transform: none !important; + + svg { + position: relative; + top: -1px; + } + } +} diff --git a/cn-universal-web-ui/src/components/SettingDrawer/SettingDrawer.vue b/cn-universal-web-ui/src/components/SettingDrawer/SettingDrawer.vue new file mode 100644 index 0000000000000000000000000000000000000000..e2cf6437e5f28f9a4d95a072806c42442b138752 --- /dev/null +++ b/cn-universal-web-ui/src/components/SettingDrawer/SettingDrawer.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/SettingDrawer/SettingItem.vue b/cn-universal-web-ui/src/components/SettingDrawer/SettingItem.vue new file mode 100644 index 0000000000000000000000000000000000000000..67c52cb6302ac949c0fa4148fcb49fd168ad6423 --- /dev/null +++ b/cn-universal-web-ui/src/components/SettingDrawer/SettingItem.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/SettingDrawer/index.js b/cn-universal-web-ui/src/components/SettingDrawer/index.js new file mode 100644 index 0000000000000000000000000000000000000000..676471f489de3a1ae119d9898a595a8229cfbe70 --- /dev/null +++ b/cn-universal-web-ui/src/components/SettingDrawer/index.js @@ -0,0 +1,3 @@ +import SettingDrawer from './SettingDrawer' + +export default SettingDrawer diff --git a/cn-universal-web-ui/src/components/SettingDrawer/settingConfig.js b/cn-universal-web-ui/src/components/SettingDrawer/settingConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..e2fee135315faeebee5cdd1dbce4ed4b67de74d7 --- /dev/null +++ b/cn-universal-web-ui/src/components/SettingDrawer/settingConfig.js @@ -0,0 +1,48 @@ +import message from 'ant-design-vue/es/message' +// import defaultSettings from '../defaultSettings'; +import themeColor from './themeColor.js' + +// let lessNodesAppended +const colorList = [ + { + key: '薄暮', color: '#F5222D' + }, + { + key: '火山', color: '#FA541C' + }, + { + key: '日暮', color: '#FAAD14' + }, + { + key: '明青', color: '#13C2C2' + }, + { + key: '极光绿', color: '#52C41A' + }, + { + key: '拂晓蓝(默认)', color: '#1890FF' + }, + { + key: '极客蓝', color: '#2F54EB' + }, + { + key: '酱紫', color: '#722ED1' + } +] + +const updateTheme = newPrimaryColor => { + const hideMessage = message.loading('正在切换主题!', 0) + themeColor.changeColor(newPrimaryColor).finally(() => { + setTimeout(() => { + hideMessage() + }, 10) + }) +} + +const updateColorWeak = colorWeak => { + // document.body.className = colorWeak ? 'colorWeak' : ''; + const app = document.body.querySelector('#app') + colorWeak ? app.classList.add('colorWeak') : app.classList.remove('colorWeak') +} + +export {updateTheme, colorList, updateColorWeak} diff --git a/cn-universal-web-ui/src/components/SettingDrawer/themeColor.js b/cn-universal-web-ui/src/components/SettingDrawer/themeColor.js new file mode 100644 index 0000000000000000000000000000000000000000..fa5fe3bc8ecca0c52276fb914ec1542d52ee15a7 --- /dev/null +++ b/cn-universal-web-ui/src/components/SettingDrawer/themeColor.js @@ -0,0 +1,24 @@ +import client from 'webpack-theme-color-replacer/client' +import {generate} from '@ant-design/colors' + +export default { + getAntdSerials(color) { + // 淡化(即less的tint) + const lightens = new Array(9).fill().map((t, i) => { + return client.varyColor.lighten(color, i / 10) + }) + // colorPalette变换得到颜色值 + const colorPalettes = generate(color) + const rgb = client.varyColor.toNum3(color.replace('#', '')).join(',') + return lightens.concat(colorPalettes).concat(rgb) + }, + changeColor(newColor) { + var options = { + newColors: this.getAntdSerials(newColor), // new colors array, one-to-one corresponde with `matchColors` + changeUrl(cssUrl) { + return `/${cssUrl}` // while router is not `hash` mode, it needs absolute path + } + } + return client.changer.changeColor(options, Promise) + } +} diff --git a/cn-universal-web-ui/src/components/StandardFormRow/StandardFormRow.vue b/cn-universal-web-ui/src/components/StandardFormRow/StandardFormRow.vue new file mode 100644 index 0000000000000000000000000000000000000000..c584f9afb128f7781a7055675cb070959d25a37a --- /dev/null +++ b/cn-universal-web-ui/src/components/StandardFormRow/StandardFormRow.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/StandardFormRow/index.js b/cn-universal-web-ui/src/components/StandardFormRow/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8155cc7392da0883147af2d40a28f4389b298ebf --- /dev/null +++ b/cn-universal-web-ui/src/components/StandardFormRow/index.js @@ -0,0 +1,3 @@ +import StandardFormRow from './StandardFormRow' + +export default StandardFormRow diff --git a/cn-universal-web-ui/src/components/TagSelect/TagSelectOption.jsx b/cn-universal-web-ui/src/components/TagSelect/TagSelectOption.jsx new file mode 100644 index 0000000000000000000000000000000000000000..608e1f42ba726e44a98934f04335d7530552a648 --- /dev/null +++ b/cn-universal-web-ui/src/components/TagSelect/TagSelectOption.jsx @@ -0,0 +1,48 @@ +import {Tag} from 'ant-design-vue' + +const {CheckableTag} = Tag + +export default { + name: 'TagSelectOption', + props: { + prefixCls: { + type: String, + default: 'ant-pro-tag-select-option' + }, + value: { + type: [String, Number, Object], + default: '' + }, + checked: { + type: Boolean, + default: false + } + }, + data() { + return { + localChecked: this.checked || false + } + }, + watch: { + 'checked'(val) { + this.localChecked = val + }, + '$parent.items': { + handler: function (val) { + this.value && val.hasOwnProperty(this.value) + && (this.localChecked = val[this.value]) + }, + deep: true + } + }, + render() { + const {$slots, value} = this + const onChange = (checked) => { + this.$emit('change', {value, checked}) + } + return ( + + {$slots.default} + ) + } +} diff --git a/cn-universal-web-ui/src/components/TagSelect/index.jsx b/cn-universal-web-ui/src/components/TagSelect/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..35a2f41cf124bf549eecaa4a899ca5b942148312 --- /dev/null +++ b/cn-universal-web-ui/src/components/TagSelect/index.jsx @@ -0,0 +1,115 @@ +import PropTypes from 'ant-design-vue/es/_util/vue-types' +import Option from './TagSelectOption.jsx' +import {filterEmpty} from '@/components/_util/util' + +export default { + Option, + name: 'TagSelect', + model: { + prop: 'checked', + event: 'change' + }, + props: { + prefixCls: { + type: String, + default: 'ant-pro-tag-select' + }, + defaultValue: { + type: PropTypes.array, + default: null + }, + value: { + type: PropTypes.array, + default: null + }, + expandable: { + type: Boolean, + default: false + }, + hideCheckAll: { + type: Boolean, + default: false + } + }, + data() { + return { + expand: false, + localCheckAll: false, + items: this.getItemsKey(filterEmpty(this.$slots.default)), + val: this.value || this.defaultValue || [] + } + }, + methods: { + onChange(checked) { + const key = Object.keys(this.items).filter(key => key === checked.value) + this.items[key] = checked.checked + const bool = Object.values(this.items).lastIndexOf(false) + if (bool === -1) { + this.localCheckAll = true + } else { + this.localCheckAll = false + } + }, + onCheckAll(checked) { + Object.keys(this.items).forEach(v => { + this.items[v] = checked.checked + }) + this.localCheckAll = checked.checked + }, + getItemsKey(items) { + const totalItem = {} + items.forEach(item => { + totalItem[item.componentOptions.propsData + && item.componentOptions.propsData.value] = false + }) + return totalItem + }, + // CheckAll Button + renderCheckAll() { + const props = { + on: { + change: (checked) => { + this.onCheckAll(checked) + checked.value = 'total' + this.$emit('change', checked) + } + } + } + const checkAllElement = + return !this.hideCheckAll && checkAllElement || null + }, + // expandable + renderExpandable() { + + }, + // render option + renderTags(items) { + const listeners = { + change: (checked) => { + this.onChange(checked) + this.$emit('change', checked) + } + } + + return items.map(vnode => { + const options = vnode.componentOptions + options.listeners = listeners + return vnode + }) + } + }, + render() { + const {$props: {prefixCls}} = this + const classString = { + [`${prefixCls}`]: true + } + const tagItems = filterEmpty(this.$slots.default) + return ( +
          + {this.renderCheckAll()} + {this.renderTags(tagItems)} +
          + ) + } +} diff --git a/cn-universal-web-ui/src/components/TextArea/index.jsx b/cn-universal-web-ui/src/components/TextArea/index.jsx new file mode 100644 index 0000000000000000000000000000000000000000..786d92e01fc1eedc77d8b4f0eca37bd219e320a1 --- /dev/null +++ b/cn-universal-web-ui/src/components/TextArea/index.jsx @@ -0,0 +1,70 @@ +import './style.less' +import {cutStrByFullLength, getStrFullLength} from '../_util/util' +import Input from 'ant-design-vue/es/input' + +const TextArea = Input.TextArea + +export default { + name: 'LimitTextArea', + model: { + prop: 'value', + event: 'change' + }, + props: Object.assign({}, TextArea.props, { + prefixCls: { + type: String, + default: 'ant-textarea-limit' + }, + // eslint-disable-next-line + value: { + type: String + }, + limit: { + type: Number, + default: 200 + } + }), + data() { + return { + currentLimit: 0 + } + }, + watch: { + value(val) { + this.calcLimitNum(val) + } + }, + created() { + this.calcLimitNum(this.value) + }, + methods: { + handleChange(e) { + const value = e.target.value + const len = getStrFullLength(value) + if (len <= this.limit) { + this.currentLimit = len + this.$emit('change', value) + return + } else { + const str = cutStrByFullLength(value, this.limit) + this.currentLimit = getStrFullLength(str) + this.$emit('change', str) + } + console.error('limit out! currentLimit:', this.currentLimit) + }, + calcLimitNum(val) { + const len = getStrFullLength(val) + this.currentLimit = len + } + }, + render() { + const {prefixCls, ...props} = this.$props + return ( +
          + + {this.currentLimit}/{this.limit} +
          + ) + } +} diff --git a/cn-universal-web-ui/src/components/TextArea/style.less b/cn-universal-web-ui/src/components/TextArea/style.less new file mode 100644 index 0000000000000000000000000000000000000000..6dee494c55325d541e007eff5f0240933dc7efca --- /dev/null +++ b/cn-universal-web-ui/src/components/TextArea/style.less @@ -0,0 +1,12 @@ +.ant-textarea-limit { + position: relative; + + .limit { + position: absolute; + color: #909399; + background: #fff; + font-size: 12px; + bottom: 5px; + right: 10px; + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/Tree/Tree.jsx b/cn-universal-web-ui/src/components/Tree/Tree.jsx new file mode 100644 index 0000000000000000000000000000000000000000..79165721c155980c252f046922c3d278c65cbdb2 --- /dev/null +++ b/cn-universal-web-ui/src/components/Tree/Tree.jsx @@ -0,0 +1,140 @@ +import {Icon, Input, Menu} from 'ant-design-vue' + +const {Item, ItemGroup, SubMenu} = Menu +const {Search} = Input + +export default { + name: 'Tree', + props: { + dataSource: { + type: Array, + required: true + }, + openKeys: { + type: Array, + default: () => [] + }, + search: { + type: Boolean, + default: false + } + }, + created() { + this.localOpenKeys = this.openKeys.slice(0) + }, + data() { + return { + localOpenKeys: [] + } + }, + methods: { + handlePlus(item) { + this.$emit('add', item) + }, + handleTitleClick(...args) { + this.$emit('titleClick', {args}) + }, + + renderSearch() { + return ( + + ) + }, + renderIcon(icon) { + return icon && () || null + }, + renderMenuItem(item) { + return ( + + {this.renderIcon(item.icon)} + {item.title} + this.handlePlus(item) + } + }}> + + + + ) + }, + renderItem(item) { + return item.children ? this.renderSubItem(item, item.key) + : this.renderMenuItem(item, item.key) + }, + renderItemGroup(item) { + const childrenItems = item.children.map(o => { + return this.renderItem(o, o.key) + }) + + return ( + + + {childrenItems} + + ) + }, + renderSubItem(item, key) { + const childrenItems = item.children && item.children.map(o => { + return this.renderItem(o, o.key) + }) + + const title = ( + + {this.renderIcon(item.icon)} + {item.title} + + ) + + if (item.group) { + return this.renderItemGroup(item) + } + // titleClick={this.handleTitleClick(item)} + return ( + + {title} + {childrenItems} + + ) + } + }, + render() { + const {dataSource, search} = this.$props + + // this.localOpenKeys = openKeys.slice(0) + const list = dataSource.map(item => { + return this.renderItem(item) + }) + + return ( +
          + {search ? this.renderSearch() : null} + this.$emit('click', item), + 'update:openKeys': val => { + this.localOpenKeys = val + } + } + }} openKeys={this.localOpenKeys}> + {list} + +
          + ) + } +} diff --git a/cn-universal-web-ui/src/components/Trend/Trend.vue b/cn-universal-web-ui/src/components/Trend/Trend.vue new file mode 100644 index 0000000000000000000000000000000000000000..d770b862675c28b3eec81d789d6d8f7982d26143 --- /dev/null +++ b/cn-universal-web-ui/src/components/Trend/Trend.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/Trend/index.js b/cn-universal-web-ui/src/components/Trend/index.js new file mode 100644 index 0000000000000000000000000000000000000000..9f14228060e58b2a52d2d698b8b25a959940a271 --- /dev/null +++ b/cn-universal-web-ui/src/components/Trend/index.js @@ -0,0 +1,3 @@ +import Trend from './Trend.vue' + +export default Trend diff --git a/cn-universal-web-ui/src/components/Trend/index.less b/cn-universal-web-ui/src/components/Trend/index.less new file mode 100644 index 0000000000000000000000000000000000000000..f2a6896637b38e9c50aaea757bb3af6b508bad44 --- /dev/null +++ b/cn-universal-web-ui/src/components/Trend/index.less @@ -0,0 +1,44 @@ +@import "../index"; + +@trend-prefix-cls: ~"@{ant-pro-prefix}-trend"; + +.@{trend-prefix-cls} { + display: inline-block; + font-size: @font-size-base; + line-height: 22px; + + .up, + .down { + margin-left: 4px; + position: relative; + top: 1px; + + i { + font-size: 12px; + transform: scale(0.83); + } + } + + .item-text { + display: inline-block; + margin-left: 8px; + color: rgba(0, 0, 0, .85); + } + + .up { + color: @red-6; + } + + .down { + color: @green-6; + top: -1px; + } + + &.reverse-color .up { + color: @green-6; + } + + &.reverse-color .down { + color: @red-6; + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/Trend/index.md b/cn-universal-web-ui/src/components/Trend/index.md new file mode 100644 index 0000000000000000000000000000000000000000..5afb8405a8d28d2cb5d6dd242d2faca77282b734 --- /dev/null +++ b/cn-universal-web-ui/src/components/Trend/index.md @@ -0,0 +1,44 @@ +# Trend 趋势标记 + +趋势符号,标记上升和下降趋势。通常用绿色代表“好”,红色代表“不好”,股票涨跌场景除外。 + +引用方式: + +```javascript +import Trend from '@/components/Trend' + +export default { + components: { + Trend + } +} +``` + +## 代码演示 [demo](https://pro.loacg.com/test/home) + +```html +5% +``` + +或 + +```html + + 工资 + 5% + +``` + +或 + +```html +5% +``` + +## API + +| 参数 | 说明 | 类型 | 默认值 | +|--------------|------------|---------|--------| +| flag | 上升下降标识:`up | down` | string | - | +| reverseColor | 颜色反转 | Boolean | false | + diff --git a/cn-universal-web-ui/src/components/UseFlow/index.vue b/cn-universal-web-ui/src/components/UseFlow/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f07035099266c4721db2d54b9146a1a8b4466750 --- /dev/null +++ b/cn-universal-web-ui/src/components/UseFlow/index.vue @@ -0,0 +1,180 @@ + + + + + diff --git a/cn-universal-web-ui/src/components/VisualRuleFlow/NotificationTemplateSelector.vue b/cn-universal-web-ui/src/components/VisualRuleFlow/NotificationTemplateSelector.vue new file mode 100644 index 0000000000000000000000000000000000000000..738b9be4da60e6544cad345f9abcedb695c8504c --- /dev/null +++ b/cn-universal-web-ui/src/components/VisualRuleFlow/NotificationTemplateSelector.vue @@ -0,0 +1,450 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/VisualRuleFlow/ProductNodeGenerator.vue b/cn-universal-web-ui/src/components/VisualRuleFlow/ProductNodeGenerator.vue new file mode 100644 index 0000000000000000000000000000000000000000..d358ccd645ed4c9542452de697a99239b893ce7d --- /dev/null +++ b/cn-universal-web-ui/src/components/VisualRuleFlow/ProductNodeGenerator.vue @@ -0,0 +1,481 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/VisualRuleFlow/ProductSelector.vue b/cn-universal-web-ui/src/components/VisualRuleFlow/ProductSelector.vue new file mode 100644 index 0000000000000000000000000000000000000000..68558164dea83e5b9c714d21eb3f5bf4c3af57e3 --- /dev/null +++ b/cn-universal-web-ui/src/components/VisualRuleFlow/ProductSelector.vue @@ -0,0 +1,456 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/VisualRuleFlow/index.js b/cn-universal-web-ui/src/components/VisualRuleFlow/index.js new file mode 100644 index 0000000000000000000000000000000000000000..356c46a485a5c5576d32fd81fc845ce4c87e86b4 --- /dev/null +++ b/cn-universal-web-ui/src/components/VisualRuleFlow/index.js @@ -0,0 +1,17 @@ +import ProductNodeGenerator from './ProductNodeGenerator.vue' +import NotificationTemplateSelector from './NotificationTemplateSelector.vue' +import ProductSelector from './ProductSelector.vue' + +export { + ProductNodeGenerator, + NotificationTemplateSelector, + ProductSelector +} + +export default { + install(Vue) { + Vue.component('ProductNodeGenerator', ProductNodeGenerator) + Vue.component('NotificationTemplateSelector', NotificationTemplateSelector) + Vue.component('ProductSelector', ProductSelector) + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/components/_util/util.js b/cn-universal-web-ui/src/components/_util/util.js new file mode 100644 index 0000000000000000000000000000000000000000..a761e3215faf41536e759c904d2d4cf6bc767075 --- /dev/null +++ b/cn-universal-web-ui/src/components/_util/util.js @@ -0,0 +1,46 @@ +/** + * components util + */ + +/** + * 清理空值,对象 + * @param children + * @returns {*[]} + */ +export function filterEmpty(children = []) { + return children.filter(c => c.tag || (c.text && c.text.trim() !== '')) +} + +/** + * 获取字符串长度,英文字符 长度1,中文字符长度2 + * @param {*} str + */ +export const getStrFullLength = (str = '') => + str.split('').reduce((pre, cur) => { + const charCode = cur.charCodeAt(0) + if (charCode >= 0 && charCode <= 128) { + return pre + 1 + } + return pre + 2 + }, 0) + +/** + * 截取字符串,根据 maxLength 截取后返回 + * @param {*} str + * @param {*} maxLength + */ +export const cutStrByFullLength = (str = '', maxLength) => { + let showLength = 0 + return str.split('').reduce((pre, cur) => { + const charCode = cur.charCodeAt(0) + if (charCode >= 0 && charCode <= 128) { + showLength += 1 + } else { + showLength += 2 + } + if (showLength <= maxLength) { + return pre + cur + } + return pre + }, '') +} diff --git a/cn-universal-web-ui/src/components/index.js b/cn-universal-web-ui/src/components/index.js new file mode 100644 index 0000000000000000000000000000000000000000..62226ead9cb84fa7e1e4d30932f5e5225fcca3c8 --- /dev/null +++ b/cn-universal-web-ui/src/components/index.js @@ -0,0 +1,37 @@ +// pro components +import AvatarList from '@/components/AvatarList' +import Ellipsis from '@/components/Ellipsis' +import FooterToolbar from '@/components/FooterToolbar' +import NumberInfo from '@/components/NumberInfo' +import Tree from '@/components/Tree/Tree' +import Trend from '@/components/Trend' +import MultiTab from '@/components/MultiTab' +import IconSelector from '@/components/IconSelector' +import TagSelect from '@/components/TagSelect' +import StandardFormRow from '@/components/StandardFormRow' +import ArticleListContent from '@/components/ArticleListContent' + +import Dialog from '@/components/Dialog' + +import SettingDrawer from '@/components/SettingDrawer' + +import ProLayout from '@/components/ProLayout' + +export { + AvatarList, + Trend, + Ellipsis, + FooterToolbar, + NumberInfo, + Tree, + MultiTab, + IconSelector, + TagSelect, + StandardFormRow, + ArticleListContent, + + Dialog, + SettingDrawer, + + ProLayout +} diff --git a/cn-universal-web-ui/src/components/index.less b/cn-universal-web-ui/src/components/index.less new file mode 100644 index 0000000000000000000000000000000000000000..74d9f911884bc1974e37845d77de289205c9fc3f --- /dev/null +++ b/cn-universal-web-ui/src/components/index.less @@ -0,0 +1,6 @@ +@import "~ant-design-vue/lib/style/index"; + +// The prefix to use on all css classes from ant-pro. +@ant-pro-prefix: ant-pro; +@ant-global-sider-zindex: 106; +@ant-global-header-zindex: 105; \ No newline at end of file diff --git a/cn-universal-web-ui/src/config/bezierEasing.less b/cn-universal-web-ui/src/config/bezierEasing.less new file mode 100644 index 0000000000000000000000000000000000000000..573a13f56e038171ba881ea611965fc1dfdffbfc --- /dev/null +++ b/cn-universal-web-ui/src/config/bezierEasing.less @@ -0,0 +1,26 @@ +// Replacement bezierEasing.less file to avoid JavaScript compilation issues +// This file provides the necessary bezier easing functions as pure CSS + +// Define bezier easing functions as CSS custom properties +:root { + --bezier-ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); + --bezier-ease-out: cubic-bezier(0.23, 1, 0.32, 1); + --bezier-ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); + --bezier-ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); + --bezier-ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); + --bezier-ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} + +// Mixin function replacement +.bezierEasingMixin() { + // This is a placeholder that does nothing + // The actual bezier functions are defined as CSS custom properties above +} + +// Export the bezier functions for use in other Less files +@bezier-ease-in-out: var(--bezier-ease-in-out); +@bezier-ease-out: var(--bezier-ease-out); +@bezier-ease-in: var(--bezier-ease-in); +@bezier-ease-in-out-quint: var(--bezier-ease-in-out-quint); +@bezier-ease-out-quint: var(--bezier-ease-out-quint); +@bezier-ease-in-quint: var(--bezier-ease-in-quint); \ No newline at end of file diff --git a/cn-universal-web-ui/src/config/defaultSettings.js b/cn-universal-web-ui/src/config/defaultSettings.js new file mode 100644 index 0000000000000000000000000000000000000000..418e76769c5cfd7156b3e2fa8aa089d498debfc1 --- /dev/null +++ b/cn-universal-web-ui/src/config/defaultSettings.js @@ -0,0 +1,42 @@ +/** + * 项目默认配置项 + * primaryColor - 默认主题色, 如果修改颜色不生效,请清理 localStorage + * navTheme - sidebar theme ['dark', 'light'] 两种主题 + * colorWeak - 色盲模式 + * layout - 整体布局方式 ['sidemenu', 'topmenu'] 两种布局 + * fixedHeader - 固定 Header : boolean + * fixSiderbar - 固定左侧菜单栏 : boolean + * contentWidth - 内容区布局: 流式 | 固定 + * + * storageOptions: {} - Vue-ls 插件配置项 (localStorage/sessionStorage) + * + */ + +export default { + navTheme: 'light', // theme for nav menu + // primaryColor: '#1890ff', // primary color of ant design + // layout: 'topmenu', // nav menu position: `sidemenu` or `topmenu` + // contentWidth: 'Fluid', // layout of content: `Fluid` or `Fixed`, only works when layout is topmenu + // fixedHeader: true, // sticky header + // fixSiderbar: true, // sticky siderbar + // colorWeak: false, + // multiTab: true, + menu: { + locale: true + }, + title: 'Universal-IoT', + pwa: false, + iconfontUrl: '', + production: process.env.NODE_ENV === 'production' + && process.env.VUE_APP_PREVIEW !== 'true', + tableSize: 'middle', + layout: 'sidemenu', + contentWidth: 'Fluid', + theme: 'light', + primaryColor: '#2f54eb', + fixedHeader: false, + fixSiderbar: false, + multiTab: true, + hideHintAlert: true, + hideCopyButton: false +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/config/router.config.js b/cn-universal-web-ui/src/config/router.config.js new file mode 100644 index 0000000000000000000000000000000000000000..7cea4b437bf744724b28bd7279b742e0dc95de37 --- /dev/null +++ b/cn-universal-web-ui/src/config/router.config.js @@ -0,0 +1,249 @@ +// eslint-disable-next-line +import {UserLayout} from '@/layouts' +/** + * Note: 路由配置项 + * + * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1 + * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式 + * // 只有一个时,会将那个子路由当做根路由显示在侧边栏 + * // 若你想不管路由下面的 children 声明的个数都显示你的根路由 + * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由 + * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 + * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题,此名称与页面name一致 + * meta : { + noCache: true // 如果设置为true,则不会被 缓存(默认 false) + title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字 + icon: 'svg-name' // 设置该路由的图标 + } + */ +/** + * 需在侧栏展示的,如需一级展示请参考首页实现 + * 需要注意为了缓存正常,所有父级需为RouteView + */ +export const indexRouterMap = [ + { + path: '/', + name: 'Index', + component: 'RouteView', + hidden: false, + redirect: '/index', + children: [ + { + path: '/index', + name: 'Index', + component: 'Index', + hidden: false, + meta: { + title: '首页', + noCache: true, + hidden: true, + icon: 'bank', + hiddenHeaderContent: true + } + } + ] + } +] +/** + * 在侧栏不会显示 + */ +export const otherRouterMap = [ + { + path: '/account/center', + name: 'Center', + component: 'AccountCenter', + meta: {title: '个人中心', noCache: true}, + hidden: true + }, + { + path: '/account/settings', + name: 'Settings', + component: 'AccountSettings', + meta: {title: '个人设置', hideHeader: true}, + redirect: '/account/settings/base', + hidden: true, + children: [ + { + path: '/account/settings/base', + name: 'BaseSettings', + component: 'BaseSettings', + hidden: true, + meta: {title: '基本设置', hidden: true, noCache: true} + }, + { + path: '/account/settings/security', + name: 'SecuritySettings', + component: 'SecuritySettings', + meta: {title: '安全设置', hidden: true, noCache: true} + } + ] + }, + { + path: '/monitor/job/log', + name: 'JobLog', + component: 'JobLog', + meta: {title: '调度日志', noCache: true}, + hidden: true + }, + { + path: '/system/role/authUser', + name: 'AuthUser', + component: 'AuthUser', + meta: {title: '分配用户', noCache: true}, + hidden: true + }, + { + path: '/system/notice/form', + name: 'NoticeForm', + component: 'NoticeForm', + meta: {title: '公告编辑', noCache: true}, + hidden: true + }, + { + path: '/gen/edit', + name: 'GenEdit', + component: 'GenEdit', + meta: {title: '修改生成配置', noCache: true}, + hidden: true + }, + { + path: '/application/details/:appUniqueId', + name: 'applicationDetails', + component: 'applicationDetails', + meta: { + title: '应用详情', + noCache: true, + selected: ['Application'], + open: ['Application'] + }, + hidden: true + }, + { + path: '/product/list', + name: 'ProductList', + component: 'Product', + meta: { + title: '产品列表', + noCache: true, + selected: ['Product'], + open: ['Product'] + } + }, + { + path: '/rule/flow/detail/:id', + name: 'ruleFlowDetail', + component: 'ruleFlowDetail', + meta: { + title: '数据流转详情', + noCache: true, + selected: ['Flow'], + open: ['Rule'] + }, + hidden: true + }, + { + path: 'system/instance/instance-details/:id', + name: 'instanceDetails', + component: 'instanceDetails', + meta: { + title: '设备详情', + noCache: true, + selected: ['Instance'], + open: ['Instance'] + }, + hidden: true + }, + { + path: '/instance/devicesconfig/history', + name: 'batchHistory', + component: 'batchHistory', + meta: { + title: '批量历史', + noCache: true, + selected: ['Devicesconfig'], + open: ['Instance'] + }, + hidden: true + }, + { + path: '/product/details/:id', + name: 'productDetails', + component: 'productDetails', + meta: { + title: '产品详情', + noCache: true, + selected: ['Product'], + open: ['Product'] + }, + hidden: true + }, + + { + path: '/system/network/tcp/detail/:id', + name: 'TcpNetworkDetail', + component: 'TcpNetworkDetail', + meta: { + title: 'TCP网络组件详情', + noCache: true, + selected: ['Tcp'], + open: ['Network'] + }, + hidden: true + }, + { + path: '/system/network/mqtt/detail/:id', + name: 'MqttNetworkDetail', + component: 'MqttNetworkDetail', + meta: { + title: 'MQTT网络组件详情', + noCache: true, + selected: ['Mqttt'], + open: ['Network'] + }, + hidden: true + }, + { + path: '/video/ezviz/player', + name: 'EzvizPlayer', + component: 'EzvizPlayer', + meta: { title: '萤石播放', noCache: true }, + hidden: true + }, + { + path: '/video/imou/player', + name: 'ImouPlayer', + component: 'ImouPlayer', + meta: { title: '乐橙播放', noCache: true }, + hidden: true + } +] +/** + * 基础路由 + * @type { *[] } + */ +export const constantRouterMap = [ + { + path: '/user', + component: UserLayout, + redirect: '/user/login', + hidden: true, + children: [ + { + path: 'login', + name: 'login', + component: () => import(/* webpackChunkName: "user" */ '@/views/user/Login') + }, + { + path: 'register', + name: 'register', + component: () => import(/* webpackChunkName: "user" */ '@/views/user/Register') + } + ] + }, + + { + path: '/404', + component: () => import(/* webpackChunkName: "fail" */ '@/views/exception/404') + } + +] diff --git a/cn-universal-web-ui/src/config/theme.js b/cn-universal-web-ui/src/config/theme.js new file mode 100644 index 0000000000000000000000000000000000000000..3377cfe7d29dd049e9b1bb5bf3efb7080c9e2ba7 --- /dev/null +++ b/cn-universal-web-ui/src/config/theme.js @@ -0,0 +1,167 @@ +module.exports = { + // 字体 + 'font-family': "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'", + 'font-size-base': '14px', + 'font-size-lg': '16px', + 'font-size-sm': '12px', + 'font-size-xs': '12px', + 'font-weight-regular': '400', + 'font-weight-medium': '500', + 'font-weight-semibold': '600', + 'font-weight-bold': '700', + 'line-height-base': '1.5', + 'line-height-lg': '2', + 'line-height-sm': '1.25', + + // Semi Design 主色调 + 'primary-color': '#3370ff', // Semi 主色 + 'primary-1': '#e8f3ff', + 'primary-2': '#c9e0ff', + 'primary-3': '#a3c8ff', + 'primary-4': '#7aafff', + 'primary-5': '#4d94ff', + 'primary-6': '#3370ff', + 'primary-7': '#2b5cd9', + 'primary-8': '#1e42b3', + 'primary-9': '#152b8c', + 'primary-10': '#0a1b66', + + // 功能色 + 'success-color': '#00b42a', + 'warning-color': '#ff7d00', + 'error-color': '#f53f3f', + 'info-color': '#3370ff', + 'disabled-color': 'rgba(0, 0, 0, 0.25)', + 'disabled-bg': '#f5f5f5', + + // 文字颜色 + 'text-color': 'rgba(0, 0, 0, 0.88)', + 'text-color-secondary': 'rgba(0, 0, 0, 0.65)', + 'text-color-inverse': '#fff', + 'heading-color': 'rgba(0, 0, 0, 0.88)', + + // 背景色 + 'background-color-base': '#f7f8fa', // Semi 背景色 + 'background-color-light': '#fff', + 'component-background': '#ffffff', + + // 边框 + 'border-color-base': '#e5e6eb', // Semi 边框色 + 'border-color-split': '#f2f3f5', + 'border-radius-base': '3px', // Semi 圆角 + 'border-radius-sm': '2px', + 'border-radius-lg': '6px', + + // 阴影 + 'shadow-color': 'rgba(0, 0, 0, 0.08)', + 'shadow-1': '0 2px 8px rgba(0, 0, 0, 0.08)', + 'shadow-2': '0 4px 16px rgba(0, 0, 0, 0.08)', + 'shadow-3': '0 6px 24px rgba(0, 0, 0, 0.08)', + + // 按钮 + 'btn-height-base': '32px', + 'btn-height-lg': '40px', + 'btn-height-sm': '24px', + 'btn-padding-horizontal-base': '16px', + 'btn-padding-horizontal-lg': '20px', + 'btn-padding-horizontal-sm': '12px', + 'btn-font-weight': '400', + 'btn-border-radius-base': '3px', + 'btn-border-radius-sm': '2px', + 'btn-border-radius-lg': '4px', + 'btn-default-bg': '#fff', + 'btn-default-border': '@border-color-base', + 'btn-disable-color': '@disabled-color', + 'btn-disable-bg': '@disabled-bg', + 'btn-disable-border': '@border-color-base', + 'btn-primary-shadow': '0 2px 0 rgba(51, 112, 255, 0.1)', + 'btn-primary-color': '#fff', + 'btn-primary-bg': '@primary-color', + 'btn-default-shadow': '0 2px 0 rgba(0, 0, 0, 0.02)', + + // 输入框 + 'input-height-base': '32px', + 'input-height-lg': '40px', + 'input-height-sm': '24px', + 'input-padding-horizontal': '12px', + 'input-padding-vertical-base': '4px', + 'input-padding-vertical-sm': '2px', + 'input-padding-vertical-lg': '6px', + 'input-bg': '#fff', + 'input-border-color': '@border-color-base', + 'input-hover-border-color': '@primary-5', + 'input-disabled-bg': '@disabled-bg', + + // 表格 + 'table-header-bg': '#fafafa', + 'table-header-color': '@heading-color', + 'table-row-hover-bg': '#f7f8fa', + 'table-selected-row-bg': '#e8f3ff', + 'table-padding-vertical': '12px', + 'table-padding-horizontal': '16px', + 'table-border-color': '@border-color-split', + + // 卡片 + 'card-head-background': '#fff', + 'card-head-color': '@heading-color', + 'card-head-padding': '16px', + 'card-inner-head-padding': '12px', + 'card-padding-base': '20px', + 'card-padding-wider': '24px', + 'card-shadow': '@shadow-1', + 'card-radius': '@border-radius-base', + 'card-head-border-bottom': '1px solid @border-color-split', + + // // 菜单 + // 'menu-bg': '#fff', + // 'menu-item-color': '@text-color', + // 'menu-highlight-color': '@primary-color', + // 'menu-item-active-bg': '@primary-1', + // 'menu-item-active-border-width': '0px', + // 'menu-item-group-title-color': 'rgba(0, 0, 0, 0.45)', + // 'menu-collapsed-width': '80px', + // 'menu-item-height': '40px', + // 'menu-item-margin': '4px 0', + // 'menu-item-padding': '0 16px', + + // // 标签页 + // 'tabs-card-head-background': '#fafafa', + // 'tabs-card-height': '40px', + // 'tabs-card-active-color': '@primary-color', + // 'tabs-title-font-size': '@font-size-base', + // 'tabs-title-font-size-lg': '@font-size-lg', + // 'tabs-title-font-size-sm': '@font-size-base', + // 'tabs-ink-bar-color': '@primary-color', + // 'tabs-bar-margin': '0 0 16px 0', + // 'tabs-horizontal-gutter': '32px', + // 'tabs-horizontal-margin': '0 0 0 32px', + // 'tabs-horizontal-padding': '12px 0', + // 'tabs-vertical-padding': '8px 24px', + // 'tabs-vertical-margin': '0 0 16px 0', + // 'tabs-scrolling-size': '32px', + // 'tabs-highlight-color': '@primary-color', + // 'tabs-hover-color': '@primary-5', + // 'tabs-active-color': '@primary-7', + + // // 分页 + // 'pagination-item-bg': '#fff', + // 'pagination-item-bg-active': '@primary-color', + // 'pagination-item-size': '32px', + // 'pagination-item-size-sm': '24px', + // 'pagination-font-family': '@font-family', + // 'pagination-font-weight-active': '500', + + // // 抽屉 + // 'drawer-bg': '#fff', + // 'drawer-header-padding': '16px 24px', + // 'drawer-body-padding': '24px', + // 'drawer-header-close-size': '56px', + + // // 模态框 + // 'modal-header-bg': '#fff', + // 'modal-content-bg': '#fff', + // 'modal-heading-color': '@heading-color', + // 'modal-close-color': '@text-color-secondary', + // 'modal-footer-bg': 'transparent', + // 'modal-mask-bg': 'rgba(0, 0, 0, 0.45)' +} diff --git a/cn-universal-web-ui/src/core/bootstrap.js b/cn-universal-web-ui/src/core/bootstrap.js new file mode 100644 index 0000000000000000000000000000000000000000..369d5e8d366b22dd28f09adabe04e78d1fd77b42 --- /dev/null +++ b/cn-universal-web-ui/src/core/bootstrap.js @@ -0,0 +1,43 @@ +import store from '@/store' +import storage from 'store' +import { + ACCESS_TOKEN, + APP_LANGUAGE, + TOGGLE_COLOR, + TOGGLE_CONTENT_WIDTH, + TOGGLE_FIXED_HEADER, + TOGGLE_FIXED_SIDEBAR, + TOGGLE_HIDE_HEADER, + TOGGLE_LAYOUT, + TOGGLE_MULTI_TAB, + TOGGLE_NAV_THEME, + TOGGLE_WEAK +} from '@/store/mutation-types' +import {printANSI} from '@/utils/screenLog' +import defaultSettings from '@/config/defaultSettings' + +export default function Initializer() { + printANSI() // 请自行移除该行. please remove this line + + store.commit(TOGGLE_LAYOUT, + storage.get(TOGGLE_LAYOUT, defaultSettings.layout)) + store.commit(TOGGLE_FIXED_HEADER, + storage.get(TOGGLE_FIXED_HEADER, defaultSettings.fixedHeader)) + store.commit(TOGGLE_FIXED_SIDEBAR, + storage.get(TOGGLE_FIXED_SIDEBAR, defaultSettings.fixSiderbar)) + store.commit(TOGGLE_CONTENT_WIDTH, + storage.get(TOGGLE_CONTENT_WIDTH, defaultSettings.contentWidth)) + store.commit(TOGGLE_HIDE_HEADER, + storage.get(TOGGLE_HIDE_HEADER, defaultSettings.autoHideHeader)) + store.commit(TOGGLE_NAV_THEME, + storage.get(TOGGLE_NAV_THEME, defaultSettings.navTheme)) + store.commit(TOGGLE_WEAK, storage.get(TOGGLE_WEAK, defaultSettings.colorWeak)) + store.commit(TOGGLE_COLOR, + storage.get(TOGGLE_COLOR, defaultSettings.primaryColor)) + store.commit(TOGGLE_MULTI_TAB, + storage.get(TOGGLE_MULTI_TAB, defaultSettings.multiTab)) + store.commit('SET_TOKEN', storage.get(ACCESS_TOKEN)) + + store.dispatch('setLang', storage.get(APP_LANGUAGE, 'zh-CN')) + // last step +} diff --git a/cn-universal-web-ui/src/core/directives/action.js b/cn-universal-web-ui/src/core/directives/action.js new file mode 100644 index 0000000000000000000000000000000000000000..a9ec267e5b3c56089b2dda8acfb7a8ff075116b0 --- /dev/null +++ b/cn-universal-web-ui/src/core/directives/action.js @@ -0,0 +1,35 @@ +import Vue from 'vue' +import store from '@/store' + +/** + * Action 权限指令 + * 指令用法: + * - 在需要控制 action 级别权限的组件上使用 v-action:[method] , 如下: + * 添加用户 + * 删除用户 + * 修改 + * + * - 当前用户没有权限时,组件上使用了该指令则会被隐藏 + * - 当后台权限跟 pro 提供的模式不同时,只需要针对这里的权限过滤进行修改即可 + * + * @see https://github.com/vueComponent/ant-design-vue-pro/pull/53 + */ +const action = Vue.directive('action', { + inserted: function (el, binding, vnode) { + const actionName = binding.arg + const roles = store.getters.roles + const elVal = vnode.context.$route.meta.permission + const permissionId = elVal instanceof String && [elVal] || elVal + roles.permissions.forEach(p => { + if (!permissionId.includes(p.permissionId)) { + return + } + if (p.actionList && !p.actionList.includes(actionName)) { + el.parentNode && el.parentNode.removeChild(el) + || (el.style.display = 'none') + } + }) + } +}) + +export default action diff --git a/cn-universal-web-ui/src/core/icons.js b/cn-universal-web-ui/src/core/icons.js new file mode 100644 index 0000000000000000000000000000000000000000..8868ed5a4a21ccce2e97f8a85e865d6b94b99ee1 --- /dev/null +++ b/cn-universal-web-ui/src/core/icons.js @@ -0,0 +1,174 @@ +/** + * Custom icon list + * All icons are loaded here for easy management + * @see https://vue.ant.design/components/icon/#Custom-Font-Icon + * + * 自定义图标加载表 + * 所有图标均从这里加载,方便管理 + */ + +import bugIcon from '@/assets/icons/bug.svg?inline' +import buildIcon from '@/assets/icons/build.svg?inline' +import buttonIcon from '@/assets/icons/button.svg?inline' +import bxAnalyseIcon from '@/assets/icons/bxAnalyse.svg?inline' +import cascaderIcon from '@/assets/icons/cascader.svg?inline' +import chartIcon from '@/assets/icons/chart.svg?inline' +import checkboxIcon from '@/assets/icons/checkbox.svg?inline' +import clipboardIcon from '@/assets/icons/clipboard.svg?inline' +import codeIcon from '@/assets/icons/code.svg?inline' +import colorIcon from '@/assets/icons/color.svg?inline' +import componentIcon from '@/assets/icons/component.svg?inline' +import dashboardIcon from '@/assets/icons/dashboard.svg?inline' +import dateRangeIcon from '@/assets/icons/dateRange.svg?inline' +import dateIcon from '@/assets/icons/date.svg?inline' +import dictIcon from '@/assets/icons/dict.svg?inline' +import documentationIcon from '@/assets/icons/documentation.svg?inline' +import downloadIcon from '@/assets/icons/download.svg?inline' +import dragIcon from '@/assets/icons/drag.svg?inline' +import druidIcon from '@/assets/icons/druid.svg?inline' +import editIcon from '@/assets/icons/edit.svg?inline' +import eyeOpenIcon from '@/assets/icons/eyeOpen.svg?inline' +import githubIcon from '@/assets/icons/github.svg?inline' +import guideIcon from '@/assets/icons/guide.svg?inline' +import inputIcon from '@/assets/icons/input.svg?inline' +import jobIcon from '@/assets/icons/job.svg?inline' +import logIcon from '@/assets/icons/log.svg?inline' +import logininforIcon from '@/assets/icons/logininfor.svg?inline' +import messageIcon from '@/assets/icons/message.svg?inline' +import monitorIcon from '@/assets/icons/monitor.svg?inline' +import numberIcon from '@/assets/icons/number.svg?inline' +import onlineIcon from '@/assets/icons/online.svg?inline' +import passwordIcon from '@/assets/icons/password.svg?inline' +import pdfIcon from '@/assets/icons/pdf.svg?inline' +import peoplesIcon from '@/assets/icons/peoples.svg?inline' +import phoneIcon from '@/assets/icons/phone.svg?inline' +import postIcon from '@/assets/icons/post.svg?inline' +import questionIcon from '@/assets/icons/question.svg?inline' +import radioIcon from '@/assets/icons/radio.svg?inline' +import rateIcon from '@/assets/icons/rate.svg?inline' +import redisIcon from '@/assets/icons/redis.svg?inline' +import rowIcon from '@/assets/icons/row.svg?inline' +import selectIcon from '@/assets/icons/select.svg?inline' +import serverIcon from '@/assets/icons/server.svg?inline' +import swaggerIcon from '@/assets/icons/swagger.svg?inline' +import switchIcon from '@/assets/icons/switch.svg?inline' +import systemIcon from '@/assets/icons/system.svg?inline' +import textareaIcon from '@/assets/icons/textarea.svg?inline' +import timeRangeIcon from '@/assets/icons/timeRange.svg?inline' +import timeIcon from '@/assets/icons/time.svg?inline' +import toolIcon from '@/assets/icons/tool.svg?inline' +import treeTableIcon from '@/assets/icons/treeTable.svg?inline' +import treeIcon from '@/assets/icons/tree.svg?inline' +import uploadIcon from '@/assets/icons/upload.svg?inline' +import userIcon from '@/assets/icons/user.svg?inline' +import validCodeIcon from '@/assets/icons/validCode.svg?inline' + +import groupDelete from '@/assets/icons/delete.svg?inline' +import groupRetry from '@/assets/icons/retry.svg?inline' +import groupRootGroup from '@/assets/icons/root_group.svg?inline' +import groupSubGroup from '@/assets/icons/sub_group.svg?inline' +import videoRecorder from '@/assets/icons/video_recorder.svg?inline' +import downloadList from '@/assets/icons/download_list.svg?inline' + +// IoT related icons +import camera from '@/assets/icons/camera.svg?inline' +import videoMonitor from '@/assets/icons/videoMonitor.svg?inline' +import recorder from '@/assets/icons/recorder.svg?inline' +import sensor from '@/assets/icons/sensor.svg?inline' +import controller from '@/assets/icons/controller.svg?inline' +import gateway from '@/assets/icons/gateway.svg?inline' +import product from '@/assets/icons/product.svg?inline' +import model from '@/assets/icons/model.svg?inline' +import specification from '@/assets/icons/specification.svg?inline' +import mqtt from '@/assets/icons/mqtt.svg?inline' +import tcp from '@/assets/icons/tcp.svg?inline' +import udp from '@/assets/icons/udp.svg?inline' +import iotDevice from '@/assets/icons/iotDevice.svg?inline' +import dataFlow from '@/assets/icons/dataFlow.svg?inline' +import cloudSync from '@/assets/icons/cloudSync.svg?inline' +import imou from '@/assets/icons/imou.svg?inline' +import ezviz from '@/assets/icons/ezviz.svg?inline' + +const allIcon = { + groupDelete, + groupRetry, + groupRootGroup, + groupSubGroup, + bugIcon, + buildIcon, + buttonIcon, + bxAnalyseIcon, + cascaderIcon, + chartIcon, + checkboxIcon, + clipboardIcon, + codeIcon, + colorIcon, + componentIcon, + dashboardIcon, + dateRangeIcon, + dateIcon, + dictIcon, + documentationIcon, + downloadIcon, + dragIcon, + druidIcon, + editIcon, + eyeOpenIcon, + githubIcon, + guideIcon, + inputIcon, + jobIcon, + logIcon, + logininforIcon, + messageIcon, + monitorIcon, + numberIcon, + onlineIcon, + passwordIcon, + pdfIcon, + peoplesIcon, + phoneIcon, + postIcon, + questionIcon, + radioIcon, + rateIcon, + redisIcon, + rowIcon, + selectIcon, + serverIcon, + swaggerIcon, + switchIcon, + systemIcon, + textareaIcon, + timeRangeIcon, + timeIcon, + toolIcon, + treeTableIcon, + treeIcon, + uploadIcon, + userIcon, + validCodeIcon, + videoRecorder, + downloadList, + // IoT related icons + camera, + videoMonitor, + recorder, + sensor, + controller, + gateway, + product, + model, + specification, + mqtt, + tcp, + udp, + iotDevice, + dataFlow, + cloudSync, + imou, + ezviz +} + +export default allIcon diff --git a/cn-universal-web-ui/src/core/lazy_use.js b/cn-universal-web-ui/src/core/lazy_use.js new file mode 100644 index 0000000000000000000000000000000000000000..cd985b46c9be1f32ca23ebac9f60652d24c97fcd --- /dev/null +++ b/cn-universal-web-ui/src/core/lazy_use.js @@ -0,0 +1,132 @@ +import Vue from 'vue' + +// base library +import { + Alert, + Avatar, + Badge, + Breadcrumb, + Button, + Card, + Checkbox, + Col, + Collapse, + ConfigProvider, + DatePicker, + Descriptions, + Divider, + Drawer, + Dropdown, + Empty, + Form, + FormModel, + Icon, + Input, + InputNumber, + Layout, + List, + Menu, + message, + Modal, + notification, + PageHeader, + Pagination, + Popconfirm, + Popover, + Progress, + Radio, + Result, + Row, + Select, + Skeleton, + Slider, + Space, + Spin, + Statistic, + Steps, + Switch, + Table, + Tabs, + Tag, + TimePicker, + Tooltip, + Tree, + TreeSelect, + Upload +} from 'ant-design-vue' + +// ext library +import VueCropper from 'vue-cropper' +import Dialog from '@/components/Dialog' +import MultiTab from '@/components/MultiTab' +import PageLoading from '@/components/PageLoading' +import PermissionHelper from '@/core/permission/permission' +import VueClipboard from 'vue-clipboard2' +import './directives/action' + +Vue.use(ConfigProvider) +Vue.use(Layout) +Vue.use(Input) +Vue.use(InputNumber) +Vue.use(Button) +Vue.use(Switch) +Vue.use(Radio) +Vue.use(Checkbox) +Vue.use(Select) +Vue.use(TreeSelect) +Vue.use(Card) +Vue.use(Form) +Vue.use(Row) +Vue.use(Col) +Vue.use(Modal) +Vue.use(Table) +Vue.use(Tabs) +Vue.use(Icon) +Vue.use(Badge) +Vue.use(Popover) +Vue.use(Dropdown) +Vue.use(List) +Vue.use(Avatar) +Vue.use(Breadcrumb) +Vue.use(Steps) +Vue.use(Spin) +Vue.use(Menu) +Vue.use(Drawer) +Vue.use(Tooltip) +Vue.use(Alert) +Vue.use(Tag) +Vue.use(Divider) +Vue.use(DatePicker) +Vue.use(TimePicker) +Vue.use(Upload) +Vue.use(Progress) +Vue.use(Skeleton) +Vue.use(Popconfirm) +Vue.use(Pagination) +Vue.use(FormModel) +Vue.use(PageHeader) +Vue.use(Result) +Vue.use(Statistic) +Vue.use(Descriptions) +Vue.use(Space) +Vue.use(Tree) +Vue.use(VueClipboard) +Vue.use(Empty) +Vue.use(Slider) +Vue.use(Collapse) + +Vue.prototype.$confirm = Modal.confirm +Vue.prototype.$message = message +Vue.prototype.$notification = notification +Vue.prototype.$info = Modal.info +Vue.prototype.$success = Modal.success +Vue.prototype.$error = Modal.error +Vue.prototype.$warning = Modal.warning + +Vue.use(Dialog) // this.$dialog func +Vue.use(MultiTab) +Vue.use(PageLoading) +Vue.use(PermissionHelper) +Vue.use(VueCropper) +process.env.NODE_ENV !== 'production' && console.warn( + '[antd-pro] NOTICE: Antd use lazy-load.') diff --git a/cn-universal-web-ui/src/core/permission/permission.js b/cn-universal-web-ui/src/core/permission/permission.js new file mode 100644 index 0000000000000000000000000000000000000000..b6ec9dd452e9a4e06fe86abeab120236a597ea05 --- /dev/null +++ b/cn-universal-web-ui/src/core/permission/permission.js @@ -0,0 +1,97 @@ +export const PERMISSION_ENUM = { + 'add': {key: 'add', label: '新增'}, + 'delete': {key: 'delete', label: '删除'}, + 'edit': {key: 'edit', label: '修改'}, + 'query': {key: 'query', label: '查询'}, + 'get': {key: 'get', label: '详情'}, + 'enable': {key: 'enable', label: '启用'}, + 'disable': {key: 'disable', label: '禁用'}, + 'import': {key: 'import', label: '导入'}, + 'export': {key: 'export', label: '导出'} +} + +/** + * Button + * @param Vue + */ +function plugin(Vue) { + if (plugin.installed) { + return + } + + !Vue.prototype.$auth && Object.defineProperties(Vue.prototype, { + $auth: { + get() { + const _this = this + return (value) => { + const allPermission = '*:*:*' + const permissions = _this.$store.getters + && _this.$store.getters.permissions + + if (value && value instanceof Array && value.length > 0) { + const permissionFlag = value + + const hasPermissions = permissions.some(permission => { + return allPermission === permission || permissionFlag.includes( + permission) + }) + + if (hasPermissions) { + return true + } + return false + } else { + return false + } + } + + // const { value } = binding + // const allPermission = '*:*:*' + // const permissions = store.getters && store.getters.permissions + // console.log(permissions) + // if (value && value instanceof Array && value.length > 0) { + // const permissionFlag = value + + // const hasPermissions = permissions.some(permission => { + // return allPermission === permission || permissionFlag.includes(permission) + // }) + + // if (!hasPermissions) { + // el.parentNode && el.parentNode.removeChild(el) + // } + // } else { + // throw new Error(`请设置操作权限标签值`) + // } + } + // get () { + // const _this = this + // return (permissions) => { + // const [permission, action] = permissions.split('.') + // const permissionList = _this.$store.getters.roles.permissions + // return permissionList.find((val) => { + // return val.permissionId === permission + // }).actionList.findIndex((val) => { + // return val === action + // }) > -1 + // } + // } + } + }) + + !Vue.prototype.$enum && Object.defineProperties(Vue.prototype, { + $enum: { + get() { + // const _this = this; + return (val) => { + let result = PERMISSION_ENUM + val && val.split('.').forEach(v => { + result = result && result[v] || null + }) + return result + } + } + } + }) +} + +export default plugin diff --git a/cn-universal-web-ui/src/core/use.js b/cn-universal-web-ui/src/core/use.js new file mode 100644 index 0000000000000000000000000000000000000000..7a1d141b75ca91bf4c348d14b6e5c1301c050756 --- /dev/null +++ b/cn-universal-web-ui/src/core/use.js @@ -0,0 +1,26 @@ +import Vue from 'vue' + +// base library +import Antd from 'ant-design-vue' +import VueCropper from 'vue-cropper' +import 'ant-design-vue/dist/antd.less' + +// ext library +import VueClipboard from 'vue-clipboard2' +import MultiTab from '@/components/MultiTab' +import PageLoading from '@/components/PageLoading' +import PermissionHelper from '@/core/permission/permission' +// import '@/components/use' +import './directives/action' + +VueClipboard.config.autoSetContainer = true + +Vue.use(Antd) +Vue.use(MultiTab) +Vue.use(PageLoading) +Vue.use(VueClipboard) +Vue.use(PermissionHelper) +Vue.use(VueCropper) + +process.env.NODE_ENV !== 'production' && console.warn( + '[antd-pro] WARNING: Antd now use fulled imported.') diff --git a/cn-universal-web-ui/src/directive/copy/index.js b/cn-universal-web-ui/src/directive/copy/index.js new file mode 100644 index 0000000000000000000000000000000000000000..d17da8c4fd028754e0f7782d247ddac3729ce4c7 --- /dev/null +++ b/cn-universal-web-ui/src/directive/copy/index.js @@ -0,0 +1,36 @@ +import {Message} from 'ant-design-vue' + +export default { + install: (Vue) => { + Vue.directive('copy', { + bind: (el, binding) => { + let text = '' + if (binding.value) { + text = binding.value + } else { + text = el.innerText + } + el.addEventListener('click', () => { + if (navigator.clipboard) { + navigator.clipboard.writeText(text).then(() => { + Message.success('已复制到剪切板') + }) + } else { + const textArea = document.createElement('textarea') + textArea.value = text + textArea.style.position = 'fixed' + textArea.style.opacity = 0 + document.body.appendChild(textArea) + textArea.focus() + textArea.select() + if (document.execCommand('copy')) { + document.execCommand('copy') + Message.success('已复制到剪切板') + } + textArea.remove() + } + }) + } + }) + } +} diff --git a/cn-universal-web-ui/src/directive/permission/hasPermi.js b/cn-universal-web-ui/src/directive/permission/hasPermi.js new file mode 100644 index 0000000000000000000000000000000000000000..ce092b57e5af95a925893226eaf02b0235e36a86 --- /dev/null +++ b/cn-universal-web-ui/src/directive/permission/hasPermi.js @@ -0,0 +1,37 @@ +/** + * 操作权限处理 + * Copyright (c) 2019 ruoyi + */ +import store from '@/store' + +export default { + inserted(el, binding, vnode) { + const {value} = binding + const allPermission = '*:*:*' + const permissions = store.getters && store.getters.permissions + + if (value && value instanceof Array && value.length > 0) { + const permissionFlag = value + + const hasPermissions = permissions.some(permission => { + // 检查是否有通配符权限 + if (permission === allPermission) { + return true + } + // 检查用户权限是否包含所需的权限 + return permissionFlag.some(requiredPermission => { + const hasPermission = permission === requiredPermission + if (hasPermission) { + } + return hasPermission + }) + }) + + if (!hasPermissions) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(`请设置操作权限标签值`) + } + } +} diff --git a/cn-universal-web-ui/src/directive/permission/hasRole.js b/cn-universal-web-ui/src/directive/permission/hasRole.js new file mode 100644 index 0000000000000000000000000000000000000000..b2ae16b7b4527a2229625e5bfe251d4de338da2e --- /dev/null +++ b/cn-universal-web-ui/src/directive/permission/hasRole.js @@ -0,0 +1,27 @@ +/** + * 角色权限处理 + * Copyright (c) 2019 ruoyi + */ +import store from '@/store' + +export default { + inserted(el, binding, vnode) { + const {value} = binding + const superAdmin = 'admin' + const roles = store.getters && store.getters.roles + + if (value && value instanceof Array && value.length > 0) { + const roleFlag = value + + const hasRole = roles.some(role => { + return superAdmin === role || roleFlag.includes(role) + }) + + if (!hasRole) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(`请设置角色权限标签值"`) + } + } +} diff --git a/cn-universal-web-ui/src/directive/permission/index.js b/cn-universal-web-ui/src/directive/permission/index.js new file mode 100644 index 0000000000000000000000000000000000000000..6bda3f87106439ce0bec604157d6dee844865163 --- /dev/null +++ b/cn-universal-web-ui/src/directive/permission/index.js @@ -0,0 +1,15 @@ +import hasRole from './hasRole' +import hasPermi from './hasPermi' + +const install = function (Vue) { + Vue.directive('hasRole', hasRole) + Vue.directive('hasPermi', hasPermi) +} + +if (window.Vue) { + window['hasRole'] = hasRole + window['hasPermi'] = hasPermi + Vue.use(install); // eslint-disable-line +} + +export default install diff --git a/cn-universal-web-ui/src/directive/style/highlight.js b/cn-universal-web-ui/src/directive/style/highlight.js new file mode 100644 index 0000000000000000000000000000000000000000..604ff7ea7969b9cc27f3d2b58e4c877af46673f5 --- /dev/null +++ b/cn-universal-web-ui/src/directive/style/highlight.js @@ -0,0 +1,18 @@ +import Hljs from 'highlight.js' +import 'highlight.js/styles/base16/darcula.css' // 代码高亮风格,选择更多风格需导入 node_modules/hightlight.js/styles/ 目录下其它css文件 + +export default { + inserted: function (el) { + const blocks = el.querySelectorAll('pre code') + for (let i = 0; i < blocks.length; i++) { + Hljs.highlightElement(blocks[i]) + } + }, + // 指令所在组件的 VNode 及其子 VNode 全部更新后调用 + componentUpdated: function (el) { + const blocks = el.querySelectorAll('pre code') + for (let i = 0; i < blocks.length; i++) { + Hljs.highlightElement(blocks[i]) + } + } +} diff --git a/cn-universal-web-ui/src/directive/style/index.js b/cn-universal-web-ui/src/directive/style/index.js new file mode 100644 index 0000000000000000000000000000000000000000..36697c32a303ba1e2a36ef3fda70a019d3d30de5 --- /dev/null +++ b/cn-universal-web-ui/src/directive/style/index.js @@ -0,0 +1,12 @@ +import highlight from './highlight' + +const install = function (Vue) { + Vue.directive('highlight', highlight) +} + +if (window.Vue) { + window['highlight'] = highlight + Vue.use(install); // eslint-disable-line +} + +export default install diff --git a/cn-universal-web-ui/src/global.less b/cn-universal-web-ui/src/global.less new file mode 100644 index 0000000000000000000000000000000000000000..8f8d00739351d8e00201db26927650b068cc05e8 --- /dev/null +++ b/cn-universal-web-ui/src/global.less @@ -0,0 +1,1265 @@ +@import '~ant-design-vue/es/style/themes/default.less'; +@import './assets/styles/button.less'; +@import './assets/styles/input.less'; + +html, +body, +#app, #root { + height: 100%; +} + +.colorWeak { + filter: invert(80%); +} + +.ant-layout.layout-basic { + height: 100vh; + // min-height: 100vh; +} + +canvas { + display: block; +} + +body { + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// 数据列表 样式 +.table-alert { + margin-bottom: 16px; +} + +// 数据列表 操作 +.table-operator { + margin-bottom: 18px; + + button { + margin-right: 8px; + } +} + +// 数据列表 搜索条件 +.table-page-search-wrapper { + + .ant-form-inline { + .ant-form-item { + display: flex; + margin-bottom: 24px; + margin-right: 0; + + .ant-form-item-control-wrapper { + flex: 1 1; + display: inline-block; + vertical-align: middle; + } + + > .ant-form-item-label { + line-height: 32px; + padding-right: 8px; + width: auto; + } + + .ant-form-item-control { + height: 32px; + line-height: 32px; + } + } + } + + .table-page-search-submitButtons { + display: block; + margin-bottom: 24px; + white-space: nowrap; + } +} + +@media (max-width: @screen-xs) { + .ant-table { + width: 100%; + overflow-x: auto; + + &-thead > tr, + &-tbody > tr { + > th, + > td { + white-space: pre; + + > span { + display: block; + } + } + } + } +} + +//表格上方操作条 +.table-operations { + margin-bottom: 16px; +} + +.table-operations > button { + margin-right: 8px; +} + +// 详情页底部按钮 +.bottom-control { + position: absolute; + bottom: 0; + width: 100%; + border-top: 1px solid #e8e8e8; + padding: 10px 16px; + text-align: right; + left: 0; + background: #fff; + border-radius: 0 0 4px 4px; +} + +.ant-drawer-body { + padding: 24px 24px 50px 24px; + font-size: 14px; + line-height: 1.5; +} + +.ant-pagination-item { + border: none; +} + +.ant-pagination-prev .ant-pagination-item-link, +.ant-pagination-next .ant-pagination-item-link { + border: none; +} + +// 全局样式变量 +:root { + // 字体变量 + --font-family: @font-family; + --font-size-base: @font-size-base; + --font-size-lg: @font-size-lg; + --font-size-sm: @font-size-sm; + --font-size-xs: @font-size-sm; + --font-weight-regular: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + --line-height-base: @line-height-base; + --line-height-lg: 2; + --line-height-sm: 1.25; + + // 颜色变量 + --primary-color: @primary-color; + --primary-color-hover: @primary-5; + --primary-color-active: @primary-7; + --primary-color-outline: @primary-1; + --primary-1: @primary-1; + --primary-2: @primary-2; + --primary-3: @primary-3; + --primary-4: @primary-4; + --primary-5: @primary-5; + --primary-6: @primary-6; + --primary-7: @primary-7; + --primary-8: @primary-8; + --primary-9: @primary-9; + --primary-10: @primary-10; + + --success-color: @success-color; + --warning-color: @warning-color; + --error-color: @error-color; + --info-color: @info-color; + + --heading-color: @heading-color; + --text-color: @text-color; + --text-color-secondary: @text-color-secondary; + + --border-radius-base: @border-radius-base; + --border-radius-sm: @border-radius-sm; + + // 按钮相关变量 + --btn-height-base: 32px; + --btn-height-sm: 28px; + --btn-height-lg: 40px; + --btn-padding-horizontal-base: 16px; + --btn-padding-horizontal-sm: 12px; + --btn-padding-horizontal-lg: 24px; + --btn-default-bg: #fff; + --btn-default-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + --btn-primary-shadow: 0 1px 3px rgba(24, 144, 255, 0.2); + --border-color-base: #d9d9d9; + --background-color-base: #f5f5f5; + + --shadow-1: 0 2px 8px rgba(0, 0, 0, 0.08); + --shadow-2: 0 4px 16px rgba(0, 0, 0, 0.08); + --shadow-3: 0 6px 24px rgba(0, 0, 0, 0.08); + + --transition-duration: 0.2s; + --transition-timing: ease-in-out; + + // Semi Design 特定变量 + // --semi-shadow-1: 0 2px 8px rgba(0, 0, 0, 0.08); + // --semi-shadow-2: 0 4px 16px rgba(0, 0, 0, 0.08); + // --semi-shadow-3: 0 6px 24px rgba(0, 0, 0, 0.08); + // --semi-transition-duration: 0.2s; + // --semi-transition-timing: cubic-bezier(0.4, 0, 0.2, 1); +} + +// 全局基础样式 +html { + font-family: var(--font-family); + font-size: var(--font-size-base); + line-height: var(--line-height-base); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + margin: 0; + padding: 0; + font-size: var(--font-size-base); + line-height: var(--line-height-base); + color: var(--text-color); + background-color: @layout-body-background; +} + +// 滚动条样式 +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: #f1f1f1; + border-radius: 3px; +} + +::-webkit-scrollbar-thumb { + background: #c1c1c1; + border-radius: 3px; + transition: all 0.3s; +} + +::-webkit-scrollbar-thumb:hover { + background: #a8a8a8; +} + +// 卡片样式增强 +.ant-card { + border-radius: var(--border-radius-base); + box-shadow: var(--shadow-1); + transition: all var(--transition-duration) var(--transition-timing); + + &:hover { + box-shadow: var(--shadow-2); + } + + .ant-card-head { + border-bottom: 1px solid @border-color-split; + padding: @card-head-padding; + + .ant-card-head-title { + font-weight: 500; + } + } + + .ant-card-body { + padding: @card-padding-base; + } +} + +// 表格样式增强 +.ant-table { + .ant-table-thead > tr > th { + background: @table-header-bg; + font-weight: 500; + color: @table-header-color; + padding: @table-padding-vertical @table-padding-horizontal; + } + + .ant-table-tbody > tr > td { + padding: @table-padding-vertical @table-padding-horizontal; + } + + .ant-table-tbody > tr:hover > td { + background: @table-row-hover-bg; + } +} + +// 按钮样式增强 - 物联网科技感配色 +.ant-btn { + height: 32px !important; + font-size: 13px !important; + padding: 0 14px !important; + border-radius: 6px !important; + min-width: 64px; + transition: all 0.3s ease !important; + + // 主要按钮 - 科技蓝 + &.ant-btn-primary { + background: #0066FF !important; + border-color: #0066FF !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(0, 102, 255, 0.12) !important; + + &:hover, &:focus { + background: #0052CC !important; + border-color: #0052CC !important; + box-shadow: 0 2px 6px rgba(0, 102, 255, 0.2) !important; + } + + &:active { + background: #0047B3 !important; + border-color: #0047B3 !important; + } + } + + // 成功按钮 - 物联网绿 + &.ant-btn-success { + background: #00D4AA !important; + border-color: #00D4AA !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(0, 212, 170, 0.12) !important; + + &:hover, &:focus { + background: #00B894 !important; + border-color: #00B894 !important; + box-shadow: 0 2px 6px rgba(0, 212, 170, 0.2) !important; + } + + &:active { + background: #009D7C !important; + border-color: #009D7C !important; + } + } + + // 危险按钮 - 科技红 + &.ant-btn-danger { + background: #FF4757 !important; + border-color: #FF4757 !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(255, 71, 87, 0.12) !important; + + &:hover, &:focus { + background: #FF3742 !important; + border-color: #FF3742 !important; + box-shadow: 0 2px 6px rgba(255, 71, 87, 0.2) !important; + } + + &:active { + background: #FF2E3A !important; + border-color: #FF2E3A !important; + } + } + + // 警告按钮 - 科技橙 + &.ant-btn-warning { + background: #FFA502 !important; + border-color: #FFA502 !important; + color: #fff !important; + box-shadow: 0 1px 3px rgba(255, 165, 2, 0.12) !important; + + &:hover, &:focus { + background: #FF9500 !important; + border-color: #FF9500 !important; + box-shadow: 0 2px 6px rgba(255, 165, 2, 0.2) !important; + } + + &:active { + background: #FF8C00 !important; + border-color: #FF8C00 !important; + } + } + + // 默认按钮 + &.ant-btn-default { + background: #fff !important; + border-color: #E5E6EB !important; + color: #1D2129 !important; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important; + + &:hover, &:focus { + background: #F7F8FA !important; + border-color: #0066FF !important; + color: #0066FF !important; + box-shadow: 0 2px 6px rgba(0, 102, 255, 0.1) !important; + } + + &:active { + background: #E8F3FF !important; + border-color: #0052CC !important; + color: #0052CC !important; + } + } + + // 虚线按钮 + &.ant-btn-dashed { + background: #fff !important; + border-color: #E5E6EB !important; + color: #1D2129 !important; + + &:hover, &:focus { + border-color: #0066FF !important; + color: #0066FF !important; + } + } + + // 链接按钮 + &.ant-btn-link { + background: transparent !important; + border-color: transparent !important; + color: #0066FF !important; + box-shadow: none !important; + + &:hover, &:focus { + color: #0052CC !important; + background: rgba(0, 102, 255, 0.04) !important; + } + } + + // 文本按钮 + &.ant-btn-text { + background: transparent !important; + border-color: transparent !important; + color: #1D2129 !important; + box-shadow: none !important; + + &:hover, &:focus { + background: rgba(0, 0, 0, 0.04) !important; + color: #0066FF !important; + } + } +} + +.ant-btn > .anticon { + font-size: 14px !important; +} + +.bottom-control .ant-btn { + height: 32px !important; + font-size: 13px !important; + padding: 0 18px !important; + border-radius: 6px !important; +} + +// 输入框样式增强 +.ant-input, +.ant-input-affix-wrapper { + border-radius: var(--border-radius-base); + transition: all var(--transition-duration) var(--transition-timing); + + &:hover { + border-color: @primary-5; + } + + &:focus, + &-focused { + border-color: @primary-color; + box-shadow: 0 0 0 2px @primary-1; + } +} + +// 选择器样式增强 +.ant-select { + .ant-select-selector { + border-radius: 3px !important; + transition: all 0.2s ease !important; + } + + &:hover .ant-select-selector { + border-color: @primary-5 !important; + } + + &-focused .ant-select-selector { + border-color: @primary-color !important; + box-shadow: 0 0 0 2px @primary-1 !important; + } +} + +// 标签页样式增强 +.ant-tabs { + .ant-tabs-nav { + margin-bottom: 16px; + + &::before { + border-bottom: 1px solid @border-color-split; + } + + .ant-tabs-tab { + transition: all 0.2s ease; + + &:hover { + color: @primary-5; + } + + &.ant-tabs-tab-active { + .ant-tabs-tab-btn { + color: @primary-color; + font-weight: 500; + } + } + } + + .ant-tabs-ink-bar { + background: @primary-color; + height: 2px; + border-radius: 1px; + } + } +} + +// 抽屉样式增强 +.ant-drawer { + .ant-drawer-header { + padding: 16px 24px; + border-bottom: 1px solid @border-color-split; + + .ant-drawer-title { + font-weight: 500; + color: @heading-color; + } + } + + .ant-drawer-body { + padding: 24px; + } +} + +// 模态框样式增强 +.ant-modal { + .ant-modal-header { + padding: 16px 24px; + border-bottom: 1px solid @border-color-split; + + .ant-modal-title { + font-weight: 500; + color: @heading-color; + } + } + + .ant-modal-body { + padding: 24px; + } + + .ant-modal-footer { + padding: 16px 24px; + border-top: 1px solid @border-color-split; + } +} + +// 分页样式增强 +.ant-pagination { + .ant-pagination-item { + border-radius: 3px; + transition: all 0.2s ease; + + &:hover { + border-color: @primary-5; + } + + &-active { + background: @primary-color; + border-color: @primary-color; + + a { + color: #fff; + } + + &:hover { + border-color: @primary-5; + } + } + } + + .ant-pagination-prev, + .ant-pagination-next { + .ant-pagination-item-link { + border-radius: 3px; + } + } +} + +// 菜单样式增强 +.ant-menu { + .ant-menu-item { + margin: 4px 0; + padding: 0 16px; + height: 40px; + line-height: 40px; + border-radius: 3px; + transition: all 0.2s ease; + + &:hover { + color: #3370ff; + } + + &-selected { + background: #e8f3ff; + color: #3370ff; + font-weight: 500; + } + } + + .ant-menu-submenu { + .ant-menu-submenu-title { + margin: 4px 0; + padding: 0 16px; + height: 40px; + line-height: 40px; + border-radius: 3px; + transition: all 0.2s ease; + + &:hover { + color: #3370ff; + } + } + } +} + +// 动画类 +.fade-enter-active, +.fade-leave-active { + transition: opacity var(--transition-duration) var(--transition-timing); +} + +.fade-enter, +.fade-leave-to { + opacity: 0; +} + +.slide-fade-enter-active, +.slide-fade-leave-active { + transition: all var(--transition-duration) var(--transition-timing); +} + +.slide-fade-enter, +.slide-fade-leave-to { + transform: translateX(10px); + opacity: 0; +} + +// 工具类 +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-left { + text-align: left; +} + +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +.flex-between { + display: flex; + align-items: center; + justify-content: space-between; +} + +.flex-start { + display: flex; + align-items: center; + justify-content: flex-start; +} + +.flex-end { + display: flex; + align-items: center; + justify-content: flex-end; +} + +.flex-column { + display: flex; + flex-direction: column; +} + +.flex-1 { + flex: 1; +} + +.w-100 { + width: 100%; +} + +.h-100 { + height: 100%; +} + +.m-0 { + margin: 0; +} + +.mt-1 { + margin-top: 4px; +} + +.mt-2 { + margin-top: 8px; +} + +.mt-3 { + margin-top: 12px; +} + +.mt-4 { + margin-top: 16px; +} + +.mb-1 { + margin-bottom: 4px; +} + +.mb-2 { + margin-bottom: 8px; +} + +.mb-3 { + margin-bottom: 12px; +} + +.mb-4 { + margin-bottom: 16px; +} + +.ml-1 { + margin-left: 4px; +} + +.ml-2 { + margin-left: 8px; +} + +.ml-3 { + margin-left: 12px; +} + +.ml-4 { + margin-left: 16px; +} + +.mr-1 { + margin-right: 4px; +} + +.mr-2 { + margin-right: 8px; +} + +.mr-3 { + margin-right: 12px; +} + +.mr-4 { + margin-right: 16px; +} + +.p-0 { + padding: 0; +} + +.p-1 { + padding: 4px; +} + +.p-2 { + padding: 8px; +} + +.p-3 { + padding: 12px; +} + +.p-4 { + padding: 16px; +} + +// 响应式工具类 +@media (max-width: @screen-xs) { + .hidden-xs { + display: none !important; + } +} + +@media (max-width: @screen-sm) { + .hidden-sm { + display: none !important; + } +} + +@media (max-width: @screen-md) { + .hidden-md { + display: none !important; + } +} + +@media (max-width: @screen-lg) { + .hidden-lg { + display: none !important; + } +} + +@media (max-width: @screen-xl) { + .hidden-xl { + display: none !important; + } +} + +// 字体工具类 +.text-xs { + font-size: var(--font-size-xs); +} + +.text-sm { + font-size: var(--font-size-sm); +} + +.text-base { + font-size: var(--font-size-base); +} + +.text-lg { + font-size: var(--font-size-lg); +} + +.font-regular { + font-weight: var(--font-weight-regular); +} + +.font-medium { + font-weight: var(--font-weight-medium); +} + +.font-semibold { + font-weight: var(--font-weight-semibold); +} + +.font-bold { + font-weight: var(--font-weight-bold); +} + +// Semi Design 风格的按钮 +// .ant-btn { +// border-radius: var(--border-radius-service); +// transition: all var(--semi-transition-duration) var(--semi-transition-timing); +// font-weight: var(--font-weight-regular); +// height: var(--btn-height-sm); +// padding: 0 var(--btn-padding-horizontal-sm); +// border: 1px solid var(--border-color-service); +// background: var(--btn-default-bg); +// box-shadow: var(--btn-default-shadow); +// font-size: var(--font-size-sm); + +// &:not(.ant-btn-link):not(.ant-btn-text) { +// &:hover { +// transform: translateY(-1px); +// box-shadow: var(--semi-shadow-1); +// } + +// &:active { +// transform: translateY(0); +// box-shadow: none; +// } +// } + +// &-primary { +// background: var(--primary-color); +// border-color: var(--primary-color); +// color: #fff; +// box-shadow: var(--btn-primary-shadow); + +// &:hover { +// background: var(--primary-5); +// border-color: var(--primary-5); +// } + +// &:active { +// background: var(--primary-7); +// border-color: var(--primary-7); +// } +// } + +// &-dashed { +// border-style: dashed; +// } + +// &-text { +// border: none; +// box-shadow: none; +// padding: 0; +// height: auto; + +// &:hover { +// background: var(--background-color-service); +// } +// } + +// &-link { +// border: none; +// box-shadow: none; +// padding: 0; +// height: auto; + +// &:hover { +// color: var(--primary-5); +// } +// } + +// &-sm { +// height: var(--btn-height-sm); +// padding: 0 var(--btn-padding-horizontal-sm); +// font-size: var(--font-size-sm); +// } + +// &-lg { +// height: var(--btn-height-lg); +// padding: 0 var(--btn-padding-horizontal-lg); +// font-size: var(--font-size-lg); +// } +// } + +// Semi Design 风格的卡片 +// .ant-card { +// border-radius: var(--border-radius-service); +// box-shadow: var(--semi-shadow-1); +// transition: all var(--semi-transition-duration) var(--semi-transition-timing); +// border: 1px solid var(--border-color-split); + +// &:hover { +// box-shadow: var(--semi-shadow-2); +// } + +// .ant-card-head { +// border-bottom: var(--card-head-border-bottom); +// padding: var(--card-head-padding); + +// .ant-card-head-title { +// font-weight: var(--font-weight-medium); +// color: var(--heading-color); +// } +// } + +// .ant-card-body { +// padding: var(--card-padding-service); +// } +// } + +// Semi Design 风格的表格 +// .ant-table { +// .ant-table-thead > tr > th { +// background: var(--table-header-bg); +// font-weight: var(--font-weight-medium); +// color: var(--table-header-color); +// padding: var(--table-padding-vertical) var(--table-padding-horizontal); +// border-bottom: 1px solid var(--table-border-color); +// } + +// .ant-table-tbody > tr > td { +// padding: var(--table-padding-vertical) var(--table-padding-horizontal); +// border-bottom: 1px solid var(--table-border-color); +// } + +// .ant-table-tbody > tr:hover > td { +// background: var(--table-row-hover-bg); +// } + +// .ant-table-tbody > tr.ant-table-row-selected > td { +// background: var(--table-selected-row-bg); +// } +// } + +// Semi Design 风格的选择器 +// .ant-select { +// .ant-select-selector { +// border-radius: var(--border-radius-service) !important; +// transition: all var(--semi-transition-duration) var(--semi-transition-timing) !important; +// border: 1px solid var(--border-color-service) !important; +// background: var(--input-bg) !important; +// height: var(--input-height-service) !important; +// padding: var(--input-padding-vertical-service) var(--input-padding-horizontal) !important; +// } + +// &:hover .ant-select-selector { +// border-color: var(--primary-5) !important; +// } + +// &-focused .ant-select-selector { +// border-color: var(--primary-color) !important; +// box-shadow: 0 0 0 2px var(--primary-1) !important; +// } + +// &-sm .ant-select-selector { +// height: var(--input-height-sm) !important; +// padding: var(--input-padding-vertical-sm) var(--input-padding-horizontal) !important; +// font-size: var(--font-size-sm) !important; +// } + +// &-lg .ant-select-selector { +// height: var(--input-height-lg) !important; +// padding: var(--input-padding-vertical-lg) var(--input-padding-horizontal) !important; +// font-size: var(--font-size-lg) !important; +// } +// } + +// Semi Design 风格的标签页 +// .ant-tabs { +// .ant-tabs-nav { +// margin-bottom: 16px; + +// &::before { +// border-bottom: 1px solid var(--border-color-split); +// } + +// .ant-tabs-tab { +// transition: all var(--semi-transition-duration) var(--semi-transition-timing); +// padding: 12px 0; +// margin: 0 32px 0 0; + +// &:hover { +// color: var(--primary-5); +// } + +// &.ant-tabs-tab-active { +// .ant-tabs-tab-btn { +// color: var(--primary-color); +// font-weight: var(--font-weight-medium); +// } +// } +// } + +// .ant-tabs-ink-bar { +// background: var(--primary-color); +// height: 2px; +// border-radius: 1px; +// } +// } +// } + +// Semi Design 风格的分页 +// .ant-pagination { +// .ant-pagination-item { +// border-radius: var(--border-radius-service); +// transition: all var(--semi-transition-duration) var(--semi-transition-timing); +// border: 1px solid var(--border-color-service); +// background: var(--pagination-item-bg); + +// &:hover { +// border-color: var(--primary-5); +// } + +// &-active { +// background: var(--primary-color); +// border-color: var(--primary-color); + +// a { +// color: #fff; +// } + +// &:hover { +// border-color: var(--primary-5); +// } +// } +// } + +// .ant-pagination-prev, +// .ant-pagination-next { +// .ant-pagination-item-link { +// border-radius: var(--border-radius-service); +// } +// } +// } + + +// ===== ProLayout兼容样式 ===== +// 移除了可能冲突的header样式,让ProLayout正常工作 + +// ===== 响应式适配 ===== +@media (max-width: 768px) { + // 移除了可能影响ProLayout的样式 +} + + +.ant-layout-sider-collapsed .ant-menu-item span, +.ant-layout-sider-collapsed .ant-menu-submenu-title span, +.ant-menu-inline-collapsed .ant-menu-item span, +.ant-menu-inline-collapsed .ant-menu-submenu-title span { + display: none !important; +} + +.ant-layout-sider-collapsed .ant-menu-item .anticon, +.ant-layout-sider-collapsed .ant-menu-submenu-title .anticon, +.ant-menu-inline-collapsed .ant-menu-item .anticon, +.ant-menu-inline-collapsed .ant-menu-submenu-title .anticon { + margin-right: 0 !important; + font-size: 20px !important; + color: #6b7280 !important; + display: inline-block !important; + width: 20px !important; + height: 20px !important; + text-align: center !important; + line-height: 20px !important; + vertical-align: middle !important; +} + +.ant-layout-sider-collapsed .ant-menu-item:hover .anticon, +.ant-layout-sider-collapsed .ant-menu-submenu-title:hover .anticon, +.ant-menu-inline-collapsed .ant-menu-item:hover .anticon, +.ant-menu-inline-collapsed .ant-menu-submenu-title:hover .anticon, +.ant-layout-sider-collapsed .ant-menu-item-selected .anticon, +.ant-layout-sider-collapsed .ant-menu-item-active .anticon, +.ant-menu-inline-collapsed .ant-menu-item-selected .anticon, +.ant-menu-inline-collapsed .ant-menu-item-active .anticon { + color: #3370ff !important; +} + +// 进一步减少内容区顶部空白 +.layout-content, .ant-layout-content, .ant-pro-basicLayout-content { + padding-top: 0 !important; + padding-bottom: 16px !important; + padding-left: 24px !important; + padding-right: 24px !important; + background: #f7f8fa !important; + min-height: unset !important; + height: auto !important; +} + +.page-container, .page-wrapper { + margin-top: 0 !important; + padding-top: 0 !important; +} + +// 卡片现代化 +.ant-card { + border-radius: 12px !important; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06) !important; + border: none !important; + background: #fff !important; + margin-bottom: 24px !important; + transition: box-shadow 0.2s; +} + +.ant-card:hover { + box-shadow: 0 6px 24px 0 rgba(51, 112, 255, 0.10) !important; +} + +.ant-card-head { + border-bottom: none !important; + padding: 24px 24px 0 24px !important; +} + +.ant-card-head-title { + font-size: 18px !important; + font-weight: 600 !important; + color: #1d2129 !important; +} + +.ant-card-body { + padding: 20px 24px 24px 24px !important; +} + +// 卡片内主信息 +.card-title, .ant-card-meta-title { + font-size: 16px !important; + font-weight: 500 !important; + color: #1d2129 !important; +} + +.card-desc, .ant-card-meta-description { + color: #86909c !important; + font-size: 14px !important; +} + +// 卡片标签色块 +.card-tag, .ant-tag { + border-radius: 6px !important; + font-size: 13px !important; + padding: 2px 10px !important; + font-weight: 500 !important; +} + +// 按钮现代化 +.ant-btn { + border-radius: 8px !important; + font-size: 15px !important; + font-weight: 500 !important; + height: 40px !important; + padding: 0 24px !important; + box-shadow: none !important; + transition: background 0.2s, color 0.2s, box-shadow 0.2s; +} + +.ant-btn-primary { + background: #3370ff !important; + border: none !important; + color: #fff !important; +} + +.ant-btn-primary:hover, .ant-btn-primary:focus { + background: #2253c8 !important; + color: #fff !important; + box-shadow: 0 2px 8px 0 rgba(51, 112, 255, 0.10) !important; +} + +.ant-btn-default { + background: #f7f8fa !important; + color: #3370ff !important; + border: 1px solid #e5e6eb !important; +} + +.ant-btn-default:hover, .ant-btn-default:focus { + background: #e8f3ff !important; + color: #2253c8 !important; + border: 1px solid #3370ff !important; +} + +// 卡片间距 +.card-list { + display: flex; + flex-wrap: wrap; + gap: 24px; +} + +.card-list .ant-card { + flex: 1 1 320px; + min-width: 320px; + max-width: 100%; +} + +// 全局按钮样式覆盖 - 确保所有按钮都使用小尺寸 +// 这个样式放在最后,确保优先级最高 +html body .ant-btn { + height: 28px !important; + padding: 0 12px !important; + font-size: 12px !important; + line-height: 26px !important; + border-radius: 4px !important; + + // 圆形按钮特殊处理 + &.ant-btn-circle { + width: 28px !important; + height: 28px !important; + padding: 0 !important; + } + + // 大尺寸按钮保持原样 + &.ant-btn-lg { + height: 40px !important; + padding: 0 16px !important; + font-size: 14px !important; + line-height: 38px !important; + } + + // 链接和文本按钮保持原样 + &.ant-btn-link, + &.ant-btn-text { + height: auto !important; + padding: 0 !important; + line-height: normal !important; + } +} + diff --git a/cn-universal-web-ui/src/layouts/BasicLayout.less b/cn-universal-web-ui/src/layouts/BasicLayout.less new file mode 100644 index 0000000000000000000000000000000000000000..56cbd32118390be2b10700926208d275ec30fb20 --- /dev/null +++ b/cn-universal-web-ui/src/layouts/BasicLayout.less @@ -0,0 +1,147 @@ +@import "~ant-design-vue/es/style/themes/default.less"; + +.ant-layout-sider-children { + ::-webkit-scrollbar-track { + background: hsla(0, 0%, 100%, .15); + border-radius: 3px; + box-shadow: inset 0 0 5px rgb(37 37 37 / 5%); + } + + ::-webkit-scrollbar { + width: 6px; + } + + ::-webkit-scrollbar-thumb { + background: hsla(0, 0%, 100%, .2); + border-radius: 3px; + box-shadow: inset 0 0 5px hsl(0deg 0% 100% / 5%); + } +} + +// 菜单头部布局样式 +.menu-header-wrapper { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + height: 64px; + padding: 0 16px; + + .logo-section { + display: flex; + align-items: center; + flex: 1; + + .logo { + height: 32px; + width: auto; + margin-right: 12px; + object-fit: contain; + } + + h1 { + margin: 0; + font-size: 18px; + font-weight: 600; + color: #fff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + + .collapse-button-section { + flex-shrink: 0; + margin-left: 12px; + + .collapse-trigger { + width: 36px; + height: 36px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 6px; + color: rgba(255, 255, 255, 0.8); + transition: all 0.3s; + + &:hover { + background: rgba(255, 255, 255, 0.1); + color: #fff; + } + + &:focus { + background: rgba(255, 255, 255, 0.1); + color: #fff; + } + + .anticon { + font-size: 16px; + } + } + } +} + +// 收起状态下的菜单头部样式 +.ant-layout-sider-collapsed { + .menu-header-wrapper { + .logo-section { + h1 { + display: none; + } + + .logo { + margin-right: 0; + } + } + + .collapse-button-section { + margin-left: 8px; + } + } +} + +// 响应式适配 +@media (max-width: 768px) { + .menu-header-wrapper { + padding: 0 12px; + + .logo-section { + .logo { + height: 28px; + margin-right: 8px; + } + + h1 { + font-size: 16px; + } + } + } +} + +// 移除内容区域的额外padding,因为现在使用非固定布局 + +// 头部欢迎信息样式(保留用于兼容) +.header-welcome-info { + display: flex; + flex-direction: column; + margin-left: 24px; + + .welcome-text { + font-size: 16px; + font-weight: 600; + color: #1d2129; + line-height: 1.2; + margin-bottom: 2px; + } + + .welcome-time { + font-size: 13px; + color: #86909c; + line-height: 1.2; + + .highlight { + color: #3370ff; + font-weight: 600; + } + } +} diff --git a/cn-universal-web-ui/src/layouts/BasicLayout.vue b/cn-universal-web-ui/src/layouts/BasicLayout.vue new file mode 100644 index 0000000000000000000000000000000000000000..45ce3a34fc6d8c358151187c5b63db919a67c847 --- /dev/null +++ b/cn-universal-web-ui/src/layouts/BasicLayout.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/cn-universal-web-ui/src/layouts/BlankLayout.vue b/cn-universal-web-ui/src/layouts/BlankLayout.vue new file mode 100644 index 0000000000000000000000000000000000000000..b31fc225e547c7655467976ffe2de5a2eb8f17a8 --- /dev/null +++ b/cn-universal-web-ui/src/layouts/BlankLayout.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/cn-universal-web-ui/src/layouts/PageView.vue b/cn-universal-web-ui/src/layouts/PageView.vue new file mode 100644 index 0000000000000000000000000000000000000000..31ac42b55862a351a1a4cbb73a471e2b750baad3 --- /dev/null +++ b/cn-universal-web-ui/src/layouts/PageView.vue @@ -0,0 +1,19 @@ + + + diff --git a/cn-universal-web-ui/src/layouts/RouteView.vue b/cn-universal-web-ui/src/layouts/RouteView.vue new file mode 100644 index 0000000000000000000000000000000000000000..0e8d3a4512ebd3cb308006704f5cb977b46d8e7f --- /dev/null +++ b/cn-universal-web-ui/src/layouts/RouteView.vue @@ -0,0 +1,28 @@ + + diff --git a/cn-universal-web-ui/src/layouts/UserLayout.vue b/cn-universal-web-ui/src/layouts/UserLayout.vue new file mode 100644 index 0000000000000000000000000000000000000000..559118513821a4465f6ca125dbb6064d5ad4be7b --- /dev/null +++ b/cn-universal-web-ui/src/layouts/UserLayout.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/cn-universal-web-ui/src/layouts/index.js b/cn-universal-web-ui/src/layouts/index.js new file mode 100644 index 0000000000000000000000000000000000000000..fa25368c74046f76a66a3b7452cf600df96af9b7 --- /dev/null +++ b/cn-universal-web-ui/src/layouts/index.js @@ -0,0 +1,7 @@ +import UserLayout from './UserLayout' +import BlankLayout from './BlankLayout' +import BasicLayout from './BasicLayout' +import RouteView from './RouteView' +import PageView from './PageView' + +export {UserLayout, BasicLayout, BlankLayout, RouteView, PageView} diff --git a/cn-universal-web-ui/src/locales/index.js b/cn-universal-web-ui/src/locales/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e2377ee9eca9cce375c71c1266f5e8e7284b575a --- /dev/null +++ b/cn-universal-web-ui/src/locales/index.js @@ -0,0 +1,60 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' +import storage from 'store' +import moment from 'moment' + +// default lang +import zhCn from './lang/zh-CN' + +Vue.use(VueI18n) + +export const defaultLang = 'zh-CN' + +const messages = { + 'zh-CN': { + ...zhCn + } +} + +const i18n = new VueI18n({ + silentTranslationWarn: true, + locale: defaultLang, + fallbackLocale: defaultLang, + messages +}) + +const loadedLanguages = [defaultLang] + +function setI18nLanguage(lang) { + i18n.locale = lang + // request.headers['Accept-Language'] = lang + document.querySelector('html').setAttribute('lang', lang) + return lang +} + +export function loadLanguageAsync(lang = defaultLang) { + return new Promise(resolve => { + // 缓存语言设置 + storage.set('lang', lang) + if (i18n.locale !== lang) { + if (!loadedLanguages.includes(lang)) { + return import(/* webpackChunkName: "lang-[request]" */ `./lang/${lang}`).then( + msg => { + const locale = msg.default + i18n.setLocaleMessage(lang, locale) + loadedLanguages.push(lang) + moment.updateLocale(locale.momentName, locale.momentLocale) + return setI18nLanguage(lang) + }) + } + return resolve(setI18nLanguage(lang)) + } + return resolve(lang) + }) +} + +export function i18nRender(key) { + return i18n.t(`${key}`) +} + +export default i18n diff --git a/cn-universal-web-ui/src/locales/lang/en-US.js b/cn-universal-web-ui/src/locales/lang/en-US.js new file mode 100644 index 0000000000000000000000000000000000000000..137fc5be78844ac49b6212295e02d4d04436b8f9 --- /dev/null +++ b/cn-universal-web-ui/src/locales/lang/en-US.js @@ -0,0 +1,16 @@ +import antdEnUS from 'ant-design-vue/es/locale-provider/en_US' +import momentEU from 'moment/locale/eu' +import setting from './en-US/setting' + +const components = { + antLocale: antdEnUS, + momentName: 'eu', + momentLocale: momentEU +} + +export default { + 'message': '-', + + ...components, + ...setting +} diff --git a/cn-universal-web-ui/src/locales/lang/en-US/setting.js b/cn-universal-web-ui/src/locales/lang/en-US/setting.js new file mode 100644 index 0000000000000000000000000000000000000000..7eec4c891a3bdcd29bcd338278e8851fbe69ee14 --- /dev/null +++ b/cn-universal-web-ui/src/locales/lang/en-US/setting.js @@ -0,0 +1,30 @@ +export default { + // 'app.setting.pagestyle': 'Page style setting', + // 'app.setting.pagestyle.light': 'Light style', + // 'app.setting.pagestyle.dark': 'Dark style', + // 'app.setting.pagestyle.realdark': 'RealDark style', + // 'app.setting.themecolor': 'Theme Color', + // 'app.setting.navigationmode': 'Navigation Mode', + // 'app.setting.content-width': 'Content Width', + // 'app.setting.fixedheader': 'Fixed Header', + // 'app.setting.fixedsidebar': 'Fixed Sidebar', + // 'app.setting.multitab': 'View multitab', + // 'app.setting.sidemenu': 'Side Menu Layout', + // 'app.setting.topmenu': 'Top Menu Layout', + // 'app.setting.content-width.fixed': 'Fixed', + // 'app.setting.content-width.fluid': 'Fluid', + // 'app.setting.othersettings': 'Other Settings', + // 'app.setting.weakmode': 'Weak Mode', + // 'app.setting.copy': 'Copy Setting', + // 'app.setting.loading': 'Loading theme', + // 'app.setting.copyinfo': 'copy success,please replace defaultSettings in src/config/defaultSettings.js', + // 'app.setting.production.hint': 'Setting panel shows in development environment only, please manually modify', + // 'app.setting.themecolor.daybreak': 'Daybreak Blue', + // 'app.setting.themecolor.dust': 'Dust Red', + // 'app.setting.themecolor.volcano': 'Volcano', + // 'app.setting.themecolor.sunset': 'Sunset Orange', + // 'app.setting.themecolor.cyan': 'Cyan', + // 'app.setting.themecolor.green': 'Polar Green', + // 'app.setting.themecolor.geekblue': 'Geek Blue', + // 'app.setting.themecolor.purple': 'Golden Purple' +} diff --git a/cn-universal-web-ui/src/locales/lang/zh-CN.js b/cn-universal-web-ui/src/locales/lang/zh-CN.js new file mode 100644 index 0000000000000000000000000000000000000000..bb1b13e25835e599a51fac5f123665b712ef95c4 --- /dev/null +++ b/cn-universal-web-ui/src/locales/lang/zh-CN.js @@ -0,0 +1,16 @@ +import antd from 'ant-design-vue/es/locale-provider/zh_CN' +import momentCN from 'moment/locale/zh-cn' +import setting from './zh-CN/setting' + +const components = { + antLocale: antd, + momentName: 'zh-cn', + momentLocale: momentCN +} + +export default { + 'message': '-', + + ...components, + ...setting +} diff --git a/cn-universal-web-ui/src/locales/lang/zh-CN/setting.js b/cn-universal-web-ui/src/locales/lang/zh-CN/setting.js new file mode 100644 index 0000000000000000000000000000000000000000..958ec0c21f4dc4eb8bb6dad2096257a46aab2823 --- /dev/null +++ b/cn-universal-web-ui/src/locales/lang/zh-CN/setting.js @@ -0,0 +1,30 @@ +export default { + 'app.setting.pagestyle': '整体风格设置', + 'app.setting.pagestyle.light': '亮色菜单风格', + 'app.setting.pagestyle.dark': '暗色菜单风格', + 'app.setting.pagestyle.realdark': '暗黑模式', + 'app.setting.themecolor': '主题色', + 'app.setting.navigationmode': '导航模式', + 'app.setting.content-width': '内容区域宽度', + 'app.setting.fixedheader': '固定 Header', + 'app.setting.fixedsidebar': '固定侧边栏', + 'app.setting.multitab': '显示页签', + 'app.setting.sidemenu': '侧边菜单布局', + 'app.setting.topmenu': '顶部菜单布局', + 'app.setting.content-width.fixed': 'Fixed', + 'app.setting.content-width.fluid': 'Fluid', + 'app.setting.othersettings': '其他设置', + 'app.setting.weakmode': '色弱模式', + 'app.setting.copy': '拷贝设置', + 'app.setting.loading': '加载主题中', + 'app.setting.copyinfo': '拷贝设置成功 src/config/defaultSettings.js', + 'app.setting.production.hint': '配置栏只在开发环境用于预览,生产环境不会展现,请拷贝后手动修改配置文件', + 'app.setting.themecolor.daybreak': '拂晓蓝', + 'app.setting.themecolor.dust': '薄暮', + 'app.setting.themecolor.volcano': '火山', + 'app.setting.themecolor.sunset': '日暮', + 'app.setting.themecolor.cyan': '明青', + 'app.setting.themecolor.green': '极光绿', + 'app.setting.themecolor.geekblue': '极客蓝', + 'app.setting.themecolor.purple': '酱紫' +} diff --git a/cn-universal-web-ui/src/main.js b/cn-universal-web-ui/src/main.js new file mode 100644 index 0000000000000000000000000000000000000000..1d044db4393cbd6d73bdab44b0f6a2314a81fafd --- /dev/null +++ b/cn-universal-web-ui/src/main.js @@ -0,0 +1,88 @@ +// with polyfills +import 'core-js/stable' +import 'regenerator-runtime/runtime' + +import Vue from 'vue' +import App from './App.vue' +import router from './router' +import permission from './directive/permission' +import style from './directive/style' +import copy from './directive/copy' +import store from './store/' +import i18n from './locales' +import {VueAxios} from './utils/request' +import ProLayout, {PageHeaderWrapper} from '@/components/ProLayout' +import FooterToolBar from '@/components/FooterToolbar' +import FileUpload from '@/components/FileUpload' +import UseFlow from '@/components/UseFlow' +import themePluginConfig from '../config/themePluginConfig' +import {Icon, Timeline} from 'ant-design-vue' + +// mock +// WARNING: `mockjs` NOT SUPPORT `IE` PLEASE DO NOT USE IN `production` ENV. +// import './mock' +import bootstrap from './core/bootstrap' +import './core/lazy_use' // use lazy load components +import './permission' // permission control +import './utils/filter' // global filter +import './global.less' // global style +import config from '@/config/defaultSettings' +import {getDictMap, getDicts} from '@/api/system/dict/data' +import {getConfigKey} from '@/api/system/config' +import { + addDateRange, + handleTree, + parseTime, + resetForm, + selectDictLabel, + selectDictLabels, + tableSorter +} from '@/utils/ruoyi' +import {download} from '@/utils/request' + +const IconFont = Icon.createFromIconfontCN({ + scriptUrl: '/iconfont.js' +}) + +// 全局方法挂载 +Vue.prototype.getDicts = getDicts +Vue.prototype.getDictMap = getDictMap +Vue.prototype.getConfigKey = getConfigKey +Vue.prototype.parseTime = parseTime +Vue.prototype.resetForm = resetForm +Vue.prototype.addDateRange = addDateRange +Vue.prototype.selectDictLabel = selectDictLabel +Vue.prototype.selectDictLabels = selectDictLabels +Vue.prototype.download = download +Vue.prototype.handleTree = handleTree +Vue.prototype.tableSorter = tableSorter +Vue.prototype.tableSize = config.tableSize +Vue.prototype.$bus = new Vue() +Vue.config.productionTip = false + +// mount axios to `Vue.$http` and `this.$http` +Vue.use(VueAxios) +Vue.use(Timeline) +// use pro-layout components +Vue.component('pro-layout', ProLayout) +Vue.component('page-container', PageHeaderWrapper) +Vue.component('page-header-wrapper', PageHeaderWrapper) +Vue.component('footer-tool-bar', FooterToolBar) +Vue.component('file-upload', FileUpload) +Vue.component('iot-icon', IconFont) +Vue.component('use-flow', UseFlow) +// 123 + +Vue.use(permission) +Vue.use(style) +Vue.use(copy) + +window.umi_plugin_ant_themeVar = themePluginConfig.theme +new Vue({ + router, + store, + i18n, + // init localstorage, vuex + created: bootstrap, + render: h => h(App) +}).$mount('#app') diff --git a/cn-universal-web-ui/src/main.ts b/cn-universal-web-ui/src/main.ts new file mode 100644 index 0000000000000000000000000000000000000000..96b095c006499e7a6e2576e0f03027b9d9903343 --- /dev/null +++ b/cn-universal-web-ui/src/main.ts @@ -0,0 +1,18 @@ +import {createApp} from 'vue' +import App from './App.vue' +import router from './router' +import {createPinia} from 'pinia' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +import './global.less' + +// Create app instance +const app = createApp(App) + +// Use plugins +app.use(createPinia()) +app.use(router) +app.use(ElementPlus) + +// Mount app +app.mount('#app') \ No newline at end of file diff --git a/cn-universal-web-ui/src/mock/index.js b/cn-universal-web-ui/src/mock/index.js new file mode 100644 index 0000000000000000000000000000000000000000..198b36509995dba79f8ad277c58ee3c817ee9eb8 --- /dev/null +++ b/cn-universal-web-ui/src/mock/index.js @@ -0,0 +1,20 @@ +import {isIE} from '@/utils/util' + +// 判断环境不是 prod 或者 preview 是 true 时,加载 mock 服务 +if (process.env.NODE_ENV !== 'production' || process.env.VUE_APP_PREVIEW + === 'true') { + if (isIE()) { + console.error( + '[antd-pro] ERROR: `mockjs` NOT SUPPORT `IE` PLEASE DO NOT USE IN `production` ENV.') + } + // 使用同步加载依赖 + // 防止 vuex 中的 GetInfo 早于 mock 运行,导致无法 mock 请求返回结果 + console.log('[antd-pro] mock mounting') + const Mock = require('mockjs2') + require('./services/user') + + Mock.setup({ + timeout: 800 // setter delay time + }) + console.log('[antd-pro] mock mounted') +} diff --git a/cn-universal-web-ui/src/mock/services/user.js b/cn-universal-web-ui/src/mock/services/user.js new file mode 100644 index 0000000000000000000000000000000000000000..9f54ddae6744322cec6969a0b2f0ff4bec05f040 --- /dev/null +++ b/cn-universal-web-ui/src/mock/services/user.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs2' +import {builder} from '../util' + +const info = (options) => { + console.log('options', options) + const userInfo = { + 'id': '4291d7da9005377ec9aec4a71ea837f', + 'name': '天野远子', + 'username': 'admin', + 'password': '', + 'avatar': '/avatar2.jpg', + 'status': 1, + 'telephone': '', + 'lastLoginIp': '27.154.74.117', + 'lastLoginTime': 1534837621348, + 'creatorId': 'admin', + 'createTime': 1497160610259, + 'merchantCode': 'TLif2btpzg079h15bk', + 'deleted': 0, + 'roleId': 'admin', + 'role': {} + } + return builder(userInfo) +} + +Mock.mock(/\/api\/user\/info/, 'get', info) diff --git a/cn-universal-web-ui/src/mock/util.js b/cn-universal-web-ui/src/mock/util.js new file mode 100644 index 0000000000000000000000000000000000000000..5101e43b0c3bb5df3b9afa245a5e0b15f5a5f583 --- /dev/null +++ b/cn-universal-web-ui/src/mock/util.js @@ -0,0 +1,39 @@ +const responseBody = { + message: '', + timestamp: 0, + result: null, + code: 0 +} + +export const builder = (data, message, code = 0, headers = {}) => { + responseBody.result = data + if (message !== undefined && message !== null) { + responseBody.message = message + } + if (code !== undefined && code !== 0) { + responseBody.code = code + responseBody._status = code + } + if (headers !== null && typeof headers === 'object' && Object.keys( + headers).length > 0) { + responseBody._headers = headers + } + responseBody.timestamp = new Date().getTime() + return responseBody +} + +export const getQueryParameters = (options) => { + const url = options.url + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse('{"' + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + '"}') +} + +export const getBody = (options) => { + return options.body && JSON.parse(options.body) +} diff --git a/cn-universal-web-ui/src/permission.js b/cn-universal-web-ui/src/permission.js new file mode 100644 index 0000000000000000000000000000000000000000..663a26839d36952da45faa85d63ec28c6f501f7e --- /dev/null +++ b/cn-universal-web-ui/src/permission.js @@ -0,0 +1,89 @@ +import router from './router' +import store from './store' +import storage from 'store' +import NProgress from 'nprogress' // progress bar +import '@/components/NProgress/nprogress.less' // progress bar custom style +import notification from 'ant-design-vue/es/notification' +import {domTitle, setDocumentTitle} from '@/utils/domUtil' +import {ACCESS_TOKEN} from '@/store/mutation-types' +import {i18nRender} from '@/locales' + +NProgress.configure({showSpinner: false}) // NProgress Configuration + +const allowList = ['login', 'register'] // no redirect allowList +const loginRoutePath = '/user/login' +const defaultRoutePath = '/index' + +// if (storage.get(ACCESS_TOKEN)) { +// store.dispatch('RefreshToken', true) +// } + +router.beforeEach((to, from, next) => { + NProgress.start() // start progress bar + to.meta && (typeof to.meta.title !== 'undefined' && setDocumentTitle( + `${i18nRender(to.meta.title)} - ${domTitle}`)) + /* has token */ + if (storage.get(ACCESS_TOKEN)) { + if (to.path === loginRoutePath || to.path === '/') { + next({path: defaultRoutePath}) + NProgress.done() + } else { + // check login user.roles is null + + if (store.getters.roles.length === 0) { + // request login userInfo + store + .dispatch('GetInfo') + .then(res => { + if (storage.get(ACCESS_TOKEN)) { + store.dispatch('RefreshToken', true) + } + // const roles = res.result && res.result.role + const roles = res.roles + // generate dynamic router + store.dispatch('GenerateRoutes', {roles}).then(() => { + // 根据roles权限生成可访问的路由表 + // 动态添加可访问路由表 + router.addRoutes(store.getters.addRouters) + // router.addRoutes(accessRoutes) + // 请求带有 redirect 重定向时,登录自动重定向到该地址 + next({...to, replace: true}) // hack方法 确保addRoutes已完成 + // const redirect = decodeURIComponent(from.query.redirect || to.path) + // if (to.path === redirect) { + // // set the replace: true so the navigation will not leave a history record + // next({ ...to, replace: true }) + // } else { + // // 跳转到目的路由 + // next({ path: redirect }) + // } + }) + }) + .catch(() => { + notification.error({ + message: '错误', + description: '请求用户信息失败,请重试', + duration: 5 + }) + // 失败时,获取用户信息失败时,调用登出,来清空历史保留信息 + store.dispatch('Logout').then(() => { + location.href = '/index' + }) + }) + } else { + next() + } + } + } else { + if (allowList.includes(to.name)) { + // 在免登录名单,直接进入 + next() + } else { + next({path: loginRoutePath, query: {redirect: to.fullPath}}) + NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it + } + } +}) + +router.afterEach(() => { + NProgress.done() // finish progress bar +}) diff --git a/cn-universal-web-ui/src/router/generator-routers.js b/cn-universal-web-ui/src/router/generator-routers.js new file mode 100644 index 0000000000000000000000000000000000000000..a0a6a6d1570e6c90e8d4a9b53f11d5a5cfa185fb --- /dev/null +++ b/cn-universal-web-ui/src/router/generator-routers.js @@ -0,0 +1,196 @@ +// eslint-disable-next-line +import {getRouters} from '@/api/menu' +import {otherRouterMap} from '@/config/router.config' +import allIcon from '@/core/icons' +import {validURL} from '@/utils/validate' +import {BlankLayout, PageView, UserLayout} from '@/layouts' +// 前端路由表 +const constantRouterComponents = { + // 基础页面 layout 必须引入 + BasicLayout: () => import('@/layouts/BasicLayout'), + BlankLayout: BlankLayout, + RouteView: () => import('@/layouts/RouteView'), + PageView: PageView, + UserLayout: UserLayout, // 登陆注册页面的通用布局 + + // 你需要动态引入的页面组件 + 'Index': () => import('@/views/dashboard/index'), + // account + 'AccountCenter': () => import('@/views/account/center'), + 'AccountSettings': () => import('@/views/account/settings/index'), + 'BaseSettings': () => import('@/views/account/settings/BaseSetting'), + 'SecuritySettings': () => import('@/views/account/settings/Security'), + // job log + 'JobLog': () => import('@/views/monitor/job/log'), + // 授权用户 + 'AuthUser': () => import('@/views/system/role/authUser'), + // 公告新增修改 + 'NoticeForm': () => import('@/views/system/notice/CreateForm'), + // 修改生成配置 + 'GenEdit': () => import('@/views/tool/gen/modules/GenEdit'), + // 设备绑定页面 + 'DeviceBind': () => import('@/views/application/modules/DeviceBind'), + 'applicationDetails': () => import('@/views/application/modules/index'), + // 产品详情 + 'productDetails': () => import('@/views/system/product/modules/productDetails'), + // 产品详情 + 'instanceDetails': () => import('@/views/system/instance/modules/InstanceDetails'), + // 日志管理 + 'LogManage': () => import('@/views/system/instance/modules/logManage'), + // 产品中设备管理 + 'productInstance': () => import('@/views/system/product/modules/productInstance'), + // 批量配置历史 + 'batchHistory': () => import('@/views/system/instance/config/history.vue'), + // TCP网络组件 + 'TcpNetwork': () => import('@/views/system/network/tcp/index'), + 'TcpNetworkDetail': () => import('@/views/system/network/tcp/detail'), + // MQTT网络组件 + 'MqttNetwork': () => import('@/views/system/network/mqtt/index'), + 'MqttNetworkDetail': () => import('@/views/system/network/mqtt/detail'), + // 证书管理组件 + 'CertificateManager': () => import('@/views/system/network/certificate/CertificateManager.vue'), + // 通知管理组件 + 'NoticeChannel': () => import('@/views/system/noticeManager/NoticeChannel'), + 'NoticeTemplate': () => import('@/views/system/noticeManager/NoticeTemplate'), + // Node-RED组件已移除(相关功能未实现) + // 规则流转详情 + 'ruleFlowDetail': () => import('@/views/rule/flow/detail'), + // 视频监控 + 'VideoEzviz': () => import('@/views/system/video/VideoEzviz'), + 'Imoulife': () => import('@/views/system/video/Imoulife'), + 'EzvizPlayer': () => import('@/views/system/video/EzvizPlayer'), + 'ImouPlayer': () => import('@/views/system/video/ImouPlayer') +} + +// 前端未找到页面路由(固定不用改) +const notFoundRouter = { + path: '*', redirect: '/404', hidden: true +} + +// 根级菜单 +const rootRouter = { + key: '', + name: 'index', + path: '', + component: 'BasicLayout', + redirect: '/index', + meta: { + title: '首页' + }, + children: [] +} + +/** + * 为解决缓存问题,自定义页面添加一层父级 + */ +const bashRouter = { + path: '/', + name: '', + component: 'Layout', + hidden: true +} + +/** + * 动态生成菜单 + * @param token + * @returns {Promise} + */ +export const generatorDynamicRouter = (token) => { + return new Promise((resolve, reject) => { + // 向后端请求路由数据 + getRouters().then(res => { + const menuNav = [] + const routerData = res.data + bashRouter.children = otherRouterMap + routerData.unshift(bashRouter) + rootRouter.children = routerData + menuNav.push(rootRouter) + const routers = generator(menuNav) + routers.push(notFoundRouter) + resolve(routers) + }).catch(err => { + reject(err) + }) + }) +} + +/** + * 格式化树形结构数据 生成 vue-router 层级路由表 + * + * @param routerMap + * @param parent + * @returns {*} + */ +export const generator = (routerMap, parent) => { + return routerMap.map(item => { + const { + title, + show, + hideChildren, + hiddenHeaderContent, + hidden, + icon, + noCache, + selected, + open + } = item.meta || {} + if (item.component) { + // Layout ParentView 组件特殊处理 + if (item.component === 'Layout') { + item.component = 'RouteView' + } else if (item.component === 'ParentView') { + // 三级菜单处理 + item.component = 'RouteView' + item.path = '/' + item.path + } + } + if (item.path) { + // item.path = '/' + item.path + } + if (item.isFrame === 0) { + item.target = '_blank' + } + const currentRouter = { + // 如果路由设置了 path,则作为默认 path,否则 路由地址 动态拼接生成如 /dashboard/workplace + path: item.path || `${parent && parent.path || ''}/${item.path}`, + // 路由名称,建议唯一 + name: item.name || item.key || '', + // 该路由对应页面的 组件(动态加载) + component: (constantRouterComponents[item.component || item.key]) + || (() => import(`@/views/${item.component}`)), + hidden: item.hidden, + // meta: 页面标题, 菜单图标, 页面权限(供指令权限用,可去掉) + meta: { + title: title, + icon: allIcon[icon] || allIcon[icon + 'Icon'] || icon, + hiddenHeaderContent: hiddenHeaderContent, + // 目前只能通过判断path的http链接来判断是否外链,适配若依 + target: validURL(item.path) ? '_blank' : '', + permission: item.name, + keepAlive: noCache === undefined ? false : !noCache, + hidden: hidden, + selected, + open + }, + redirect: item.redirect + } + // 是否设置了隐藏菜单 + if (show === false) { + currentRouter.hidden = true + } + // 适配若依,若依为缩写路径,而antdv-pro的pro-layout要求每个路径需为全路径 + if (!constantRouterComponents[item.component || item.key]) { + currentRouter.path = `${parent && parent.path || ''}/${item.path}` + } + // 是否设置了隐藏子菜单 + if (hideChildren) { + currentRouter.hideChildrenInMenu = true + } + // 是否有子菜单,并递归处理,并将父path传入 + if (item.children && item.children.length > 0) { + // Recursion + currentRouter.children = generator(item.children, currentRouter) + } + return currentRouter + }) +} diff --git a/cn-universal-web-ui/src/router/index.js b/cn-universal-web-ui/src/router/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f35044de48b35f28f874080af5bac0263ae0b361 --- /dev/null +++ b/cn-universal-web-ui/src/router/index.js @@ -0,0 +1,20 @@ +import Vue from 'vue' +import Router from 'vue-router' +import {constantRouterMap} from '@/config/router.config' + +// hack router push callback +const originalPush = Router.prototype.push +Router.prototype.push = function push(location, onResolve, onReject) { + if (onResolve || onReject) { + return originalPush.call(this, location, onResolve, + onReject) + } + return originalPush.call(this, location).catch(err => err) +} + +Vue.use(Router) + +export default new Router({ + mode: 'history', + routes: constantRouterMap +}) diff --git a/cn-universal-web-ui/src/router/index.ts b/cn-universal-web-ui/src/router/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..b16ea0c03a5ad2fcdfd873073b554abb4d078e2a --- /dev/null +++ b/cn-universal-web-ui/src/router/index.ts @@ -0,0 +1,63 @@ +import type {RouteRecordRaw} from 'vue-router' +import {createRouter, createWebHistory} from 'vue-router' +import {useUserStore} from '@/stores/user' + +const routes: RouteRecordRaw[] = [ + { + path: '/login', + name: 'Login', + component: () => import('@/views/login/index.vue'), + meta: {title: '登录', requiresAuth: false} + }, + { + path: '/', + name: 'Dashboard', + component: () => import('@/views/dashboard/index.vue'), + meta: {title: '首页', requiresAuth: true} + } +] + +const router = createRouter({ + history: createWebHistory(), + routes +}) + +// 路由守卫 +router.beforeEach(async (to, from, next) => { + const userStore = useUserStore() + const token = userStore.token + + // 设置页面标题 + document.title = `${to.meta.title} - Iot Universe` + + if (to.meta.requiresAuth) { + if (!token) { + // 未登录,跳转到登录页 + next({name: 'Login', query: {redirect: to.fullPath}}) + return + } + + // 已登录但没有用户信息,获取用户信息 + if (!userStore.userInfo) { + try { + await userStore.getUserInfo() + next() + } catch (error) { + // 获取用户信息失败,可能是 token 过期 + userStore.logout() + next({name: 'Login', query: {redirect: to.fullPath}}) + } + return + } + } + + // 已登录用户访问登录页,重定向到首页 + if (to.name === 'Login' && token) { + next({name: 'Dashboard'}) + return + } + + next() +}) + +export default router \ No newline at end of file diff --git a/cn-universal-web-ui/src/router/modules/rulego.js b/cn-universal-web-ui/src/router/modules/rulego.js new file mode 100644 index 0000000000000000000000000000000000000000..b2611c56ba5442112fd64fbfda9f4cbce119973e --- /dev/null +++ b/cn-universal-web-ui/src/router/modules/rulego.js @@ -0,0 +1,25 @@ +import Layout from '@/layout' + +const rulegoRouter = { + path: '/rulego', + component: Layout, + redirect: '/rulego/chain', + name: 'Rulego', + meta: { + title: 'rulego规则引擎', + icon: 'node-index' + }, + children: [ + { + path: 'chain', + name: 'RulegoChain', + component: () => import('@/views/rulego/chain/index'), + meta: { + title: '规则链管理', + icon: 'tree-table' + } + } + ] +} + +export default rulegoRouter diff --git a/cn-universal-web-ui/src/store/app-mixin.js b/cn-universal-web-ui/src/store/app-mixin.js new file mode 100644 index 0000000000000000000000000000000000000000..03f1f24b6195160b524a735a0181bd7af2615e35 --- /dev/null +++ b/cn-universal-web-ui/src/store/app-mixin.js @@ -0,0 +1,32 @@ +import {mapState} from 'vuex' + +const baseMixin = { + computed: { + ...mapState({ + layout: state => state.app.layout, + navTheme: state => state.app.theme, + primaryColor: state => state.app.color, + colorWeak: state => state.app.weak, + fixedHeader: state => state.app.fixedHeader, + fixedSidebar: state => state.app.fixedSidebar, + contentWidth: state => state.app.contentWidth, + autoHideHeader: state => state.app.autoHideHeader, + + // isMobile: state => state.app.isMobile, + sideCollapsed: state => state.app.sideCollapsed, + multiTab: state => state.app.multiTab + }), + isTopMenu() { + return this.layout === 'topmenu' + } + }, + methods: { + isSideMenu() { + return !this.isTopMenu + } + } +} + +export { + baseMixin +} diff --git a/cn-universal-web-ui/src/store/device-mixin.js b/cn-universal-web-ui/src/store/device-mixin.js new file mode 100644 index 0000000000000000000000000000000000000000..9e084f0941bd468b7e280f76732dcc21b03c1dec --- /dev/null +++ b/cn-universal-web-ui/src/store/device-mixin.js @@ -0,0 +1,11 @@ +import {mapState} from 'vuex' + +const deviceMixin = { + computed: { + ...mapState({ + isMobile: state => state.app.isMobile + }) + } +} + +export {deviceMixin} diff --git a/cn-universal-web-ui/src/store/getters.js b/cn-universal-web-ui/src/store/getters.js new file mode 100644 index 0000000000000000000000000000000000000000..1d3e21e377317a6ba7889446033ba19c77979490 --- /dev/null +++ b/cn-universal-web-ui/src/store/getters.js @@ -0,0 +1,18 @@ +const getters = { + isMobile: state => state.app.isMobile, + lang: state => state.app.lang, + theme: state => state.app.theme, + color: state => state.app.color, + token: state => state.user.token, + avatar: state => state.user.avatar, + nickname: state => state.user.name, + welcome: state => state.user.welcome, + roles: state => state.user.roles, + permissions: state => state.user.permissions, + userInfo: state => state.user.info, + addRouters: state => state.permission.addRouters, + multiTab: state => state.app.multiTab, + cachedViews: state => state.tagsView.cachedViews +} + +export default getters diff --git a/cn-universal-web-ui/src/store/i18n-mixin.js b/cn-universal-web-ui/src/store/i18n-mixin.js new file mode 100644 index 0000000000000000000000000000000000000000..78e3cb0e8c2c94fc9f9d8fc4c548ccc2f5ff527d --- /dev/null +++ b/cn-universal-web-ui/src/store/i18n-mixin.js @@ -0,0 +1,16 @@ +import {mapState} from 'vuex' + +const i18nMixin = { + computed: { + ...mapState({ + currentLang: state => state.app.lang + }) + }, + methods: { + setLang(lang) { + this.$store.dispatch('setLang', lang) + } + } +} + +export default i18nMixin diff --git a/cn-universal-web-ui/src/store/index.js b/cn-universal-web-ui/src/store/index.js new file mode 100644 index 0000000000000000000000000000000000000000..5cb7466d71e0972e890df89e7cb8871d275ac562 --- /dev/null +++ b/cn-universal-web-ui/src/store/index.js @@ -0,0 +1,29 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import app from './modules/app' +import user from './modules/user' +import tagsView from './modules/tagsView' + +// default router permission control +// import permission from './modules/permission' +import permission from './modules/async-router' + +// dynamic router permission control (Experimental) +// import permission from './modules/async-router' +import getters from './getters' + +Vue.use(Vuex) + +export default new Vuex.Store({ + modules: { + app, + user, + tagsView, + permission + }, + state: {}, + mutations: {}, + actions: {}, + getters +}) diff --git a/cn-universal-web-ui/src/store/modules/app.js b/cn-universal-web-ui/src/store/modules/app.js new file mode 100644 index 0000000000000000000000000000000000000000..ea9ffaec8e11bfd6999650967860991f3543764b --- /dev/null +++ b/cn-universal-web-ui/src/store/modules/app.js @@ -0,0 +1,98 @@ +import storage from 'store' +import { + APP_LANGUAGE, + SIDEBAR_TYPE, + TOGGLE_COLOR, + TOGGLE_CONTENT_WIDTH, + TOGGLE_FIXED_HEADER, + TOGGLE_FIXED_SIDEBAR, + TOGGLE_HIDE_HEADER, + TOGGLE_LAYOUT, + TOGGLE_MOBILE_TYPE, + TOGGLE_MULTI_TAB, + TOGGLE_NAV_THEME, + TOGGLE_WEAK +} from '@/store/mutation-types' +import {loadLanguageAsync} from '@/locales' + +const app = { + state: { + sideCollapsed: false, + isMobile: false, + theme: 'dark', + layout: '', + contentWidth: '', + fixedHeader: false, + fixedSidebar: false, + autoHideHeader: false, + color: '', + weak: false, + multiTab: true, + lang: 'zh-CN', + _antLocale: {} + }, + mutations: { + [SIDEBAR_TYPE]: (state, type) => { + state.sideCollapsed = type + storage.set(SIDEBAR_TYPE, type) + }, + [TOGGLE_MOBILE_TYPE]: (state, isMobile) => { + state.isMobile = isMobile + }, + [TOGGLE_NAV_THEME]: (state, theme) => { + state.theme = theme + storage.set(TOGGLE_NAV_THEME, theme) + }, + [TOGGLE_LAYOUT]: (state, mode) => { + state.layout = mode + storage.set(TOGGLE_LAYOUT, mode) + }, + [TOGGLE_FIXED_HEADER]: (state, mode) => { + state.fixedHeader = mode + storage.set(TOGGLE_FIXED_HEADER, mode) + }, + [TOGGLE_FIXED_SIDEBAR]: (state, mode) => { + state.fixedSidebar = mode + storage.set(TOGGLE_FIXED_SIDEBAR, mode) + }, + [TOGGLE_CONTENT_WIDTH]: (state, type) => { + state.contentWidth = type + storage.set(TOGGLE_CONTENT_WIDTH, type) + }, + [TOGGLE_HIDE_HEADER]: (state, type) => { + state.autoHideHeader = type + storage.set(TOGGLE_HIDE_HEADER, type) + }, + [TOGGLE_COLOR]: (state, color) => { + state.color = color + storage.set(TOGGLE_COLOR, color) + }, + [TOGGLE_WEAK]: (state, mode) => { + state.weak = mode + storage.set(TOGGLE_WEAK, mode) + }, + [APP_LANGUAGE]: (state, lang, antd = {}) => { + state.lang = lang + state._antLocale = antd + storage.set(APP_LANGUAGE, lang) + }, + [TOGGLE_MULTI_TAB]: (state, bool) => { + storage.set(TOGGLE_MULTI_TAB, bool) + state.multiTab = bool + } + }, + actions: { + setLang({commit}, lang) { + return new Promise((resolve, reject) => { + commit(APP_LANGUAGE, lang) + loadLanguageAsync(lang).then(() => { + resolve() + }).catch((e) => { + reject(e) + }) + }) + } + } +} + +export default app diff --git a/cn-universal-web-ui/src/store/modules/async-router.js b/cn-universal-web-ui/src/store/modules/async-router.js new file mode 100644 index 0000000000000000000000000000000000000000..fcdca7f6994715a4841bb507f3148a8dc47bc627 --- /dev/null +++ b/cn-universal-web-ui/src/store/modules/async-router.js @@ -0,0 +1,31 @@ +/** + * 向后端请求用户的菜单,动态生成路由 + */ +import {constantRouterMap} from '@/config/router.config' +import {generatorDynamicRouter} from '@/router/generator-routers' + +const permission = { + state: { + routers: constantRouterMap, + addRouters: [] + }, + mutations: { + SET_ROUTERS: (state, routers) => { + state.addRouters = constantRouterMap.concat(routers) + state.routers = constantRouterMap.concat(routers) + // state.routers = constantRouterMap + } + }, + actions: { + GenerateRoutes({commit}, data) { + return new Promise(resolve => { + generatorDynamicRouter(data).then(routers => { + commit('SET_ROUTERS', routers) + resolve() + }) + }) + } + } +} + +export default permission diff --git a/cn-universal-web-ui/src/store/modules/tagsView.js b/cn-universal-web-ui/src/store/modules/tagsView.js new file mode 100644 index 0000000000000000000000000000000000000000..ce53c477fdbda1a287cea629e03f847243e94a81 --- /dev/null +++ b/cn-universal-web-ui/src/store/modules/tagsView.js @@ -0,0 +1,60 @@ +const state = { + cachedViews: [] +} + +const mutations = { + ADD_CACHED_VIEW: (state, view) => { + if (state.cachedViews.includes(view.name)) { + return + } + if (view.meta && view.meta.keepAlive) { + state.cachedViews.push(view.name) + } + }, + DEL_CACHED_VIEW: (state, view) => { + const index = state.cachedViews.indexOf(view.name) + index > -1 && state.cachedViews.splice(index, 1) + }, + DEL_OTHERS_CACHED_VIEWS: (state, view) => { + const index = state.cachedViews.indexOf(view.name) + if (index > -1) { + state.cachedViews = state.cachedViews.slice(index, index + 1) + } else { + state.cachedViews = [] + } + }, + DEL_ALL_CACHED_VIEWS: state => { + state.cachedViews = [] + } +} + +const actions = { + addCachedView({commit}, view) { + commit('ADD_CACHED_VIEW', view) + }, + delCachedView({commit, state}, view) { + return new Promise(resolve => { + commit('DEL_CACHED_VIEW', view) + resolve([...state.cachedViews]) + }) + }, + delOthersCachedViews({commit, state}, view) { + return new Promise(resolve => { + commit('DEL_OTHERS_CACHED_VIEWS', view) + resolve([...state.cachedViews]) + }) + }, + delAllCachedViews({commit, state}) { + return new Promise(resolve => { + commit('DEL_ALL_CACHED_VIEWS') + resolve([...state.cachedViews]) + }) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/cn-universal-web-ui/src/store/modules/user.js b/cn-universal-web-ui/src/store/modules/user.js new file mode 100644 index 0000000000000000000000000000000000000000..497ff95177d340da4133644aeb288a211342b4ce --- /dev/null +++ b/cn-universal-web-ui/src/store/modules/user.js @@ -0,0 +1,159 @@ +import storage from 'store' +import {getInfo, login, logout} from '@/api/login' +import {ACCESS_TOKEN, EXPIRES_IN, REFRESH_TOKEN} from '@/store/mutation-types' + +const user = { + state: { + token: '', + name: '', + welcome: '', + avatar: '', + roles: [], + info: {}, + parentUnionId: null, + currentAdmin: false + }, + + mutations: { + SET_TOKEN: (state, token) => { + state.token = token + }, + SET_CURRENTADMIN: (state, currentAdmin) => { + state.currentAdmin = currentAdmin + }, + SET_NAME: (state, name) => { + state.name = name + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar + }, + SET_ROLES: (state, roles) => { + state.roles = roles + }, + SET_INFO: (state, info) => { + state.info = info + }, + SET_PERMISSIONS: (state, permissions) => { + state.permissions = permissions + }, + SET_PARENT: (state, parentUnionId) => { + state.parentUnionId = parentUnionId + } + }, + + actions: { + // 登录 + Login({commit, dispatch}, userInfo) { + return new Promise((resolve, reject) => { + login(userInfo).then(res => { + const stramp = +new Date() + res.expires_in * 1000 + storage.set(ACCESS_TOKEN, res.access_token, 7 * 24 * 60 * 60 * 1000) + storage.set(REFRESH_TOKEN, res.refresh_token, 7 * 24 * 60 * 60 * 1000) + storage.set(EXPIRES_IN, stramp, 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', res.access_token) + resolve() + }) + .catch(error => { + reject(error) + }) + }) + }, + + // 半小时刷新一次token + RefreshToken({commit, dispatch, state}, immediate) { + const stramp = storage.get(EXPIRES_IN) + if (+new Date() > stramp) { + return + } + const refreshToken = storage.get(REFRESH_TOKEN) + const params = { + grant_type: 'refresh_token', + client_id: 'web', + client_secret: 'web', + refresh_token: refreshToken, + username: state.name + } + + function refresh() { + login(params).then(res => { + storage.set(ACCESS_TOKEN, res.access_token, 7 * 24 * 60 * 60 * 1000) + storage.set(REFRESH_TOKEN, res.refresh_token, 7 * 24 * 60 * 60 * 1000) + storage.set(EXPIRES_IN, (+new Date() + res.expires_in * 1000), + 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', res.access_token) + }) + } + + if (immediate) { + refresh() + } + if (window.refresh_token_timer) { + clearTimeout(window.refresh_token_timer) + } + window.refresh_token_timer = setTimeout(() => { + refresh() + dispatch('RefreshToken') + }, 1800 * 1000) + }, + + // 获取用户信息 + GetInfo({commit, state}) { + return new Promise((resolve, reject) => { + getInfo(state.token).then(res => { + const user = res.data.user + const avatar = !user.avatar ? require( + '@/assets/images/user-avatar.svg') : process.env.VUE_APP_BASE_API + + user.avatar + if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组 + commit('SET_ROLES', res.data.roles) + commit('SET_PERMISSIONS', res.data.permissions) + } else { + commit('SET_ROLES', ['ROLE_DEFAULT']) + } + commit('SET_CURRENTADMIN', user.admin) + commit('SET_PARENT', user.parentUnionId) + commit('SET_NAME', user.username) + commit('SET_AVATAR', avatar) + // console.log(user) + // console.log(user.parentUnionId) + resolve(res.data) + }).catch(error => { + reject(error) + }) + }) + }, + + // 登出 + Logout({commit, state}) { + return new Promise((resolve, reject) => { + logout().then(() => { + resolve() + }).catch(error => { + reject(error) + }).finally(() => { + setTimeout(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + commit('SET_PERMISSIONS', []) + storage.remove(ACCESS_TOKEN) + storage.remove(REFRESH_TOKEN) + storage.remove(EXPIRES_IN) + resolve() + }, 0) + }) + // setTimeout(() => { + // commit('SET_TOKEN', '') + // commit('SET_ROLES', []) + // commit('SET_PERMISSIONS', []) + // storage.remove(ACCESS_TOKEN) + // storage.remove(REFRESH_TOKEN) + // storage.remove(EXPIRES_IN) + // resolve() + // }, 0) + }) + } + + } +} + +export default user diff --git a/cn-universal-web-ui/src/store/mutation-types.js b/cn-universal-web-ui/src/store/mutation-types.js new file mode 100644 index 0000000000000000000000000000000000000000..b851f1fc061d8ac67def422020364c3edd92eab6 --- /dev/null +++ b/cn-universal-web-ui/src/store/mutation-types.js @@ -0,0 +1,30 @@ +export const ACCESS_TOKEN = 'access_token' +export const REFRESH_TOKEN = 'refresh_token' +export const EXPIRES_IN = 'expires_in' + +export const SIDEBAR_TYPE = 'sidebar_type' +export const TOGGLE_MOBILE_TYPE = 'is_mobile' +export const TOGGLE_NAV_THEME = 'nav_theme' +export const TOGGLE_LAYOUT = 'layout' +export const TOGGLE_FIXED_HEADER = 'fixed_header' +export const TOGGLE_FIXED_SIDEBAR = 'fixed_sidebar' +export const TOGGLE_CONTENT_WIDTH = 'content_width' +export const TOGGLE_HIDE_HEADER = 'auto_hide_header' +export const TOGGLE_COLOR = 'color' +export const TOGGLE_WEAK = 'weak' +export const TOGGLE_MULTI_TAB = 'multi_tab' +export const APP_LANGUAGE = 'app_language' + +export const LOGIN_USERNAME = 'login_username' +export const LOGIN_PASSWORD = 'login_password' +export const LOGIN_REMEMBERME = 'login_rememberme' + +export const CONTENT_WIDTH_TYPE = { + Fluid: 'Fluid', + Fixed: 'Fixed' +} + +export const NAV_THEME = { + LIGHT: 'light', + DARK: 'dark' +} diff --git a/cn-universal-web-ui/src/utils/axios.js b/cn-universal-web-ui/src/utils/axios.js new file mode 100644 index 0000000000000000000000000000000000000000..1149e12c1a21f830ac7eb3a9dd4ac3b382a36757 --- /dev/null +++ b/cn-universal-web-ui/src/utils/axios.js @@ -0,0 +1,35 @@ +const VueAxios = { + vm: {}, + // eslint-disable-next-line no-unused-vars + install(Vue, instance) { + if (this.installed) { + return + } + this.installed = true + + if (!instance) { + // eslint-disable-next-line no-console + console.error('You have to install axios') + return + } + + Vue.axios = instance + + Object.defineProperties(Vue.prototype, { + axios: { + get: function get() { + return instance + } + }, + $http: { + get: function get() { + return instance + } + } + }) + } +} + +export { + VueAxios +} diff --git a/cn-universal-web-ui/src/utils/date.js b/cn-universal-web-ui/src/utils/date.js new file mode 100644 index 0000000000000000000000000000000000000000..639403150d2fe13577c15e2e03c61b8904597e9b --- /dev/null +++ b/cn-universal-web-ui/src/utils/date.js @@ -0,0 +1,49 @@ +// 通用时间解析工具:支持秒/毫秒时间戳与 ISO 字符串 +export function toDate(value) { + if (value == null) { + return new Date(NaN) + } + if (typeof value === 'string') { + const trimmed = value.trim() + // 纯数字字符串按时间戳处理(兼容秒/毫秒) + if (/^\d+(\.\d+)?$/.test(trimmed)) { + const asNumber = Number(trimmed) + if (!isFinite(asNumber) || asNumber <= 0) return new Date(NaN) + const msFromNum = asNumber < 1e12 ? asNumber * 1000 : asNumber + return new Date(msFromNum) + } + const parsed = Date.parse(value) + if (!Number.isNaN(parsed)) { + return new Date(parsed) + } + return new Date(NaN) + } + const num = Number(value) + if (!isFinite(num) || num <= 0) { + return new Date(NaN) + } + const ms = num < 1e12 ? num * 1000 : num + return new Date(ms) +} + +// 将任意时间值格式化为字符串(非法/空返回“无”) +export function formatTimeValue(value, formatter) { + if (!value) return '无' + const d = toDate(value) + if (isNaN(d.getTime())) return '无' + return (formatter || defaultFormatDate)(d) +} + +// 默认格式化:YYYY-MM-DD HH:mm:ss +export function defaultFormatDate(time) { + const year = time.getFullYear() + const month = time.getMonth() + 1 + const date = time.getDate() + const hours = time.getHours() + const minutes = time.getMinutes() + const seconds = time.getSeconds() + const pad = (n) => (n > 9 ? n : '0' + n) + return `${year}-${pad(month)}-${pad(date)} ${pad(hours)}:${pad(minutes)}:${pad(seconds)}` +} + + diff --git a/cn-universal-web-ui/src/utils/domUtil.js b/cn-universal-web-ui/src/utils/domUtil.js new file mode 100644 index 0000000000000000000000000000000000000000..be930270872e7e969149811e7010ee5bcbd458b7 --- /dev/null +++ b/cn-universal-web-ui/src/utils/domUtil.js @@ -0,0 +1,21 @@ +import config from '@/config/defaultSettings' + +export const setDocumentTitle = function (title) { + document.title = title + const ua = navigator.userAgent + // eslint-disable-next-line + const regex = /\bMicroMessenger\/([\d\.]+)/ + if (regex.test(ua) && /ip(hone|od|ad)/i.test(ua)) { + const i = document.createElement('iframe') + i.src = '/favicon.ico' + i.style.display = 'none' + i.onload = function () { + setTimeout(function () { + i.remove() + }, 9) + } + document.body.appendChild(i) + } +} + +export const domTitle = config.title diff --git a/cn-universal-web-ui/src/utils/errorCode.js b/cn-universal-web-ui/src/utils/errorCode.js new file mode 100644 index 0000000000000000000000000000000000000000..d2111ee1016d1f9ef4eddf3bf5710c5fb50c8f6c --- /dev/null +++ b/cn-universal-web-ui/src/utils/errorCode.js @@ -0,0 +1,6 @@ +export default { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + 'default': '系统未知错误,请反馈给管理员' +} diff --git a/cn-universal-web-ui/src/utils/filter.js b/cn-universal-web-ui/src/utils/filter.js new file mode 100644 index 0000000000000000000000000000000000000000..49d35c9489662c6bd2f4d7595b03be635b2a3296 --- /dev/null +++ b/cn-universal-web-ui/src/utils/filter.js @@ -0,0 +1,21 @@ +import Vue from 'vue' +import moment from 'moment' +import 'moment/locale/zh-cn' + +moment.locale('zh-cn') + +Vue.filter('NumberFormat', function (value) { + if (!value) { + return '0' + } + const intPartFormat = value.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 将整数部分逢三一断 + return intPartFormat +}) + +Vue.filter('dayjs', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') { + return moment(dataStr).format(pattern) +}) + +Vue.filter('moment', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') { + return moment(dataStr).format(pattern) +}) diff --git a/cn-universal-web-ui/src/utils/highlight.js b/cn-universal-web-ui/src/utils/highlight.js new file mode 100644 index 0000000000000000000000000000000000000000..985dfab8f6794640e5f14211a492bfab901a6831 --- /dev/null +++ b/cn-universal-web-ui/src/utils/highlight.js @@ -0,0 +1,29 @@ +// src/utils/highlight.js 文件路径,纯属自定义 + +// highlight.js 代码高亮指令 +import Hljs from 'highlight.js' +import 'highlight.js/styles/base16/darcula.css' // 代码高亮风格,选择更多风格需导入 node_modules/hightlight.js/styles/ 目录下其它css文件 + +const Highlight = {} +// 自定义插件 +Highlight.install = function (Vue) { + // 自定义指令 v-highlight + Vue.directive('highlight', { + // 被绑定元素插入父节点时调用 + inserted: function (el) { + const blocks = el.querySelectorAll('pre code') + for (let i = 0; i < blocks.length; i++) { + Hljs.highlightElement(blocks[i]) + } + }, + // 指令所在组件的 VNode 及其子 VNode 全部更新后调用 + componentUpdated: function (el) { + const blocks = el.querySelectorAll('pre code') + for (let i = 0; i < blocks.length; i++) { + Hljs.highlightElement(blocks[i]) + } + } + }) +} + +export default Highlight diff --git a/cn-universal-web-ui/src/utils/loadScript.js b/cn-universal-web-ui/src/utils/loadScript.js new file mode 100644 index 0000000000000000000000000000000000000000..be2a8ffeb6d4a457fb0b7fda744d8c0c3026be85 --- /dev/null +++ b/cn-universal-web-ui/src/utils/loadScript.js @@ -0,0 +1,29 @@ +export function loadExternalScript(src) { + return new Promise((resolve, reject) => { + if (!src) { + reject(new Error('src is required')) + return + } + const scripts = document.getElementsByTagName('script') + const existing = Array.from(scripts).find(s => s.src === src) + if (existing) { + if (existing.getAttribute('data-loaded') === 'true') { + resolve() + return + } + existing.addEventListener('load', () => resolve()) + existing.addEventListener('error', () => reject(new Error('Failed to load script: ' + src))) + return + } + const script = document.createElement('script') + script.type = 'text/javascript' + script.src = src + script.async = true + script.onload = () => { + script.setAttribute('data-loaded', 'true') + resolve() + } + script.onerror = () => reject(new Error('Failed to load script: ' + src)) + document.body.appendChild(script) + }) +} diff --git a/cn-universal-web-ui/src/utils/loadScript.ts b/cn-universal-web-ui/src/utils/loadScript.ts new file mode 100644 index 0000000000000000000000000000000000000000..ef487c5598630d715e8a967879ba0c26372abe7b --- /dev/null +++ b/cn-universal-web-ui/src/utils/loadScript.ts @@ -0,0 +1,31 @@ +export function loadExternalScript(src: string): Promise { + return new Promise((resolve, reject) => { + if (!src) { + reject(new Error('src is required')) + return + } + const scripts = document.getElementsByTagName('script') + const existing = Array.from(scripts).find((s) => s.src === src) + if (existing) { + if (existing.getAttribute('data-loaded') === 'true') { + resolve() + return + } + existing.addEventListener('load', () => resolve()) + existing.addEventListener('error', () => reject(new Error('Failed to load script: ' + src))) + return + } + const script = document.createElement('script') + script.type = 'text/javascript' + script.src = src + script.async = true + script.onload = () => { + script.setAttribute('data-loaded', 'true') + resolve() + } + script.onerror = () => reject(new Error('Failed to load script: ' + src)) + document.body.appendChild(script) + }) +} + + diff --git a/cn-universal-web-ui/src/utils/request.js b/cn-universal-web-ui/src/utils/request.js new file mode 100644 index 0000000000000000000000000000000000000000..127de2ca7fd3c2bf3225a13728d7ccb83a93758d --- /dev/null +++ b/cn-universal-web-ui/src/utils/request.js @@ -0,0 +1,217 @@ +import axios from 'axios' +import store from '@/store' +import storage from 'store' +import notification from 'ant-design-vue/es/notification' +import message from 'ant-design-vue/es/message' +import {VueAxios} from './axios' +import {ACCESS_TOKEN, EXPIRES_IN, REFRESH_TOKEN} from '@/store/mutation-types' +import errorCode from '@/utils/errorCode' +import qs from 'qs' +import {blobValidate} from '@/utils/ruoyi' +import {saveAs} from 'file-saver' + +// 创建 axios 实例 +const request = axios.create({ + // API 请求的默认前缀 + baseURL: process.env.VUE_APP_BASE_API, + // baseURL: 'https://ruoyi.setworld.net', + timeout: 20000 // 请求超时时间 +}) + +// 异常拦截处理器 +const errorHandler = (error) => { + let errorMessage = error.message + if (error.config.url.indexOf('/oauth/token') !== -1) { + errorMessage = error.response.data.error_description + } else { + // 处理网络错误 + if (errorMessage === 'Network Error') { + errorMessage = '后端接口连接异常' + } else if (errorMessage.includes('timeout')) { + errorMessage = '系统接口请求超时' + } else if (errorMessage.includes('Request failed with status code')) { + // 处理HTTP状态码错误 + const statusCode = errorMessage.substr(errorMessage.length - 3) + if (statusCode === '401') { + storage.remove(ACCESS_TOKEN) + storage.remove(REFRESH_TOKEN) + storage.remove(EXPIRES_IN) + location.href = '/index' + return Promise.reject(error) + } else if (statusCode === '500') { + errorMessage = '内部错误,请联系管理员' + } else if (statusCode === '404') { + errorMessage = '请求的资源不存在' + } else if (statusCode === '403') { + errorMessage = '没有权限访问该资源' + } else { + errorMessage = `请求失败,状态码:${statusCode},请联系管理员` + } + } + + // 如果有响应数据,优先使用响应中的错误信息 + if (error.response && error.response.data) { + const responseMsg = error.response.data.msg || error.response.data.message + if (responseMsg) { + errorMessage = responseMsg + } + } + + // 确保errorMessage不为空 + if (!errorMessage) { + errorMessage = '未知错误' + } + + notification.error({ + message: errorMessage, + duration: 5 + }) + } + return Promise.reject(error) +} + +// request interceptor +request.interceptors.request.use((config) => { + const token = storage.get(ACCESS_TOKEN) + // 如果 token 存在 + // 让每个请求携带自定义 token 请根据实际情况自行修改 + if (token) { + config.headers['Authorization'] = 'Bearer ' + token // 让每个请求携带自定义token 请根据实际情况自行修改 + // config.headers['accessAccess-Token'] = token + } + if (config.headers['Content-Type'] === 'application/x-www-form-urlencoded') { + config.data = qs.stringify(config.data) + } + // 处理params参数 + if (config.params) { + const url = config.url + '?' + qs.stringify(config.params, {indices: false}) + config.params = {} + config.url = url + } + return config +}, errorHandler) + +// response interceptor +request.interceptors.response.use((res) => { + // 请求rul + const requestUrl = res.config.url + // 未设置状态码则默认成功状态 + const code = res.data.code || 0 + // 获取错误信息 + const msg = errorCode[code] || res.data.msg || errorCode['default'] + // 二进制数据则直接返回 + if (res.request.responseType === 'blob' || res.request.responseType + === 'arraybuffer') { + return res.data + } + if (code === 401) { + notification.open({ + message: '系统提示', + description: '登录状态已过期,请重新登录', + btn: (h) => { + return h( + 'a-button', + { + props: { + type: 'primary', + size: 'small' + }, + on: { + click: () => { + store.dispatch('Logout').then(() => { + location.href = '/index' + }) + } + } + }, + '确认' + ) + }, + duration: 5, + onClose: close + }) + } else if (code === 500) { + if (requestUrl !== '/login') { + notification.error({ + message: msg, + description: msg, + duration: 5 + }) + } + } else if (code === 788) { + return + } else if (code !== 0) { + notification.error({ + message: msg, + duration: 5 + }) + // // 保留原始错误对象,便于业务层获取详细信息 + // const error = new Error(msg) + // error.response = res + // error.code = code + // return Promise.reject(error) + } else { + return res.data + } + return Promise.reject(msg) +}, errorHandler) + +const installer = { + vm: {}, + install(Vue) { + Vue.use(VueAxios, request) + } +} + +// 通用下载方法 +export function download(url, params, filename) { + const notificationKey = 'download' + notification.open({ + key: notificationKey, + message: '正在下载数据,请稍候', + duration: 5, + icon: (h) => { + return h('a-icon', { + props: { + type: 'loading' + } + }) + } + }) + return request + .post(url, qs.stringify(params, {indices: false}), { + responseType: 'blob' + }) + .then(async (data) => { + // 检查文件名扩展名,如果是.json,则按JSON处理 + if (filename && filename.toLowerCase().endsWith('.json')) { + // 对于JSON文件,直接保存为JSON格式 + const blob = new Blob([data], {type: 'application/json'}) + saveAs(blob, filename) + message.success('下载成功') + } else { + // 对于其他文件类型,使用blobValidate检查 + const isBlob = await blobValidate(data) + if (isBlob) { + const blob = new Blob([data]) + saveAs(blob, filename) + message.success('下载成功') + } else { + const resText = await data.text() + const rspObj = JSON.parse(resText) + const errMsg = errorCode[rspObj.code] || rspObj.msg + || errorCode['default'] + message.error(errMsg) + } + } + notification.close(notificationKey) + }) + .catch((r) => { + message.error('下载文件出现错误,请联系管理员!') + notification.close(notificationKey) + }) +} + +export default request + +export {installer as VueAxios, request as axios} diff --git a/cn-universal-web-ui/src/utils/requireIcons.js b/cn-universal-web-ui/src/utils/requireIcons.js new file mode 100644 index 0000000000000000000000000000000000000000..2705e9500dc910aa88ed106fa5a0a7bc6b56cbc0 --- /dev/null +++ b/cn-universal-web-ui/src/utils/requireIcons.js @@ -0,0 +1,9 @@ +const req = require.context('../assets/icons', false, /\.svg$/) +const requireAll = requireContext => requireContext.keys() +const re = /\.\/(.*)\.svg/ + +const icons = requireAll(req).map(i => { + return i.match(re)[1] +}) + +export default icons diff --git a/cn-universal-web-ui/src/utils/routeConvert.js b/cn-universal-web-ui/src/utils/routeConvert.js new file mode 100644 index 0000000000000000000000000000000000000000..37ebe4fa5b5f18471f80d401f56d34121d192655 --- /dev/null +++ b/cn-universal-web-ui/src/utils/routeConvert.js @@ -0,0 +1,34 @@ +import cloneDeep from 'lodash.clonedeep' + +export function convertRoutes(nodes) { + if (!nodes) { + return null + } + + nodes = cloneDeep(nodes) + + let queue = Array.isArray(nodes) ? nodes.concat() : [nodes] + + while (queue.length) { + const levelSize = queue.length + + for (let i = 0; i < levelSize; i++) { + const node = queue.shift() + + if (!node.children || !node.children.length) { + continue + } + + node.children.forEach(child => { + // 转化相对路径 + if (child.path[0] !== '/' && !child.path.startsWith('http')) { + child.path = node.path.replace(/(\w*)[/]*$/, `$1/${child.path}`) + } + }) + + queue = queue.concat(node.children) + } + } + + return nodes +} diff --git a/cn-universal-web-ui/src/utils/ruoyi.js b/cn-universal-web-ui/src/utils/ruoyi.js new file mode 100644 index 0000000000000000000000000000000000000000..1f747c774082c3a867743925994e199525b58d6e --- /dev/null +++ b/cn-universal-web-ui/src/utils/ruoyi.js @@ -0,0 +1,186 @@ +/** + * 通用js方法封装处理 + * Copyright (c) 2019 ruoyi + */ + +// 日期格式化 +export function parseTime(time, pattern) { + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace( + new RegExp(/\.[\d]{3}/gm), '') + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const timeStr = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { + return ['日', '一', '二', '三', '四', '五', '六'][value] + } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return timeStr +} + +// 表单重置 +export function resetForm(refName) { + if (this[refName]) { + this[refName].resetFields() + } +} + +// 添加日期范围 +export function addDateRange(params, dateRange, propName) { + var search = params + search.params = {} + if (dateRange !== null && dateRange !== '' && dateRange.length === 2) { + if (typeof (propName) === 'undefined') { + search.params['beginTime'] = dateRange[0] + search.params['endTime'] = dateRange[1] + } else { + search.params[propName + 'BeginTime'] = dateRange[0] + search.params[propName + 'EndTime'] = dateRange[1] + } + } + return search +} + +// 回显数据字典 +export function selectDictLabel(datas, value) { + var actions = [] + Object.keys(datas).some((key) => { + if (datas[key].dictValue === ('' + value)) { + actions.push(datas[key].dictLabel) + return true + } + }) + return actions.join('') +} + +// 回显数据字典(字符串数组) +export function selectDictLabels(datas, value, separator) { + var actions = [] + var currentSeparator = undefined === separator ? ',' : separator + var temp = value.split(currentSeparator) + Object.keys(value.split(currentSeparator)).some((val) => { + Object.keys(datas).some((key) => { + if (datas[key].dictValue === ('' + temp[val])) { + actions.push(datas[key].dictLabel + currentSeparator) + } + }) + }) + return actions.join('').substring(0, actions.join('').length - 1) +} + +// 字符串格式化(%s ) +export function sprintf(str) { + var args = arguments + var flag = true + var i = 1 + str = str.replace(/%s/g, function () { + var arg = args[i++] + if (typeof arg === 'undefined') { + flag = false + return '' + } + return arg + }) + return flag ? str : '' +} + +// 转换字符串,undefined,null等转化为'' +export function praseStrEmpty(str) { + if (!str || str === 'undefined' || str === 'null') { + return '' + } + return str +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + * @param {*} rootId 根Id 默认 0 + */ +export function handleTree(data, id, parentId, children, rootId) { + id = id || 'id' + parentId = parentId || 'parentId' + children = children || 'children' + rootId = rootId || (Math.min.apply(Math, data.map(item => { + return item[parentId] + }))) + '' || '0' + // 对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + // 循环所有项 + const treeData = cloneData.filter(father => { + var branchArr = cloneData.filter(child => { + // 返回每一项的子级数组 + return father[id] === child[parentId] + }) + if (branchArr.length > 0) { + father.children = branchArr + } else { + father.children = '' + } + // 返回第一层 + return father[parentId] === rootId + }) + return treeData !== '' ? treeData : data +} + +// 验证是否为blob格式 +export async function blobValidate(data) { + try { + const text = await data.text() + JSON.parse(text) + return false + } catch (error) { + return true + } +} + +/** + * 表格排序转换 + * + * @param {*} sorter 排序 + * @returns 转换结果 + */ +export function tableSorter(sorter) { + let orderByColumn = null + let isAsc = null + if (sorter && sorter.order) { + orderByColumn = sorter.field + isAsc = sorter.order === 'descend' ? 'desc' : 'asc' + } + return { + orderByColumn, + isAsc + } +} diff --git a/cn-universal-web-ui/src/utils/screenLog.js b/cn-universal-web-ui/src/utils/screenLog.js new file mode 100644 index 0000000000000000000000000000000000000000..a008a94aaff3d0e77465ebc0bfa28f69ffd3d138 --- /dev/null +++ b/cn-universal-web-ui/src/utils/screenLog.js @@ -0,0 +1,12 @@ +/* eslint-disable */ +export const printANSI = () => { + let text = ` + ██╗ ██████╗ ████████╗ ██╗ ██╗███╗ ██╗██╗███╗ ██╗███████╗██████╗ ███████╗ █████╗ ██╗ + ██║██╔═══██╗╚══██╔══╝ ██║ ██║████╗ ██║██║████╗ ██║██╔════╝██╔══██╗██╔════╝██╔══██╗██║ + ██║██║ ██║ ██║█████╗██║ ██║██╔██╗ ██║██║██╔██╗ ██║█████╗ ██████╔╝█████╗ ███████║██║ + ██║██║ ██║ ██║╚════╝██║ ██║██║╚██╗██║██║██║╚██╗██║██╔══╝ ██╔══██╗██╔══╝ ██╔══██║██║ + ██║╚██████╔╝ ██║ ╚██████╔╝██║ ╚████║██║██║ ╚████║███████╗██║ ██║██║ ██║ ██║███████╗ + ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝ +` + console.log(`%c${text}`, 'color: #fc4d50') +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/utils/time.js b/cn-universal-web-ui/src/utils/time.js new file mode 100644 index 0000000000000000000000000000000000000000..ff7374e183b2c47201edde47971177d86bae8480 --- /dev/null +++ b/cn-universal-web-ui/src/utils/time.js @@ -0,0 +1,43 @@ +// 统一的在线时间格式化与“距今”描述方法 +// 依赖现有的 parseTime 工具,保持与全站一致的格式化规则 +import { parseTime } from './ruoyi' + +/** + * 将时间戳格式化为标准时间字符串 + * - 支持秒(10位)与毫秒(13位)时间戳,字符串/数字均可 + * - 空值或'0'时返回“从未通信” + */ +export function formatOnlineTime(timestamp) { + if (!timestamp || timestamp === '0') { + return '从未通信' + } + const time = typeof timestamp === 'string' ? parseInt(timestamp) : timestamp + const timeMs = time.toString().length === 10 ? time * 1000 : time + return parseTime(timeMs, '{y}-{m}-{d} {h}:{i}:{s}') +} + +/** + * 输出与当前时间的相对描述 + * - 刚刚在线 / x分钟前 / x小时前 / x天前 / 长时间未通信 + */ +export function getTimeAgo(timestamp) { + if (!timestamp || timestamp === '0') { + return '从未通信' + } + const time = typeof timestamp === 'string' ? parseInt(timestamp) : timestamp + const timeMs = time.toString().length === 10 ? time * 1000 : time + const now = Date.now() + const diff = now - timeMs + if (diff < 60000) { return '刚刚在线' } + if (diff < 3600000) { return `${Math.floor(diff / 60000)}分钟前` } + if (diff < 86400000) { return `${Math.floor(diff / 3600000)}小时前` } + if (diff < 2592000000) { return `${Math.floor(diff / 86400000)}天前` } + return '长时间未通信' +} + +export default { + formatOnlineTime, + getTimeAgo +} + + diff --git a/cn-universal-web-ui/src/utils/util.js b/cn-universal-web-ui/src/utils/util.js new file mode 100644 index 0000000000000000000000000000000000000000..68cac4e48ea5a7a7b4f027aa72a15494c4a963df --- /dev/null +++ b/cn-universal-web-ui/src/utils/util.js @@ -0,0 +1,109 @@ +export function timeFix() { + const time = new Date() + const hour = time.getHours() + return hour < 9 ? '早上好' : hour <= 11 ? '上午好' : hour <= 13 ? '中午好' + : hour < 20 ? '下午好' : '晚上好' +} + +export function welcome() { + const arr = ['休息一会儿吧', '准备吃什么呢?', '要不要打一把 DOTA', + '我猜你可能累了'] + const index = Math.floor(Math.random() * arr.length) + return arr[index] +} + +/** + * 触发 window.resize + */ +export function triggerWindowResizeEvent() { + const event = document.createEvent('HTMLEvents') + event.initEvent('resize', true, true) + event.eventType = 'message' + window.dispatchEvent(event) +} + +export function handleScrollHeader(callback) { + let timer = 0 + + let beforeScrollTop = window.pageYOffset + callback = callback || function () { + } + window.addEventListener( + 'scroll', + event => { + clearTimeout(timer) + timer = setTimeout(() => { + let direction = 'up' + const afterScrollTop = window.pageYOffset + const delta = afterScrollTop - beforeScrollTop + if (delta === 0) { + return false + } + direction = delta > 0 ? 'down' : 'up' + callback(direction) + beforeScrollTop = afterScrollTop + }, 50) + }, + false + ) +} + +export function isIE() { + const bw = window.navigator.userAgent + const compare = (s) => bw.indexOf(s) >= 0 + const ie11 = (() => 'ActiveXObject' in window)() + return compare('MSIE') || ie11 +} + +/** + * Remove loading animate + * @param id parent element id or class + * @param timeout + */ +export function removeLoadingAnimate(id = '', timeout = 1500) { + if (id === '') { + return + } + setTimeout(() => { + document.body.removeChild(document.getElementById(id)) + }, timeout) +} + +/** + * 生成uuid + */ +export function generateUUID() { + let d = new Date().getTime() + if (window.performance && typeof window.performance.now === 'function') { + d += performance.now() // use high-precision timer if available + } + var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, + function (c) { + var r = (d + Math.random() * 16) % 16 | 0 + d = Math.floor(d / 16) + return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16) + }) + return uuid +} + +/** + * 是否是https协议 + * @returns + */ +export function isHttps() { + return window.location.protocol === 'https:' +} + +/** + * try...catch 处理 + * @param {*} promise + * @returns + */ +export async function tryCatchTo(promise) { + try { + const res = await promise // 等待 promise 执行成功 + return {err: null, res} // 成功时返回 {err: null, res: result} + } catch (err) { + return {err, res: null} // 失败时返回 {err: error, res: null} + } +} diff --git a/cn-universal-web-ui/src/utils/utils.less b/cn-universal-web-ui/src/utils/utils.less new file mode 100644 index 0000000000000000000000000000000000000000..ba75a67fc07b15d26c1fa0058be5bb96b5f531e8 --- /dev/null +++ b/cn-universal-web-ui/src/utils/utils.less @@ -0,0 +1,50 @@ +.textOverflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +.textOverflowMulti(@line: 3, @bg: #fff) { + position: relative; + max-height: @line * 1.5em; + margin-right: -1em; + padding-right: 1em; + overflow: hidden; + line-height: 1.5em; + text-align: justify; + &::before { + position: absolute; + right: 14px; + bottom: 0; + padding: 0 1px; + background: @bg; + content: '...'; + } + &::after { + position: absolute; + right: 14px; + width: 1em; + height: 1em; + margin-top: 0.2em; + background: white; + content: ''; + } +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/utils/validate.js b/cn-universal-web-ui/src/utils/validate.js new file mode 100644 index 0000000000000000000000000000000000000000..8497bb338008737e199a503229e6deef4a6434de --- /dev/null +++ b/cn-universal-web-ui/src/utils/validate.js @@ -0,0 +1,92 @@ +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path) { + return /^(https?:|mailto:|tel:)/.test(path) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validUsername(str) { + const validMap = ['admin', 'editor'] + return validMap.indexOf(str.trim()) >= 0 +} + +/** + * @param {string} url + * @returns {Boolean} + */ +export function validURL(url) { + const reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~/])+$/ + return reg.test(url) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validLowerCase(str) { + const reg = /^[a-z]+$/ + return reg.test(str) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validUpperCase(str) { + const reg = /^[A-Z]+$/ + return reg.test(str) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validAlphabets(str) { + const reg = /^[A-Za-z]+$/ + return reg.test(str) +} + +/** + * @param {string} email + * @returns {Boolean} + */ +export function validEmail(email) { + const reg = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + return reg.test(email) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function isString(str) { + if (typeof str === 'string' || str instanceof String) { + return true + } + return false +} + +/** + * @param {Array} arg + * @returns {Boolean} + */ +export function isArray(arg) { + if (typeof Array.isArray === 'undefined') { + return Object.prototype.toString.call(arg) === '[object Array]' + } + return Array.isArray(arg) +} + +/** + * @param {*} val + * @returns {boolean} + */ +export function validPwdLevel2(val) { + const reg = /(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}/ + return reg.test(val) +} diff --git a/cn-universal-web-ui/src/utils/websocket.js b/cn-universal-web-ui/src/utils/websocket.js new file mode 100644 index 0000000000000000000000000000000000000000..7174cc65a8f4220df8e74297ba35a76c916f2866 --- /dev/null +++ b/cn-universal-web-ui/src/utils/websocket.js @@ -0,0 +1,321 @@ +/** + * WebSocket 服务工具 + * 用于实时消息推送和灵动岛消息通知 + */ + +class WebSocketService { + constructor() { + this.ws = null + this.reconnectTimer = null + this.heartbeatTimer = null + this.maxReconnectAttempts = 5 + this.reconnectAttempts = 0 + this.reconnectInterval = 3000 + this.heartbeatInterval = 30000 + this.isConnected = false + this.messageHandlers = [] + this.config = { + url: process.env.VUE_APP_WS_URL || 'ws://localhost:8080/ws', + // 如果需要认证,可以添加token + protocols: [], + } + } + + /** + * 连接WebSocket + * @param {string} url WebSocket地址 + * @param {Object} options 连接选项 + */ + connect(url = null, options = {}) { + if (this.ws && this.ws.readyState === WebSocket.OPEN) { + console.log('WebSocket已连接') + return + } + + const wsUrl = url || this.config.url + console.log('正在连接WebSocket:', wsUrl) + + try { + this.ws = new WebSocket(wsUrl, this.config.protocols) + this.setupEventHandlers() + } catch (error) { + console.error('WebSocket连接失败:', error) + this.handleReconnect() + } + } + + /** + * 设置事件处理器 + */ + setupEventHandlers() { + this.ws.onopen = (event) => { + console.log('WebSocket连接成功') + this.isConnected = true + this.reconnectAttempts = 0 + this.startHeartbeat() + + // 发送认证信息(如果需要) + this.authenticate() + } + + this.ws.onmessage = (event) => { + try { + const message = JSON.parse(event.data) + this.handleMessage(message) + } catch (error) { + console.error('WebSocket消息解析失败:', error) + } + } + + this.ws.onclose = (event) => { + console.log('WebSocket连接关闭:', event.code, event.reason) + this.isConnected = false + this.stopHeartbeat() + + // 非正常关闭时尝试重连 + if (event.code !== 1000) { + this.handleReconnect() + } + } + + this.ws.onerror = (error) => { + console.error('WebSocket连接错误:', error) + this.isConnected = false + } + } + + /** + * 处理收到的消息 + * @param {Object} message 消息对象 + */ + handleMessage(message) { + console.log('收到WebSocket消息:', message) + + // 如果是心跳响应,直接返回 + if (message.type === 'heartbeat_response') { + return + } + + // 通知所有消息处理器 + this.messageHandlers.forEach(handler => { + try { + handler(message) + } catch (error) { + console.error('消息处理器执行失败:', error) + } + }) + } + + /** + * 发送认证信息 + */ + authenticate() { + const token = localStorage.getItem('Access-Token') + || sessionStorage.getItem('Access-Token') + if (token) { + this.send({ + type: 'auth', + token: token, + timestamp: Date.now() + }) + } + } + + /** + * 发送消息 + * @param {Object} message 消息对象 + */ + send(message) { + if (this.ws && this.ws.readyState === WebSocket.OPEN) { + try { + this.ws.send(JSON.stringify(message)) + return true + } catch (error) { + console.error('WebSocket发送消息失败:', error) + return false + } + } else { + console.warn('WebSocket未连接,无法发送消息') + return false + } + } + + /** + * 添加消息处理器 + * @param {Function} handler 消息处理函数 + */ + addMessageHandler(handler) { + if (typeof handler === 'function') { + this.messageHandlers.push(handler) + } + } + + /** + * 移除消息处理器 + * @param {Function} handler 消息处理函数 + */ + removeMessageHandler(handler) { + const index = this.messageHandlers.indexOf(handler) + if (index > -1) { + this.messageHandlers.splice(index, 1) + } + } + + /** + * 开始心跳检测 + */ + startHeartbeat() { + this.stopHeartbeat() + this.heartbeatTimer = setInterval(() => { + if (this.isConnected) { + this.send({ + type: 'heartbeat', + timestamp: Date.now() + }) + } + }, this.heartbeatInterval) + } + + /** + * 停止心跳检测 + */ + stopHeartbeat() { + if (this.heartbeatTimer) { + clearInterval(this.heartbeatTimer) + this.heartbeatTimer = null + } + } + + /** + * 处理重连 + */ + handleReconnect() { + if (this.reconnectAttempts >= this.maxReconnectAttempts) { + console.error('WebSocket重连次数已达上限,停止重连') + return + } + + this.reconnectAttempts++ + console.log( + `WebSocket重连中... (${this.reconnectAttempts}/${this.maxReconnectAttempts})`) + + this.reconnectTimer = setTimeout(() => { + this.connect() + }, this.reconnectInterval) + } + + /** + * 断开连接 + */ + disconnect() { + console.log('手动断开WebSocket连接') + + // 清理定时器 + if (this.reconnectTimer) { + clearTimeout(this.reconnectTimer) + this.reconnectTimer = null + } + + this.stopHeartbeat() + + // 关闭连接 + if (this.ws) { + this.ws.close(1000, '手动断开') + this.ws = null + } + + this.isConnected = false + this.reconnectAttempts = 0 + } + + /** + * 获取连接状态 + */ + getConnectionState() { + if (!this.ws) { + return 'CLOSED' + } + + switch (this.ws.readyState) { + case WebSocket.CONNECTING: + return 'CONNECTING' + case WebSocket.OPEN: + return 'OPEN' + case WebSocket.CLOSING: + return 'CLOSING' + case WebSocket.CLOSED: + return 'CLOSED' + default: + return 'UNKNOWN' + } + } + + /** + * 模拟消息推送(用于开发测试) + */ + simulateMessages() { + const mockMessages = [ + { + type: 'device', + title: '设备告警', + content: '温度传感器TH-001离线', + priority: 'high', + deviceId: 'TH-001', + location: '机房A-01' + }, + { + type: 'info', + title: '系统通知', + content: '数据备份已完成', + priority: 'normal' + }, + { + type: 'success', + title: '设备上线', + content: '智能水表WM-003已连接', + priority: 'normal', + deviceId: 'WM-003' + }, + { + type: 'warning', + title: '存储空间警告', + content: '系统存储空间使用率达到85%', + priority: 'high' + }, + { + type: 'error', + title: '网络异常', + content: '无法连接到数据中心', + priority: 'high' + } + ] + + let index = 0 + const interval = setInterval(() => { + if (index >= mockMessages.length) { + clearInterval(interval) + return + } + + const message = { + ...mockMessages[index], + id: Date.now() + Math.random(), + timestamp: new Date().toISOString() + } + + // 直接调用消息处理器 + this.handleMessage(message) + index++ + }, 5000) + + return interval + } +} + +// 创建全局WebSocket服务实例 +const wsService = new WebSocketService() + +export default wsService + +// 导出类,允许创建多个实例 +export {WebSocketService} \ No newline at end of file diff --git a/cn-universal-web-ui/src/utils/zipdownload.js b/cn-universal-web-ui/src/utils/zipdownload.js new file mode 100644 index 0000000000000000000000000000000000000000..4fd0850c64114c300b338fc7700522cf124cab4b --- /dev/null +++ b/cn-universal-web-ui/src/utils/zipdownload.js @@ -0,0 +1,45 @@ +import axios from 'axios' +import storage from 'store' +import {ACCESS_TOKEN} from '@/store/mutation-types' + +const mimeMap = { + xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + zip: 'application/zip' +} + +const baseUrl = process.env.VUE_APP_BASE_API + +export function downLoadZip(str, filename) { + var url = baseUrl + str + axios({ + method: 'get', + url: url, + responseType: 'blob', + headers: {'Authorization': 'Bearer ' + storage.get(ACCESS_TOKEN)} + }).then(res => { + resolveBlob(res, mimeMap.zip) + }) +} + +/** + * 解析blob响应内容并下载 + * @param {*} res blob响应内容 + * @param {String} mimeType MIME类型 + */ +export function resolveBlob(res, mimeType) { + const aLink = document.createElement('a') + var blob = new Blob([res.data], {type: mimeType}) + // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名; + var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') + var contentDisposition = decodeURI(res.headers['content-disposition']) + var result = patt.exec(contentDisposition) + var fileName = result[1] + fileName = fileName.replace(/"/g, '') + aLink.style.display = 'none' + aLink.href = URL.createObjectURL(blob) + aLink.setAttribute('download', fileName) // 设置下载文件名称 + document.body.appendChild(aLink) + aLink.click() + URL.revokeObjectURL(aLink.href) // 清除引用 + document.body.appendChild(aLink) +} diff --git a/cn-universal-web-ui/src/views/404.vue b/cn-universal-web-ui/src/views/404.vue new file mode 100644 index 0000000000000000000000000000000000000000..8c1d8a185f4cc2060a964fc53470cd0812af99d5 --- /dev/null +++ b/cn-universal-web-ui/src/views/404.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/NoticeChannel.vue b/cn-universal-web-ui/src/views/NoticeChannel.vue new file mode 100644 index 0000000000000000000000000000000000000000..2c8bfbec6dcbea0e8232a6de5307ba3a1f6cbc55 --- /dev/null +++ b/cn-universal-web-ui/src/views/NoticeChannel.vue @@ -0,0 +1,14 @@ + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/NoticeTemplate.vue b/cn-universal-web-ui/src/views/NoticeTemplate.vue new file mode 100644 index 0000000000000000000000000000000000000000..622b75fa333f02498abfc36b7ca03a9982418ed7 --- /dev/null +++ b/cn-universal-web-ui/src/views/NoticeTemplate.vue @@ -0,0 +1,14 @@ + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/account/center/index.vue b/cn-universal-web-ui/src/views/account/center/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..68d2e03d0e2733aa7185ff79071539a055f5c4cd --- /dev/null +++ b/cn-universal-web-ui/src/views/account/center/index.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/account/center/page/App.vue b/cn-universal-web-ui/src/views/account/center/page/App.vue new file mode 100644 index 0000000000000000000000000000000000000000..438250710168125e6401418fd48e36a510b0473a --- /dev/null +++ b/cn-universal-web-ui/src/views/account/center/page/App.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/account/center/page/Article.vue b/cn-universal-web-ui/src/views/account/center/page/Article.vue new file mode 100644 index 0000000000000000000000000000000000000000..7cb8aa7d8ac38a812e02a9465bce9e30656561f2 --- /dev/null +++ b/cn-universal-web-ui/src/views/account/center/page/Article.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/account/center/page/Project.vue b/cn-universal-web-ui/src/views/account/center/page/Project.vue new file mode 100644 index 0000000000000000000000000000000000000000..27b9452c9ffef7c5b89580d8dfadefd5a28eb8e3 --- /dev/null +++ b/cn-universal-web-ui/src/views/account/center/page/Project.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/account/center/page/index.js b/cn-universal-web-ui/src/views/account/center/page/index.js new file mode 100644 index 0000000000000000000000000000000000000000..acbf2d85582e2096c09c767139c73ba92a5a63ff --- /dev/null +++ b/cn-universal-web-ui/src/views/account/center/page/index.js @@ -0,0 +1,5 @@ +import AppPage from './App' +import ArticlePage from './Article' +import ProjectPage from './Project' + +export {AppPage, ArticlePage, ProjectPage} diff --git a/cn-universal-web-ui/src/views/account/settings/AvatarModal.vue b/cn-universal-web-ui/src/views/account/settings/AvatarModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..d445e61e54b6babc8c6fd6132356ca8d89d378d4 --- /dev/null +++ b/cn-universal-web-ui/src/views/account/settings/AvatarModal.vue @@ -0,0 +1,183 @@ + + + + diff --git a/cn-universal-web-ui/src/views/account/settings/BaseSetting.vue b/cn-universal-web-ui/src/views/account/settings/BaseSetting.vue new file mode 100644 index 0000000000000000000000000000000000000000..b94182176a0d598045da276d01338f348db515f7 --- /dev/null +++ b/cn-universal-web-ui/src/views/account/settings/BaseSetting.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/account/settings/Security.vue b/cn-universal-web-ui/src/views/account/settings/Security.vue new file mode 100644 index 0000000000000000000000000000000000000000..bd95921e5fb647ae4ffdb5391fb8c6396f5f397d --- /dev/null +++ b/cn-universal-web-ui/src/views/account/settings/Security.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/account/settings/UpdatePassword.vue b/cn-universal-web-ui/src/views/account/settings/UpdatePassword.vue new file mode 100644 index 0000000000000000000000000000000000000000..5ff097acdc2239ff7304633716ead854bdd17ac0 --- /dev/null +++ b/cn-universal-web-ui/src/views/account/settings/UpdatePassword.vue @@ -0,0 +1,111 @@ + + diff --git a/cn-universal-web-ui/src/views/account/settings/index.vue b/cn-universal-web-ui/src/views/account/settings/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..c55c9e621c46554b8f704d597ba09237f95d39ac --- /dev/null +++ b/cn-universal-web-ui/src/views/account/settings/index.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/application/index.vue b/cn-universal-web-ui/src/views/application/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..190c3d4f4f383366be8a54fe97191396483c2659 --- /dev/null +++ b/cn-universal-web-ui/src/views/application/index.vue @@ -0,0 +1,371 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/application/modules/CreateForm.vue b/cn-universal-web-ui/src/views/application/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..5542e32f6b6a9b5d7b99ba4b3a7c1c3384d50b67 --- /dev/null +++ b/cn-universal-web-ui/src/views/application/modules/CreateForm.vue @@ -0,0 +1,1061 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/application/modules/DeviceBind.vue b/cn-universal-web-ui/src/views/application/modules/DeviceBind.vue new file mode 100644 index 0000000000000000000000000000000000000000..8ecc0a88fae9077b1b509cda2a52a1e90fcabdfe --- /dev/null +++ b/cn-universal-web-ui/src/views/application/modules/DeviceBind.vue @@ -0,0 +1,793 @@ + + + + diff --git a/cn-universal-web-ui/src/views/application/modules/HttpPushConfig.vue b/cn-universal-web-ui/src/views/application/modules/HttpPushConfig.vue new file mode 100644 index 0000000000000000000000000000000000000000..14562f88a78a0187ca1673406e3a23126120d6f9 --- /dev/null +++ b/cn-universal-web-ui/src/views/application/modules/HttpPushConfig.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/application/modules/JDBCPushConfig.vue b/cn-universal-web-ui/src/views/application/modules/JDBCPushConfig.vue new file mode 100644 index 0000000000000000000000000000000000000000..8e4299e912ee99a517f88cb49c95fcf119b079fc --- /dev/null +++ b/cn-universal-web-ui/src/views/application/modules/JDBCPushConfig.vue @@ -0,0 +1,340 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/application/modules/MQTTPushConfig.vue b/cn-universal-web-ui/src/views/application/modules/MQTTPushConfig.vue new file mode 100644 index 0000000000000000000000000000000000000000..3fa08d8846651034658cb8d5af4c0b775a7e36d6 --- /dev/null +++ b/cn-universal-web-ui/src/views/application/modules/MQTTPushConfig.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/application/modules/RocketMQPushConfig.vue b/cn-universal-web-ui/src/views/application/modules/RocketMQPushConfig.vue new file mode 100644 index 0000000000000000000000000000000000000000..0415ab616a8663792317b554617abfb9d1f392ce --- /dev/null +++ b/cn-universal-web-ui/src/views/application/modules/RocketMQPushConfig.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/application/modules/index.vue b/cn-universal-web-ui/src/views/application/modules/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..a4ae1afcd2d633be8b6fc8929e61a1a295a5c914 --- /dev/null +++ b/cn-universal-web-ui/src/views/application/modules/index.vue @@ -0,0 +1,1215 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/dashboard/components/AlertManager.vue b/cn-universal-web-ui/src/views/dashboard/components/AlertManager.vue new file mode 100644 index 0000000000000000000000000000000000000000..66868dd28ef91414d332fd34630fe4cc7f1af2de --- /dev/null +++ b/cn-universal-web-ui/src/views/dashboard/components/AlertManager.vue @@ -0,0 +1,612 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/dashboard/components/LoadingOverlay.vue b/cn-universal-web-ui/src/views/dashboard/components/LoadingOverlay.vue new file mode 100644 index 0000000000000000000000000000000000000000..de716763df663ad7dedf0f8983776bdbfa4254bc --- /dev/null +++ b/cn-universal-web-ui/src/views/dashboard/components/LoadingOverlay.vue @@ -0,0 +1,63 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/dashboard/components/QuickActions.vue b/cn-universal-web-ui/src/views/dashboard/components/QuickActions.vue new file mode 100644 index 0000000000000000000000000000000000000000..cf3507348a3a804e8cfe8ca501157f07ba1fc808 --- /dev/null +++ b/cn-universal-web-ui/src/views/dashboard/components/QuickActions.vue @@ -0,0 +1,409 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/dashboard/components/Resizabler.vue b/cn-universal-web-ui/src/views/dashboard/components/Resizabler.vue new file mode 100644 index 0000000000000000000000000000000000000000..443edc066fdcd0bfd52a98b28f10144f3c12f7d9 --- /dev/null +++ b/cn-universal-web-ui/src/views/dashboard/components/Resizabler.vue @@ -0,0 +1,250 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/dashboard/components/SystemPerformance.vue b/cn-universal-web-ui/src/views/dashboard/components/SystemPerformance.vue new file mode 100644 index 0000000000000000000000000000000000000000..6186a25c800003174798819c52f58304f6ff33db --- /dev/null +++ b/cn-universal-web-ui/src/views/dashboard/components/SystemPerformance.vue @@ -0,0 +1,399 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/dashboard/components/TitleBox.vue b/cn-universal-web-ui/src/views/dashboard/components/TitleBox.vue new file mode 100644 index 0000000000000000000000000000000000000000..5a61cff3699846e57f47d9a6a2d94b5608529a9f --- /dev/null +++ b/cn-universal-web-ui/src/views/dashboard/components/TitleBox.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/dashboard/index.vue b/cn-universal-web-ui/src/views/dashboard/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..2afc6b941d2a09da5c4934e1cbe0a81c937043ac --- /dev/null +++ b/cn-universal-web-ui/src/views/dashboard/index.vue @@ -0,0 +1,1362 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/exception/403.vue b/cn-universal-web-ui/src/views/exception/403.vue new file mode 100644 index 0000000000000000000000000000000000000000..e87716d1c0edc8b92e893c2cb9452b4f874e30bd --- /dev/null +++ b/cn-universal-web-ui/src/views/exception/403.vue @@ -0,0 +1,20 @@ + + + diff --git a/cn-universal-web-ui/src/views/exception/404.vue b/cn-universal-web-ui/src/views/exception/404.vue new file mode 100644 index 0000000000000000000000000000000000000000..b9de8a1e589f84331caee56057424f6b2422a003 --- /dev/null +++ b/cn-universal-web-ui/src/views/exception/404.vue @@ -0,0 +1,20 @@ + + + diff --git a/cn-universal-web-ui/src/views/exception/500.vue b/cn-universal-web-ui/src/views/exception/500.vue new file mode 100644 index 0000000000000000000000000000000000000000..f56cdf55284476eb25214073c2cbc9dd1db519c1 --- /dev/null +++ b/cn-universal-web-ui/src/views/exception/500.vue @@ -0,0 +1,20 @@ + + + diff --git a/cn-universal-web-ui/src/views/index.less b/cn-universal-web-ui/src/views/index.less new file mode 100644 index 0000000000000000000000000000000000000000..005b73a0a6dea789d4d670ef1aa194ea87be9c69 --- /dev/null +++ b/cn-universal-web-ui/src/views/index.less @@ -0,0 +1,107 @@ +@import '~ant-design-vue/es/style/themes/default.less'; + +.text-overflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} + + +.page-header-content { + display: flex; + + .avatar { + flex: 0 1 72px; + + & > span { + display: block; + width: 72px; + height: 72px; + border-radius: 72px; + } + } + + .content { + position: relative; + top: 4px; + flex: 1 1 auto; + margin-left: 24px; + color: @text-color-secondary; + line-height: 22px; + + .content-title { + margin-bottom: 12px; + color: @heading-color; + font-weight: 500; + font-size: 20px; + line-height: 28px; + } + } +} + +.extra-content { + .clearfix(); + float: right; + white-space: nowrap; + + .stat-item { + position: relative; + display: inline-block; + padding: 0 32px; + + > p:first-child { + margin-bottom: 4px; + color: @text-color-secondary; + font-size: @font-size-base; + line-height: 22px; + } + + > p { + margin: 0; + color: @heading-color; + font-size: 30px; + line-height: 38px; + + > span { + color: @text-color-secondary; + font-size: 20px; + } + } + + &::after { + position: absolute; + top: 8px; + right: 0; + width: 1px; + height: 40px; + background-color: @border-color-split; + content: ''; + } + + &:last-child { + padding-right: 0; + + &::after { + display: none; + } + } + } +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/index.vue b/cn-universal-web-ui/src/views/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5c6c6d40913f01c69dfd74218f8f7553814a6be9 --- /dev/null +++ b/cn-universal-web-ui/src/views/index.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/monitor/cache/index.vue b/cn-universal-web-ui/src/views/monitor/cache/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..9a728daaf4589c3f17a8993b25b1ddcabe05f09c --- /dev/null +++ b/cn-universal-web-ui/src/views/monitor/cache/index.vue @@ -0,0 +1,151 @@ + + + diff --git a/cn-universal-web-ui/src/views/monitor/druid/index.vue b/cn-universal-web-ui/src/views/monitor/druid/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..734a17bdd8ee743598c2b4f6e84d51874467bf39 --- /dev/null +++ b/cn-universal-web-ui/src/views/monitor/druid/index.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/sale/person/index.vue b/cn-universal-web-ui/src/views/sale/person/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..740f5a353e62dc40d9d7a49a8537492739846312 --- /dev/null +++ b/cn-universal-web-ui/src/views/sale/person/index.vue @@ -0,0 +1,304 @@ + + + diff --git a/cn-universal-web-ui/src/views/sale/person/modules/CreateForm.vue b/cn-universal-web-ui/src/views/sale/person/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..8b5c516512dbad0a8bec3e77867c3b19a031acd6 --- /dev/null +++ b/cn-universal-web-ui/src/views/sale/person/modules/CreateForm.vue @@ -0,0 +1,177 @@ + + + diff --git a/cn-universal-web-ui/src/views/sale/saledev/index.vue b/cn-universal-web-ui/src/views/sale/saledev/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..613554c9e502c8480ab874a37fd49a6db534a6cc --- /dev/null +++ b/cn-universal-web-ui/src/views/sale/saledev/index.vue @@ -0,0 +1,419 @@ + + + diff --git a/cn-universal-web-ui/src/views/sale/saledev/modules/CreateForm.vue b/cn-universal-web-ui/src/views/sale/saledev/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..eb55bdfd2c4f02809e2bcdfbfdd088c189bda4d6 --- /dev/null +++ b/cn-universal-web-ui/src/views/sale/saledev/modules/CreateForm.vue @@ -0,0 +1,195 @@ + + + diff --git a/cn-universal-web-ui/src/views/sale/saledev/modules/ImportForm.vue b/cn-universal-web-ui/src/views/sale/saledev/modules/ImportForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..c52e006861a8cccf203de95134bdffa3bef3306f --- /dev/null +++ b/cn-universal-web-ui/src/views/sale/saledev/modules/ImportForm.vue @@ -0,0 +1,201 @@ + + + diff --git a/cn-universal-web-ui/src/views/sale/saledev/modules/InstanceDetail.vue b/cn-universal-web-ui/src/views/sale/saledev/modules/InstanceDetail.vue new file mode 100644 index 0000000000000000000000000000000000000000..45886cb83d112659f9d95c742a12e26196ae258f --- /dev/null +++ b/cn-universal-web-ui/src/views/sale/saledev/modules/InstanceDetail.vue @@ -0,0 +1,312 @@ + + + diff --git a/cn-universal-web-ui/src/views/sale/saledev/modules/SaleForm.vue b/cn-universal-web-ui/src/views/sale/saledev/modules/SaleForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..8cdce2844cd82205763e37fbfaaf78316e225d2d --- /dev/null +++ b/cn-universal-web-ui/src/views/sale/saledev/modules/SaleForm.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/config/index.vue b/cn-universal-web-ui/src/views/system/config/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..b41ef4ca8c618d7e0ba53b0a2af3fb0ed182b4c0 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/config/index.vue @@ -0,0 +1,390 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/config/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/config/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..139f94571aec32adb4d44ab848ab77d38d6363d7 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/config/modules/CreateForm.vue @@ -0,0 +1,145 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/dept/index.vue b/cn-universal-web-ui/src/views/system/dept/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..062eed3f641b211272dd03201487e1ed178dbdbb --- /dev/null +++ b/cn-universal-web-ui/src/views/system/dept/index.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/dept/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/dept/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..ed232082579146e55361cb588d72effc6e8db727 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/dept/modules/CreateForm.vue @@ -0,0 +1,186 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/dict/index.vue b/cn-universal-web-ui/src/views/system/dict/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..6babdae663e5cc57171c987a27f8ed7bf1b452d9 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/dict/index.vue @@ -0,0 +1,392 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/dict/modules/CreateDataForm.vue b/cn-universal-web-ui/src/views/system/dict/modules/CreateDataForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..2141d9d7c973a0bccc4371a8dc9ef4bd00d0eb83 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/dict/modules/CreateDataForm.vue @@ -0,0 +1,153 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/dict/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/dict/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..b1659969f77316ec2cc1c324dee5ef5a78e2ce25 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/dict/modules/CreateForm.vue @@ -0,0 +1,184 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/dict/modules/DictData.vue b/cn-universal-web-ui/src/views/system/dict/modules/DictData.vue new file mode 100644 index 0000000000000000000000000000000000000000..7fbd5a7800a856ec795f29f42026025e390ad857 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/dict/modules/DictData.vue @@ -0,0 +1,270 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/instance/config/components/Metadata.vue b/cn-universal-web-ui/src/views/system/instance/config/components/Metadata.vue new file mode 100644 index 0000000000000000000000000000000000000000..c7c585f67edaa0febc1b1f6c7ea2e2aa2af2e23b --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/config/components/Metadata.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/config/components/TaskDetail.vue b/cn-universal-web-ui/src/views/system/instance/config/components/TaskDetail.vue new file mode 100644 index 0000000000000000000000000000000000000000..9a6790ae5240d7ea72db51741faf59cff366ca71 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/config/components/TaskDetail.vue @@ -0,0 +1,321 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/config/history.vue b/cn-universal-web-ui/src/views/system/instance/config/history.vue new file mode 100644 index 0000000000000000000000000000000000000000..9b504b4ebf367ba165450f5a804a918802af8c8f --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/config/history.vue @@ -0,0 +1,342 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/config/index.vue b/cn-universal-web-ui/src/views/system/instance/config/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..8ee1f0503e048cc49107f7d2ba724e14e0dec79e --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/config/index.vue @@ -0,0 +1,636 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/group/index.vue b/cn-universal-web-ui/src/views/system/instance/group/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..497ab473686dedc390746f516022bf6c5eb8c9a9 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/group/index.vue @@ -0,0 +1,1086 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/index.vue b/cn-universal-web-ui/src/views/system/instance/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f7829fb60a99b022e9483485af6cf2e1c32ff93c --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/index.vue @@ -0,0 +1,830 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/BindGroup.vue b/cn-universal-web-ui/src/views/system/instance/modules/BindGroup.vue new file mode 100644 index 0000000000000000000000000000000000000000..63fd9dd71f7ff36da606d69e87d40c674a347151 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/BindGroup.vue @@ -0,0 +1,513 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/ChildDevice.vue b/cn-universal-web-ui/src/views/system/instance/modules/ChildDevice.vue new file mode 100644 index 0000000000000000000000000000000000000000..4d027121b1c49859dfe8ea54f9311cfe8c6c9d25 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/ChildDevice.vue @@ -0,0 +1,421 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/ChildDeviceCreateForm.vue b/cn-universal-web-ui/src/views/system/instance/modules/ChildDeviceCreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..11edb021dee6cb7e3cc090c3c17d9b8d986c2005 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/ChildDeviceCreateForm.vue @@ -0,0 +1,584 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/ChildDeviceImportForm.vue b/cn-universal-web-ui/src/views/system/instance/modules/ChildDeviceImportForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..f00afbaa8e1a66d88473fd57940e1f655c264f19 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/ChildDeviceImportForm.vue @@ -0,0 +1,221 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/instance/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..668e1de85b86d6ca840edecbeabbf9fcda44264f --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/CreateForm.vue @@ -0,0 +1,750 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/DeviceDebugging.vue b/cn-universal-web-ui/src/views/system/instance/modules/DeviceDebugging.vue new file mode 100644 index 0000000000000000000000000000000000000000..fcd81f0783a21b036340223a0ade5875a2322a09 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/DeviceDebugging.vue @@ -0,0 +1,822 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/FunctionDown.vue b/cn-universal-web-ui/src/views/system/instance/modules/FunctionDown.vue new file mode 100644 index 0000000000000000000000000000000000000000..d3c5f826adedbf78a24f438aa8896cdf6791eb8d --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/FunctionDown.vue @@ -0,0 +1,734 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/GroupForm.vue b/cn-universal-web-ui/src/views/system/instance/modules/GroupForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..cbd6d6a74a848a26de481f02bcde2c882f5b72f0 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/GroupForm.vue @@ -0,0 +1,176 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/InstanceDetails.vue b/cn-universal-web-ui/src/views/system/instance/modules/InstanceDetails.vue new file mode 100644 index 0000000000000000000000000000000000000000..21b618320cf9889bc7e35193a73e21ecad8ae035 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/InstanceDetails.vue @@ -0,0 +1,2246 @@ + + + + + +/* 只影响InstanceDetails.vue弹窗 */ + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/SIMCard.vue b/cn-universal-web-ui/src/views/system/instance/modules/SIMCard.vue new file mode 100644 index 0000000000000000000000000000000000000000..017309f09836f415fde6b1263529c019d1248aa5 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/SIMCard.vue @@ -0,0 +1,116 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/Subscribe.vue b/cn-universal-web-ui/src/views/system/instance/modules/Subscribe.vue new file mode 100644 index 0000000000000000000000000000000000000000..3f3e9c7d327b9cd278dc4a235104a2d4b4744069 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/Subscribe.vue @@ -0,0 +1,373 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/SubscribeCreateForm.vue b/cn-universal-web-ui/src/views/system/instance/modules/SubscribeCreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..155520dda45a6446ddc9f7ef1d48893ec9fc48f0 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/SubscribeCreateForm.vue @@ -0,0 +1,182 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/logManage.vue b/cn-universal-web-ui/src/views/system/instance/modules/logManage.vue new file mode 100644 index 0000000000000000000000000000000000000000..82b5c9e6161ce40395404e755d575e471606e115 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/logManage.vue @@ -0,0 +1,956 @@ + + + + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/metaLogV2.vue b/cn-universal-web-ui/src/views/system/instance/modules/metaLogV2.vue new file mode 100644 index 0000000000000000000000000000000000000000..4402b35251533a65b367bff77a0b76a42b0c0b16 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/metaLogV2.vue @@ -0,0 +1,968 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/metadata.vue b/cn-universal-web-ui/src/views/system/instance/modules/metadata.vue new file mode 100644 index 0000000000000000000000000000000000000000..cfa32a76517aa33ff5e115c3354b2a3bbbe1bef5 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/metadata.vue @@ -0,0 +1,736 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/instance/modules/metadataShow.vue b/cn-universal-web-ui/src/views/system/instance/modules/metadataShow.vue new file mode 100644 index 0000000000000000000000000000000000000000..be0532e9a7aad5bcdeb4bf2d2915d4c9b59b0036 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/instance/modules/metadataShow.vue @@ -0,0 +1,447 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/menu/index.vue b/cn-universal-web-ui/src/views/system/menu/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..517ebc7a2df054dbf1bb3fef0c7cc763eb7e8c6e --- /dev/null +++ b/cn-universal-web-ui/src/views/system/menu/index.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/menu/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/menu/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..5cc0d35fbf9306a3a405e152c8045567464546e7 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/menu/modules/CreateForm.vue @@ -0,0 +1,324 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/network/certificate/CertificateDetail.vue b/cn-universal-web-ui/src/views/system/network/certificate/CertificateDetail.vue new file mode 100644 index 0000000000000000000000000000000000000000..f0dc1500faeb770908377916aed30cfa6980aeec --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/certificate/CertificateDetail.vue @@ -0,0 +1,284 @@ + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/network/certificate/CertificateForm.vue b/cn-universal-web-ui/src/views/system/network/certificate/CertificateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..ea21475249fd46fadb3564986d1d6344f370f1e5 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/certificate/CertificateForm.vue @@ -0,0 +1,155 @@ + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/network/certificate/CertificateManager.vue b/cn-universal-web-ui/src/views/system/network/certificate/CertificateManager.vue new file mode 100644 index 0000000000000000000000000000000000000000..1e0d93ec7c8dc6a28072d555067e2ea55064abf7 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/certificate/CertificateManager.vue @@ -0,0 +1,478 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/network/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/network/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..d6e069b3a75f3bf27b05ec632d949302bee6c1b2 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/modules/CreateForm.vue @@ -0,0 +1,857 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/network/mqtt/detail.vue b/cn-universal-web-ui/src/views/system/network/mqtt/detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..9d5de2dc62e529592776b24b6b354d9ab72098c9 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/mqtt/detail.vue @@ -0,0 +1,990 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/views/system/network/mqtt/index.vue b/cn-universal-web-ui/src/views/system/network/mqtt/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4718bdf02fe9809abfff7345b2c43b4d2004de0f --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/mqtt/index.vue @@ -0,0 +1,870 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/network/tcp/detail.vue b/cn-universal-web-ui/src/views/system/network/tcp/detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..d194c60104e1840e2a8355f99a450551cc6d7236 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/tcp/detail.vue @@ -0,0 +1,997 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cn-universal-web-ui/src/views/system/network/tcp/index.vue b/cn-universal-web-ui/src/views/system/network/tcp/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f6cd19ac4a5b80ce9457ced733717cfc114ffb4c --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/tcp/index.vue @@ -0,0 +1,984 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/network/test.vue b/cn-universal-web-ui/src/views/system/network/test.vue new file mode 100644 index 0000000000000000000000000000000000000000..598eeb2d7723d8dcc999c929523ef9196e8f6458 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/network/test.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/notice/CreateForm.vue b/cn-universal-web-ui/src/views/system/notice/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..8601eb8de93955094170b20f596bcaf0076d3fe4 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/notice/CreateForm.vue @@ -0,0 +1,197 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/notice/index.vue b/cn-universal-web-ui/src/views/system/notice/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..6b7cf1e5b4fde37593c17f2ce0e93e008d6ee3da --- /dev/null +++ b/cn-universal-web-ui/src/views/system/notice/index.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/noticeManager/NoticeChannel.vue b/cn-universal-web-ui/src/views/system/noticeManager/NoticeChannel.vue new file mode 100644 index 0000000000000000000000000000000000000000..2685eb79758a34abae8eefa48b6bde7453ecb660 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/noticeManager/NoticeChannel.vue @@ -0,0 +1,608 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/noticeManager/NoticeChannelForm.vue b/cn-universal-web-ui/src/views/system/noticeManager/NoticeChannelForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..dbc680b181de219943a3f50337e37940accb0019 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/noticeManager/NoticeChannelForm.vue @@ -0,0 +1,283 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplate.vue b/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplate.vue new file mode 100644 index 0000000000000000000000000000000000000000..faa0acff049e11557265a8e71fda8a8d4edffe74 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplate.vue @@ -0,0 +1,1620 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplateForm.vue b/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..48323a0f12f8e96146e3a3ea34f62c651cd946e1 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplateForm.vue @@ -0,0 +1,519 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplateLinkage.vue b/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplateLinkage.vue new file mode 100644 index 0000000000000000000000000000000000000000..395bdcd6b5cbe56fe5dcf416c8e1806e61391894 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/noticeManager/NoticeTemplateLinkage.vue @@ -0,0 +1,310 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/noticeManager/channelConfig.js b/cn-universal-web-ui/src/views/system/noticeManager/channelConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..4a54cfb1e6b56eed250f9d80fa2665d1436fd8a8 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/noticeManager/channelConfig.js @@ -0,0 +1,291 @@ +// 通知渠道定义 +export const channelTypes = [ + { + value: 'dingTalk', + label: '钉钉', + icon: '' + }, + { + value: 'email', + label: '邮箱', + icon: '' + }, + { + value: 'feishu', + label: '飞书', + icon: '' + }, + { + value: 'sms_ali', + label: '阿里云短信', + icon: '' + }, + { + value: 'sms_tencent', + label: '腾讯云短信', + icon: '' + }, + { + value: 'audio_ali', + label: '阿里云语音', + icon: '' + }, + { + value: 'audio_tencent', + label: '腾讯云语音', + icon: '' + }, + { + value: 'webhook', + label: 'webhook', + icon: '' + } +] + +// 渠道配置定义 +export function getChannelTypeConfig(type) { + const configs = { + webhook: { + tip: 'Webhook配置:需要配置Webhook地址', + fields: [ + { + key: 'webhook', + label: 'webhook地址', + type: 'input', + required: true, + placeholder: '请输入webhook地址', + hint: 'Post方法请求的Content-Type:application/json' + }, + { + key: 'AuthTokenKey', + label: 'AuthTokenKey', + type: 'input', + required: false, + placeholder: '默认Authenication(可选)', + hint: '自定义HTTP请求头' + }, + { + key: 'TokenValue', + label: 'TokenValue', + type: 'input', + required: false, + placeholder: '请输入请求头的TokenValue(可选)', + hint: '自定义HTTP请求值TokenValue' + } + ] + }, + dingTalk: { + tip: '钉钉机器人配置:需要配置机器人的Webhook地址和签名密钥', + fields: [ + { + key: 'webhook', + label: 'Webhook地址', + type: 'input', + required: true, + placeholder: '请输入Webhook地址', + hint: '机器人的Webhook地址,以https://开头' + }, + { + key: 'secret', + label: '签名密钥', + type: 'input', + required: false, + placeholder: '请输入签名密钥(可选)', + hint: '用于安全验证的签名密钥' + } + ] + }, + email: { + tip: '邮件配置:需要配置SMTP服务器信息', + fields: [ + { + key: 'smtpHost', + label: 'SMTP服务器', + type: 'input', + required: true, + placeholder: '如:smtp.qq.com' + }, + { + key: 'smtpPort', + label: 'SMTP端口', + type: 'input', + required: true, + placeholder: '如:587' + }, + { + key: 'username', + label: '邮箱用户名', + type: 'input', + required: true, + placeholder: '邮箱用户名或邮箱地址' + }, + { + key: 'password', + label: '邮箱密码', + type: 'input', + inputType: 'password', + required: true, + placeholder: '邮箱密码或授权码' + }, + { + key: 'fromEmail', + label: '发件人邮箱', + type: 'input', + required: true, + placeholder: '发件人邮箱地址' + } + ] + }, + feishu: { + tip: '飞书机器人配置:需要配置机器人的Webhook地址', + fields: [ + { + key: 'webhook', + label: 'Webhook地址', + type: 'input', + required: true, + placeholder: '请输入Webhook地址', + hint: '飞书机器人的Webhook地址' + } + ] + }, + sms_ali: { + tip: '阿里云短信配置:需要配置AccessKey、SecretKey、签名和模板', + fields: [ + { + key: 'accessKey', + label: 'AccessKey ID', + type: 'input', + required: true, + placeholder: '阿里云AccessKey ID' + }, + { + key: 'secretKey', + label: 'AccessKey Secret', + type: 'input', + inputType: 'password', + required: true, + placeholder: '阿里云AccessKey Secret' + }, + { + key: 'signName', + label: '短信签名', + type: 'input', + required: true, + placeholder: '已审核通过的短信签名' + }, + { + key: 'templateCode', + label: '模板代码', + type: 'input', + required: true, + placeholder: '已审核通过的短信模板代码' + } + ] + }, + sms_tencent: { + tip: '腾讯云短信配置:需要配置SecretId、SecretKey、签名和模板', + fields: [ + { + key: 'secretId', + label: 'SecretId', + type: 'input', + required: true, + placeholder: '腾讯云SecretId' + }, + { + key: 'secretKey', + label: 'SecretKey', + type: 'input', + inputType: 'password', + required: true, + placeholder: '腾讯云SecretKey' + }, + { + key: 'signName', + label: '短信签名', + type: 'input', + required: true, + placeholder: '已审核通过的短信签名' + }, + { + key: 'templateCode', + label: '模板代码', + type: 'input', + required: true, + placeholder: '已审核通过的短信模板代码' + } + ] + }, + audio_ali: { + tip: '阿里云语音配置:需要配置AccessKey、SecretKey、签名和模板', + fields: [ + { + key: 'accessKey', + label: 'AccessKey ID', + type: 'input', + required: true, + placeholder: '阿里云AccessKey ID' + }, + { + key: 'secretKey', + label: 'AccessKey Secret', + type: 'input', + inputType: 'password', + required: true, + placeholder: '阿里云AccessKey Secret' + }, + { + key: 'signName', + label: '语音签名', + type: 'input', + required: true, + placeholder: '已审核通过的语音签名' + }, + { + key: 'templateCode', + label: '模板代码', + type: 'input', + required: true, + placeholder: '已审核通过的语音模板代码' + } + ] + }, + audio_tencent: { + tip: '腾讯云语音配置:需要配置SecretId、SecretKey、签名和模板', + fields: [ + { + key: 'secretId', + label: 'SecretId', + type: 'input', + required: true, + placeholder: '腾讯云SecretId' + }, + { + key: 'secretKey', + label: 'SecretKey', + type: 'input', + inputType: 'password', + required: true, + placeholder: '腾讯云SecretKey' + }, + { + key: 'signName', + label: '语音签名', + type: 'input', + required: true, + placeholder: '已审核通过的语音签名' + }, + { + key: 'templateCode', + label: '模板代码', + type: 'input', + required: true, + placeholder: '已审核通过的语音模板代码' + } + ] + } + } + + return configs[type] || {tip: '', fields: []} +} \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/noticeManager/index.vue b/cn-universal-web-ui/src/views/system/noticeManager/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4358da144caa253be5a3ef2dba97c74676409ac6 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/noticeManager/index.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/post/index.vue b/cn-universal-web-ui/src/views/system/post/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..34a850df8587b872d3ed9ef21fee94926da2d34d --- /dev/null +++ b/cn-universal-web-ui/src/views/system/post/index.vue @@ -0,0 +1,333 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/post/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/post/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..0bd08787afa9bc1429105feb1090f31e93b9a7ab --- /dev/null +++ b/cn-universal-web-ui/src/views/system/post/modules/CreateForm.vue @@ -0,0 +1,145 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/product/index.vue b/cn-universal-web-ui/src/views/system/product/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f848b5f07934da31029836dd55d3b4d5438e0cb3 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/index.vue @@ -0,0 +1,1348 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/Analysis.vue b/cn-universal-web-ui/src/views/system/product/modules/Analysis.vue new file mode 100644 index 0000000000000000000000000000000000000000..21de2a4a23d8c41902c4bcf13263403462ea0c63 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/Analysis.vue @@ -0,0 +1,160 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/CertificateBind.vue b/cn-universal-web-ui/src/views/system/product/modules/CertificateBind.vue new file mode 100644 index 0000000000000000000000000000000000000000..b7569b958505186abf9c0bf2860d137875b59c2f --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/CertificateBind.vue @@ -0,0 +1,312 @@ + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/product/modules/ConfigurationEditor.vue b/cn-universal-web-ui/src/views/system/product/modules/ConfigurationEditor.vue new file mode 100644 index 0000000000000000000000000000000000000000..3538903e1de7f0a07bd03641a43783df218837b0 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/ConfigurationEditor.vue @@ -0,0 +1,671 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/product/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/product/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..063a1c8f7f0cd4303ddfc9c3034b6962787c140d --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/CreateForm.vue @@ -0,0 +1,838 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/EventForm.vue b/cn-universal-web-ui/src/views/system/product/modules/EventForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..3c62349ceb5ac4b9110fc0946e8b8d39521aa8d9 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/EventForm.vue @@ -0,0 +1,571 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/FunctionForm.vue b/cn-universal-web-ui/src/views/system/product/modules/FunctionForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..cbad12ba0cc5bf812fb86deebf2bbdc60c8cc74f --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/FunctionForm.vue @@ -0,0 +1,790 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/FunctionParamsDetails.vue b/cn-universal-web-ui/src/views/system/product/modules/FunctionParamsDetails.vue new file mode 100644 index 0000000000000000000000000000000000000000..ab2333fc8d97deae235993a8aa01725f1a4f67a7 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/FunctionParamsDetails.vue @@ -0,0 +1,281 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/FunctionParamsForm.vue b/cn-universal-web-ui/src/views/system/product/modules/FunctionParamsForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..44c491607fae7cb4958e0b99a938cfc2a43103f8 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/FunctionParamsForm.vue @@ -0,0 +1,458 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/ImportForm.vue b/cn-universal-web-ui/src/views/system/product/modules/ImportForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..00145a6197d334021a8f0d75a67afcc5d3f311f6 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/ImportForm.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBind.vue b/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBind.vue new file mode 100644 index 0000000000000000000000000000000000000000..57008b95f844b1b852a2c5fca6f58d0bbd984010 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBind.vue @@ -0,0 +1,1662 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBindDebug.vue b/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBindDebug.vue new file mode 100644 index 0000000000000000000000000000000000000000..d00548c160bfb6c06cfc3e1b818bde8154708d98 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBindDebug.vue @@ -0,0 +1,168 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBindTest.vue b/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBindTest.vue new file mode 100644 index 0000000000000000000000000000000000000000..3916dce9d8fd0e7af55834281c0792df4825e68e --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/NetworkComponentBindTest.vue @@ -0,0 +1,157 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/product/modules/OtherConfigForm.vue b/cn-universal-web-ui/src/views/system/product/modules/OtherConfigForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..fd92ece6ffe04cb3d8c4a48b772546c3f484cf59 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/OtherConfigForm.vue @@ -0,0 +1,447 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/PropertiesForm.vue b/cn-universal-web-ui/src/views/system/product/modules/PropertiesForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..2044c8aafadee969ebae37a34ad4b81729ef9eb0 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/PropertiesForm.vue @@ -0,0 +1,571 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/PropertiesTable.vue b/cn-universal-web-ui/src/views/system/product/modules/PropertiesTable.vue new file mode 100644 index 0000000000000000000000000000000000000000..c4e2488dcd1c79b0a1fd230d3c0fa4e9fb243c52 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/PropertiesTable.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/Resizabler.vue b/cn-universal-web-ui/src/views/system/product/modules/Resizabler.vue new file mode 100644 index 0000000000000000000000000000000000000000..c37f967448b2a19ff9c905974c5b7aef0c6f39d2 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/Resizabler.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/SelectGateway.vue b/cn-universal-web-ui/src/views/system/product/modules/SelectGateway.vue new file mode 100644 index 0000000000000000000000000000000000000000..cca1cf780de6257c792f9649550a76d6b4eda27b --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/SelectGateway.vue @@ -0,0 +1,84 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/SvgDefaultProduct.vue b/cn-universal-web-ui/src/views/system/product/modules/SvgDefaultProduct.vue new file mode 100644 index 0000000000000000000000000000000000000000..160b5e05601e3d361ca8707dd61519146549e69f --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/SvgDefaultProduct.vue @@ -0,0 +1,145 @@ + + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/product/modules/TcpConnectionInfo.vue b/cn-universal-web-ui/src/views/system/product/modules/TcpConnectionInfo.vue new file mode 100644 index 0000000000000000000000000000000000000000..79f813e4724776b37202ca6af88a6b689eae2fd5 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/TcpConnectionInfo.vue @@ -0,0 +1,957 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/configurationForm.vue b/cn-universal-web-ui/src/views/system/product/modules/configurationForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..c11dab00b7cc7f6e31be072204c037438edada32 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/configurationForm.vue @@ -0,0 +1,1057 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/importMetadata.vue b/cn-universal-web-ui/src/views/system/product/modules/importMetadata.vue new file mode 100644 index 0000000000000000000000000000000000000000..cfc9caf7f3bea66833c1ec432dea666ce9d2fe18 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/importMetadata.vue @@ -0,0 +1,107 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/instanceCreateForm.vue b/cn-universal-web-ui/src/views/system/product/modules/instanceCreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..da401e7b1dc118c5c603756f8a3eb61c3c78cca3 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/instanceCreateForm.vue @@ -0,0 +1,563 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/metadata.vue b/cn-universal-web-ui/src/views/system/product/modules/metadata.vue new file mode 100644 index 0000000000000000000000000000000000000000..b1d8460060cc624761f6822811eaa263724af4f8 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/metadata.vue @@ -0,0 +1,1178 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/metadataShow.vue b/cn-universal-web-ui/src/views/system/product/modules/metadataShow.vue new file mode 100644 index 0000000000000000000000000000000000000000..7072c57f5f65027699c00fed009f952abe4f938a --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/metadataShow.vue @@ -0,0 +1,581 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/productDetails.vue b/cn-universal-web-ui/src/views/system/product/modules/productDetails.vue new file mode 100644 index 0000000000000000000000000000000000000000..975a6059eb7c8820247388cc17a0a89340da4dfc --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/productDetails.vue @@ -0,0 +1,2531 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/productInstance.vue b/cn-universal-web-ui/src/views/system/product/modules/productInstance.vue new file mode 100644 index 0000000000000000000000000000000000000000..d3eef6b4a4cf496efa6d1ad581b0e52d820e6b9b --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/productInstance.vue @@ -0,0 +1,415 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/productProtocol.vue b/cn-universal-web-ui/src/views/system/product/modules/productProtocol.vue new file mode 100644 index 0000000000000000000000000000000000000000..401bd8a84c9d5ed5e76ed7cac508a67800e59a70 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/productProtocol.vue @@ -0,0 +1,375 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/publicProduct.vue b/cn-universal-web-ui/src/views/system/product/modules/publicProduct.vue new file mode 100644 index 0000000000000000000000000000000000000000..4d162b08fc1eb71d95ecdd2d74ce1efbe4dd2a58 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/publicProduct.vue @@ -0,0 +1,194 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/storageConfigurationForm.vue b/cn-universal-web-ui/src/views/system/product/modules/storageConfigurationForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..2453f1e860f54e1c881e10dbb6733fe1b9599386 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/storageConfigurationForm.vue @@ -0,0 +1,302 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/product/modules/storageConfigurationForm1.vue b/cn-universal-web-ui/src/views/system/product/modules/storageConfigurationForm1.vue new file mode 100644 index 0000000000000000000000000000000000000000..05ed8bc51a720817cc6f7476b349f88042abba53 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/product/modules/storageConfigurationForm1.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/protocol/index.vue b/cn-universal-web-ui/src/views/system/protocol/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..84cfec606006a007474e950ad03dcb87dd32df7d --- /dev/null +++ b/cn-universal-web-ui/src/views/system/protocol/index.vue @@ -0,0 +1,532 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/protocol/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/protocol/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..3df2eb05f57fca6e8634cc10b6bab4ccc0cd1806 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/protocol/modules/CreateForm.vue @@ -0,0 +1,648 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/protocol/modules/codecTest.vue b/cn-universal-web-ui/src/views/system/protocol/modules/codecTest.vue new file mode 100644 index 0000000000000000000000000000000000000000..2593f684a71e83118f23eb385fd98cd6f76c2971 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/protocol/modules/codecTest.vue @@ -0,0 +1,178 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/protocol/modules/productProtocol.vue b/cn-universal-web-ui/src/views/system/protocol/modules/productProtocol.vue new file mode 100644 index 0000000000000000000000000000000000000000..ae701170b1648742c10817a9dd241fa213a853e4 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/protocol/modules/productProtocol.vue @@ -0,0 +1,9 @@ + + + + + {{ d.dictLabel }} + + + + \ No newline at end of file diff --git a/cn-universal-web-ui/src/views/system/role/authUser.vue b/cn-universal-web-ui/src/views/system/role/authUser.vue new file mode 100644 index 0000000000000000000000000000000000000000..c314c06522fa5375c0c3ab7d26ce595b24ddddba --- /dev/null +++ b/cn-universal-web-ui/src/views/system/role/authUser.vue @@ -0,0 +1,299 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/role/index.vue b/cn-universal-web-ui/src/views/system/role/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..7edac2e9c612a9afbef49e461db270b5a402c42b --- /dev/null +++ b/cn-universal-web-ui/src/views/system/role/index.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/role/modules/CreateDataScopeForm.vue b/cn-universal-web-ui/src/views/system/role/modules/CreateDataScopeForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..aa2801d11eff1f7eb5d8029a2937b194aabd3cd1 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/role/modules/CreateDataScopeForm.vue @@ -0,0 +1,286 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/role/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/role/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..f8003793f100af778ea7ccd66f89c6fff554e756 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/role/modules/CreateForm.vue @@ -0,0 +1,313 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/role/modules/SelectUser.vue b/cn-universal-web-ui/src/views/system/role/modules/SelectUser.vue new file mode 100644 index 0000000000000000000000000000000000000000..565eac453a20d26e27001622090c461538c9da8b --- /dev/null +++ b/cn-universal-web-ui/src/views/system/role/modules/SelectUser.vue @@ -0,0 +1,220 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/sort/index.vue b/cn-universal-web-ui/src/views/system/sort/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5957b900e0576150001aa9f420bcf9b4cfe14885 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/sort/index.vue @@ -0,0 +1,277 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/sort/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/sort/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..8137643abd19fbb0c219eff5890a50bb0bdef587 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/sort/modules/CreateForm.vue @@ -0,0 +1,193 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/user/index.vue b/cn-universal-web-ui/src/views/system/user/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..847afa4e6e37072eab33fe33e540448cb1e30660 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/user/index.vue @@ -0,0 +1,442 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/user/modules/AuthRole.vue b/cn-universal-web-ui/src/views/system/user/modules/AuthRole.vue new file mode 100644 index 0000000000000000000000000000000000000000..582143fde20f3e8d5bbf20f556ef206ba9b72d2d --- /dev/null +++ b/cn-universal-web-ui/src/views/system/user/modules/AuthRole.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/cn-universal-web-ui/src/views/system/user/modules/CreateForm.vue b/cn-universal-web-ui/src/views/system/user/modules/CreateForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..4da586588dcf5377a8114cfea0ef2b38e77f93a6 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/user/modules/CreateForm.vue @@ -0,0 +1,223 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/user/modules/DeptTree.vue b/cn-universal-web-ui/src/views/system/user/modules/DeptTree.vue new file mode 100644 index 0000000000000000000000000000000000000000..aa42fc40cb30ea42f12121f8cf9182953dc6501a --- /dev/null +++ b/cn-universal-web-ui/src/views/system/user/modules/DeptTree.vue @@ -0,0 +1,94 @@ + + diff --git a/cn-universal-web-ui/src/views/system/user/modules/ImportExcel.vue b/cn-universal-web-ui/src/views/system/user/modules/ImportExcel.vue new file mode 100644 index 0000000000000000000000000000000000000000..585bf4be92d6efce4f14b415823271e8c17d9d5c --- /dev/null +++ b/cn-universal-web-ui/src/views/system/user/modules/ImportExcel.vue @@ -0,0 +1,106 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/user/modules/ResetPassword.vue b/cn-universal-web-ui/src/views/system/user/modules/ResetPassword.vue new file mode 100644 index 0000000000000000000000000000000000000000..02edb37f23aee13f791af311ea064f7c103959c2 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/user/modules/ResetPassword.vue @@ -0,0 +1,121 @@ + + diff --git a/cn-universal-web-ui/src/views/system/video/EzvizPlayer.vue b/cn-universal-web-ui/src/views/system/video/EzvizPlayer.vue new file mode 100644 index 0000000000000000000000000000000000000000..f30a319c395dcf22ade6445ce16a1cedd6488fa3 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/video/EzvizPlayer.vue @@ -0,0 +1,42 @@ + + + diff --git a/cn-universal-web-ui/src/views/system/video/ImouPlayer.vue b/cn-universal-web-ui/src/views/system/video/ImouPlayer.vue new file mode 100644 index 0000000000000000000000000000000000000000..2d2f74ad80a48a91990ce1b6e7bec2d26e224e98 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/video/ImouPlayer.vue @@ -0,0 +1,337 @@ + + + + diff --git a/cn-universal-web-ui/src/views/system/video/Imoulife.vue b/cn-universal-web-ui/src/views/system/video/Imoulife.vue new file mode 100644 index 0000000000000000000000000000000000000000..42cfd75d324fade34076fec0e16b013c0fd1afa4 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/video/Imoulife.vue @@ -0,0 +1,375 @@ + + + + + + + diff --git a/cn-universal-web-ui/src/views/system/video/VideoEzviz.vue b/cn-universal-web-ui/src/views/system/video/VideoEzviz.vue new file mode 100644 index 0000000000000000000000000000000000000000..9c2fad6bf15a51692caf9ed65872f8209414d7cb --- /dev/null +++ b/cn-universal-web-ui/src/views/system/video/VideoEzviz.vue @@ -0,0 +1,292 @@ + + + + + + diff --git a/cn-universal-web-ui/src/views/system/video/components/VideoPreviewModal.vue b/cn-universal-web-ui/src/views/system/video/components/VideoPreviewModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..6d335a2ac6bdbb8fd0a77bd08b009060bd5bc195 --- /dev/null +++ b/cn-universal-web-ui/src/views/system/video/components/VideoPreviewModal.vue @@ -0,0 +1,1128 @@ + + + + + + diff --git a/cn-universal-web-ui/src/views/tool/build/index.vue b/cn-universal-web-ui/src/views/tool/build/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..c11b059edb61c33e4cbc988405d95bc7ffff2984 --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/build/index.vue @@ -0,0 +1,35 @@ + + + diff --git a/cn-universal-web-ui/src/views/tool/gen/index.vue b/cn-universal-web-ui/src/views/tool/gen/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..553a8bc34be86470ebe6981d73f636ea319ffd7b --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/gen/index.vue @@ -0,0 +1,359 @@ + + + diff --git a/cn-universal-web-ui/src/views/tool/gen/modules/BasicInfoForm.vue b/cn-universal-web-ui/src/views/tool/gen/modules/BasicInfoForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..6ed158d7a9fb1f487a1b19e3b6705e4f8b9a13bb --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/gen/modules/BasicInfoForm.vue @@ -0,0 +1,89 @@ + + diff --git a/cn-universal-web-ui/src/views/tool/gen/modules/GenEdit.vue b/cn-universal-web-ui/src/views/tool/gen/modules/GenEdit.vue new file mode 100644 index 0000000000000000000000000000000000000000..a98390a9056d47687c53a39bc2ce0c8ccc2bda30 --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/gen/modules/GenEdit.vue @@ -0,0 +1,344 @@ + + + diff --git a/cn-universal-web-ui/src/views/tool/gen/modules/GenInfoForm.vue b/cn-universal-web-ui/src/views/tool/gen/modules/GenInfoForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..8a83d79f2fafdb10c6ed4b634713eb5912c0545d --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/gen/modules/GenInfoForm.vue @@ -0,0 +1,346 @@ + + diff --git a/cn-universal-web-ui/src/views/tool/gen/modules/ImportTable.vue b/cn-universal-web-ui/src/views/tool/gen/modules/ImportTable.vue new file mode 100644 index 0000000000000000000000000000000000000000..4ca999f22036c02263e706abc1e8ca157063e0de --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/gen/modules/ImportTable.vue @@ -0,0 +1,197 @@ + + diff --git a/cn-universal-web-ui/src/views/tool/gen/modules/PreviewCode.vue b/cn-universal-web-ui/src/views/tool/gen/modules/PreviewCode.vue new file mode 100644 index 0000000000000000000000000000000000000000..2acbb2f4d5af89e1f7cb48d590a7eca611af82ae --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/gen/modules/PreviewCode.vue @@ -0,0 +1,101 @@ + + + diff --git a/cn-universal-web-ui/src/views/tool/swagger/index.vue b/cn-universal-web-ui/src/views/tool/swagger/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..49ee44d0a91a8dbe4f931b3bcff7d48ef6047467 --- /dev/null +++ b/cn-universal-web-ui/src/views/tool/swagger/index.vue @@ -0,0 +1,37 @@ +